robopark 3.1.2 → 3.3.0

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 (101) hide show
  1. package/README.md +66 -95
  2. package/bin/robopark.js +9 -2
  3. package/conversation/elevenlabs_agent.py +1617 -1617
  4. package/conversation/supervisor_store.py +189 -189
  5. package/dist/{kernel/config-schema.js → config-schema.js} +1 -0
  6. package/dist/config-schema.js.map +1 -0
  7. package/dist/robopark/add-robot.js +1 -0
  8. package/dist/robopark/add-robot.js.map +1 -0
  9. package/dist/robopark/agent-ctl.js +1 -0
  10. package/dist/robopark/agent-ctl.js.map +1 -0
  11. package/dist/robopark/auto-start.js +51 -73
  12. package/dist/robopark/auto-start.js.map +1 -0
  13. package/dist/robopark/conversation.js +1 -0
  14. package/dist/robopark/conversation.js.map +1 -0
  15. package/dist/robopark/discovery.js +1 -0
  16. package/dist/robopark/discovery.js.map +1 -0
  17. package/dist/robopark/doctor.js +1 -0
  18. package/dist/robopark/doctor.js.map +1 -0
  19. package/dist/robopark/enroll.js +1 -0
  20. package/dist/robopark/enroll.js.map +1 -0
  21. package/dist/robopark/llm-set.js +1 -0
  22. package/dist/robopark/llm-set.js.map +1 -0
  23. package/dist/robopark/motor-control.js +1 -0
  24. package/dist/robopark/motor-control.js.map +1 -0
  25. package/dist/robopark/preview-agent-launcher.js +1 -0
  26. package/dist/robopark/preview-agent-launcher.js.map +1 -0
  27. package/dist/robopark/probe.js +16 -15
  28. package/dist/robopark/probe.js.map +1 -0
  29. package/dist/robopark/profile.js +1 -0
  30. package/dist/robopark/profile.js.map +1 -0
  31. package/dist/robopark/python-env.js +1 -7
  32. package/dist/robopark/python-env.js.map +1 -0
  33. package/dist/robopark/robot-runtime.js +1 -0
  34. package/dist/robopark/robot-runtime.js.map +1 -0
  35. package/dist/robopark/scan.js +1 -0
  36. package/dist/robopark/scan.js.map +1 -0
  37. package/dist/robopark/screen-control.js +1 -0
  38. package/dist/robopark/screen-control.js.map +1 -0
  39. package/dist/robopark/secrets.js +1 -0
  40. package/dist/robopark/secrets.js.map +1 -0
  41. package/dist/robopark/serve.js +4 -6
  42. package/dist/robopark/serve.js.map +1 -0
  43. package/dist/robopark/server-add.js +1 -0
  44. package/dist/robopark/server-add.js.map +1 -0
  45. package/dist/robopark/setup-livekit.js +53 -52
  46. package/dist/robopark/setup-livekit.js.map +1 -0
  47. package/dist/robopark/setup.js +1 -0
  48. package/dist/robopark/setup.js.map +1 -0
  49. package/dist/robopark/stop-all.js +1 -0
  50. package/dist/robopark/stop-all.js.map +1 -0
  51. package/dist/robopark/verify.js +1 -0
  52. package/dist/robopark/verify.js.map +1 -0
  53. package/dist/robopark/vision-agent-launcher.js +1 -0
  54. package/dist/robopark/vision-agent-launcher.js.map +1 -0
  55. package/dist/robopark/vision-control.js +1 -0
  56. package/dist/robopark/vision-control.js.map +1 -0
  57. package/dist/robopark-cli.js +7 -125
  58. package/dist/robopark-cli.js.map +1 -0
  59. package/package.json +16 -25
  60. package/pi-client/_install_steps.sh +29 -29
  61. package/pi-client/client.py +76 -76
  62. package/pi-client/install.sh +40 -40
  63. package/pi-client/join_convo.sh +54 -54
  64. package/pi-client/livekit_bridge.py +24 -24
  65. package/pi-client/motor_bridge.py +10 -10
  66. package/scheduler/__pycache__/main.cpython-312.pyc +0 -0
  67. package/scheduler/main.py +196 -17
  68. package/scheduler/media_lock.py +57 -57
  69. package/scheduler/preview_agent.py +1122 -1122
  70. package/scheduler/production_config.json +73 -113
  71. package/scheduler/scripts/install-robot-supervisor-linux.sh +33 -33
  72. package/{static → scheduler/static}/vendor/elevenlabs-client.iife.js +24199 -24199
  73. package/scheduler/static/voice-join.html +177 -0
  74. package/screen/screen_runtime.py +75 -75
  75. package/vision/app_pi_clean.py +297 -297
  76. package/vision/audio_server_pi.py +24 -24
  77. package/vision/install.sh +34 -34
  78. package/vision/motor_server.py +275 -275
  79. package/vision/requirements_camera.txt +6 -6
  80. package/vision/requirements_motor.txt +4 -4
  81. package/vision/requirements_pi_unified.txt +2 -2
  82. package/vision/requirements_vision_agent.txt +19 -19
  83. package/vision/run.sh +244 -244
  84. package/vision/services/services.sh +12 -12
  85. package/dist/kernel/types.js +0 -7
  86. package/dist/robopark/access.js +0 -99
  87. package/dist/robopark/control-center-html.js +0 -9191
  88. package/dist/robopark/control-server.js +0 -148
  89. package/dist/robopark/deployment-commands.js +0 -47
  90. package/dist/robopark/standalone.js +0 -562
  91. package/dist/robopark/voice-join-html.js +0 -57
  92. package/scripts/windows-shim-fix.cjs +0 -58
  93. package/static/robopark/barracuda.png +0 -0
  94. package/static/robopark/bmw.png +0 -0
  95. package/static/robopark/jaguar.png +0 -0
  96. package/static/robopark/magnus.jpg +0 -0
  97. package/static/robopark/panda.png +0 -0
  98. package/static/robopark/tesla.png +0 -0
  99. package/static/robopark/titan.jpg +0 -0
  100. package/static/robopark/volt.png +0 -0
  101. package/static/vendor/elevenlabs-client.LICENSE +0 -21
@@ -17,29 +17,29 @@ import os
17
17
  from datetime import datetime
18
18
  import logging
19
19
  import subprocess
20
- import base64
21
- import functools
22
- import sys
23
- from pathlib import Path
24
- from groq import Groq
25
-
26
- sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "scheduler"))
27
- from media_lock import media_lock
20
+ import base64
21
+ import functools
22
+ import sys
23
+ from pathlib import Path
24
+ from groq import Groq
25
+
26
+ sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "scheduler"))
27
+ from media_lock import media_lock
28
28
 
29
29
  # Configure logging
30
30
  logging.basicConfig(level=logging.INFO, format='%(message)s')
31
- logger = logging.getLogger(__name__)
32
-
33
-
34
- def exclusive_media(kind: str):
35
- """Prevent diagnostics from stealing ALSA devices from production."""
36
- def decorate(func):
37
- @functools.wraps(func)
38
- def wrapped(*args, **kwargs):
39
- with media_lock(kind, timeout=3.0):
40
- return func(*args, **kwargs)
41
- return wrapped
42
- return decorate
31
+ logger = logging.getLogger(__name__)
32
+
33
+
34
+ def exclusive_media(kind: str):
35
+ """Prevent diagnostics from stealing ALSA devices from production."""
36
+ def decorate(func):
37
+ @functools.wraps(func)
38
+ def wrapped(*args, **kwargs):
39
+ with media_lock(kind, timeout=3.0):
40
+ return func(*args, **kwargs)
41
+ return wrapped
42
+ return decorate
43
43
 
44
44
  @asynccontextmanager
45
45
  async def lifespan(app: FastAPI):
@@ -190,8 +190,8 @@ def find_bluetooth_devices():
190
190
  # Find Bluetooth devices on startup
191
191
  find_bluetooth_devices()
192
192
 
193
- @exclusive_media("speaker")
194
- def play_audio_file(file_path: str):
193
+ @exclusive_media("speaker")
194
+ def play_audio_file(file_path: str):
195
195
  """Play audio file using sounddevice (supports Bluetooth)"""
196
196
  try:
197
197
  logger.info(f"🔊 Playing audio: {file_path}")
@@ -249,8 +249,8 @@ def get_available_input_devices():
249
249
  input_devices.append(i)
250
250
  return input_devices
251
251
 
252
- @exclusive_media("microphone")
253
- def record_audio_with_vad():
252
+ @exclusive_media("microphone")
253
+ def record_audio_with_vad():
254
254
  """
255
255
  Record audio from Bluetooth microphone with Voice Activity Detection
256
256
  Rotates through available devices if no audio detected
package/vision/install.sh CHANGED
@@ -1,34 +1,34 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
- VENV_DIR="$ROOT_DIR/venv"
6
- REQ_FILE="$ROOT_DIR/requirements_pi_unified.txt"
7
-
8
- if ! command -v python3 >/dev/null 2>&1; then
9
- echo "python3 not found"
10
- exit 1
11
- fi
12
-
13
- if [ ! -f "$REQ_FILE" ]; then
14
- echo "Missing $REQ_FILE"
15
- exit 1
16
- fi
17
-
18
- echo "System packages (run once):"
19
- echo "sudo apt-get update"
20
- echo "sudo apt-get install -y python3-opencv python3-numpy python3-pil libatlas-base-dev libopenblas-dev libhdf5-dev libhdf5-serial-dev libhdf5-103 libqt5gui5 libqt5widgets5 libqt5test5 portaudio19-dev libsndfile1 alsa-utils bluetooth bluez bluez-tools pulseaudio pulseaudio-module-bluetooth python3-pyaudio"
21
- echo ""
22
-
23
- echo "Creating venv: $VENV_DIR"
24
- if [ ! -d "$VENV_DIR" ]; then
25
- python3 -m venv "$VENV_DIR" --system-site-packages
26
- fi
27
-
28
- source "$VENV_DIR/bin/activate"
29
- python -m pip install --upgrade pip
30
- python -m pip install -r "$REQ_FILE"
31
-
32
- echo ""
33
- echo "Done"
34
- echo "Next: ./run.sh start-term"
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ VENV_DIR="$ROOT_DIR/venv"
6
+ REQ_FILE="$ROOT_DIR/requirements_pi_unified.txt"
7
+
8
+ if ! command -v python3 >/dev/null 2>&1; then
9
+ echo "python3 not found"
10
+ exit 1
11
+ fi
12
+
13
+ if [ ! -f "$REQ_FILE" ]; then
14
+ echo "Missing $REQ_FILE"
15
+ exit 1
16
+ fi
17
+
18
+ echo "System packages (run once):"
19
+ echo "sudo apt-get update"
20
+ echo "sudo apt-get install -y python3-opencv python3-numpy python3-pil libatlas-base-dev libopenblas-dev libhdf5-dev libhdf5-serial-dev libhdf5-103 libqt5gui5 libqt5widgets5 libqt5test5 portaudio19-dev libsndfile1 alsa-utils bluetooth bluez bluez-tools pulseaudio pulseaudio-module-bluetooth python3-pyaudio"
21
+ echo ""
22
+
23
+ echo "Creating venv: $VENV_DIR"
24
+ if [ ! -d "$VENV_DIR" ]; then
25
+ python3 -m venv "$VENV_DIR" --system-site-packages
26
+ fi
27
+
28
+ source "$VENV_DIR/bin/activate"
29
+ python -m pip install --upgrade pip
30
+ python -m pip install -r "$REQ_FILE"
31
+
32
+ echo ""
33
+ echo "Done"
34
+ echo "Next: ./run.sh start-term"