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.
Files changed (115) hide show
  1. package/agent.config.template.json +30 -30
  2. package/package.json +52 -52
  3. package/public/assets/index-CcBNCz6h.css +1 -1
  4. package/public/assets/index-D9QHMG8k.js +1 -0
  5. package/public/assets/index-H-8HDl46.js +1 -1
  6. package/public/assets/index-YodeiCia.css +1 -0
  7. package/public/assets/index-legacy-DWtNM8y7.js +41 -0
  8. package/public/assets/museum-map-CwVDA2z1.svg +4182 -0
  9. package/public/assets/polyfills-legacy-DyVYWHbW.js +4 -0
  10. package/public/index.html +7 -2
  11. package/public/templates/custom08/elements/back-button.svg +20 -0
  12. package/public/templates/custom08/elements/base-map-background.svg +37 -0
  13. package/public/templates/custom08/elements/base-map.svg +1191 -0
  14. package/public/templates/custom08/elements/gallery-1-2-3-info-panel.svg +236 -0
  15. package/public/templates/custom08/elements/gallery-4-5-6-7-info-panel.svg +266 -0
  16. package/public/templates/custom08/elements/gallery-8-9-info-panel.svg +274 -0
  17. package/public/templates/custom08/elements/gallery-labels/_nav-map-styles.css +554 -0
  18. package/public/templates/custom08/elements/gallery-labels/_styles.css +556 -0
  19. package/public/templates/custom08/elements/gallery-labels/gallery-1.svg +35 -0
  20. package/public/templates/custom08/elements/gallery-labels/gallery-2.svg +34 -0
  21. package/public/templates/custom08/elements/gallery-labels/gallery-3.svg +34 -0
  22. package/public/templates/custom08/elements/gallery-labels/gallery-4.svg +37 -0
  23. package/public/templates/custom08/elements/gallery-labels/gallery-5.svg +34 -0
  24. package/public/templates/custom08/elements/gallery-labels/gallery-6.svg +34 -0
  25. package/public/templates/custom08/elements/gallery-labels/gallery-7.svg +34 -0
  26. package/public/templates/custom08/elements/gallery-labels/gallery-8.svg +37 -0
  27. package/public/templates/custom08/elements/gallery-labels/gallery-9.svg +34 -0
  28. package/public/templates/custom08/elements/hand-hint.png +0 -0
  29. package/public/templates/custom08/elements/idle-screen-bg.svg +5 -0
  30. package/public/templates/custom08/elements/idle-screen-map.svg +627 -0
  31. package/public/templates/custom08/elements/idle-screen-text.svg +350 -0
  32. package/public/templates/custom08/elements/key-map-1.svg +986 -0
  33. package/public/templates/custom08/elements/key-map-2.svg +1018 -0
  34. package/public/templates/custom08/elements/key-map-3.svg +1019 -0
  35. package/public/templates/custom08/elements/key-map-combined.svg +1001 -0
  36. package/public/templates/custom08/elements/map-highlight-marker.svg +11 -0
  37. package/public/templates/custom08/elements/map-pin-marker.svg +15 -0
  38. package/public/templates/custom08/elements/map-teardrop-star-marker.svg +13 -0
  39. package/public/templates/custom08/elements/nav-circle-galleries-1-3.svg +21 -0
  40. package/public/templates/custom08/elements/nav-circle-galleries-4-7.svg +24 -0
  41. package/public/templates/custom08/elements/nav-circle-galleries-8-9.svg +20 -0
  42. package/public/templates/custom08/elements/section1-map.svg +1435 -0
  43. package/public/templates/custom08/elements/section2-map.svg +1724 -0
  44. package/public/templates/custom08/elements/section3-map.svg +1295 -0
  45. package/public/templates/custom08/fonts/CabinetGrotesk-Variable.ttf +0 -0
  46. package/public/templates/custom08/images/highlights/Screenshot_2026-03-05_at_7.23.12_PM.png +0 -0
  47. package/public/templates/custom08/images/highlights/Screenshot_2026-03-05_at_7.23.56_PM.png +0 -0
  48. package/public/templates/custom08/images/highlights/Screenshot_2026-03-05_at_7.24.24_PM.png +0 -0
  49. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.31.58_PM.jpg +0 -0
  50. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.32.11_PM.jpg +0 -0
  51. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.32.36_PM.jpg +0 -0
  52. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.32.48_PM.jpg +0 -0
  53. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.32.59_PM.jpg +0 -0
  54. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.33.15_PM.jpg +0 -0
  55. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.33.27_PM.jpg +0 -0
  56. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.33.34_PM.jpg +0 -0
  57. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.33.42_PM.jpg +0 -0
  58. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.33.50_PM.jpg +0 -0
  59. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.33.58_PM.jpg +0 -0
  60. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.34.04_PM.jpg +0 -0
  61. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.34.11_PM.jpg +0 -0
  62. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.34.20_PM.jpg +0 -0
  63. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.34.57_PM.jpg +0 -0
  64. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.35.03_PM.jpg +0 -0
  65. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.35.16_PM.jpg +0 -0
  66. package/public/templates/custom08/images/highlights/Screenshot_2026-03-24_at_11.35.23_PM.jpg +0 -0
  67. package/public/templates/custom08/images/highlights/prologue-highlight.png +0 -0
  68. package/scripts/guardian.ps1 +75 -75
  69. package/scripts/install-linux.sh +134 -134
  70. package/scripts/install-rpi.sh +117 -117
  71. package/scripts/install-windows.ps1 +505 -505
  72. package/scripts/launch-kiosk.vbs +101 -101
  73. package/scripts/lightman-agent.logrotate +12 -12
  74. package/scripts/lightman-agent.service +38 -38
  75. package/scripts/lightman-shell.bat +107 -107
  76. package/scripts/reinstall-windows.ps1 +26 -26
  77. package/scripts/restore-desktop.ps1 +32 -32
  78. package/scripts/setup.ps1 +116 -116
  79. package/scripts/setup.sh +115 -115
  80. package/scripts/sync-display.mjs +20 -0
  81. package/scripts/uninstall-linux.sh +50 -50
  82. package/scripts/uninstall-windows.ps1 +54 -54
  83. package/src/commands/display.ts +177 -177
  84. package/src/commands/kiosk.ts +113 -113
  85. package/src/commands/maintenance.ts +106 -106
  86. package/src/commands/network.ts +129 -129
  87. package/src/commands/power.ts +163 -163
  88. package/src/commands/rpi.ts +45 -45
  89. package/src/commands/screenshot.ts +166 -166
  90. package/src/commands/serial.ts +17 -17
  91. package/src/commands/update.ts +124 -124
  92. package/src/index.ts +652 -652
  93. package/src/lib/config.ts +69 -69
  94. package/src/lib/identity.ts +40 -40
  95. package/src/lib/logger.ts +137 -137
  96. package/src/lib/platform.ts +10 -10
  97. package/src/lib/rpi.ts +180 -180
  98. package/src/lib/screens.ts +128 -128
  99. package/src/lib/types.ts +176 -176
  100. package/src/services/commands.ts +107 -107
  101. package/src/services/health.ts +161 -161
  102. package/src/services/kiosk.ts +384 -384
  103. package/src/services/localEvents.ts +60 -60
  104. package/src/services/logForwarder.ts +72 -72
  105. package/src/services/multiScreenKiosk.ts +324 -324
  106. package/src/services/oscBridge.ts +186 -186
  107. package/src/services/powerScheduler.ts +260 -260
  108. package/src/services/provisioning.ts +120 -120
  109. package/src/services/serialBridge.ts +230 -230
  110. package/src/services/serviceLauncher.ts +183 -183
  111. package/src/services/staticServer.ts +226 -226
  112. package/src/services/updater.ts +249 -249
  113. package/src/services/watchdog.ts +310 -310
  114. package/src/services/websocket.ts +152 -152
  115. package/tsconfig.json +28 -28
@@ -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 ""