managarten/scripts/mac-mini/deploy-mana-bot.sh
Claude 370b5d3196
fix(matrix-mana-bot): correct service method calls and add deploy script
- Fix AiHandler to use correct service methods:
  - setSessionModel instead of setModel
  - clearSessionHistory instead of clearHistory
  - compareModels for model comparison
- Fix TodoHandler to use index-based methods:
  - completeTaskByIndex instead of completeTask
  - deleteTaskByIndex instead of deleteTask
- Add deploy-mana-bot.sh script for full deployment automation

https://claude.ai/code/session_015bwcqVRiFmSydYTjvDJGTc
2026-01-29 00:42:50 +00:00

134 lines
3.8 KiB
Bash
Executable file

#!/bin/bash
# Deploy Matrix Mana Bot (Gateway) to Mac Mini
# This script handles the complete deployment process
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m'
echo "============================================"
echo " Matrix Mana Bot - Full Deployment"
echo "============================================"
echo ""
cd "$PROJECT_DIR"
# Check if .env exists and has the token
if ! grep -q "MATRIX_MANA_BOT_TOKEN" .env 2>/dev/null; then
echo -e "${YELLOW}Warning: MATRIX_MANA_BOT_TOKEN not found in .env${NC}"
echo "Run ./scripts/mac-mini/setup-mana-bot.sh first to register the bot."
echo ""
read -p "Continue anyway? (y/N) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
fi
# Step 1: Pull latest code
echo -e "${CYAN}Step 1: Pulling latest code...${NC}"
git pull --ff-only || {
echo -e "${YELLOW}Git pull failed. You may have local changes.${NC}"
read -p "Continue anyway? (y/N) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
}
# Step 2: Build shared package
echo ""
echo -e "${CYAN}Step 2: Building @manacore/bot-services...${NC}"
cd "$PROJECT_DIR/packages/bot-services"
pnpm install --frozen-lockfile 2>/dev/null || pnpm install
pnpm build || {
echo -e "${RED}Failed to build bot-services package${NC}"
exit 1
}
echo -e "${GREEN}bot-services built successfully${NC}"
# Step 3: Build gateway bot
echo ""
echo -e "${CYAN}Step 3: Building matrix-mana-bot...${NC}"
cd "$PROJECT_DIR/services/matrix-mana-bot"
pnpm install --frozen-lockfile 2>/dev/null || pnpm install
pnpm build || {
echo -e "${RED}Failed to build matrix-mana-bot${NC}"
exit 1
}
echo -e "${GREEN}matrix-mana-bot built successfully${NC}"
# Step 4: Build Docker image
echo ""
echo -e "${CYAN}Step 4: Building Docker image...${NC}"
cd "$PROJECT_DIR"
docker build -t matrix-mana-bot:latest ./services/matrix-mana-bot || {
echo -e "${RED}Failed to build Docker image${NC}"
exit 1
}
echo -e "${GREEN}Docker image built successfully${NC}"
# Step 5: Stop existing container if running
echo ""
echo -e "${CYAN}Step 5: Stopping existing container...${NC}"
docker compose -f docker-compose.macmini.yml stop matrix-mana-bot 2>/dev/null || true
docker compose -f docker-compose.macmini.yml rm -f matrix-mana-bot 2>/dev/null || true
# Step 6: Start new container
echo ""
echo -e "${CYAN}Step 6: Starting matrix-mana-bot...${NC}"
docker compose -f docker-compose.macmini.yml up -d matrix-mana-bot || {
echo -e "${RED}Failed to start container${NC}"
exit 1
}
# Step 7: Wait for health check
echo ""
echo -e "${CYAN}Step 7: Waiting for health check...${NC}"
for i in {1..30}; do
if curl -s http://localhost:3310/health > /dev/null 2>&1; then
echo -e "${GREEN}Health check passed!${NC}"
break
fi
if [ $i -eq 30 ]; then
echo -e "${RED}Health check failed after 30 seconds${NC}"
echo "Check logs with: docker logs manacore-matrix-mana-bot"
exit 1
fi
echo -n "."
sleep 1
done
# Step 8: Show status
echo ""
echo "============================================"
echo -e "${GREEN} Deployment Complete!${NC}"
echo "============================================"
echo ""
echo "Container Status:"
docker ps --filter "name=manacore-matrix-mana-bot" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
echo ""
echo "Health Check:"
curl -s http://localhost:3310/health | jq . 2>/dev/null || curl -s http://localhost:3310/health
echo ""
echo ""
echo "Next Steps:"
echo "1. Invite the bot to a Matrix room:"
echo " /invite @mana:mana.how"
echo ""
echo "2. Test with:"
echo " hilfe"
echo " !todo Test aufgabe"
echo " !list"
echo ""
echo "3. View logs with:"
echo " docker logs -f manacore-matrix-mana-bot"
echo ""