export declare const REMOTE_PATH_PREAMBLE = "set -u\nPATH=\"$HOME/.local/bin:$HOME/.npm-global/bin:/usr/local/bin:/opt/homebrew/bin:$PATH\"\nnvm_dir=${NVM_DIR:-$HOME/.nvm}\nnvm_bin=\"\"\nif [ -d \"$nvm_dir/versions/node\" ]; then\n if [ -f \"$nvm_dir/alias/default\" ]; then\n nvm_want=$(cat \"$nvm_dir/alias/default\" 2>/dev/null || echo \"\")\n for nvm_name in \"$nvm_want\" \"v$nvm_want\"; do\n if [ -n \"$nvm_want\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n break\n fi\n done\n fi\n if [ -z \"$nvm_bin\" ]; then\n # shellcheck disable=SC2012\n nvm_name=$(ls \"$nvm_dir/versions/node\" 2>/dev/null |\n sort -t. -k1.2,1n -k2,2n -k3,3n 2>/dev/null | tail -n 1)\n if [ -n \"$nvm_name\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n fi\n fi\nfi\nif [ -n \"$nvm_bin\" ]; then PATH=\"$nvm_bin:$PATH\"; fi\nexport PATH"; export declare const PROBE_SCRIPT = "set -u\nPATH=\"$HOME/.local/bin:$HOME/.npm-global/bin:/usr/local/bin:/opt/homebrew/bin:$PATH\"\nnvm_dir=${NVM_DIR:-$HOME/.nvm}\nnvm_bin=\"\"\nif [ -d \"$nvm_dir/versions/node\" ]; then\n if [ -f \"$nvm_dir/alias/default\" ]; then\n nvm_want=$(cat \"$nvm_dir/alias/default\" 2>/dev/null || echo \"\")\n for nvm_name in \"$nvm_want\" \"v$nvm_want\"; do\n if [ -n \"$nvm_want\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n break\n fi\n done\n fi\n if [ -z \"$nvm_bin\" ]; then\n # shellcheck disable=SC2012\n nvm_name=$(ls \"$nvm_dir/versions/node\" 2>/dev/null |\n sort -t. -k1.2,1n -k2,2n -k3,3n 2>/dev/null | tail -n 1)\n if [ -n \"$nvm_name\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n fi\n fi\nfi\nif [ -n \"$nvm_bin\" ]; then PATH=\"$nvm_bin:$PATH\"; fi\nexport PATH\np() { printf \"%s=%s\\n\" \"$1\" \"$2\"; }\nhave() { command -v \"$1\" >/dev/null 2>&1; }\nos=$(uname -s 2>/dev/null || echo unknown)\np os \"$os\"\np arch \"$(uname -m 2>/dev/null || echo unknown)\"\nif have node; then p node \"$(node --version 2>/dev/null || echo unknown)\"; else p node \"\"; fi\nif have npm; then p npm \"$(npm --version 2>/dev/null || echo unknown)\"; else p npm \"\"; fi\nprefix=\"\"\nwritable=no\nif have npm; then\n prefix=$(npm prefix -g 2>/dev/null || echo \"\")\n if [ -n \"$prefix\" ]; then\n if [ -w \"$prefix/lib/node_modules\" ]; then\n writable=yes\n elif [ ! -e \"$prefix/lib/node_modules\" ] && [ -w \"$prefix\" ]; then\n writable=yes\n fi\n fi\nfi\np npmPrefix \"$prefix\"\np npmPrefixWritable \"$writable\"\ninstalled=\"\"\nif have routekit; then\n raw=$(routekit version 2>/dev/null | head -n 1)\n # shellcheck disable=SC2086\n set -- $raw\n if [ \"$#\" -ge 2 ]; then installed=$2; else installed=unknown; fi\nfi\np routekit \"$installed\"\nsupervisor=none\nif [ \"$os\" = \"Darwin\" ]; then\n if have launchctl; then supervisor=launchd; fi\nelif have systemctl; then\n if systemctl --user show-environment >/dev/null 2>&1; then supervisor=systemd; fi\nfi\np supervisor \"$supervisor\"\nif [ -f \"$HOME/.config/routekit/router.yaml\" ]; then p config yes; else p config no; fi\nstate=${ROUTEKIT_HOME:-$HOME/.routekit}\nif [ -f \"$state/services/daemon.json\" ]; then p daemon yes; else p daemon no; fi\nexit 0"; export declare const INSTALL_SCRIPT = "set -u\nPATH=\"$HOME/.local/bin:$HOME/.npm-global/bin:/usr/local/bin:/opt/homebrew/bin:$PATH\"\nnvm_dir=${NVM_DIR:-$HOME/.nvm}\nnvm_bin=\"\"\nif [ -d \"$nvm_dir/versions/node\" ]; then\n if [ -f \"$nvm_dir/alias/default\" ]; then\n nvm_want=$(cat \"$nvm_dir/alias/default\" 2>/dev/null || echo \"\")\n for nvm_name in \"$nvm_want\" \"v$nvm_want\"; do\n if [ -n \"$nvm_want\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n break\n fi\n done\n fi\n if [ -z \"$nvm_bin\" ]; then\n # shellcheck disable=SC2012\n nvm_name=$(ls \"$nvm_dir/versions/node\" 2>/dev/null |\n sort -t. -k1.2,1n -k2,2n -k3,3n 2>/dev/null | tail -n 1)\n if [ -n \"$nvm_name\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n fi\n fi\nfi\nif [ -n \"$nvm_bin\" ]; then PATH=\"$nvm_bin:$PATH\"; fi\nexport PATH\n# Shared host detection helpers. Expanded via `# include` into the probe and\n# the public installer so the two cannot drift on Node/npm/prefix writability.\n# Does not mutate positional parameters.\nhave() { command -v \"$1\" >/dev/null 2>&1; }\n\n# Variables set here are read by the including script after return.\n# shellcheck disable=SC2034\nroutekit_detect() {\n os=$(uname -s 2>/dev/null || echo unknown)\n arch=$(uname -m 2>/dev/null || echo unknown)\n node_version=\"\"\n npm_version=\"\"\n npm_prefix=\"\"\n npm_prefix_writable=no\n if have node; then node_version=$(node --version 2>/dev/null || echo unknown); fi\n if have npm; then\n npm_version=$(npm --version 2>/dev/null || echo unknown)\n npm_prefix=$(npm prefix -g 2>/dev/null || echo \"\")\n if [ -n \"$npm_prefix\" ]; then\n if [ -w \"$npm_prefix/lib/node_modules\" ]; then\n npm_prefix_writable=yes\n elif [ ! -e \"$npm_prefix/lib/node_modules\" ] && [ -w \"$npm_prefix\" ]; then\n npm_prefix_writable=yes\n fi\n fi\n fi\n routekit_version=\"\"\n if have routekit; then\n # Take the second whitespace-separated field of `routekit version` without\n # clobbering the caller's positional parameters.\n routekit_version=$(\n routekit version 2>/dev/null | head -n 1 | awk '{ print $2 }'\n )\n if [ -z \"$routekit_version\" ]; then routekit_version=unknown; fi\n fi\n supervisor=none\n if [ \"$os\" = \"Darwin\" ]; then\n if have launchctl; then supervisor=launchd; fi\n elif have systemctl; then\n if systemctl --user show-environment >/dev/null 2>&1; then supervisor=systemd; fi\n fi\n config_exists=no\n if [ -f \"$HOME/.config/routekit/router.yaml\" ]; then config_exists=yes; fi\n state=${ROUTEKIT_HOME:-$HOME/.routekit}\n daemon_running=no\n if [ -f \"$state/services/daemon.json\" ]; then daemon_running=yes; fi\n}\n# Pinned Node.js runtime digests for the private-runtime fallback.\n# Regenerate with: node scripts/generate-node-digests.mjs\n# Source: https://nodejs.org/dist/v${ROUTEKIT_NODE_VERSION}/SHASUMS256.txt\n# shellcheck disable=SC2034\nROUTEKIT_NODE_VERSION=22.22.2\nROUTEKIT_NODE_MINIMUM_MAJOR=22\n\n# sha256 of the .tar.gz for each supported platform (os/arch).\nroutekit_node_digest() {\n # $1 = os (linux|darwin), $2 = arch (x64|arm64)\n case \"$1/$2\" in\n linux/x64) printf '%s\\n' '978978a635eef872fa68beae09f0aad0bbbae6757e444da80b570964a97e62a3' ;;\n linux/arm64) printf '%s\\n' 'b2f3a96f31486bfc365192ad65ced14833ad2a3c2e1bcefec4846902f264fa28' ;;\n darwin/x64) printf '%s\\n' '12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba' ;;\n darwin/arm64) printf '%s\\n' 'db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000' ;;\n *) return 1 ;;\n esac\n}\n\nroutekit_node_platform() {\n # Prints \"os arch\" (nodejs.org naming) or fails.\n _os=$(uname -s 2>/dev/null || echo unknown)\n _arch=$(uname -m 2>/dev/null || echo unknown)\n case \"$_os\" in\n Linux) _os=linux ;;\n Darwin) _os=darwin ;;\n *) return 1 ;;\n esac\n case \"$_arch\" in\n x86_64|amd64) _arch=x64 ;;\n aarch64|arm64) _arch=arm64 ;;\n *) return 1 ;;\n esac\n printf '%s %s\\n' \"$_os\" \"$_arch\"\n}\n# Download, digest-verify, and extract a pinned Node.js runtime into\n# $ROUTEKIT_NODE_ROOT (default: ~/.local/share/routekit/node).\n# Requires: curl or wget, tar, and sha256sum or shasum.\n\nroutekit_sha256() {\n # Verify $1 against expected hex digest $2. Fail closed.\n if have sha256sum; then\n _got=$(sha256sum \"$1\" | awk '{ print $1 }')\n elif have shasum; then\n _got=$(shasum -a 256 \"$1\" | awk '{ print $1 }')\n else\n echo \"RouteKit installer: need sha256sum or shasum to verify the Node.js download\" >&2\n return 1\n fi\n if [ \"$_got\" != \"$2\" ]; then\n echo \"RouteKit installer: Node.js digest mismatch (got $_got, want $2)\" >&2\n return 1\n fi\n}\n\nroutekit_download() {\n # $1 = url, $2 = dest\n if have curl; then\n curl -fsSL \"$1\" -o \"$2\"\n elif have wget; then\n wget -qO \"$2\" \"$1\"\n else\n echo \"RouteKit installer: need curl or wget to download Node.js\" >&2\n return 1\n fi\n}\n\nroutekit_bootstrap_node() {\n # Sets PATH to include the private Node bin. Idempotent when already present.\n ROUTEKIT_NODE_ROOT=${ROUTEKIT_NODE_ROOT:-$HOME/.local/share/routekit/node}\n _platform=$(routekit_node_platform) || {\n echo \"RouteKit installer: unsupported platform for private Node runtime\" >&2\n return 1\n }\n _os=${_platform% *}\n _arch=${_platform#* }\n _digest=$(routekit_node_digest \"$_os\" \"$_arch\") || {\n echo \"RouteKit installer: no pinned Node digest for $_os/$_arch\" >&2\n return 1\n }\n _name=\"node-v${ROUTEKIT_NODE_VERSION}-${_os}-${_arch}\"\n _bin=\"$ROUTEKIT_NODE_ROOT/${_name}/bin\"\n if [ -x \"$_bin/node\" ] && [ -x \"$_bin/npm\" ]; then\n PATH=\"$_bin:$PATH\"\n export PATH\n return 0\n fi\n _url=\"https://nodejs.org/dist/v${ROUTEKIT_NODE_VERSION}/${_name}.tar.gz\"\n _tmp=\"${TMPDIR:-/tmp}/routekit-node.$$\"\n if ! mkdir \"$_tmp\" 2>/dev/null; then\n echo \"RouteKit installer: could not create temporary directory $_tmp\" >&2\n return 1\n fi\n echo \"RouteKit installer: downloading Node.js ${ROUTEKIT_NODE_VERSION} ($_os/$_arch)\" >&2\n if ! routekit_download \"$_url\" \"$_tmp/node.tar.gz\"; then\n rm -rf \"$_tmp\"\n return 1\n fi\n if ! routekit_sha256 \"$_tmp/node.tar.gz\" \"$_digest\"; then\n rm -rf \"$_tmp\"\n return 1\n fi\n mkdir -p \"$ROUTEKIT_NODE_ROOT\"\n if ! tar -xzf \"$_tmp/node.tar.gz\" -C \"$ROUTEKIT_NODE_ROOT\"; then\n rm -rf \"$_tmp\"\n return 1\n fi\n rm -rf \"$_tmp\"\n if [ ! -x \"$_bin/node\" ]; then\n echo \"RouteKit installer: Node.js extract did not produce $_bin/node\" >&2\n return 1\n fi\n PATH=\"$_bin:$PATH\"\n export PATH\n}\n# RouteKit public installer.\n# shellcheck disable=SC2154,SC2034\n# One-liner:\n# curl -fsSL https://github.com/velum-labs/routekit/releases/latest/download/install.sh | sh\n# Prefer a system Node.js >= 22 with a writable npm prefix; otherwise download\n# a pinned Node runtime into ~/.local/share/routekit/node and install into a\n# private prefix with a ~/.local/bin/routekit shim. Never escalates with sudo.\n\nROUTEKIT_PACKAGE=${ROUTEKIT_PACKAGE:-@velum-labs/routekit}\n\nroutekit_usage() {\n cat <<'EOF' >&2\nUsage: install.sh [--version ] [--prefix ] [--dry-run]\n\nInstall or upgrade the RouteKit CLI. No sudo. Prefers a system Node.js 22+\nwith a writable npm prefix; otherwise bootstraps a private Node runtime.\nEOF\n}\n\nroutekit_node_major() {\n # $1 = vX.Y.Z or X.Y.Z\n _v=${1#v}\n _major=${_v%%.*}\n case \"$_major\" in\n ''|*[!0-9]*) return 1 ;;\n *) printf '%s\\n' \"$_major\" ;;\n esac\n}\n\nroutekit_validate_version() {\n case \"$1\" in\n latest) return 0 ;;\n [0-9]*.[0-9]*.[0-9]*) return 0 ;;\n [0-9]*.[0-9]*.[0-9]*-[A-Za-z0-9.-]*) return 0 ;;\n *)\n echo \"RouteKit installer: invalid version: $1\" >&2\n echo \"pass an exact version such as 1.2.3, or latest\" >&2\n return 1\n ;;\n esac\n}\n\nroutekit_ensure_runtime() {\n # Decide between system Node/npm and the private runtime. Sets\n # ROUTEKIT_NPM_PREFIX when using a private prefix.\n _requested_prefix=$ROUTEKIT_NPM_PREFIX\n routekit_detect\n _major=\"\"\n if [ -n \"$node_version\" ]; then\n _major=$(routekit_node_major \"$node_version\" || echo \"\")\n fi\n if [ -n \"$_major\" ] && [ \"$_major\" -ge \"$ROUTEKIT_NODE_MINIMUM_MAJOR\" ] &&\n [ \"$npm_prefix_writable\" = \"yes\" ] && have npm; then\n ROUTEKIT_INSTALL_MODE=system\n return 0\n fi\n echo \"RouteKit installer: using private Node.js ${ROUTEKIT_NODE_VERSION} runtime\" >&2\n routekit_bootstrap_node || return 1\n ROUTEKIT_NPM_EXECUTABLE=$(command -v npm 2>/dev/null || echo \"\")\n ROUTEKIT_NODE_EXECUTABLE=$(command -v node 2>/dev/null || echo \"\")\n ROUTEKIT_NPM_PREFIX=${_requested_prefix:-$HOME/.local}\n mkdir -p \"$ROUTEKIT_NPM_PREFIX\"\n npm config set prefix \"$ROUTEKIT_NPM_PREFIX\" >/dev/null 2>&1 || true\n PATH=\"$ROUTEKIT_NPM_PREFIX/bin:$PATH\"\n export PATH\n ROUTEKIT_INSTALL_MODE=private\n}\n\nroutekit_install_package() {\n # $1 = version (semver or latest)\n _spec=\"${ROUTEKIT_PACKAGE}@$1\"\n if [ \"$ROUTEKIT_INSTALL_MODE\" = \"private\" ]; then\n npm install -g --prefix \"$ROUTEKIT_NPM_PREFIX\" \"$_spec\" >&2 || return 1\n else\n npm install -g \"$_spec\" >&2 || return 1\n fi\n # Ensure a user-local shim when the private prefix bin is not already on PATH\n # for non-interactive shells (covered by the preamble for SSH).\n if [ \"$ROUTEKIT_INSTALL_MODE\" = \"private\" ]; then\n mkdir -p \"$HOME/.local/bin\"\n _bin=\"$ROUTEKIT_NPM_PREFIX/bin/routekit\"\n _shim=\"$HOME/.local/bin/routekit\"\n if [ -x \"$_bin\" ]; then\n # When the private prefix is already ~/.local, npm wrote the real bin\n # link at $_shim. Recreating that link as a symlink-to-self breaks PATH.\n if [ \"$_bin\" != \"$_shim\" ]; then\n ln -sfn \"$_bin\" \"$_shim\"\n fi\n fi\n PATH=\"$HOME/.local/bin:$PATH\"\n export PATH\n fi\n if ! have routekit; then\n echo \"RouteKit installer: routekit is not on PATH after installation\" >&2\n return 127\n fi\n}\n\nroutekit_write_install_receipt() {\n if [ \"$ROUTEKIT_INSTALL_MODE\" = \"private\" ]; then\n _prefix=$ROUTEKIT_NPM_PREFIX\n else\n _prefix=$(npm prefix -g 2>/dev/null || echo \"\")\n fi\n _npm=${ROUTEKIT_NPM_EXECUTABLE:-$(command -v npm 2>/dev/null || echo \"\")}\n _node=${ROUTEKIT_NODE_EXECUTABLE:-$(command -v node 2>/dev/null || echo \"\")}\n if [ -z \"$_prefix\" ] || [ -z \"$_npm\" ] || [ -z \"$_node\" ]; then\n echo \"RouteKit installer: could not resolve install receipt paths\" >&2\n return 1\n fi\n \"$_node\" - \"$_prefix\" \"$_npm\" \"$_node\" \"$ROUTEKIT_INSTALL_MODE\" <<'NODE'\nconst fs = require(\"node:fs\");\nconst path = require(\"node:path\");\nconst [, , rawPrefix, rawNpmExecutable, rawNodeExecutable, installMode] = process.argv;\nconst prefix = path.resolve(rawPrefix);\nconst npmExecutable = path.resolve(rawNpmExecutable);\nconst nodeExecutable = path.resolve(rawNodeExecutable);\nconst routekitExecutable = path.join(prefix, \"bin\", \"routekit\");\nif (!fs.existsSync(routekitExecutable)) {\n throw new Error(`installed RouteKit executable is missing: ${routekitExecutable}`);\n}\nconst directory = path.join(prefix, \"lib\", \"routekit\");\nconst target = path.join(directory, \"install.json\");\nconst temporary = `${target}.${process.pid}.tmp`;\nconst receipt = {\n schemaVersion: 1,\n provenance: \"routekit-installer\",\n manager: \"npm\",\n packageName: \"@velum-labs/routekit\",\n prefix,\n npmExecutable,\n nodeExecutable,\n routekitExecutable,\n installMode\n};\nfs.mkdirSync(directory, { recursive: true, mode: 0o700 });\ntry {\n fs.writeFileSync(temporary, `${JSON.stringify(receipt, null, 2)}\\n`, { mode: 0o600 });\n fs.renameSync(temporary, target);\n} finally {\n fs.rmSync(temporary, { force: true });\n}\nNODE\n}\n\nroutekit_print_version() {\n _raw=$(routekit version 2>/dev/null | head -n 1)\n _ver=$(printf '%s\\n' \"$_raw\" | awk '{ print $2 }')\n if [ -n \"$_ver\" ]; then\n printf '%s\\n' \"$_ver\"\n else\n printf 'unknown\\n'\n fi\n}\n\nmain() {\n set -u\n version=latest\n dry_run=no\n ROUTEKIT_NPM_PREFIX=${ROUTEKIT_NPM_PREFIX:-}\n ROUTEKIT_INSTALL_MODE=\n ROUTEKIT_NPM_EXECUTABLE=\n ROUTEKIT_NODE_EXECUTABLE=\n\n while [ \"$#\" -gt 0 ]; do\n case \"$1\" in\n --version)\n if [ \"$#\" -lt 2 ]; then\n echo \"RouteKit installer: --version requires a value\" >&2\n return 2\n fi\n version=$2\n shift 2\n ;;\n --prefix)\n if [ \"$#\" -lt 2 ]; then\n echo \"RouteKit installer: --prefix requires a value\" >&2\n return 2\n fi\n ROUTEKIT_NPM_PREFIX=$2\n shift 2\n ;;\n --dry-run)\n dry_run=yes\n shift\n ;;\n -h|--help)\n routekit_usage\n return 0\n ;;\n --)\n shift\n break\n ;;\n -*)\n echo \"RouteKit installer: unknown option: $1\" >&2\n routekit_usage\n return 2\n ;;\n *)\n echo \"RouteKit installer: unexpected argument: $1\" >&2\n routekit_usage\n return 2\n ;;\n esac\n done\n\n routekit_validate_version \"$version\" || return 2\n routekit_ensure_runtime || return 1\n\n if [ \"$dry_run\" = \"yes\" ]; then\n echo \"RouteKit installer: would install ${ROUTEKIT_PACKAGE}@${version} (mode=${ROUTEKIT_INSTALL_MODE})\" >&2\n return 0\n fi\n\n routekit_detect\n if [ \"$version\" != \"latest\" ] && [ \"$routekit_version\" = \"$version\" ]; then\n echo \"RouteKit installer: already ${version}\" >&2\n routekit_write_install_receipt || return 1\n routekit_print_version\n return 0\n fi\n\n routekit_install_package \"$version\" || return 1\n routekit_write_install_receipt || return 1\n routekit_print_version\n}\n\n# Invoke main last so a truncated curl|sh download cannot run a partial body.\nmain \"$@\""; export declare const CONFIG_INIT_SCRIPT = "set -u\nPATH=\"$HOME/.local/bin:$HOME/.npm-global/bin:/usr/local/bin:/opt/homebrew/bin:$PATH\"\nnvm_dir=${NVM_DIR:-$HOME/.nvm}\nnvm_bin=\"\"\nif [ -d \"$nvm_dir/versions/node\" ]; then\n if [ -f \"$nvm_dir/alias/default\" ]; then\n nvm_want=$(cat \"$nvm_dir/alias/default\" 2>/dev/null || echo \"\")\n for nvm_name in \"$nvm_want\" \"v$nvm_want\"; do\n if [ -n \"$nvm_want\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n break\n fi\n done\n fi\n if [ -z \"$nvm_bin\" ]; then\n # shellcheck disable=SC2012\n nvm_name=$(ls \"$nvm_dir/versions/node\" 2>/dev/null |\n sort -t. -k1.2,1n -k2,2n -k3,3n 2>/dev/null | tail -n 1)\n if [ -n \"$nvm_name\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n fi\n fi\nfi\nif [ -n \"$nvm_bin\" ]; then PATH=\"$nvm_bin:$PATH\"; fi\nexport PATH\nroutekit --local --quiet config init >&2"; export declare const STATUS_SCRIPT = "set -u\nPATH=\"$HOME/.local/bin:$HOME/.npm-global/bin:/usr/local/bin:/opt/homebrew/bin:$PATH\"\nnvm_dir=${NVM_DIR:-$HOME/.nvm}\nnvm_bin=\"\"\nif [ -d \"$nvm_dir/versions/node\" ]; then\n if [ -f \"$nvm_dir/alias/default\" ]; then\n nvm_want=$(cat \"$nvm_dir/alias/default\" 2>/dev/null || echo \"\")\n for nvm_name in \"$nvm_want\" \"v$nvm_want\"; do\n if [ -n \"$nvm_want\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n break\n fi\n done\n fi\n if [ -z \"$nvm_bin\" ]; then\n # shellcheck disable=SC2012\n nvm_name=$(ls \"$nvm_dir/versions/node\" 2>/dev/null |\n sort -t. -k1.2,1n -k2,2n -k3,3n 2>/dev/null | tail -n 1)\n if [ -n \"$nvm_name\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n fi\n fi\nfi\nif [ -n \"$nvm_bin\" ]; then PATH=\"$nvm_bin:$PATH\"; fi\nexport PATH\nroutekit --local --quiet --json status"; export declare const START_SCRIPT = "set -u\nPATH=\"$HOME/.local/bin:$HOME/.npm-global/bin:/usr/local/bin:/opt/homebrew/bin:$PATH\"\nnvm_dir=${NVM_DIR:-$HOME/.nvm}\nnvm_bin=\"\"\nif [ -d \"$nvm_dir/versions/node\" ]; then\n if [ -f \"$nvm_dir/alias/default\" ]; then\n nvm_want=$(cat \"$nvm_dir/alias/default\" 2>/dev/null || echo \"\")\n for nvm_name in \"$nvm_want\" \"v$nvm_want\"; do\n if [ -n \"$nvm_want\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n break\n fi\n done\n fi\n if [ -z \"$nvm_bin\" ]; then\n # shellcheck disable=SC2012\n nvm_name=$(ls \"$nvm_dir/versions/node\" 2>/dev/null |\n sort -t. -k1.2,1n -k2,2n -k3,3n 2>/dev/null | tail -n 1)\n if [ -n \"$nvm_name\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n fi\n fi\nfi\nif [ -n \"$nvm_bin\" ]; then PATH=\"$nvm_bin:$PATH\"; fi\nexport PATH\nroutekit --local --quiet --json start"; export declare const RELAY_SCRIPT = "set -u\nPATH=\"$HOME/.local/bin:$HOME/.npm-global/bin:/usr/local/bin:/opt/homebrew/bin:$PATH\"\nnvm_dir=${NVM_DIR:-$HOME/.nvm}\nnvm_bin=\"\"\nif [ -d \"$nvm_dir/versions/node\" ]; then\n if [ -f \"$nvm_dir/alias/default\" ]; then\n nvm_want=$(cat \"$nvm_dir/alias/default\" 2>/dev/null || echo \"\")\n for nvm_name in \"$nvm_want\" \"v$nvm_want\"; do\n if [ -n \"$nvm_want\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n break\n fi\n done\n fi\n if [ -z \"$nvm_bin\" ]; then\n # shellcheck disable=SC2012\n nvm_name=$(ls \"$nvm_dir/versions/node\" 2>/dev/null |\n sort -t. -k1.2,1n -k2,2n -k3,3n 2>/dev/null | tail -n 1)\n if [ -n \"$nvm_name\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n fi\n fi\nfi\nif [ -n \"$nvm_bin\" ]; then PATH=\"$nvm_bin:$PATH\"; fi\nexport PATH\nexec routekit --local --quiet daemon exec"; export declare const PEER_ADD_SCRIPT = "set -u\nPATH=\"$HOME/.local/bin:$HOME/.npm-global/bin:/usr/local/bin:/opt/homebrew/bin:$PATH\"\nnvm_dir=${NVM_DIR:-$HOME/.nvm}\nnvm_bin=\"\"\nif [ -d \"$nvm_dir/versions/node\" ]; then\n if [ -f \"$nvm_dir/alias/default\" ]; then\n nvm_want=$(cat \"$nvm_dir/alias/default\" 2>/dev/null || echo \"\")\n for nvm_name in \"$nvm_want\" \"v$nvm_want\"; do\n if [ -n \"$nvm_want\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n break\n fi\n done\n fi\n if [ -z \"$nvm_bin\" ]; then\n # shellcheck disable=SC2012\n nvm_name=$(ls \"$nvm_dir/versions/node\" 2>/dev/null |\n sort -t. -k1.2,1n -k2,2n -k3,3n 2>/dev/null | tail -n 1)\n if [ -n \"$nvm_name\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n fi\n fi\nfi\nif [ -n \"$nvm_bin\" ]; then PATH=\"$nvm_bin:$PATH\"; fi\nexport PATH\nexec routekit --local --quiet --json peer add -"; export declare const INSTALLER_SCRIPT = "set -u\nPATH=\"$HOME/.local/bin:$HOME/.npm-global/bin:/usr/local/bin:/opt/homebrew/bin:$PATH\"\nnvm_dir=${NVM_DIR:-$HOME/.nvm}\nnvm_bin=\"\"\nif [ -d \"$nvm_dir/versions/node\" ]; then\n if [ -f \"$nvm_dir/alias/default\" ]; then\n nvm_want=$(cat \"$nvm_dir/alias/default\" 2>/dev/null || echo \"\")\n for nvm_name in \"$nvm_want\" \"v$nvm_want\"; do\n if [ -n \"$nvm_want\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n break\n fi\n done\n fi\n if [ -z \"$nvm_bin\" ]; then\n # shellcheck disable=SC2012\n nvm_name=$(ls \"$nvm_dir/versions/node\" 2>/dev/null |\n sort -t. -k1.2,1n -k2,2n -k3,3n 2>/dev/null | tail -n 1)\n if [ -n \"$nvm_name\" ] && [ -d \"$nvm_dir/versions/node/$nvm_name/bin\" ]; then\n nvm_bin=\"$nvm_dir/versions/node/$nvm_name/bin\"\n fi\n fi\nfi\nif [ -n \"$nvm_bin\" ]; then PATH=\"$nvm_bin:$PATH\"; fi\nexport PATH\n# Shared host detection helpers. Expanded via `# include` into the probe and\n# the public installer so the two cannot drift on Node/npm/prefix writability.\n# Does not mutate positional parameters.\nhave() { command -v \"$1\" >/dev/null 2>&1; }\n\n# Variables set here are read by the including script after return.\n# shellcheck disable=SC2034\nroutekit_detect() {\n os=$(uname -s 2>/dev/null || echo unknown)\n arch=$(uname -m 2>/dev/null || echo unknown)\n node_version=\"\"\n npm_version=\"\"\n npm_prefix=\"\"\n npm_prefix_writable=no\n if have node; then node_version=$(node --version 2>/dev/null || echo unknown); fi\n if have npm; then\n npm_version=$(npm --version 2>/dev/null || echo unknown)\n npm_prefix=$(npm prefix -g 2>/dev/null || echo \"\")\n if [ -n \"$npm_prefix\" ]; then\n if [ -w \"$npm_prefix/lib/node_modules\" ]; then\n npm_prefix_writable=yes\n elif [ ! -e \"$npm_prefix/lib/node_modules\" ] && [ -w \"$npm_prefix\" ]; then\n npm_prefix_writable=yes\n fi\n fi\n fi\n routekit_version=\"\"\n if have routekit; then\n # Take the second whitespace-separated field of `routekit version` without\n # clobbering the caller's positional parameters.\n routekit_version=$(\n routekit version 2>/dev/null | head -n 1 | awk '{ print $2 }'\n )\n if [ -z \"$routekit_version\" ]; then routekit_version=unknown; fi\n fi\n supervisor=none\n if [ \"$os\" = \"Darwin\" ]; then\n if have launchctl; then supervisor=launchd; fi\n elif have systemctl; then\n if systemctl --user show-environment >/dev/null 2>&1; then supervisor=systemd; fi\n fi\n config_exists=no\n if [ -f \"$HOME/.config/routekit/router.yaml\" ]; then config_exists=yes; fi\n state=${ROUTEKIT_HOME:-$HOME/.routekit}\n daemon_running=no\n if [ -f \"$state/services/daemon.json\" ]; then daemon_running=yes; fi\n}\n# Pinned Node.js runtime digests for the private-runtime fallback.\n# Regenerate with: node scripts/generate-node-digests.mjs\n# Source: https://nodejs.org/dist/v${ROUTEKIT_NODE_VERSION}/SHASUMS256.txt\n# shellcheck disable=SC2034\nROUTEKIT_NODE_VERSION=22.22.2\nROUTEKIT_NODE_MINIMUM_MAJOR=22\n\n# sha256 of the .tar.gz for each supported platform (os/arch).\nroutekit_node_digest() {\n # $1 = os (linux|darwin), $2 = arch (x64|arm64)\n case \"$1/$2\" in\n linux/x64) printf '%s\\n' '978978a635eef872fa68beae09f0aad0bbbae6757e444da80b570964a97e62a3' ;;\n linux/arm64) printf '%s\\n' 'b2f3a96f31486bfc365192ad65ced14833ad2a3c2e1bcefec4846902f264fa28' ;;\n darwin/x64) printf '%s\\n' '12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba' ;;\n darwin/arm64) printf '%s\\n' 'db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000' ;;\n *) return 1 ;;\n esac\n}\n\nroutekit_node_platform() {\n # Prints \"os arch\" (nodejs.org naming) or fails.\n _os=$(uname -s 2>/dev/null || echo unknown)\n _arch=$(uname -m 2>/dev/null || echo unknown)\n case \"$_os\" in\n Linux) _os=linux ;;\n Darwin) _os=darwin ;;\n *) return 1 ;;\n esac\n case \"$_arch\" in\n x86_64|amd64) _arch=x64 ;;\n aarch64|arm64) _arch=arm64 ;;\n *) return 1 ;;\n esac\n printf '%s %s\\n' \"$_os\" \"$_arch\"\n}\n# Download, digest-verify, and extract a pinned Node.js runtime into\n# $ROUTEKIT_NODE_ROOT (default: ~/.local/share/routekit/node).\n# Requires: curl or wget, tar, and sha256sum or shasum.\n\nroutekit_sha256() {\n # Verify $1 against expected hex digest $2. Fail closed.\n if have sha256sum; then\n _got=$(sha256sum \"$1\" | awk '{ print $1 }')\n elif have shasum; then\n _got=$(shasum -a 256 \"$1\" | awk '{ print $1 }')\n else\n echo \"RouteKit installer: need sha256sum or shasum to verify the Node.js download\" >&2\n return 1\n fi\n if [ \"$_got\" != \"$2\" ]; then\n echo \"RouteKit installer: Node.js digest mismatch (got $_got, want $2)\" >&2\n return 1\n fi\n}\n\nroutekit_download() {\n # $1 = url, $2 = dest\n if have curl; then\n curl -fsSL \"$1\" -o \"$2\"\n elif have wget; then\n wget -qO \"$2\" \"$1\"\n else\n echo \"RouteKit installer: need curl or wget to download Node.js\" >&2\n return 1\n fi\n}\n\nroutekit_bootstrap_node() {\n # Sets PATH to include the private Node bin. Idempotent when already present.\n ROUTEKIT_NODE_ROOT=${ROUTEKIT_NODE_ROOT:-$HOME/.local/share/routekit/node}\n _platform=$(routekit_node_platform) || {\n echo \"RouteKit installer: unsupported platform for private Node runtime\" >&2\n return 1\n }\n _os=${_platform% *}\n _arch=${_platform#* }\n _digest=$(routekit_node_digest \"$_os\" \"$_arch\") || {\n echo \"RouteKit installer: no pinned Node digest for $_os/$_arch\" >&2\n return 1\n }\n _name=\"node-v${ROUTEKIT_NODE_VERSION}-${_os}-${_arch}\"\n _bin=\"$ROUTEKIT_NODE_ROOT/${_name}/bin\"\n if [ -x \"$_bin/node\" ] && [ -x \"$_bin/npm\" ]; then\n PATH=\"$_bin:$PATH\"\n export PATH\n return 0\n fi\n _url=\"https://nodejs.org/dist/v${ROUTEKIT_NODE_VERSION}/${_name}.tar.gz\"\n _tmp=\"${TMPDIR:-/tmp}/routekit-node.$$\"\n if ! mkdir \"$_tmp\" 2>/dev/null; then\n echo \"RouteKit installer: could not create temporary directory $_tmp\" >&2\n return 1\n fi\n echo \"RouteKit installer: downloading Node.js ${ROUTEKIT_NODE_VERSION} ($_os/$_arch)\" >&2\n if ! routekit_download \"$_url\" \"$_tmp/node.tar.gz\"; then\n rm -rf \"$_tmp\"\n return 1\n fi\n if ! routekit_sha256 \"$_tmp/node.tar.gz\" \"$_digest\"; then\n rm -rf \"$_tmp\"\n return 1\n fi\n mkdir -p \"$ROUTEKIT_NODE_ROOT\"\n if ! tar -xzf \"$_tmp/node.tar.gz\" -C \"$ROUTEKIT_NODE_ROOT\"; then\n rm -rf \"$_tmp\"\n return 1\n fi\n rm -rf \"$_tmp\"\n if [ ! -x \"$_bin/node\" ]; then\n echo \"RouteKit installer: Node.js extract did not produce $_bin/node\" >&2\n return 1\n fi\n PATH=\"$_bin:$PATH\"\n export PATH\n}\n# RouteKit public installer.\n# shellcheck disable=SC2154,SC2034\n# One-liner:\n# curl -fsSL https://github.com/velum-labs/routekit/releases/latest/download/install.sh | sh\n# Prefer a system Node.js >= 22 with a writable npm prefix; otherwise download\n# a pinned Node runtime into ~/.local/share/routekit/node and install into a\n# private prefix with a ~/.local/bin/routekit shim. Never escalates with sudo.\n\nROUTEKIT_PACKAGE=${ROUTEKIT_PACKAGE:-@velum-labs/routekit}\n\nroutekit_usage() {\n cat <<'EOF' >&2\nUsage: install.sh [--version ] [--prefix ] [--dry-run]\n\nInstall or upgrade the RouteKit CLI. No sudo. Prefers a system Node.js 22+\nwith a writable npm prefix; otherwise bootstraps a private Node runtime.\nEOF\n}\n\nroutekit_node_major() {\n # $1 = vX.Y.Z or X.Y.Z\n _v=${1#v}\n _major=${_v%%.*}\n case \"$_major\" in\n ''|*[!0-9]*) return 1 ;;\n *) printf '%s\\n' \"$_major\" ;;\n esac\n}\n\nroutekit_validate_version() {\n case \"$1\" in\n latest) return 0 ;;\n [0-9]*.[0-9]*.[0-9]*) return 0 ;;\n [0-9]*.[0-9]*.[0-9]*-[A-Za-z0-9.-]*) return 0 ;;\n *)\n echo \"RouteKit installer: invalid version: $1\" >&2\n echo \"pass an exact version such as 1.2.3, or latest\" >&2\n return 1\n ;;\n esac\n}\n\nroutekit_ensure_runtime() {\n # Decide between system Node/npm and the private runtime. Sets\n # ROUTEKIT_NPM_PREFIX when using a private prefix.\n _requested_prefix=$ROUTEKIT_NPM_PREFIX\n routekit_detect\n _major=\"\"\n if [ -n \"$node_version\" ]; then\n _major=$(routekit_node_major \"$node_version\" || echo \"\")\n fi\n if [ -n \"$_major\" ] && [ \"$_major\" -ge \"$ROUTEKIT_NODE_MINIMUM_MAJOR\" ] &&\n [ \"$npm_prefix_writable\" = \"yes\" ] && have npm; then\n ROUTEKIT_INSTALL_MODE=system\n return 0\n fi\n echo \"RouteKit installer: using private Node.js ${ROUTEKIT_NODE_VERSION} runtime\" >&2\n routekit_bootstrap_node || return 1\n ROUTEKIT_NPM_EXECUTABLE=$(command -v npm 2>/dev/null || echo \"\")\n ROUTEKIT_NODE_EXECUTABLE=$(command -v node 2>/dev/null || echo \"\")\n ROUTEKIT_NPM_PREFIX=${_requested_prefix:-$HOME/.local}\n mkdir -p \"$ROUTEKIT_NPM_PREFIX\"\n npm config set prefix \"$ROUTEKIT_NPM_PREFIX\" >/dev/null 2>&1 || true\n PATH=\"$ROUTEKIT_NPM_PREFIX/bin:$PATH\"\n export PATH\n ROUTEKIT_INSTALL_MODE=private\n}\n\nroutekit_install_package() {\n # $1 = version (semver or latest)\n _spec=\"${ROUTEKIT_PACKAGE}@$1\"\n if [ \"$ROUTEKIT_INSTALL_MODE\" = \"private\" ]; then\n npm install -g --prefix \"$ROUTEKIT_NPM_PREFIX\" \"$_spec\" >&2 || return 1\n else\n npm install -g \"$_spec\" >&2 || return 1\n fi\n # Ensure a user-local shim when the private prefix bin is not already on PATH\n # for non-interactive shells (covered by the preamble for SSH).\n if [ \"$ROUTEKIT_INSTALL_MODE\" = \"private\" ]; then\n mkdir -p \"$HOME/.local/bin\"\n _bin=\"$ROUTEKIT_NPM_PREFIX/bin/routekit\"\n _shim=\"$HOME/.local/bin/routekit\"\n if [ -x \"$_bin\" ]; then\n # When the private prefix is already ~/.local, npm wrote the real bin\n # link at $_shim. Recreating that link as a symlink-to-self breaks PATH.\n if [ \"$_bin\" != \"$_shim\" ]; then\n ln -sfn \"$_bin\" \"$_shim\"\n fi\n fi\n PATH=\"$HOME/.local/bin:$PATH\"\n export PATH\n fi\n if ! have routekit; then\n echo \"RouteKit installer: routekit is not on PATH after installation\" >&2\n return 127\n fi\n}\n\nroutekit_write_install_receipt() {\n if [ \"$ROUTEKIT_INSTALL_MODE\" = \"private\" ]; then\n _prefix=$ROUTEKIT_NPM_PREFIX\n else\n _prefix=$(npm prefix -g 2>/dev/null || echo \"\")\n fi\n _npm=${ROUTEKIT_NPM_EXECUTABLE:-$(command -v npm 2>/dev/null || echo \"\")}\n _node=${ROUTEKIT_NODE_EXECUTABLE:-$(command -v node 2>/dev/null || echo \"\")}\n if [ -z \"$_prefix\" ] || [ -z \"$_npm\" ] || [ -z \"$_node\" ]; then\n echo \"RouteKit installer: could not resolve install receipt paths\" >&2\n return 1\n fi\n \"$_node\" - \"$_prefix\" \"$_npm\" \"$_node\" \"$ROUTEKIT_INSTALL_MODE\" <<'NODE'\nconst fs = require(\"node:fs\");\nconst path = require(\"node:path\");\nconst [, , rawPrefix, rawNpmExecutable, rawNodeExecutable, installMode] = process.argv;\nconst prefix = path.resolve(rawPrefix);\nconst npmExecutable = path.resolve(rawNpmExecutable);\nconst nodeExecutable = path.resolve(rawNodeExecutable);\nconst routekitExecutable = path.join(prefix, \"bin\", \"routekit\");\nif (!fs.existsSync(routekitExecutable)) {\n throw new Error(`installed RouteKit executable is missing: ${routekitExecutable}`);\n}\nconst directory = path.join(prefix, \"lib\", \"routekit\");\nconst target = path.join(directory, \"install.json\");\nconst temporary = `${target}.${process.pid}.tmp`;\nconst receipt = {\n schemaVersion: 1,\n provenance: \"routekit-installer\",\n manager: \"npm\",\n packageName: \"@velum-labs/routekit\",\n prefix,\n npmExecutable,\n nodeExecutable,\n routekitExecutable,\n installMode\n};\nfs.mkdirSync(directory, { recursive: true, mode: 0o700 });\ntry {\n fs.writeFileSync(temporary, `${JSON.stringify(receipt, null, 2)}\\n`, { mode: 0o600 });\n fs.renameSync(temporary, target);\n} finally {\n fs.rmSync(temporary, { force: true });\n}\nNODE\n}\n\nroutekit_print_version() {\n _raw=$(routekit version 2>/dev/null | head -n 1)\n _ver=$(printf '%s\\n' \"$_raw\" | awk '{ print $2 }')\n if [ -n \"$_ver\" ]; then\n printf '%s\\n' \"$_ver\"\n else\n printf 'unknown\\n'\n fi\n}\n\nmain() {\n set -u\n version=latest\n dry_run=no\n ROUTEKIT_NPM_PREFIX=${ROUTEKIT_NPM_PREFIX:-}\n ROUTEKIT_INSTALL_MODE=\n ROUTEKIT_NPM_EXECUTABLE=\n ROUTEKIT_NODE_EXECUTABLE=\n\n while [ \"$#\" -gt 0 ]; do\n case \"$1\" in\n --version)\n if [ \"$#\" -lt 2 ]; then\n echo \"RouteKit installer: --version requires a value\" >&2\n return 2\n fi\n version=$2\n shift 2\n ;;\n --prefix)\n if [ \"$#\" -lt 2 ]; then\n echo \"RouteKit installer: --prefix requires a value\" >&2\n return 2\n fi\n ROUTEKIT_NPM_PREFIX=$2\n shift 2\n ;;\n --dry-run)\n dry_run=yes\n shift\n ;;\n -h|--help)\n routekit_usage\n return 0\n ;;\n --)\n shift\n break\n ;;\n -*)\n echo \"RouteKit installer: unknown option: $1\" >&2\n routekit_usage\n return 2\n ;;\n *)\n echo \"RouteKit installer: unexpected argument: $1\" >&2\n routekit_usage\n return 2\n ;;\n esac\n done\n\n routekit_validate_version \"$version\" || return 2\n routekit_ensure_runtime || return 1\n\n if [ \"$dry_run\" = \"yes\" ]; then\n echo \"RouteKit installer: would install ${ROUTEKIT_PACKAGE}@${version} (mode=${ROUTEKIT_INSTALL_MODE})\" >&2\n return 0\n fi\n\n routekit_detect\n if [ \"$version\" != \"latest\" ] && [ \"$routekit_version\" = \"$version\" ]; then\n echo \"RouteKit installer: already ${version}\" >&2\n routekit_write_install_receipt || return 1\n routekit_print_version\n return 0\n fi\n\n routekit_install_package \"$version\" || return 1\n routekit_write_install_receipt || return 1\n routekit_print_version\n}\n\n# Invoke main last so a truncated curl|sh download cannot run a partial body.\nmain \"$@\""; export declare const SHELL_SCRIPT_DIGESTS: { readonly REMOTE_PATH_PREAMBLE: "sha256:326c5fcfdbe1d698647dcfcff7857cef7a6f3e991a8c4a000bb58483aaedbca1"; readonly PROBE_SCRIPT: "sha256:17987922823e191218b50dd152b6c7b1ff2d198b419ecc37d0bc0300b2797995"; readonly INSTALL_SCRIPT: "sha256:9fe1ccad5508103fbce9df9b4f3f631888541daf91ecdc867344d8f02c55a63f"; readonly CONFIG_INIT_SCRIPT: "sha256:813833f02df4baa3cde2398ad78a4770daa2149eb5f81e86c83e9ab20924d261"; readonly STATUS_SCRIPT: "sha256:31e8596bd90eead6d1a1569b348e9038532c37cbb00d7fdca04c2b549345a785"; readonly START_SCRIPT: "sha256:b43cc13116119c94ec9600f8cc71b6c3040dd16ede596c819d5e7cb45dd764fc"; readonly RELAY_SCRIPT: "sha256:4e2b550d72cac3bdb0b8125c5c415eb4d68d4e2ed3e1e28c61a2d23f30f9bd01"; readonly PEER_ADD_SCRIPT: "sha256:d85846c6f9d86bc6b91e65c65d4e25b9bca75ae089baeb3d062618d8dda98c2e"; readonly INSTALLER_SCRIPT: "sha256:9fe1ccad5508103fbce9df9b4f3f631888541daf91ecdc867344d8f02c55a63f"; };