67 lines
2.0 KiB
Bash
67 lines
2.0 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# Deploy Handoff Pro to Tom's workspace on GW-2
|
||
|
|
# Usage: ./deploy.sh [--dry-run]
|
||
|
|
set -e
|
||
|
|
|
||
|
|
CONTAINER="openclaw-repo-openclaw-gateway-2-1"
|
||
|
|
TARGET="/home/node/.openclaw/workspace/agents/tom/skills/handoff-pro"
|
||
|
|
SOURCE="$(cd "$(dirname "$0")" && pwd)"
|
||
|
|
DRY_RUN=""
|
||
|
|
|
||
|
|
if [ "$1" = "--dry-run" ]; then DRY_RUN="echo [DRY-RUN]"; fi
|
||
|
|
|
||
|
|
echo "=== Handoff Pro Deployment ==="
|
||
|
|
echo "Source: $SOURCE"
|
||
|
|
echo "Target: $CONTAINER:$TARGET"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Create target directory
|
||
|
|
$DRY_RUN docker exec $CONTAINER mkdir -p $TARGET/{scripts,lib,templates,data,tests}
|
||
|
|
|
||
|
|
# Copy core files
|
||
|
|
for f in SKILL.md server.py; do
|
||
|
|
$DRY_RUN docker cp "$SOURCE/$f" "$CONTAINER:$TARGET/$f"
|
||
|
|
done
|
||
|
|
|
||
|
|
# Copy lib
|
||
|
|
for f in "$SOURCE"/lib/*.py; do
|
||
|
|
$DRY_RUN docker cp "$f" "$CONTAINER:$TARGET/lib/$(basename $f)"
|
||
|
|
done
|
||
|
|
|
||
|
|
# Copy scripts
|
||
|
|
for f in "$SOURCE"/scripts/*.py; do
|
||
|
|
$DRY_RUN docker cp "$f" "$CONTAINER:$TARGET/scripts/$(basename $f)"
|
||
|
|
done
|
||
|
|
|
||
|
|
# Copy templates
|
||
|
|
for f in "$SOURCE"/templates/*; do
|
||
|
|
[ -f "$f" ] && $DRY_RUN docker cp "$f" "$CONTAINER:$TARGET/templates/$(basename $f)"
|
||
|
|
done
|
||
|
|
|
||
|
|
# Fix permissions (no world-writable)
|
||
|
|
$DRY_RUN docker exec $CONTAINER find $TARGET -type f -exec chmod 644 {} \;
|
||
|
|
$DRY_RUN docker exec $CONTAINER find $TARGET -type d -exec chmod 755 {} \;
|
||
|
|
$DRY_RUN docker exec $CONTAINER chown -R node:node $TARGET
|
||
|
|
|
||
|
|
# Initialize database
|
||
|
|
$DRY_RUN docker exec -u node $CONTAINER python3 $TARGET/scripts/init_db.py
|
||
|
|
|
||
|
|
# Add to mcporter config
|
||
|
|
$DRY_RUN docker exec -u node $CONTAINER sh -c "
|
||
|
|
CONFIG=/home/node/.openclaw/workspace/config/mcporter.json
|
||
|
|
python3 -c \"
|
||
|
|
import json
|
||
|
|
with open('\$CONFIG') as f: cfg = json.load(f)
|
||
|
|
cfg['mcpServers']['handoff-pro'] = {'url': 'http://127.0.0.1:3101/sse'}
|
||
|
|
with open('\$CONFIG','w') as f: json.dump(cfg, f, indent=4)
|
||
|
|
print('mcporter.json updated')
|
||
|
|
\"
|
||
|
|
"
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "=== Deployment complete ==="
|
||
|
|
echo "Next steps:"
|
||
|
|
echo " 1. Start the MCP server: docker exec -u node -d $CONTAINER python3 $TARGET/server.py"
|
||
|
|
echo " 2. Verify: docker exec $CONTAINER curl -s http://127.0.0.1:3101/health"
|
||
|
|
echo " 3. Test: mcporter call handoff-pro.list_catalogs"
|