#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" OUT_DIR="${ROOT_DIR}/dist" case "$(uname -m)" in x86_64|amd64) PLATFORM="linux-x64" ;; aarch64|arm64) PLATFORM="linux-arm64" ;; *) echo "Unsupported host architecture: $(uname -m)" >&2; exit 2 ;; esac BINARY="${ROOT_DIR}/node_modules/bare-runtime-${PLATFORM}/bin/bare" [[ -f "${BINARY}" ]] || { echo "Bare platform binary missing; run npm ci first." >&2; exit 1; } chmod 755 "${BINARY}" python3 "${ROOT_DIR}/packaging/prepare-bare-deps.py" "${ROOT_DIR}/node_modules" mkdir -p "${OUT_DIR}" BUNDLE_DIR="${OUT_DIR}/jarvis-qvac-bare-${PLATFORM}" rm -rf "${BUNDLE_DIR}" "${OUT_DIR}/jarvis-qvac-bare-${PLATFORM}.tar.gz" mkdir -p "${BUNDLE_DIR}" tar --exclude='.git' --exclude='./.agents' --exclude='./.codex' --exclude='./dist' --exclude='./vendor/agent-harness/node_modules' --exclude='*/__pycache__' --exclude='*.pyc' -cf - -C "${ROOT_DIR}" . | tar -xf - -C "${BUNDLE_DIR}" cp -a "${ROOT_DIR}/node_modules" "${BUNDLE_DIR}/" # QVAC publishes one package containing native prebuilds for every supported # platform. The rolling asset is architecture-specific: retain all Linux x64 # GPU variants, and remove arm64/mobile/Apple/Windows payloads before packing. find "${BUNDLE_DIR}/node_modules" -type d -name prebuilds -prune -print0 | while IFS= read -r -d '' prebuilds; do find "${prebuilds}" -mindepth 1 -maxdepth 1 -type d ! -name "${PLATFORM}" -exec rm -rf {} + done find "${BUNDLE_DIR}/node_modules" -maxdepth 1 -type d -name 'bare-runtime-*' ! -name "bare-runtime-${PLATFORM}" -exec rm -rf {} + if [[ -d "${BUNDLE_DIR}/node_modules/@esbuild" ]]; then find "${BUNDLE_DIR}/node_modules/@esbuild" -mindepth 1 -maxdepth 1 -type d ! -name 'linux-x64' -exec rm -rf {} + fi tar -C "${OUT_DIR}" -czf "${OUT_DIR}/jarvis-qvac-bare-${PLATFORM}.tar.gz" "jarvis-qvac-bare-${PLATFORM}" rm -rf "${BUNDLE_DIR}" echo "${OUT_DIR}/jarvis-qvac-bare-${PLATFORM}.tar.gz"