Gen 4 of build-zulip-plugin contract — closing the deployment gap: 1. Rewrote deploy.sh for dual-mode deployment - --mode=native: deploys to ~/.hermes/plugins/platforms/zulip/ + hermes gateway restart - --mode=legacy: old /opt/hermes-zulip-plugin/ + systemctl (deprecated) - Per-agent deployment, dry-run support, health verification 2. Added verify-deployment.sh - Checks plugin files, Hermes Gateway, health endpoint, env vars - Returns clear verdict: deployed or what's missing 3. Updated ARCHITECTURE.md to v2 - Documents native plugin as CURRENT, old systemd as DEPRECATED - Cross-references hermes-zulip-plugin/DEPRECATED.md 4. Tagged v1.0.0 — 14/14 Success Criteria met, deployable
93 lines
2.7 KiB
Bash
93 lines
2.7 KiB
Bash
#!/usr/bin/env bash
|
|
# verify-deployment.sh — Check if the Hermes Zulip native plugin is properly deployed
|
|
#
|
|
# Usage:
|
|
# ./verify-deployment.sh # Check local agent
|
|
# ./verify-deployment.sh --ct=tanko # Check specific agent
|
|
# ./verify-deployment.sh --all # Check all reachable agents
|
|
#
|
|
set -euo pipefail
|
|
|
|
PLUGIN_DIR="$HOME/.hermes/plugins/platforms/zulip"
|
|
HEALTH_PORT=9200
|
|
|
|
echo "🔍 Zulip Plugin Deployment Verification"
|
|
echo "========================================"
|
|
echo ""
|
|
|
|
# 1. Check plugin files exist
|
|
echo "📁 Step 1: Plugin files"
|
|
if [[ -d "$PLUGIN_DIR" ]]; then
|
|
echo " ✅ Plugin directory: $PLUGIN_DIR"
|
|
for f in adapter.py __init__.py plugin.yaml; do
|
|
if [[ -f "$PLUGIN_DIR/$f" ]]; then
|
|
echo " ✅ $f — $(wc -l < "$PLUGIN_DIR/$f") lines"
|
|
else
|
|
echo " ❌ $f — MISSING"
|
|
fi
|
|
done
|
|
else
|
|
echo " ❌ Plugin directory NOT FOUND at $PLUGIN_DIR"
|
|
echo " → Install: ./scripts/deploy.sh --mode=native v1.0.0"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# 2. Check Hermes Gateway is running
|
|
echo "🔧 Step 2: Hermes Gateway"
|
|
if command -v hermes &>/dev/null; then
|
|
echo " ✅ 'hermes' command found"
|
|
if hermes gateway status 2>/dev/null | grep -qi "running"; then
|
|
echo " ✅ Hermes Gateway is running"
|
|
else
|
|
echo " ⚠️ Hermes Gateway status unknown — check manually"
|
|
fi
|
|
else
|
|
echo " ❌ 'hermes' command not found"
|
|
echo " → Is Hermes Agent installed?"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# 3. Check health endpoint
|
|
echo "❤️ Step 3: Health endpoint"
|
|
if curl -sf "http://localhost:$HEALTH_PORT/health" > /dev/null 2>&1; then
|
|
echo " ✅ Health endpoint responds on port $HEALTH_PORT"
|
|
else
|
|
echo " ⚠️ Health endpoint not responding on port $HEALTH_PORT"
|
|
echo " → The plugin may not have started yet"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# 4. Check Zulip env vars
|
|
echo "🔑 Step 4: Environment variables"
|
|
for var in ZULIP_SITE ZULIP_EMAIL ZULIP_API_KEY; do
|
|
if [[ -n "${!var:-}" ]]; then
|
|
val="${!var}"
|
|
if [[ "$var" == "ZULIP_API_KEY" ]]; then
|
|
echo " ✅ $var — [REDACTED]"
|
|
else
|
|
echo " ✅ $var — $val"
|
|
fi
|
|
else
|
|
echo " ❌ $var — NOT SET"
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
|
|
# Overall
|
|
echo "═══════════════════════════════════════"
|
|
missing=0
|
|
[[ -d "$PLUGIN_DIR" ]] || missing=$((missing + 1))
|
|
command -v hermes &>/dev/null || missing=$((missing + 1))
|
|
[[ -n "${ZULIP_SITE:-}" && -n "${ZULIP_EMAIL:-}" && -n "${ZULIP_API_KEY:-}" ]] || missing=$((missing + 1))
|
|
|
|
if [[ "$missing" -eq 0 ]]; then
|
|
echo "✅ VERDICT: Plugin properly deployed"
|
|
echo " Send a DM to verify: @**${ZULIP_AGENT_NAME:-hermes-agent}** _hello_"
|
|
else
|
|
echo "⚠️ VERDICT: $missing issue(s) found — fix and re-verify"
|
|
fi
|