lightman-agent 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent.config.template.json +30 -30
- package/package.json +52 -52
- package/public/assets/index-CcBNCz6h.css +1 -1
- package/public/assets/index-D9QHMG8k.js +1 -0
- package/public/assets/index-H-8HDl46.js +1 -1
- package/public/assets/index-YodeiCia.css +1 -0
- package/public/assets/index-legacy-DWtNM8y7.js +41 -0
- package/public/assets/museum-map-CwVDA2z1.svg +4182 -0
- package/public/assets/polyfills-legacy-DyVYWHbW.js +4 -0
- package/public/index.html +7 -2
- package/public/templates/custom08/elements/back-button.svg +20 -0
- package/public/templates/custom08/elements/base-map-background.svg +37 -0
- package/public/templates/custom08/elements/base-map.svg +1191 -0
- package/public/templates/custom08/elements/gallery-1-2-3-info-panel.svg +236 -0
- package/public/templates/custom08/elements/gallery-4-5-6-7-info-panel.svg +266 -0
- package/public/templates/custom08/elements/gallery-8-9-info-panel.svg +274 -0
- package/public/templates/custom08/elements/gallery-labels/_nav-map-styles.css +554 -0
- package/public/templates/custom08/elements/gallery-labels/_styles.css +556 -0
- package/public/templates/custom08/elements/gallery-labels/gallery-1.svg +35 -0
- package/public/templates/custom08/elements/gallery-labels/gallery-2.svg +34 -0
- package/public/templates/custom08/elements/gallery-labels/gallery-3.svg +34 -0
- package/public/templates/custom08/elements/gallery-labels/gallery-4.svg +37 -0
- package/public/templates/custom08/elements/gallery-labels/gallery-5.svg +34 -0
- package/public/templates/custom08/elements/gallery-labels/gallery-6.svg +34 -0
- package/public/templates/custom08/elements/gallery-labels/gallery-7.svg +34 -0
- package/public/templates/custom08/elements/gallery-labels/gallery-8.svg +37 -0
- package/public/templates/custom08/elements/gallery-labels/gallery-9.svg +34 -0
- package/public/templates/custom08/elements/hand-hint.png +0 -0
- package/public/templates/custom08/elements/idle-screen-bg.svg +5 -0
- package/public/templates/custom08/elements/idle-screen-map.svg +627 -0
- package/public/templates/custom08/elements/idle-screen-text.svg +350 -0
- package/public/templates/custom08/elements/key-map-1.svg +986 -0
- package/public/templates/custom08/elements/key-map-2.svg +1018 -0
- package/public/templates/custom08/elements/key-map-3.svg +1019 -0
- package/public/templates/custom08/elements/key-map-combined.svg +1001 -0
- package/public/templates/custom08/elements/map-highlight-marker.svg +11 -0
- package/public/templates/custom08/elements/map-pin-marker.svg +15 -0
- package/public/templates/custom08/elements/map-teardrop-star-marker.svg +13 -0
- package/public/templates/custom08/elements/nav-circle-galleries-1-3.svg +21 -0
- package/public/templates/custom08/elements/nav-circle-galleries-4-7.svg +24 -0
- package/public/templates/custom08/elements/nav-circle-galleries-8-9.svg +20 -0
- package/public/templates/custom08/elements/section1-map.svg +1435 -0
- package/public/templates/custom08/elements/section2-map.svg +1724 -0
- package/public/templates/custom08/elements/section3-map.svg +1295 -0
- package/public/templates/custom08/fonts/CabinetGrotesk-Variable.ttf +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-05_at_7.23.12_PM.png +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-05_at_7.23.56_PM.png +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-05_at_7.24.24_PM.png +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.31.58_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.32.11_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.32.36_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.32.48_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.32.59_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.33.15_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.33.27_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.33.34_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.33.42_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.33.50_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.33.58_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.34.04_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.34.11_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.34.20_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.34.57_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.35.03_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.35.16_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.35.23_PM.jpg +0 -0
- package/public/templates/custom08/images/highlights/prologue-highlight.png +0 -0
- package/scripts/guardian.ps1 +75 -75
- package/scripts/install-linux.sh +134 -134
- package/scripts/install-rpi.sh +117 -117
- package/scripts/install-windows.ps1 +505 -505
- package/scripts/launch-kiosk.vbs +101 -101
- package/scripts/lightman-agent.logrotate +12 -12
- package/scripts/lightman-agent.service +38 -38
- package/scripts/lightman-shell.bat +107 -107
- package/scripts/reinstall-windows.ps1 +26 -26
- package/scripts/restore-desktop.ps1 +32 -32
- package/scripts/setup.ps1 +116 -116
- package/scripts/setup.sh +115 -115
- package/scripts/sync-display.mjs +20 -0
- package/scripts/uninstall-linux.sh +50 -50
- package/scripts/uninstall-windows.ps1 +54 -54
- package/src/commands/display.ts +177 -177
- package/src/commands/kiosk.ts +113 -113
- package/src/commands/maintenance.ts +106 -106
- package/src/commands/network.ts +129 -129
- package/src/commands/power.ts +163 -163
- package/src/commands/rpi.ts +45 -45
- package/src/commands/screenshot.ts +166 -166
- package/src/commands/serial.ts +17 -17
- package/src/commands/update.ts +124 -124
- package/src/index.ts +652 -652
- package/src/lib/config.ts +69 -69
- package/src/lib/identity.ts +40 -40
- package/src/lib/logger.ts +137 -137
- package/src/lib/platform.ts +10 -10
- package/src/lib/rpi.ts +180 -180
- package/src/lib/screens.ts +128 -128
- package/src/lib/types.ts +176 -176
- package/src/services/commands.ts +107 -107
- package/src/services/health.ts +161 -161
- package/src/services/kiosk.ts +384 -384
- package/src/services/localEvents.ts +60 -60
- package/src/services/logForwarder.ts +72 -72
- package/src/services/multiScreenKiosk.ts +324 -324
- package/src/services/oscBridge.ts +186 -186
- package/src/services/powerScheduler.ts +260 -260
- package/src/services/provisioning.ts +120 -120
- package/src/services/serialBridge.ts +230 -230
- package/src/services/serviceLauncher.ts +183 -183
- package/src/services/staticServer.ts +226 -226
- package/src/services/updater.ts +249 -249
- package/src/services/watchdog.ts +310 -310
- package/src/services/websocket.ts +152 -152
- package/tsconfig.json +28 -28
package/scripts/install-rpi.sh
CHANGED
|
@@ -1,117 +1,117 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# LIGHTMAN Agent — Raspberry Pi Installer
|
|
3
|
-
# Extends the standard Linux install with RPi-specific optimizations.
|
|
4
|
-
# Run as root: sudo bash install-rpi.sh
|
|
5
|
-
set -euo pipefail
|
|
6
|
-
|
|
7
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
-
INSTALL_DIR="/opt/lightman/agent"
|
|
9
|
-
|
|
10
|
-
# --- Pre-checks ---
|
|
11
|
-
if [[ $EUID -ne 0 ]]; then
|
|
12
|
-
echo "Error: This script must be run as root (use sudo)."
|
|
13
|
-
exit 1
|
|
14
|
-
fi
|
|
15
|
-
|
|
16
|
-
if [[ ! -f /proc/device-tree/model ]]; then
|
|
17
|
-
echo "Error: This does not appear to be a Raspberry Pi."
|
|
18
|
-
exit 1
|
|
19
|
-
fi
|
|
20
|
-
|
|
21
|
-
MODEL=$(tr -d '\0' < /proc/device-tree/model)
|
|
22
|
-
echo "=== LIGHTMAN Agent — Raspberry Pi Installer ==="
|
|
23
|
-
echo " Detected: ${MODEL}"
|
|
24
|
-
echo ""
|
|
25
|
-
|
|
26
|
-
# --- Run standard Linux install first ---
|
|
27
|
-
echo "[RPi 1/6] Running standard Linux install..."
|
|
28
|
-
bash "$SCRIPT_DIR/install-linux.sh"
|
|
29
|
-
echo ""
|
|
30
|
-
|
|
31
|
-
# --- GPU memory split ---
|
|
32
|
-
echo "[RPi 2/6] Configuring GPU memory..."
|
|
33
|
-
CONFIG_FILE="/boot/config.txt"
|
|
34
|
-
if [[ -f /boot/firmware/config.txt ]]; then
|
|
35
|
-
CONFIG_FILE="/boot/firmware/config.txt"
|
|
36
|
-
fi
|
|
37
|
-
|
|
38
|
-
if ! grep -q "^gpu_mem=" "$CONFIG_FILE" 2>/dev/null; then
|
|
39
|
-
echo "gpu_mem=128" >> "$CONFIG_FILE"
|
|
40
|
-
echo " Set gpu_mem=128 in ${CONFIG_FILE}"
|
|
41
|
-
else
|
|
42
|
-
echo " gpu_mem already configured in ${CONFIG_FILE}"
|
|
43
|
-
fi
|
|
44
|
-
|
|
45
|
-
# --- Disable screensaver / screen blanking ---
|
|
46
|
-
echo "[RPi 3/6] Disabling screen blanking..."
|
|
47
|
-
# For console blanking
|
|
48
|
-
if ! grep -q "consoleblank=0" /boot/cmdline.txt 2>/dev/null; then
|
|
49
|
-
if [[ -f /boot/cmdline.txt ]]; then
|
|
50
|
-
sed -i 's/$/ consoleblank=0/' /boot/cmdline.txt
|
|
51
|
-
echo " Added consoleblank=0 to /boot/cmdline.txt"
|
|
52
|
-
fi
|
|
53
|
-
fi
|
|
54
|
-
|
|
55
|
-
# For X11 screensaver
|
|
56
|
-
LIGHTDM_CONF="/etc/lightdm/lightdm.conf"
|
|
57
|
-
if [[ -f "$LIGHTDM_CONF" ]]; then
|
|
58
|
-
if ! grep -q "xserver-command.*-s 0" "$LIGHTDM_CONF" 2>/dev/null; then
|
|
59
|
-
sed -i '/^\[Seat:\*\]/a xserver-command=X -s 0 -dpms' "$LIGHTDM_CONF" 2>/dev/null || true
|
|
60
|
-
echo " Disabled X11 screensaver via lightdm"
|
|
61
|
-
fi
|
|
62
|
-
fi
|
|
63
|
-
|
|
64
|
-
# --- Hardware watchdog ---
|
|
65
|
-
echo "[RPi 4/6] Configuring hardware watchdog..."
|
|
66
|
-
if ! grep -q "^dtparam=watchdog=on" "$CONFIG_FILE" 2>/dev/null; then
|
|
67
|
-
echo "dtparam=watchdog=on" >> "$CONFIG_FILE"
|
|
68
|
-
echo " Enabled BCM2835 watchdog in ${CONFIG_FILE}"
|
|
69
|
-
fi
|
|
70
|
-
|
|
71
|
-
# Load watchdog module
|
|
72
|
-
if ! lsmod | grep -q bcm2835_wdt 2>/dev/null; then
|
|
73
|
-
modprobe bcm2835_wdt 2>/dev/null || true
|
|
74
|
-
fi
|
|
75
|
-
|
|
76
|
-
if ! grep -q "bcm2835_wdt" /etc/modules 2>/dev/null; then
|
|
77
|
-
echo "bcm2835_wdt" >> /etc/modules
|
|
78
|
-
fi
|
|
79
|
-
|
|
80
|
-
# Set watchdog device permissions for lightman user
|
|
81
|
-
if [[ -e /dev/watchdog ]]; then
|
|
82
|
-
chown root:lightman /dev/watchdog
|
|
83
|
-
chmod 660 /dev/watchdog
|
|
84
|
-
echo " Set /dev/watchdog permissions for lightman group"
|
|
85
|
-
fi
|
|
86
|
-
|
|
87
|
-
# --- tmpfs for logs (reduce SD card wear) ---
|
|
88
|
-
echo "[RPi 5/6] Configuring tmpfs for logs..."
|
|
89
|
-
FSTAB_ENTRY="tmpfs /var/log/lightman tmpfs defaults,noatime,nosuid,nodev,noexec,mode=0750,size=50M,uid=lightman,gid=lightman 0 0"
|
|
90
|
-
if ! grep -q "/var/log/lightman" /etc/fstab 2>/dev/null; then
|
|
91
|
-
echo "$FSTAB_ENTRY" >> /etc/fstab
|
|
92
|
-
mount -a 2>/dev/null || true
|
|
93
|
-
echo " Added tmpfs mount for /var/log/lightman"
|
|
94
|
-
fi
|
|
95
|
-
|
|
96
|
-
# --- Sudoers for agent power commands ---
|
|
97
|
-
echo "[RPi 6/6] Configuring sudoers..."
|
|
98
|
-
SUDOERS_FILE="/etc/sudoers.d/lightman-agent"
|
|
99
|
-
cat > "$SUDOERS_FILE" << 'SUDOERS'
|
|
100
|
-
# LIGHTMAN Agent - allow power commands without password
|
|
101
|
-
lightman ALL=(ALL) NOPASSWD: /sbin/shutdown
|
|
102
|
-
lightman ALL=(ALL) NOPASSWD: /sbin/reboot
|
|
103
|
-
lightman ALL=(ALL) NOPASSWD: /usr/bin/vcgencmd
|
|
104
|
-
SUDOERS
|
|
105
|
-
chmod 440 "$SUDOERS_FILE"
|
|
106
|
-
echo " Installed sudoers for lightman agent"
|
|
107
|
-
|
|
108
|
-
echo ""
|
|
109
|
-
echo "=== Raspberry Pi Setup Complete ==="
|
|
110
|
-
echo ""
|
|
111
|
-
echo " IMPORTANT: Reboot required for:"
|
|
112
|
-
echo " - GPU memory allocation"
|
|
113
|
-
echo " - Hardware watchdog"
|
|
114
|
-
echo " - Screen blanking changes"
|
|
115
|
-
echo ""
|
|
116
|
-
echo " Reboot now: sudo reboot"
|
|
117
|
-
echo ""
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# LIGHTMAN Agent — Raspberry Pi Installer
|
|
3
|
+
# Extends the standard Linux install with RPi-specific optimizations.
|
|
4
|
+
# Run as root: sudo bash install-rpi.sh
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
+
INSTALL_DIR="/opt/lightman/agent"
|
|
9
|
+
|
|
10
|
+
# --- Pre-checks ---
|
|
11
|
+
if [[ $EUID -ne 0 ]]; then
|
|
12
|
+
echo "Error: This script must be run as root (use sudo)."
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
if [[ ! -f /proc/device-tree/model ]]; then
|
|
17
|
+
echo "Error: This does not appear to be a Raspberry Pi."
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
MODEL=$(tr -d '\0' < /proc/device-tree/model)
|
|
22
|
+
echo "=== LIGHTMAN Agent — Raspberry Pi Installer ==="
|
|
23
|
+
echo " Detected: ${MODEL}"
|
|
24
|
+
echo ""
|
|
25
|
+
|
|
26
|
+
# --- Run standard Linux install first ---
|
|
27
|
+
echo "[RPi 1/6] Running standard Linux install..."
|
|
28
|
+
bash "$SCRIPT_DIR/install-linux.sh"
|
|
29
|
+
echo ""
|
|
30
|
+
|
|
31
|
+
# --- GPU memory split ---
|
|
32
|
+
echo "[RPi 2/6] Configuring GPU memory..."
|
|
33
|
+
CONFIG_FILE="/boot/config.txt"
|
|
34
|
+
if [[ -f /boot/firmware/config.txt ]]; then
|
|
35
|
+
CONFIG_FILE="/boot/firmware/config.txt"
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
if ! grep -q "^gpu_mem=" "$CONFIG_FILE" 2>/dev/null; then
|
|
39
|
+
echo "gpu_mem=128" >> "$CONFIG_FILE"
|
|
40
|
+
echo " Set gpu_mem=128 in ${CONFIG_FILE}"
|
|
41
|
+
else
|
|
42
|
+
echo " gpu_mem already configured in ${CONFIG_FILE}"
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# --- Disable screensaver / screen blanking ---
|
|
46
|
+
echo "[RPi 3/6] Disabling screen blanking..."
|
|
47
|
+
# For console blanking
|
|
48
|
+
if ! grep -q "consoleblank=0" /boot/cmdline.txt 2>/dev/null; then
|
|
49
|
+
if [[ -f /boot/cmdline.txt ]]; then
|
|
50
|
+
sed -i 's/$/ consoleblank=0/' /boot/cmdline.txt
|
|
51
|
+
echo " Added consoleblank=0 to /boot/cmdline.txt"
|
|
52
|
+
fi
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
# For X11 screensaver
|
|
56
|
+
LIGHTDM_CONF="/etc/lightdm/lightdm.conf"
|
|
57
|
+
if [[ -f "$LIGHTDM_CONF" ]]; then
|
|
58
|
+
if ! grep -q "xserver-command.*-s 0" "$LIGHTDM_CONF" 2>/dev/null; then
|
|
59
|
+
sed -i '/^\[Seat:\*\]/a xserver-command=X -s 0 -dpms' "$LIGHTDM_CONF" 2>/dev/null || true
|
|
60
|
+
echo " Disabled X11 screensaver via lightdm"
|
|
61
|
+
fi
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
# --- Hardware watchdog ---
|
|
65
|
+
echo "[RPi 4/6] Configuring hardware watchdog..."
|
|
66
|
+
if ! grep -q "^dtparam=watchdog=on" "$CONFIG_FILE" 2>/dev/null; then
|
|
67
|
+
echo "dtparam=watchdog=on" >> "$CONFIG_FILE"
|
|
68
|
+
echo " Enabled BCM2835 watchdog in ${CONFIG_FILE}"
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
# Load watchdog module
|
|
72
|
+
if ! lsmod | grep -q bcm2835_wdt 2>/dev/null; then
|
|
73
|
+
modprobe bcm2835_wdt 2>/dev/null || true
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
if ! grep -q "bcm2835_wdt" /etc/modules 2>/dev/null; then
|
|
77
|
+
echo "bcm2835_wdt" >> /etc/modules
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
# Set watchdog device permissions for lightman user
|
|
81
|
+
if [[ -e /dev/watchdog ]]; then
|
|
82
|
+
chown root:lightman /dev/watchdog
|
|
83
|
+
chmod 660 /dev/watchdog
|
|
84
|
+
echo " Set /dev/watchdog permissions for lightman group"
|
|
85
|
+
fi
|
|
86
|
+
|
|
87
|
+
# --- tmpfs for logs (reduce SD card wear) ---
|
|
88
|
+
echo "[RPi 5/6] Configuring tmpfs for logs..."
|
|
89
|
+
FSTAB_ENTRY="tmpfs /var/log/lightman tmpfs defaults,noatime,nosuid,nodev,noexec,mode=0750,size=50M,uid=lightman,gid=lightman 0 0"
|
|
90
|
+
if ! grep -q "/var/log/lightman" /etc/fstab 2>/dev/null; then
|
|
91
|
+
echo "$FSTAB_ENTRY" >> /etc/fstab
|
|
92
|
+
mount -a 2>/dev/null || true
|
|
93
|
+
echo " Added tmpfs mount for /var/log/lightman"
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
# --- Sudoers for agent power commands ---
|
|
97
|
+
echo "[RPi 6/6] Configuring sudoers..."
|
|
98
|
+
SUDOERS_FILE="/etc/sudoers.d/lightman-agent"
|
|
99
|
+
cat > "$SUDOERS_FILE" << 'SUDOERS'
|
|
100
|
+
# LIGHTMAN Agent - allow power commands without password
|
|
101
|
+
lightman ALL=(ALL) NOPASSWD: /sbin/shutdown
|
|
102
|
+
lightman ALL=(ALL) NOPASSWD: /sbin/reboot
|
|
103
|
+
lightman ALL=(ALL) NOPASSWD: /usr/bin/vcgencmd
|
|
104
|
+
SUDOERS
|
|
105
|
+
chmod 440 "$SUDOERS_FILE"
|
|
106
|
+
echo " Installed sudoers for lightman agent"
|
|
107
|
+
|
|
108
|
+
echo ""
|
|
109
|
+
echo "=== Raspberry Pi Setup Complete ==="
|
|
110
|
+
echo ""
|
|
111
|
+
echo " IMPORTANT: Reboot required for:"
|
|
112
|
+
echo " - GPU memory allocation"
|
|
113
|
+
echo " - Hardware watchdog"
|
|
114
|
+
echo " - Screen blanking changes"
|
|
115
|
+
echo ""
|
|
116
|
+
echo " Reboot now: sudo reboot"
|
|
117
|
+
echo ""
|