summaryrefslogtreecommitdiff
path: root/Omni/Dev/Beryllium/migrate-ava.sh
blob: 91d274047a45e91618f76326d5bb48c4e4903a51 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/usr/bin/env bash
# Migration script: move Ava data from _/var/ava to /home/ava
#
# Run this ONCE after deploying the NixOS config with the new ava user.
#
# Usage:
#   sudo ./migrate-ava.sh
#
# This script:
# 1. Copies existing data from _/var/ava to /home/ava
# 2. Copies memory.db from ben's .local to ava's .local
# 3. Clones the omni repo into /home/ava/omni
# 4. Sets proper ownership

set -euo pipefail

GRN='\033[0;32m'
YLW='\033[0;33m'
RED='\033[0;31m'
NC='\033[0m'

OMNI_REPO="/home/ben/omni"
AVA_HOME="/home/ava"
OLD_DATA_ROOT="$OMNI_REPO/_/var/ava"

echo -e "${YLW}=== Ava Migration Script ===${NC}"

# Check we're running as root
if [[ $EUID -ne 0 ]]; then
    echo -e "${RED}Error: This script must be run as root${NC}"
    exit 1
fi

# Check ava user exists
if ! id ava &>/dev/null; then
    echo -e "${RED}Error: ava user does not exist. Deploy the NixOS config first.${NC}"
    exit 1
fi

# Create directory structure (tmpfiles should handle this, but just in case)
echo -e "${YLW}Creating directory structure...${NC}"
mkdir -p "$AVA_HOME"/{skills,outreach,users,omni,.local/share/omni}
mkdir -p "$AVA_HOME"/outreach/{pending,approved,rejected,sent}

# Copy skills
if [[ -d "$OLD_DATA_ROOT/skills" ]]; then
    echo -e "${YLW}Copying skills...${NC}"
    rsync -av --progress "$OLD_DATA_ROOT/skills/" "$AVA_HOME/skills/"
else
    echo -e "${YLW}No skills to migrate${NC}"
fi

# Copy outreach
if [[ -d "$OLD_DATA_ROOT/outreach" ]]; then
    echo -e "${YLW}Copying outreach data...${NC}"
    rsync -av --progress "$OLD_DATA_ROOT/outreach/" "$AVA_HOME/outreach/"
else
    echo -e "${YLW}No outreach data to migrate${NC}"
fi

# Copy memory.db if it exists
BEN_MEMORY="/home/ben/.local/share/omni/memory.db"
AVA_MEMORY="$AVA_HOME/.local/share/omni/memory.db"
if [[ -f "$BEN_MEMORY" ]]; then
    echo -e "${YLW}Copying memory database...${NC}"
    cp -v "$BEN_MEMORY" "$AVA_MEMORY"
else
    echo -e "${YLW}No memory.db found at $BEN_MEMORY${NC}"
fi

# Clone or update the omni repo
if [[ -d "$AVA_HOME/omni/.git" ]]; then
    echo -e "${YLW}Omni repo already exists, updating...${NC}"
    cd "$AVA_HOME/omni"
    sudo -u ava git fetch origin
else
    echo -e "${YLW}Cloning omni repo...${NC}"
    sudo -u ava git clone "$OMNI_REPO" "$AVA_HOME/omni"
fi

# Set ownership
echo -e "${YLW}Setting ownership...${NC}"
chown -R ava:users "$AVA_HOME"

# Show summary
echo ""
echo -e "${GRN}=== Migration Complete ===${NC}"
echo ""
echo "Directory structure:"
ls -la "$AVA_HOME"
echo ""
echo "Next steps:"
echo "1. Create /run/secrets/ava.env with:"
echo "   TELEGRAM_BOT_TOKEN=xxx"
echo "   OPENROUTER_API_KEY=xxx"
echo "   KAGI_API_KEY=xxx (optional)"
echo "   ALLOWED_TELEGRAM_USER_IDS=xxx (or * for all)"
echo ""
echo "2. Stop the tmux Ava process"
echo "3. Start the systemd service: sudo systemctl start ava"
echo "4. Watch logs: journalctl -u ava -f"
echo "5. Enable on boot: sudo systemctl enable ava"