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.
- package/README.md +66 -95
- package/bin/robopark.js +9 -2
- package/conversation/elevenlabs_agent.py +1617 -1617
- package/conversation/supervisor_store.py +189 -189
- package/dist/{kernel/config-schema.js → config-schema.js} +1 -0
- package/dist/config-schema.js.map +1 -0
- package/dist/robopark/add-robot.js +1 -0
- package/dist/robopark/add-robot.js.map +1 -0
- package/dist/robopark/agent-ctl.js +1 -0
- package/dist/robopark/agent-ctl.js.map +1 -0
- package/dist/robopark/auto-start.js +51 -73
- package/dist/robopark/auto-start.js.map +1 -0
- package/dist/robopark/conversation.js +1 -0
- package/dist/robopark/conversation.js.map +1 -0
- package/dist/robopark/discovery.js +1 -0
- package/dist/robopark/discovery.js.map +1 -0
- package/dist/robopark/doctor.js +1 -0
- package/dist/robopark/doctor.js.map +1 -0
- package/dist/robopark/enroll.js +1 -0
- package/dist/robopark/enroll.js.map +1 -0
- package/dist/robopark/llm-set.js +1 -0
- package/dist/robopark/llm-set.js.map +1 -0
- package/dist/robopark/motor-control.js +1 -0
- package/dist/robopark/motor-control.js.map +1 -0
- package/dist/robopark/preview-agent-launcher.js +1 -0
- package/dist/robopark/preview-agent-launcher.js.map +1 -0
- package/dist/robopark/probe.js +16 -15
- package/dist/robopark/probe.js.map +1 -0
- package/dist/robopark/profile.js +1 -0
- package/dist/robopark/profile.js.map +1 -0
- package/dist/robopark/python-env.js +1 -7
- package/dist/robopark/python-env.js.map +1 -0
- package/dist/robopark/robot-runtime.js +1 -0
- package/dist/robopark/robot-runtime.js.map +1 -0
- package/dist/robopark/scan.js +1 -0
- package/dist/robopark/scan.js.map +1 -0
- package/dist/robopark/screen-control.js +1 -0
- package/dist/robopark/screen-control.js.map +1 -0
- package/dist/robopark/secrets.js +1 -0
- package/dist/robopark/secrets.js.map +1 -0
- package/dist/robopark/serve.js +4 -6
- package/dist/robopark/serve.js.map +1 -0
- package/dist/robopark/server-add.js +1 -0
- package/dist/robopark/server-add.js.map +1 -0
- package/dist/robopark/setup-livekit.js +53 -52
- package/dist/robopark/setup-livekit.js.map +1 -0
- package/dist/robopark/setup.js +1 -0
- package/dist/robopark/setup.js.map +1 -0
- package/dist/robopark/stop-all.js +1 -0
- package/dist/robopark/stop-all.js.map +1 -0
- package/dist/robopark/verify.js +1 -0
- package/dist/robopark/verify.js.map +1 -0
- package/dist/robopark/vision-agent-launcher.js +1 -0
- package/dist/robopark/vision-agent-launcher.js.map +1 -0
- package/dist/robopark/vision-control.js +1 -0
- package/dist/robopark/vision-control.js.map +1 -0
- package/dist/robopark-cli.js +7 -125
- package/dist/robopark-cli.js.map +1 -0
- package/package.json +16 -25
- package/pi-client/_install_steps.sh +29 -29
- package/pi-client/client.py +76 -76
- package/pi-client/install.sh +40 -40
- package/pi-client/join_convo.sh +54 -54
- package/pi-client/livekit_bridge.py +24 -24
- package/pi-client/motor_bridge.py +10 -10
- package/scheduler/__pycache__/main.cpython-312.pyc +0 -0
- package/scheduler/main.py +196 -17
- package/scheduler/media_lock.py +57 -57
- package/scheduler/preview_agent.py +1122 -1122
- package/scheduler/production_config.json +73 -113
- package/scheduler/scripts/install-robot-supervisor-linux.sh +33 -33
- package/{static → scheduler/static}/vendor/elevenlabs-client.iife.js +24199 -24199
- package/scheduler/static/voice-join.html +177 -0
- package/screen/screen_runtime.py +75 -75
- package/vision/app_pi_clean.py +297 -297
- package/vision/audio_server_pi.py +24 -24
- package/vision/install.sh +34 -34
- package/vision/motor_server.py +275 -275
- package/vision/requirements_camera.txt +6 -6
- package/vision/requirements_motor.txt +4 -4
- package/vision/requirements_pi_unified.txt +2 -2
- package/vision/requirements_vision_agent.txt +19 -19
- package/vision/run.sh +244 -244
- package/vision/services/services.sh +12 -12
- package/dist/kernel/types.js +0 -7
- package/dist/robopark/access.js +0 -99
- package/dist/robopark/control-center-html.js +0 -9191
- package/dist/robopark/control-server.js +0 -148
- package/dist/robopark/deployment-commands.js +0 -47
- package/dist/robopark/standalone.js +0 -562
- package/dist/robopark/voice-join-html.js +0 -57
- package/scripts/windows-shim-fix.cjs +0 -58
- package/static/robopark/barracuda.png +0 -0
- package/static/robopark/bmw.png +0 -0
- package/static/robopark/jaguar.png +0 -0
- package/static/robopark/magnus.jpg +0 -0
- package/static/robopark/panda.png +0 -0
- package/static/robopark/tesla.png +0 -0
- package/static/robopark/titan.jpg +0 -0
- package/static/robopark/volt.png +0 -0
- 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"
|