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
@@ -1,6 +1,6 @@
1
- # Camera-only dependencies used by `robopark conversation up`.
2
- # OpenCV is supplied by apt on Raspberry Pi through --system-site-packages.
3
- Flask==3.0.0
4
- Flask-CORS==4.0.0
5
- requests>=2.31
6
- numpy>=2.1; python_version >= '3.13'
1
+ # Camera-only dependencies used by `robopark conversation up`.
2
+ # OpenCV is supplied by apt on Raspberry Pi through --system-site-packages.
3
+ Flask==3.0.0
4
+ Flask-CORS==4.0.0
5
+ requests>=2.31
6
+ numpy>=2.1; python_version >= '3.13'
@@ -1,4 +1,4 @@
1
- fastapi>=0.115
2
- uvicorn>=0.30
3
- pydantic>=2.7
4
- lgpio==0.2.2.0; platform_system == 'Linux'
1
+ fastapi>=0.115
2
+ uvicorn>=0.30
3
+ pydantic>=2.7
4
+ lgpio==0.2.2.0; platform_system == 'Linux'
@@ -67,8 +67,8 @@ pydantic==2.5.0
67
67
  # NETWORKING & HTTP
68
68
  # ============================================================================
69
69
  # HTTP requests
70
- requests==2.31.0
71
- groq>=0.11
70
+ requests==2.31.0
71
+ groq>=0.11
72
72
 
73
73
  # CORS support
74
74
  python-multipart==0.0.6
@@ -1,19 +1,19 @@
1
- # Runtime requirements for the packaged RoboPark vision-agent.
2
- #
3
- # This intentionally excludes the legacy optional YOLO/GPIO stack from
4
- # requirements_pi_unified.txt. The packaged agent launches app_pi_clean.py and
5
- # audio_server_pi.py only. Raspberry Pi OpenCV/PyAudio/Picamera2 are supplied
6
- # by apt and exposed to ~/.robopark/venv through --system-site-packages.
7
- Flask==3.0.0
8
- Flask-CORS==4.0.0
9
- requests>=2.31
10
- fastapi>=0.115
11
- uvicorn[standard]>=0.30
12
- python-multipart>=0.0.12
13
- sounddevice>=0.4.6
14
- soundfile>=0.12.1
15
- groq>=0.11
16
- lgpio==0.2.2.0; platform_system == 'Linux'
17
- # Python 3.13 has no compatible NumPy 1.24 wheel. On older Pi images, use the
18
- # distro NumPy provided through system-site-packages instead.
19
- numpy>=2.1; python_version >= '3.13'
1
+ # Runtime requirements for the packaged RoboPark vision-agent.
2
+ #
3
+ # This intentionally excludes the legacy optional YOLO/GPIO stack from
4
+ # requirements_pi_unified.txt. The packaged agent launches app_pi_clean.py and
5
+ # audio_server_pi.py only. Raspberry Pi OpenCV/PyAudio/Picamera2 are supplied
6
+ # by apt and exposed to ~/.robopark/venv through --system-site-packages.
7
+ Flask==3.0.0
8
+ Flask-CORS==4.0.0
9
+ requests>=2.31
10
+ fastapi>=0.115
11
+ uvicorn[standard]>=0.30
12
+ python-multipart>=0.0.12
13
+ sounddevice>=0.4.6
14
+ soundfile>=0.12.1
15
+ groq>=0.11
16
+ lgpio==0.2.2.0; platform_system == 'Linux'
17
+ # Python 3.13 has no compatible NumPy 1.24 wheel. On older Pi images, use the
18
+ # distro NumPy provided through system-site-packages instead.
19
+ numpy>=2.1; python_version >= '3.13'
package/vision/run.sh CHANGED
@@ -1,244 +1,244 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
- STATE_DIR="$ROOT_DIR/.run"
6
- LOG_DIR="$STATE_DIR/logs"
7
- VENV_DIR="$ROOT_DIR/venv"
8
-
9
- mkdir -p "$LOG_DIR"
10
-
11
- if [ -f "$ROOT_DIR/.env" ]; then
12
- set -a
13
- source "$ROOT_DIR/.env"
14
- set +a
15
- fi
16
-
17
- source "$ROOT_DIR/services/services.sh"
18
-
19
- require_venv() {
20
- if [ ! -f "$VENV_DIR/bin/activate" ]; then
21
- echo "Missing venv. Run: ./install.sh"
22
- exit 1
23
- fi
24
- }
25
-
26
- is_running() {
27
- local name="$1"
28
- local pid_file="$STATE_DIR/$name.pid"
29
- if [ ! -f "$pid_file" ]; then
30
- return 1
31
- fi
32
- local pid
33
- pid="$(cat "$pid_file" 2>/dev/null || true)"
34
- if [ -z "$pid" ]; then
35
- return 1
36
- fi
37
- kill -0 "$pid" >/dev/null 2>&1
38
- }
39
-
40
- start_one() {
41
- local name="$1"
42
- local cmd_var="SERVICE_${name}_CMD"
43
- local cmd
44
- cmd="${!cmd_var}"
45
- if [ -z "$cmd" ]; then
46
- echo "Unknown service: $name"
47
- exit 1
48
- fi
49
-
50
- if is_running "$name"; then
51
- echo "$name already running"
52
- return 0
53
- fi
54
-
55
- require_venv
56
- source "$VENV_DIR/bin/activate"
57
-
58
- local log_file="$LOG_DIR/$name.log"
59
- local pid_file="$STATE_DIR/$name.pid"
60
-
61
- echo "Starting $name"
62
- nohup bash -lc "cd \"$ROOT_DIR\" && source \"$VENV_DIR/bin/activate\" && $cmd" >>"$log_file" 2>&1 &
63
- echo $! >"$pid_file"
64
- }
65
-
66
- detect_terminal() {
67
- if command -v lxterminal >/dev/null 2>&1; then
68
- echo "lxterminal"
69
- return 0
70
- fi
71
- if command -v gnome-terminal >/dev/null 2>&1; then
72
- echo "gnome-terminal"
73
- return 0
74
- fi
75
- if command -v xterm >/dev/null 2>&1; then
76
- echo "xterm"
77
- return 0
78
- fi
79
- return 1
80
- }
81
-
82
- start_one_term() {
83
- local name="$1"
84
- local cmd_var="SERVICE_${name}_CMD"
85
- local cmd
86
- cmd="${!cmd_var}"
87
- if [ -z "$cmd" ]; then
88
- echo "Unknown service: $name"
89
- exit 1
90
- fi
91
-
92
- if is_running "$name"; then
93
- echo "$name already running"
94
- return 0
95
- fi
96
-
97
- require_venv
98
-
99
- local term
100
- term="$(detect_terminal || true)"
101
- if [ -z "$term" ]; then
102
- echo "No supported terminal found (need lxterminal, gnome-terminal, or xterm)"
103
- exit 1
104
- fi
105
-
106
- local log_file="$LOG_DIR/$name.log"
107
- local pid_file="$STATE_DIR/$name.pid"
108
- local title="RoboVision:$name"
109
- local run_cmd
110
- run_cmd="cd \"$ROOT_DIR\" && source \"$VENV_DIR/bin/activate\" && exec $cmd"
111
-
112
- echo "Starting $name in terminal ($term)"
113
-
114
- if [ "$term" = "lxterminal" ]; then
115
- lxterminal --title="$title" --command="bash -lc '$run_cmd'" >>"$log_file" 2>&1 &
116
- echo $! >"$pid_file"
117
- return 0
118
- fi
119
-
120
- if [ "$term" = "gnome-terminal" ]; then
121
- gnome-terminal --title="$title" -- bash -lc "$run_cmd" >>"$log_file" 2>&1 &
122
- echo $! >"$pid_file"
123
- return 0
124
- fi
125
-
126
- if [ "$term" = "xterm" ]; then
127
- xterm -T "$title" -e bash -lc "$run_cmd" >>"$log_file" 2>&1 &
128
- echo $! >"$pid_file"
129
- return 0
130
- fi
131
- }
132
-
133
- stop_one() {
134
- local name="$1"
135
- local pid_file="$STATE_DIR/$name.pid"
136
-
137
- if ! is_running "$name"; then
138
- rm -f "$pid_file"
139
- echo "$name not running"
140
- return 0
141
- fi
142
-
143
- local pid
144
- pid="$(cat "$pid_file")"
145
- echo "Stopping $name (pid $pid)"
146
- kill "$pid" >/dev/null 2>&1 || true
147
-
148
- local i
149
- for i in $(seq 1 30); do
150
- if kill -0 "$pid" >/dev/null 2>&1; then
151
- sleep 0.2
152
- else
153
- break
154
- fi
155
- done
156
-
157
- if kill -0 "$pid" >/dev/null 2>&1; then
158
- kill -9 "$pid" >/dev/null 2>&1 || true
159
- fi
160
-
161
- rm -f "$pid_file"
162
- }
163
-
164
- status_one() {
165
- local name="$1"
166
- local port_var="SERVICE_${name}_PORT"
167
- local port
168
- port="${!port_var}"
169
-
170
- if is_running "$name"; then
171
- echo "$name: running (port ${port:-n/a})"
172
- else
173
- echo "$name: stopped"
174
- fi
175
- }
176
-
177
- tail_one() {
178
- local name="$1"
179
- local log_file="$LOG_DIR/$name.log"
180
- if [ ! -f "$log_file" ]; then
181
- echo "No log file: $log_file"
182
- exit 1
183
- fi
184
- tail -n 200 -f "$log_file"
185
- }
186
-
187
- usage() {
188
- echo "Usage: ./run.sh <start|start-term|stop|restart|status|logs> [service]"
189
- echo "Services: ${SERVICES[*]}"
190
- }
191
-
192
- ACTION="${1:-}"
193
- NAME="${2:-all}"
194
-
195
- case "$ACTION" in
196
- start)
197
- if [ "$NAME" = "all" ]; then
198
- for s in "${SERVICES[@]}"; do start_one "$s"; done
199
- else
200
- start_one "$NAME"
201
- fi
202
- ;;
203
- start-term)
204
- if [ "$NAME" = "all" ]; then
205
- for s in "${SERVICES[@]}"; do start_one_term "$s"; done
206
- else
207
- start_one_term "$NAME"
208
- fi
209
- ;;
210
- stop)
211
- if [ "$NAME" = "all" ]; then
212
- for s in "${SERVICES[@]}"; do stop_one "$s"; done
213
- else
214
- stop_one "$NAME"
215
- fi
216
- ;;
217
- restart)
218
- if [ "$NAME" = "all" ]; then
219
- for s in "${SERVICES[@]}"; do stop_one "$s"; done
220
- for s in "${SERVICES[@]}"; do start_one "$s"; done
221
- else
222
- stop_one "$NAME"
223
- start_one "$NAME"
224
- fi
225
- ;;
226
- status)
227
- if [ "$NAME" = "all" ]; then
228
- for s in "${SERVICES[@]}"; do status_one "$s"; done
229
- else
230
- status_one "$NAME"
231
- fi
232
- ;;
233
- logs)
234
- if [ "$NAME" = "all" ]; then
235
- echo "Specify a service for logs"
236
- exit 1
237
- fi
238
- tail_one "$NAME"
239
- ;;
240
- *)
241
- usage
242
- exit 1
243
- ;;
244
- esac
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ STATE_DIR="$ROOT_DIR/.run"
6
+ LOG_DIR="$STATE_DIR/logs"
7
+ VENV_DIR="$ROOT_DIR/venv"
8
+
9
+ mkdir -p "$LOG_DIR"
10
+
11
+ if [ -f "$ROOT_DIR/.env" ]; then
12
+ set -a
13
+ source "$ROOT_DIR/.env"
14
+ set +a
15
+ fi
16
+
17
+ source "$ROOT_DIR/services/services.sh"
18
+
19
+ require_venv() {
20
+ if [ ! -f "$VENV_DIR/bin/activate" ]; then
21
+ echo "Missing venv. Run: ./install.sh"
22
+ exit 1
23
+ fi
24
+ }
25
+
26
+ is_running() {
27
+ local name="$1"
28
+ local pid_file="$STATE_DIR/$name.pid"
29
+ if [ ! -f "$pid_file" ]; then
30
+ return 1
31
+ fi
32
+ local pid
33
+ pid="$(cat "$pid_file" 2>/dev/null || true)"
34
+ if [ -z "$pid" ]; then
35
+ return 1
36
+ fi
37
+ kill -0 "$pid" >/dev/null 2>&1
38
+ }
39
+
40
+ start_one() {
41
+ local name="$1"
42
+ local cmd_var="SERVICE_${name}_CMD"
43
+ local cmd
44
+ cmd="${!cmd_var}"
45
+ if [ -z "$cmd" ]; then
46
+ echo "Unknown service: $name"
47
+ exit 1
48
+ fi
49
+
50
+ if is_running "$name"; then
51
+ echo "$name already running"
52
+ return 0
53
+ fi
54
+
55
+ require_venv
56
+ source "$VENV_DIR/bin/activate"
57
+
58
+ local log_file="$LOG_DIR/$name.log"
59
+ local pid_file="$STATE_DIR/$name.pid"
60
+
61
+ echo "Starting $name"
62
+ nohup bash -lc "cd \"$ROOT_DIR\" && source \"$VENV_DIR/bin/activate\" && $cmd" >>"$log_file" 2>&1 &
63
+ echo $! >"$pid_file"
64
+ }
65
+
66
+ detect_terminal() {
67
+ if command -v lxterminal >/dev/null 2>&1; then
68
+ echo "lxterminal"
69
+ return 0
70
+ fi
71
+ if command -v gnome-terminal >/dev/null 2>&1; then
72
+ echo "gnome-terminal"
73
+ return 0
74
+ fi
75
+ if command -v xterm >/dev/null 2>&1; then
76
+ echo "xterm"
77
+ return 0
78
+ fi
79
+ return 1
80
+ }
81
+
82
+ start_one_term() {
83
+ local name="$1"
84
+ local cmd_var="SERVICE_${name}_CMD"
85
+ local cmd
86
+ cmd="${!cmd_var}"
87
+ if [ -z "$cmd" ]; then
88
+ echo "Unknown service: $name"
89
+ exit 1
90
+ fi
91
+
92
+ if is_running "$name"; then
93
+ echo "$name already running"
94
+ return 0
95
+ fi
96
+
97
+ require_venv
98
+
99
+ local term
100
+ term="$(detect_terminal || true)"
101
+ if [ -z "$term" ]; then
102
+ echo "No supported terminal found (need lxterminal, gnome-terminal, or xterm)"
103
+ exit 1
104
+ fi
105
+
106
+ local log_file="$LOG_DIR/$name.log"
107
+ local pid_file="$STATE_DIR/$name.pid"
108
+ local title="RoboVision:$name"
109
+ local run_cmd
110
+ run_cmd="cd \"$ROOT_DIR\" && source \"$VENV_DIR/bin/activate\" && exec $cmd"
111
+
112
+ echo "Starting $name in terminal ($term)"
113
+
114
+ if [ "$term" = "lxterminal" ]; then
115
+ lxterminal --title="$title" --command="bash -lc '$run_cmd'" >>"$log_file" 2>&1 &
116
+ echo $! >"$pid_file"
117
+ return 0
118
+ fi
119
+
120
+ if [ "$term" = "gnome-terminal" ]; then
121
+ gnome-terminal --title="$title" -- bash -lc "$run_cmd" >>"$log_file" 2>&1 &
122
+ echo $! >"$pid_file"
123
+ return 0
124
+ fi
125
+
126
+ if [ "$term" = "xterm" ]; then
127
+ xterm -T "$title" -e bash -lc "$run_cmd" >>"$log_file" 2>&1 &
128
+ echo $! >"$pid_file"
129
+ return 0
130
+ fi
131
+ }
132
+
133
+ stop_one() {
134
+ local name="$1"
135
+ local pid_file="$STATE_DIR/$name.pid"
136
+
137
+ if ! is_running "$name"; then
138
+ rm -f "$pid_file"
139
+ echo "$name not running"
140
+ return 0
141
+ fi
142
+
143
+ local pid
144
+ pid="$(cat "$pid_file")"
145
+ echo "Stopping $name (pid $pid)"
146
+ kill "$pid" >/dev/null 2>&1 || true
147
+
148
+ local i
149
+ for i in $(seq 1 30); do
150
+ if kill -0 "$pid" >/dev/null 2>&1; then
151
+ sleep 0.2
152
+ else
153
+ break
154
+ fi
155
+ done
156
+
157
+ if kill -0 "$pid" >/dev/null 2>&1; then
158
+ kill -9 "$pid" >/dev/null 2>&1 || true
159
+ fi
160
+
161
+ rm -f "$pid_file"
162
+ }
163
+
164
+ status_one() {
165
+ local name="$1"
166
+ local port_var="SERVICE_${name}_PORT"
167
+ local port
168
+ port="${!port_var}"
169
+
170
+ if is_running "$name"; then
171
+ echo "$name: running (port ${port:-n/a})"
172
+ else
173
+ echo "$name: stopped"
174
+ fi
175
+ }
176
+
177
+ tail_one() {
178
+ local name="$1"
179
+ local log_file="$LOG_DIR/$name.log"
180
+ if [ ! -f "$log_file" ]; then
181
+ echo "No log file: $log_file"
182
+ exit 1
183
+ fi
184
+ tail -n 200 -f "$log_file"
185
+ }
186
+
187
+ usage() {
188
+ echo "Usage: ./run.sh <start|start-term|stop|restart|status|logs> [service]"
189
+ echo "Services: ${SERVICES[*]}"
190
+ }
191
+
192
+ ACTION="${1:-}"
193
+ NAME="${2:-all}"
194
+
195
+ case "$ACTION" in
196
+ start)
197
+ if [ "$NAME" = "all" ]; then
198
+ for s in "${SERVICES[@]}"; do start_one "$s"; done
199
+ else
200
+ start_one "$NAME"
201
+ fi
202
+ ;;
203
+ start-term)
204
+ if [ "$NAME" = "all" ]; then
205
+ for s in "${SERVICES[@]}"; do start_one_term "$s"; done
206
+ else
207
+ start_one_term "$NAME"
208
+ fi
209
+ ;;
210
+ stop)
211
+ if [ "$NAME" = "all" ]; then
212
+ for s in "${SERVICES[@]}"; do stop_one "$s"; done
213
+ else
214
+ stop_one "$NAME"
215
+ fi
216
+ ;;
217
+ restart)
218
+ if [ "$NAME" = "all" ]; then
219
+ for s in "${SERVICES[@]}"; do stop_one "$s"; done
220
+ for s in "${SERVICES[@]}"; do start_one "$s"; done
221
+ else
222
+ stop_one "$NAME"
223
+ start_one "$NAME"
224
+ fi
225
+ ;;
226
+ status)
227
+ if [ "$NAME" = "all" ]; then
228
+ for s in "${SERVICES[@]}"; do status_one "$s"; done
229
+ else
230
+ status_one "$NAME"
231
+ fi
232
+ ;;
233
+ logs)
234
+ if [ "$NAME" = "all" ]; then
235
+ echo "Specify a service for logs"
236
+ exit 1
237
+ fi
238
+ tail_one "$NAME"
239
+ ;;
240
+ *)
241
+ usage
242
+ exit 1
243
+ ;;
244
+ esac
@@ -1,12 +1,12 @@
1
- #!/usr/bin/env bash
2
-
3
- SERVICES=("vision" "motor" "audio")
4
-
5
- SERVICE_vision_PORT=5000
6
- SERVICE_vision_CMD="python app_pi_clean.py"
7
-
8
- SERVICE_motor_PORT=8001
9
- SERVICE_motor_CMD="python motor_server.py"
10
-
11
- SERVICE_audio_PORT=8000
12
- SERVICE_audio_CMD="python audio_server_pi.py"
1
+ #!/usr/bin/env bash
2
+
3
+ SERVICES=("vision" "motor" "audio")
4
+
5
+ SERVICE_vision_PORT=5000
6
+ SERVICE_vision_CMD="python app_pi_clean.py"
7
+
8
+ SERVICE_motor_PORT=8001
9
+ SERVICE_motor_CMD="python motor_server.py"
10
+
11
+ SERVICE_audio_PORT=8000
12
+ SERVICE_audio_CMD="python audio_server_pi.py"
@@ -1,7 +0,0 @@
1
- /**
2
- * OpenKernel — Core Type Definitions
3
- *
4
- * Provider-agnostic AI execution kernel types.
5
- * Mission → Objectives → Tasks → Workers → Providers.
6
- */
7
- export {};