#!/bin/bash
# Generate manifest.json with checksums for all distributed artifacts
set -e

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
ROOT="$(dirname "$SCRIPT_DIR")"
PUBLIC_AGENT="$(dirname "$(dirname "$ROOT")")/public/agent"
BIN_DIR="$ROOT/bin"

VERSION=$(node -e "console.log(require('$ROOT/package.json').version)")
GIT_SHA=$(git rev-parse HEAD 2>/dev/null || echo "unknown")

# Binary hashes
LINUX_X64_HASH=""
LINUX_X64_SIZE=0
if [ -f "$BIN_DIR/orquesta-agent-linux-x64" ]; then
  LINUX_X64_HASH=$(sha256sum "$BIN_DIR/orquesta-agent-linux-x64" | cut -d' ' -f1)
  LINUX_X64_SIZE=$(stat -c%s "$BIN_DIR/orquesta-agent-linux-x64" 2>/dev/null || stat -f%z "$BIN_DIR/orquesta-agent-linux-x64" 2>/dev/null)
fi

# Bundle hash
BUNDLE_HASH=""
BUNDLE_SIZE=0
if [ -f "$BIN_DIR/orquesta-agent.mjs" ]; then
  BUNDLE_HASH=$(sha256sum "$BIN_DIR/orquesta-agent.mjs" | cut -d' ' -f1)
  BUNDLE_SIZE=$(stat -c%s "$BIN_DIR/orquesta-agent.mjs" 2>/dev/null || stat -f%z "$BIN_DIR/orquesta-agent.mjs" 2>/dev/null)
fi

# npm tarball hash
NPM_HASH=""
TMP_TGZ=$(mktemp)
if npm pack --pack-destination "$(dirname "$TMP_TGZ")" > /dev/null 2>&1; then
  NPM_TGZ="$(dirname "$TMP_TGZ")/orquesta-agent-${VERSION}.tgz"
  if [ -f "$NPM_TGZ" ]; then
    NPM_HASH=$(sha256sum "$NPM_TGZ" | cut -d' ' -f1)
    rm -f "$NPM_TGZ"
  fi
fi
rm -f "$TMP_TGZ"

mkdir -p "$PUBLIC_AGENT"
cat > "$PUBLIC_AGENT/manifest.json" << EOF
{
  "version": "${VERSION}",
  "buildDate": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
  "gitCommit": "${GIT_SHA}",
  "binaries": {
    "linux-x64": {
      "file": "orquesta-agent-linux-x64",
      "sha256": "${LINUX_X64_HASH}",
      "size": ${LINUX_X64_SIZE}
    }
  },
  "bundle": {
    "file": "orquesta-agent.mjs",
    "sha256": "${BUNDLE_HASH}",
    "size": ${BUNDLE_SIZE}
  },
  "npm": {
    "package": "orquesta-agent@${VERSION}",
    "tarball_sha256": "${NPM_HASH}"
  }
}
EOF

echo "Manifest generated: $PUBLIC_AGENT/manifest.json"
echo "  Version:    $VERSION"
echo "  Git commit: $GIT_SHA"
echo "  Binary:     $LINUX_X64_HASH"
echo "  Bundle:     $BUNDLE_HASH"
echo "  npm:        $NPM_HASH"
