robopark 3.3.32 → 3.3.33

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "robopark",
3
- "version": "3.3.32",
3
+ "version": "3.3.33",
4
4
  "description": "RoboPark fleet control CLI — scheduler, control UI, and character voice calls. Standalone: no infinicode runtime.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1 +1 @@
1
- Xg-e8h70WpdFcsZ2vcfOG
1
+ gGysrZrp8HXGK_0MbZa9v
@@ -39,33 +39,33 @@
39
39
  "static/chunks/main-app-a1f59168303c7f84.js",
40
40
  "static/chunks/app/api/models/route-0952b44bda5bfb6d.js"
41
41
  ],
42
- "/api/reload-tools/route": [
42
+ "/api/prewarm/route": [
43
43
  "static/chunks/webpack-5252e5254da079b5.js",
44
44
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
45
45
  "static/chunks/1255-404bb8de49c90395.js",
46
46
  "static/chunks/main-app-a1f59168303c7f84.js",
47
- "static/chunks/app/api/reload-tools/route-0952b44bda5bfb6d.js"
47
+ "static/chunks/app/api/prewarm/route-0952b44bda5bfb6d.js"
48
48
  ],
49
- "/api/prewarm/route": [
49
+ "/api/prompt/route": [
50
50
  "static/chunks/webpack-5252e5254da079b5.js",
51
51
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
52
52
  "static/chunks/1255-404bb8de49c90395.js",
53
53
  "static/chunks/main-app-a1f59168303c7f84.js",
54
- "static/chunks/app/api/prewarm/route-0952b44bda5bfb6d.js"
54
+ "static/chunks/app/api/prompt/route-0952b44bda5bfb6d.js"
55
55
  ],
56
- "/api/robopark/devices/[deviceId]/control/route": [
56
+ "/api/reload-tools/route": [
57
57
  "static/chunks/webpack-5252e5254da079b5.js",
58
58
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
59
59
  "static/chunks/1255-404bb8de49c90395.js",
60
60
  "static/chunks/main-app-a1f59168303c7f84.js",
61
- "static/chunks/app/api/robopark/devices/[deviceId]/control/route-0952b44bda5bfb6d.js"
61
+ "static/chunks/app/api/reload-tools/route-0952b44bda5bfb6d.js"
62
62
  ],
63
- "/api/prompt/route": [
63
+ "/api/robopark/devices/[deviceId]/control/route": [
64
64
  "static/chunks/webpack-5252e5254da079b5.js",
65
65
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
66
66
  "static/chunks/1255-404bb8de49c90395.js",
67
67
  "static/chunks/main-app-a1f59168303c7f84.js",
68
- "static/chunks/app/api/prompt/route-0952b44bda5bfb6d.js"
68
+ "static/chunks/app/api/robopark/devices/[deviceId]/control/route-0952b44bda5bfb6d.js"
69
69
  ],
70
70
  "/api/robopark/robots/[robotId]/operations/route": [
71
71
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -88,6 +88,13 @@
88
88
  "static/chunks/main-app-a1f59168303c7f84.js",
89
89
  "static/chunks/app/api/robopark/transcripts/[sessionId]/route-0952b44bda5bfb6d.js"
90
90
  ],
91
+ "/api/setup/complete/route": [
92
+ "static/chunks/webpack-5252e5254da079b5.js",
93
+ "static/chunks/4bd1b696-f785427dddbba9fb.js",
94
+ "static/chunks/1255-404bb8de49c90395.js",
95
+ "static/chunks/main-app-a1f59168303c7f84.js",
96
+ "static/chunks/app/api/setup/complete/route-0952b44bda5bfb6d.js"
97
+ ],
91
98
  "/api/setup/status/route": [
92
99
  "static/chunks/webpack-5252e5254da079b5.js",
93
100
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
@@ -109,19 +116,19 @@
109
116
  "static/chunks/main-app-a1f59168303c7f84.js",
110
117
  "static/chunks/app/api/setup/test-hass/route-0952b44bda5bfb6d.js"
111
118
  ],
112
- "/api/setup/complete/route": [
119
+ "/api/setup/test-ollama/route": [
113
120
  "static/chunks/webpack-5252e5254da079b5.js",
114
121
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
115
122
  "static/chunks/1255-404bb8de49c90395.js",
116
123
  "static/chunks/main-app-a1f59168303c7f84.js",
117
- "static/chunks/app/api/setup/complete/route-0952b44bda5bfb6d.js"
124
+ "static/chunks/app/api/setup/test-ollama/route-0952b44bda5bfb6d.js"
118
125
  ],
119
- "/api/setup/test-ollama/route": [
126
+ "/api/setup/test-n8n/route": [
120
127
  "static/chunks/webpack-5252e5254da079b5.js",
121
128
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
122
129
  "static/chunks/1255-404bb8de49c90395.js",
123
130
  "static/chunks/main-app-a1f59168303c7f84.js",
124
- "static/chunks/app/api/setup/test-ollama/route-0952b44bda5bfb6d.js"
131
+ "static/chunks/app/api/setup/test-n8n/route-0952b44bda5bfb6d.js"
125
132
  ],
126
133
  "/api/test-tts/route": [
127
134
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -130,12 +137,19 @@
130
137
  "static/chunks/main-app-a1f59168303c7f84.js",
131
138
  "static/chunks/app/api/test-tts/route-0952b44bda5bfb6d.js"
132
139
  ],
133
- "/api/setup/test-n8n/route": [
140
+ "/api/wake-word/status/route": [
134
141
  "static/chunks/webpack-5252e5254da079b5.js",
135
142
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
136
143
  "static/chunks/1255-404bb8de49c90395.js",
137
144
  "static/chunks/main-app-a1f59168303c7f84.js",
138
- "static/chunks/app/api/setup/test-n8n/route-0952b44bda5bfb6d.js"
145
+ "static/chunks/app/api/wake-word/status/route-0952b44bda5bfb6d.js"
146
+ ],
147
+ "/api/wake-word/models/route": [
148
+ "static/chunks/webpack-5252e5254da079b5.js",
149
+ "static/chunks/4bd1b696-f785427dddbba9fb.js",
150
+ "static/chunks/1255-404bb8de49c90395.js",
151
+ "static/chunks/main-app-a1f59168303c7f84.js",
152
+ "static/chunks/app/api/wake-word/models/route-0952b44bda5bfb6d.js"
139
153
  ],
140
154
  "/api/voices/route": [
141
155
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -144,26 +158,26 @@
144
158
  "static/chunks/main-app-a1f59168303c7f84.js",
145
159
  "static/chunks/app/api/voices/route-0952b44bda5bfb6d.js"
146
160
  ],
147
- "/api/wake-word/models/route": [
161
+ "/api/wake-word/upload/route": [
148
162
  "static/chunks/webpack-5252e5254da079b5.js",
149
163
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
150
164
  "static/chunks/1255-404bb8de49c90395.js",
151
165
  "static/chunks/main-app-a1f59168303c7f84.js",
152
- "static/chunks/app/api/wake-word/models/route-0952b44bda5bfb6d.js"
166
+ "static/chunks/app/api/wake-word/upload/route-0952b44bda5bfb6d.js"
153
167
  ],
154
- "/api/wake-word/status/route": [
168
+ "/api/model-status/route": [
155
169
  "static/chunks/webpack-5252e5254da079b5.js",
156
170
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
157
171
  "static/chunks/1255-404bb8de49c90395.js",
158
172
  "static/chunks/main-app-a1f59168303c7f84.js",
159
- "static/chunks/app/api/wake-word/status/route-0952b44bda5bfb6d.js"
173
+ "static/chunks/app/api/model-status/route-0952b44bda5bfb6d.js"
160
174
  ],
161
- "/api/wake-word/upload/route": [
175
+ "/api/kiosk-hardware/route": [
162
176
  "static/chunks/webpack-5252e5254da079b5.js",
163
177
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
164
178
  "static/chunks/1255-404bb8de49c90395.js",
165
179
  "static/chunks/main-app-a1f59168303c7f84.js",
166
- "static/chunks/app/api/wake-word/upload/route-0952b44bda5bfb6d.js"
180
+ "static/chunks/app/api/kiosk-hardware/route-0952b44bda5bfb6d.js"
167
181
  ],
168
182
  "/api/connection-details/route": [
169
183
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -172,19 +186,19 @@
172
186
  "static/chunks/main-app-a1f59168303c7f84.js",
173
187
  "static/chunks/app/api/connection-details/route-0952b44bda5bfb6d.js"
174
188
  ],
175
- "/api/kiosk-hardware/route": [
189
+ "/api/robopark/live-rooms/route": [
176
190
  "static/chunks/webpack-5252e5254da079b5.js",
177
191
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
178
192
  "static/chunks/1255-404bb8de49c90395.js",
179
193
  "static/chunks/main-app-a1f59168303c7f84.js",
180
- "static/chunks/app/api/kiosk-hardware/route-0952b44bda5bfb6d.js"
194
+ "static/chunks/app/api/robopark/live-rooms/route-0952b44bda5bfb6d.js"
181
195
  ],
182
- "/api/model-status/route": [
196
+ "/api/robopark/monitor-token/route": [
183
197
  "static/chunks/webpack-5252e5254da079b5.js",
184
198
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
185
199
  "static/chunks/1255-404bb8de49c90395.js",
186
200
  "static/chunks/main-app-a1f59168303c7f84.js",
187
- "static/chunks/app/api/model-status/route-0952b44bda5bfb6d.js"
201
+ "static/chunks/app/api/robopark/monitor-token/route-0952b44bda5bfb6d.js"
188
202
  ],
189
203
  "/api/robopark/character-ai/route": [
190
204
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -193,26 +207,26 @@
193
207
  "static/chunks/main-app-a1f59168303c7f84.js",
194
208
  "static/chunks/app/api/robopark/character-ai/route-0952b44bda5bfb6d.js"
195
209
  ],
196
- "/api/robopark/device-access/route": [
210
+ "/api/robopark/camera-token/route": [
197
211
  "static/chunks/webpack-5252e5254da079b5.js",
198
212
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
199
213
  "static/chunks/1255-404bb8de49c90395.js",
200
214
  "static/chunks/main-app-a1f59168303c7f84.js",
201
- "static/chunks/app/api/robopark/device-access/route-0952b44bda5bfb6d.js"
215
+ "static/chunks/app/api/robopark/camera-token/route-0952b44bda5bfb6d.js"
202
216
  ],
203
- "/api/robopark/live-rooms/route": [
217
+ "/api/robopark/device-access/route": [
204
218
  "static/chunks/webpack-5252e5254da079b5.js",
205
219
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
206
220
  "static/chunks/1255-404bb8de49c90395.js",
207
221
  "static/chunks/main-app-a1f59168303c7f84.js",
208
- "static/chunks/app/api/robopark/live-rooms/route-0952b44bda5bfb6d.js"
222
+ "static/chunks/app/api/robopark/device-access/route-0952b44bda5bfb6d.js"
209
223
  ],
210
- "/api/robopark/monitor-token/route": [
224
+ "/api/robopark/robots/route": [
211
225
  "static/chunks/webpack-5252e5254da079b5.js",
212
226
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
213
227
  "static/chunks/1255-404bb8de49c90395.js",
214
228
  "static/chunks/main-app-a1f59168303c7f84.js",
215
- "static/chunks/app/api/robopark/monitor-token/route-0952b44bda5bfb6d.js"
229
+ "static/chunks/app/api/robopark/robots/route-0952b44bda5bfb6d.js"
216
230
  ],
217
231
  "/api/robopark/servers/[serverId]/metrics/route": [
218
232
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -221,19 +235,19 @@
221
235
  "static/chunks/main-app-a1f59168303c7f84.js",
222
236
  "static/chunks/app/api/robopark/servers/[serverId]/metrics/route-0952b44bda5bfb6d.js"
223
237
  ],
224
- "/api/robopark/robots/route": [
238
+ "/api/robopark/servers/[serverId]/route": [
225
239
  "static/chunks/webpack-5252e5254da079b5.js",
226
240
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
227
241
  "static/chunks/1255-404bb8de49c90395.js",
228
242
  "static/chunks/main-app-a1f59168303c7f84.js",
229
- "static/chunks/app/api/robopark/robots/route-0952b44bda5bfb6d.js"
243
+ "static/chunks/app/api/robopark/servers/[serverId]/route-0952b44bda5bfb6d.js"
230
244
  ],
231
- "/api/robopark/servers/[serverId]/route": [
245
+ "/api/robopark/servers/route": [
232
246
  "static/chunks/webpack-5252e5254da079b5.js",
233
247
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
234
248
  "static/chunks/1255-404bb8de49c90395.js",
235
249
  "static/chunks/main-app-a1f59168303c7f84.js",
236
- "static/chunks/app/api/robopark/servers/[serverId]/route-0952b44bda5bfb6d.js"
250
+ "static/chunks/app/api/robopark/servers/route-0952b44bda5bfb6d.js"
237
251
  ],
238
252
  "/api/robopark/sessions/route": [
239
253
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -242,12 +256,12 @@
242
256
  "static/chunks/main-app-a1f59168303c7f84.js",
243
257
  "static/chunks/app/api/robopark/sessions/route-0952b44bda5bfb6d.js"
244
258
  ],
245
- "/api/robopark/servers/route": [
259
+ "/api/robovoice/robots/[robotId]/media-health/route": [
246
260
  "static/chunks/webpack-5252e5254da079b5.js",
247
261
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
248
262
  "static/chunks/1255-404bb8de49c90395.js",
249
263
  "static/chunks/main-app-a1f59168303c7f84.js",
250
- "static/chunks/app/api/robopark/servers/route-0952b44bda5bfb6d.js"
264
+ "static/chunks/app/api/robovoice/robots/[robotId]/media-health/route-0952b44bda5bfb6d.js"
251
265
  ],
252
266
  "/api/robopark/vision-caption/route": [
253
267
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -263,12 +277,12 @@
263
277
  "static/chunks/main-app-a1f59168303c7f84.js",
264
278
  "static/chunks/app/api/robopark/robots/[robotId]/voice-engine/route-0952b44bda5bfb6d.js"
265
279
  ],
266
- "/api/robovoice/robots/[robotId]/media-health/route": [
280
+ "/api/settings/route": [
267
281
  "static/chunks/webpack-5252e5254da079b5.js",
268
282
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
269
283
  "static/chunks/1255-404bb8de49c90395.js",
270
284
  "static/chunks/main-app-a1f59168303c7f84.js",
271
- "static/chunks/app/api/robovoice/robots/[robotId]/media-health/route-0952b44bda5bfb6d.js"
285
+ "static/chunks/app/api/settings/route-0952b44bda5bfb6d.js"
272
286
  ],
273
287
  "/api/robopark/transcripts/route": [
274
288
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -284,20 +298,6 @@
284
298
  "static/chunks/main-app-a1f59168303c7f84.js",
285
299
  "static/chunks/app/api/turn-credentials/route-0952b44bda5bfb6d.js"
286
300
  ],
287
- "/api/robopark/camera-token/route": [
288
- "static/chunks/webpack-5252e5254da079b5.js",
289
- "static/chunks/4bd1b696-f785427dddbba9fb.js",
290
- "static/chunks/1255-404bb8de49c90395.js",
291
- "static/chunks/main-app-a1f59168303c7f84.js",
292
- "static/chunks/app/api/robopark/camera-token/route-0952b44bda5bfb6d.js"
293
- ],
294
- "/api/settings/route": [
295
- "static/chunks/webpack-5252e5254da079b5.js",
296
- "static/chunks/4bd1b696-f785427dddbba9fb.js",
297
- "static/chunks/1255-404bb8de49c90395.js",
298
- "static/chunks/main-app-a1f59168303c7f84.js",
299
- "static/chunks/app/api/settings/route-0952b44bda5bfb6d.js"
300
- ],
301
301
  "/api/wake/route": [
302
302
  "static/chunks/webpack-5252e5254da079b5.js",
303
303
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
@@ -305,26 +305,26 @@
305
305
  "static/chunks/main-app-a1f59168303c7f84.js",
306
306
  "static/chunks/app/api/wake/route-0952b44bda5bfb6d.js"
307
307
  ],
308
- "/robopark/[...path]/route": [
308
+ "/fed/media/robots/[robotId]/video_feed/route": [
309
309
  "static/chunks/webpack-5252e5254da079b5.js",
310
310
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
311
311
  "static/chunks/1255-404bb8de49c90395.js",
312
312
  "static/chunks/main-app-a1f59168303c7f84.js",
313
- "static/chunks/app/robopark/[...path]/route-0952b44bda5bfb6d.js"
313
+ "static/chunks/app/fed/media/robots/[robotId]/video_feed/route-0952b44bda5bfb6d.js"
314
314
  ],
315
- "/camera-grid/route": [
315
+ "/robopark/[...path]/route": [
316
316
  "static/chunks/webpack-5252e5254da079b5.js",
317
317
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
318
318
  "static/chunks/1255-404bb8de49c90395.js",
319
319
  "static/chunks/main-app-a1f59168303c7f84.js",
320
- "static/chunks/app/camera-grid/route-0952b44bda5bfb6d.js"
320
+ "static/chunks/app/robopark/[...path]/route-0952b44bda5bfb6d.js"
321
321
  ],
322
- "/fed/media/robots/[robotId]/video_feed/route": [
322
+ "/fed/[...path]/route": [
323
323
  "static/chunks/webpack-5252e5254da079b5.js",
324
324
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
325
325
  "static/chunks/1255-404bb8de49c90395.js",
326
326
  "static/chunks/main-app-a1f59168303c7f84.js",
327
- "static/chunks/app/fed/media/robots/[robotId]/video_feed/route-0952b44bda5bfb6d.js"
327
+ "static/chunks/app/fed/[...path]/route-0952b44bda5bfb6d.js"
328
328
  ],
329
329
  "/tailnet/route": [
330
330
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -333,19 +333,19 @@
333
333
  "static/chunks/main-app-a1f59168303c7f84.js",
334
334
  "static/chunks/app/tailnet/route-0952b44bda5bfb6d.js"
335
335
  ],
336
- "/vendor/livekit-client.umd.js/route": [
336
+ "/camera-grid/route": [
337
337
  "static/chunks/webpack-5252e5254da079b5.js",
338
338
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
339
339
  "static/chunks/1255-404bb8de49c90395.js",
340
340
  "static/chunks/main-app-a1f59168303c7f84.js",
341
- "static/chunks/app/vendor/livekit-client.umd.js/route-0952b44bda5bfb6d.js"
341
+ "static/chunks/app/camera-grid/route-0952b44bda5bfb6d.js"
342
342
  ],
343
- "/fed/[...path]/route": [
343
+ "/vendor/livekit-client.umd.js/route": [
344
344
  "static/chunks/webpack-5252e5254da079b5.js",
345
345
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
346
346
  "static/chunks/1255-404bb8de49c90395.js",
347
347
  "static/chunks/main-app-a1f59168303c7f84.js",
348
- "static/chunks/app/fed/[...path]/route-0952b44bda5bfb6d.js"
348
+ "static/chunks/app/vendor/livekit-client.umd.js/route-0952b44bda5bfb6d.js"
349
349
  ],
350
350
  "/robopark/api/robots/[robotId]/stream/route": [
351
351
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -389,13 +389,6 @@
389
389
  "static/chunks/main-app-a1f59168303c7f84.js",
390
390
  "static/chunks/app/(app)/layout-0952b44bda5bfb6d.js"
391
391
  ],
392
- "/(app)/page": [
393
- "static/chunks/webpack-5252e5254da079b5.js",
394
- "static/chunks/4bd1b696-f785427dddbba9fb.js",
395
- "static/chunks/1255-404bb8de49c90395.js",
396
- "static/chunks/main-app-a1f59168303c7f84.js",
397
- "static/chunks/app/(app)/page-0952b44bda5bfb6d.js"
398
- ],
399
392
  "/(app)/voice/page": [
400
393
  "static/chunks/webpack-5252e5254da079b5.js",
401
394
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
@@ -407,6 +400,13 @@
407
400
  "static/chunks/9880-53262785284464cc.js",
408
401
  "static/chunks/2333-43c39acb531f7d4e.js",
409
402
  "static/chunks/app/(app)/voice/page-72d72d9a70d9c1d4.js"
403
+ ],
404
+ "/(app)/page": [
405
+ "static/chunks/webpack-5252e5254da079b5.js",
406
+ "static/chunks/4bd1b696-f785427dddbba9fb.js",
407
+ "static/chunks/1255-404bb8de49c90395.js",
408
+ "static/chunks/main-app-a1f59168303c7f84.js",
409
+ "static/chunks/app/(app)/page-0952b44bda5bfb6d.js"
410
410
  ]
411
411
  }
412
412
  }
@@ -3,56 +3,56 @@
3
3
  "/api/device-character/route": "/api/device-character",
4
4
  "/api/download-piper-model/route": "/api/download-piper-model",
5
5
  "/api/models/route": "/api/models",
6
- "/api/reload-tools/route": "/api/reload-tools",
7
6
  "/api/prewarm/route": "/api/prewarm",
8
- "/api/robopark/devices/[deviceId]/control/route": "/api/robopark/devices/[deviceId]/control",
9
7
  "/api/prompt/route": "/api/prompt",
8
+ "/api/reload-tools/route": "/api/reload-tools",
9
+ "/api/robopark/devices/[deviceId]/control/route": "/api/robopark/devices/[deviceId]/control",
10
10
  "/api/robopark/robots/[robotId]/operations/route": "/api/robopark/robots/[robotId]/operations",
11
11
  "/api/robopark/sessions/[sessionId]/end/route": "/api/robopark/sessions/[sessionId]/end",
12
12
  "/api/robopark/transcripts/[sessionId]/route": "/api/robopark/transcripts/[sessionId]",
13
+ "/api/setup/complete/route": "/api/setup/complete",
13
14
  "/api/setup/status/route": "/api/setup/status",
14
15
  "/api/setup/test-groq/route": "/api/setup/test-groq",
15
16
  "/api/setup/test-hass/route": "/api/setup/test-hass",
16
- "/api/setup/complete/route": "/api/setup/complete",
17
17
  "/api/setup/test-ollama/route": "/api/setup/test-ollama",
18
- "/api/test-tts/route": "/api/test-tts",
19
18
  "/api/setup/test-n8n/route": "/api/setup/test-n8n",
20
- "/api/voices/route": "/api/voices",
21
- "/api/wake-word/models/route": "/api/wake-word/models",
19
+ "/api/test-tts/route": "/api/test-tts",
22
20
  "/api/wake-word/status/route": "/api/wake-word/status",
21
+ "/api/wake-word/models/route": "/api/wake-word/models",
22
+ "/api/voices/route": "/api/voices",
23
23
  "/api/wake-word/upload/route": "/api/wake-word/upload",
24
24
  "/favicon.ico/route": "/favicon.ico",
25
- "/api/connection-details/route": "/api/connection-details",
26
- "/api/kiosk-hardware/route": "/api/kiosk-hardware",
27
25
  "/api/model-status/route": "/api/model-status",
28
- "/api/robopark/character-ai/route": "/api/robopark/character-ai",
29
- "/api/robopark/device-access/route": "/api/robopark/device-access",
26
+ "/api/kiosk-hardware/route": "/api/kiosk-hardware",
27
+ "/api/connection-details/route": "/api/connection-details",
30
28
  "/api/robopark/live-rooms/route": "/api/robopark/live-rooms",
31
29
  "/api/robopark/monitor-token/route": "/api/robopark/monitor-token",
32
- "/api/robopark/servers/[serverId]/metrics/route": "/api/robopark/servers/[serverId]/metrics",
30
+ "/api/robopark/character-ai/route": "/api/robopark/character-ai",
31
+ "/api/robopark/camera-token/route": "/api/robopark/camera-token",
32
+ "/api/robopark/device-access/route": "/api/robopark/device-access",
33
33
  "/api/robopark/robots/route": "/api/robopark/robots",
34
+ "/api/robopark/servers/[serverId]/metrics/route": "/api/robopark/servers/[serverId]/metrics",
34
35
  "/api/robopark/servers/[serverId]/route": "/api/robopark/servers/[serverId]",
35
- "/api/robopark/sessions/route": "/api/robopark/sessions",
36
36
  "/api/robopark/servers/route": "/api/robopark/servers",
37
+ "/api/robopark/sessions/route": "/api/robopark/sessions",
38
+ "/api/robovoice/robots/[robotId]/media-health/route": "/api/robovoice/robots/[robotId]/media-health",
37
39
  "/api/robopark/vision-caption/route": "/api/robopark/vision-caption",
38
40
  "/api/robopark/robots/[robotId]/voice-engine/route": "/api/robopark/robots/[robotId]/voice-engine",
39
- "/api/robovoice/robots/[robotId]/media-health/route": "/api/robovoice/robots/[robotId]/media-health",
41
+ "/api/settings/route": "/api/settings",
40
42
  "/api/robopark/transcripts/route": "/api/robopark/transcripts",
41
43
  "/api/turn-credentials/route": "/api/turn-credentials",
42
- "/api/robopark/camera-token/route": "/api/robopark/camera-token",
43
- "/api/settings/route": "/api/settings",
44
44
  "/api/wake/route": "/api/wake",
45
- "/robopark/[...path]/route": "/robopark/[...path]",
46
- "/camera-grid/route": "/camera-grid",
47
45
  "/fed/media/robots/[robotId]/video_feed/route": "/fed/media/robots/[robotId]/video_feed",
46
+ "/robopark/[...path]/route": "/robopark/[...path]",
47
+ "/fed/[...path]/route": "/fed/[...path]",
48
48
  "/tailnet/route": "/tailnet",
49
+ "/camera-grid/route": "/camera-grid",
49
50
  "/vendor/livekit-client.umd.js/route": "/vendor/livekit-client.umd.js",
50
- "/fed/[...path]/route": "/fed/[...path]",
51
51
  "/robopark/api/robots/[robotId]/stream/route": "/robopark/api/robots/[robotId]/stream",
52
52
  "/(app)/opengraph-image-xg4ifa/route": "/opengraph-image-xg4ifa",
53
53
  "/robopark/api/[...path]/route": "/robopark/api/[...path]",
54
54
  "/voice-tester/page": "/voice-tester",
55
55
  "/robopark/page": "/robopark",
56
- "/(app)/page": "/",
57
- "/(app)/voice/page": "/voice"
56
+ "/(app)/voice/page": "/voice",
57
+ "/(app)/page": "/"
58
58
  }
@@ -5,8 +5,8 @@
5
5
  "devFiles": [],
6
6
  "ampDevFiles": [],
7
7
  "lowPriorityFiles": [
8
- "static/Xg-e8h70WpdFcsZ2vcfOG/_buildManifest.js",
9
- "static/Xg-e8h70WpdFcsZ2vcfOG/_ssgManifest.js"
8
+ "static/gGysrZrp8HXGK_0MbZa9v/_buildManifest.js",
9
+ "static/gGysrZrp8HXGK_0MbZa9v/_ssgManifest.js"
10
10
  ],
11
11
  "rootMainFiles": [
12
12
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -3,56 +3,56 @@
3
3
  "/api/device-character/route": "app/api/device-character/route.js",
4
4
  "/api/download-piper-model/route": "app/api/download-piper-model/route.js",
5
5
  "/api/models/route": "app/api/models/route.js",
6
- "/api/reload-tools/route": "app/api/reload-tools/route.js",
7
6
  "/api/prewarm/route": "app/api/prewarm/route.js",
8
- "/api/robopark/devices/[deviceId]/control/route": "app/api/robopark/devices/[deviceId]/control/route.js",
9
7
  "/api/prompt/route": "app/api/prompt/route.js",
8
+ "/api/reload-tools/route": "app/api/reload-tools/route.js",
9
+ "/api/robopark/devices/[deviceId]/control/route": "app/api/robopark/devices/[deviceId]/control/route.js",
10
10
  "/api/robopark/robots/[robotId]/operations/route": "app/api/robopark/robots/[robotId]/operations/route.js",
11
11
  "/api/robopark/sessions/[sessionId]/end/route": "app/api/robopark/sessions/[sessionId]/end/route.js",
12
12
  "/api/robopark/transcripts/[sessionId]/route": "app/api/robopark/transcripts/[sessionId]/route.js",
13
+ "/api/setup/complete/route": "app/api/setup/complete/route.js",
13
14
  "/api/setup/status/route": "app/api/setup/status/route.js",
14
15
  "/api/setup/test-groq/route": "app/api/setup/test-groq/route.js",
15
16
  "/api/setup/test-hass/route": "app/api/setup/test-hass/route.js",
16
- "/api/setup/complete/route": "app/api/setup/complete/route.js",
17
17
  "/api/setup/test-ollama/route": "app/api/setup/test-ollama/route.js",
18
- "/api/test-tts/route": "app/api/test-tts/route.js",
19
18
  "/api/setup/test-n8n/route": "app/api/setup/test-n8n/route.js",
20
- "/api/voices/route": "app/api/voices/route.js",
21
- "/api/wake-word/models/route": "app/api/wake-word/models/route.js",
19
+ "/api/test-tts/route": "app/api/test-tts/route.js",
22
20
  "/api/wake-word/status/route": "app/api/wake-word/status/route.js",
21
+ "/api/wake-word/models/route": "app/api/wake-word/models/route.js",
22
+ "/api/voices/route": "app/api/voices/route.js",
23
23
  "/api/wake-word/upload/route": "app/api/wake-word/upload/route.js",
24
24
  "/favicon.ico/route": "app/favicon.ico/route.js",
25
- "/api/connection-details/route": "app/api/connection-details/route.js",
26
- "/api/kiosk-hardware/route": "app/api/kiosk-hardware/route.js",
27
25
  "/api/model-status/route": "app/api/model-status/route.js",
28
- "/api/robopark/character-ai/route": "app/api/robopark/character-ai/route.js",
29
- "/api/robopark/device-access/route": "app/api/robopark/device-access/route.js",
26
+ "/api/kiosk-hardware/route": "app/api/kiosk-hardware/route.js",
27
+ "/api/connection-details/route": "app/api/connection-details/route.js",
30
28
  "/api/robopark/live-rooms/route": "app/api/robopark/live-rooms/route.js",
31
29
  "/api/robopark/monitor-token/route": "app/api/robopark/monitor-token/route.js",
32
- "/api/robopark/servers/[serverId]/metrics/route": "app/api/robopark/servers/[serverId]/metrics/route.js",
30
+ "/api/robopark/character-ai/route": "app/api/robopark/character-ai/route.js",
31
+ "/api/robopark/camera-token/route": "app/api/robopark/camera-token/route.js",
32
+ "/api/robopark/device-access/route": "app/api/robopark/device-access/route.js",
33
33
  "/api/robopark/robots/route": "app/api/robopark/robots/route.js",
34
+ "/api/robopark/servers/[serverId]/metrics/route": "app/api/robopark/servers/[serverId]/metrics/route.js",
34
35
  "/api/robopark/servers/[serverId]/route": "app/api/robopark/servers/[serverId]/route.js",
35
- "/api/robopark/sessions/route": "app/api/robopark/sessions/route.js",
36
36
  "/api/robopark/servers/route": "app/api/robopark/servers/route.js",
37
+ "/api/robopark/sessions/route": "app/api/robopark/sessions/route.js",
38
+ "/api/robovoice/robots/[robotId]/media-health/route": "app/api/robovoice/robots/[robotId]/media-health/route.js",
37
39
  "/api/robopark/vision-caption/route": "app/api/robopark/vision-caption/route.js",
38
40
  "/api/robopark/robots/[robotId]/voice-engine/route": "app/api/robopark/robots/[robotId]/voice-engine/route.js",
39
- "/api/robovoice/robots/[robotId]/media-health/route": "app/api/robovoice/robots/[robotId]/media-health/route.js",
41
+ "/api/settings/route": "app/api/settings/route.js",
40
42
  "/api/robopark/transcripts/route": "app/api/robopark/transcripts/route.js",
41
43
  "/api/turn-credentials/route": "app/api/turn-credentials/route.js",
42
- "/api/robopark/camera-token/route": "app/api/robopark/camera-token/route.js",
43
- "/api/settings/route": "app/api/settings/route.js",
44
44
  "/api/wake/route": "app/api/wake/route.js",
45
- "/robopark/[...path]/route": "app/robopark/[...path]/route.js",
46
- "/camera-grid/route": "app/camera-grid/route.js",
47
45
  "/fed/media/robots/[robotId]/video_feed/route": "app/fed/media/robots/[robotId]/video_feed/route.js",
46
+ "/robopark/[...path]/route": "app/robopark/[...path]/route.js",
47
+ "/fed/[...path]/route": "app/fed/[...path]/route.js",
48
48
  "/tailnet/route": "app/tailnet/route.js",
49
+ "/camera-grid/route": "app/camera-grid/route.js",
49
50
  "/vendor/livekit-client.umd.js/route": "app/vendor/livekit-client.umd.js/route.js",
50
- "/fed/[...path]/route": "app/fed/[...path]/route.js",
51
51
  "/robopark/api/robots/[robotId]/stream/route": "app/robopark/api/robots/[robotId]/stream/route.js",
52
52
  "/(app)/opengraph-image-xg4ifa/route": "app/(app)/opengraph-image-xg4ifa/route.js",
53
53
  "/robopark/api/[...path]/route": "app/robopark/api/[...path]/route.js",
54
54
  "/voice-tester/page": "app/voice-tester/page.js",
55
55
  "/robopark/page": "app/robopark/page.js",
56
- "/(app)/page": "app/(app)/page.js",
57
- "/(app)/voice/page": "app/(app)/voice/page.js"
56
+ "/(app)/voice/page": "app/(app)/voice/page.js",
57
+ "/(app)/page": "app/(app)/page.js"
58
58
  }
@@ -3,8 +3,8 @@
3
3
  "functions": {
4
4
  "/api/kiosk-hardware": {},
5
5
  "/api/robovoice/robots/[robotId]/media-health": {},
6
- "/fed/media/robots/[robotId]/video_feed": {},
7
6
  "/robopark/[...path]": {},
7
+ "/fed/media/robots/[robotId]/video_feed": {},
8
8
  "/robopark/api/robots/[robotId]/stream": {}
9
9
  }
10
10
  }
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-5252e5254da079b5.js" defer=""></script><script src="/_next/static/chunks/framework-e60c938074ff7136.js" defer=""></script><script src="/_next/static/chunks/main-9e24e8708ff075fc.js" defer=""></script><script src="/_next/static/chunks/pages/_app-131c90850aef965b.js" defer=""></script><script src="/_next/static/chunks/pages/_error-e4ba546eb376bdf4.js" defer=""></script><script src="/_next/static/Xg-e8h70WpdFcsZ2vcfOG/_buildManifest.js" defer=""></script><script src="/_next/static/Xg-e8h70WpdFcsZ2vcfOG/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"Xg-e8h70WpdFcsZ2vcfOG","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-5252e5254da079b5.js" defer=""></script><script src="/_next/static/chunks/framework-e60c938074ff7136.js" defer=""></script><script src="/_next/static/chunks/main-9e24e8708ff075fc.js" defer=""></script><script src="/_next/static/chunks/pages/_app-131c90850aef965b.js" defer=""></script><script src="/_next/static/chunks/pages/_error-e4ba546eb376bdf4.js" defer=""></script><script src="/_next/static/gGysrZrp8HXGK_0MbZa9v/_buildManifest.js" defer=""></script><script src="/_next/static/gGysrZrp8HXGK_0MbZa9v/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"gGysrZrp8HXGK_0MbZa9v","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1,5 +1,5 @@
1
1
  {
2
- "/_app": "pages/_app.js",
3
2
  "/_error": "pages/_error.js",
3
+ "/_app": "pages/_app.js",
4
4
  "/_document": "pages/_document.js"
5
5
  }
@@ -0,0 +1 @@
1
+ self.__BUILD_MANIFEST=function(e,a,s,r,t){return{__rewrites:{afterFiles:[{has:s,source:"/api/announce",destination:s},{has:s,source:"/api/reload-tools",destination:s},{has:s,source:"/api/wake",destination:s},{has:s,source:"/api/health",destination:s},{has:s,source:"/api/prompt",destination:s},{has:s,source:"/api/voices",destination:s},{has:s,source:"/api/models",destination:s},{has:s,source:"/api/wake-word/:path*",destination:s},{has:s,source:"/api/metrics",destination:s}],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:43,errorRate:1e-4,numBits:825,numHashes:14,bitArray:[1,1,e,e,0,0,a,e,e,a,a,a,a,e,e,a,a,e,a,a,e,e,e,a,e,e,e,a,a,e,a,e,e,a,a,e,a,a,e,e,e,a,e,e,e,a,a,a,a,e,e,a,e,a,e,e,e,a,e,e,a,e,e,e,e,e,e,a,e,a,a,e,a,a,a,a,a,a,a,a,e,e,a,a,e,e,a,a,a,a,e,e,e,e,a,a,a,a,e,a,e,e,e,e,e,a,a,e,a,a,e,e,a,a,a,a,a,e,e,e,a,e,a,a,a,e,a,e,e,a,e,e,a,e,a,e,e,a,a,e,e,a,e,a,e,e,e,e,a,e,a,e,e,a,a,a,a,e,a,e,a,a,a,e,e,e,e,e,e,a,a,e,a,e,e,a,a,a,e,e,a,e,e,a,a,e,a,a,a,a,e,e,e,e,a,e,a,a,e,e,e,e,a,a,e,e,e,e,e,e,e,e,a,e,e,e,a,e,a,a,a,e,e,e,a,e,a,a,e,a,a,e,a,a,e,a,a,a,e,a,a,a,a,a,a,e,e,a,a,e,a,e,e,a,a,a,a,e,a,e,a,a,e,e,a,e,e,e,a,a,e,a,e,a,e,e,a,a,e,a,a,e,a,e,a,a,a,a,a,e,a,e,e,e,a,a,e,e,a,e,a,a,e,e,e,e,a,e,e,e,e,a,e,e,a,a,e,e,e,a,e,a,a,a,a,a,e,e,e,a,a,e,a,a,a,e,a,e,a,e,a,a,e,a,a,e,a,e,a,e,a,e,e,e,e,a,e,e,e,e,a,e,a,e,a,a,e,e,a,e,e,e,e,a,e,e,e,a,a,e,a,e,a,e,e,e,e,e,e,e,e,a,e,a,a,a,a,e,a,e,a,a,a,a,e,e,e,e,a,e,a,e,e,e,a,a,e,e,a,a,a,a,e,e,e,e,e,a,a,a,a,e,e,e,e,e,e,a,e,e,e,e,e,a,a,e,a,a,a,e,e,a,a,e,e,e,a,e,e,a,e,e,e,a,e,a,a,a,a,a,a,a,a,e,a,e,e,a,e,a,a,e,e,e,e,a,e,a,a,a,e,a,a,a,a,a,a,a,a,e,a,e,a,e,a,e,a,e,e,e,a,e,a,e,a,e,e,e,a,a,a,a,a,a,e,a,e,e,a,a,e,a,e,a,e,e,a,a,e,a,a,e,a,a,a,a,e,e,e,e,a,e,a,a,a,e,a,e,e,e,e,a,e,e,e,a,a,e,e,e,e,a,a,e,e,e,a,a,e,e,a,e,e,e,a,e,e,e,a,a,a,a,a,e,e,a,a,a,a,e,e,e,e,e,e,a,a,a,a,a,e,a,a,a,a,e,a,a,a,e,a,e,e,a,e,e,e,e,e,a,e,e,e,a,e,e,e,a,e,e,e,e,a,e,e,e,e,a,e,a,a,a,a,a,e,a,a,e,a,e,e,a,a,a,a,e,a,e,e,a,a,a,a,a,a,a,e,e,a,e,e,e,e,a,a,e,e,e,a,e,e,a,a,e,a,e,e,e,a,e,a,e,e,e,e,a,e,e,e,a,e,e,a,a,a,a,a,e,e,a,a,e,e,a,a,a,e,e,e,a,a,e,a,a,e,e,e,a,e,a,a,e,a,a,a,e,a,e,a,a,e,e,e,a,a,a,a,e,a,e,e,e,a,e,e,a,a,a,e,a,a,e,a,e,e,e,a,a,a,a,e,e,a,a,a,a,a,e,e,e,e,e,a,a,e,a,a,e,e,e,e,e,e,e,e,e,e,e,a,a,e,a,a,a,e,e,a,a,a,a,a,a,a,a,e]},__routerFilterDynamic:{numItems:11,errorRate:1e-4,numBits:211,numHashes:14,bitArray:[a,a,a,a,a,a,a,a,a,e,a,e,a,a,e,e,a,a,a,a,e,e,e,e,a,e,e,e,e,e,a,e,e,e,e,e,a,e,e,e,a,e,e,a,e,a,e,e,a,e,a,a,e,e,e,a,e,e,a,a,a,a,e,a,e,a,a,e,a,a,e,a,a,e,a,e,e,e,e,a,a,a,a,e,e,a,a,a,e,e,e,a,a,e,e,e,e,e,e,a,e,e,e,e,a,a,a,a,e,e,a,e,a,a,e,e,a,e,a,a,a,a,e,a,a,e,e,e,a,e,a,a,e,e,e,e,a,a,a,a,e,a,a,e,a,a,e,e,a,e,a,a,e,e,a,a,e,e,a,e,e,a,e,a,e,a,a,e,a,e,e,a,a,e,e,a,e,a,e,a,e,e,a,a,a,a,e,a,a,e,a,a,e,e,a,a,e,e,e,e,e,e,e,a,a,a,a,e,e,a,a]},"/_error":["static/chunks/pages/_error-e4ba546eb376bdf4.js"],sortedPages:["/_app","/_error"]}}(1,0,void 0,1e-4,14),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -0,0 +1 @@
1
+ self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()
@@ -54,7 +54,7 @@
54
54
  function refreshHardware(requestPermission){if(!navigator.mediaDevices||!navigator.mediaDevices.enumerateDevices){setHardwareStatus(mediaBlockedReason(),'bad');return Promise.reject(new Error('media devices unavailable'))}var permission=Promise.resolve();if(requestPermission){permission=navigator.mediaDevices.getUserMedia({audio:true,video:true}).catch(function(){return navigator.mediaDevices.getUserMedia({audio:true})}).then(function(stream){stream.getTracks().forEach(function(track){track.stop()})})}setHardwareStatus(requestPermission?'Requesting browser media access...':'Scanning browser hardware...','');return permission.then(function(){return navigator.mediaDevices.enumerateDevices()}).then(function(devices){fillHardwareSelect('call-microphone',devices,'audioinput','microphone');fillHardwareSelect('call-camera',devices,'videoinput','camera');fillHardwareSelect('call-speaker',devices,'audiooutput','speaker');var mic=devices.filter(function(device){return device.kind==='audioinput'}).length,cam=devices.filter(function(device){return device.kind==='videoinput'}).length,out=devices.filter(function(device){return device.kind==='audiooutput'}).length;setHardwareStatus('Ready: '+mic+' microphone(s), '+cam+' camera(s), '+out+' speaker output(s).','ok');return devices}).catch(function(error){setHardwareStatus(error&&error.message||String(error),'bad');throw error})}
55
55
  function ensureCameraSdk(){if(window.LivekitClient)return Promise.resolve(window.LivekitClient);if(cameraSdkPromise)return cameraSdkPromise;cameraSdkPromise=new Promise(function(resolve,reject){var script=document.createElement('script');script.src='/vendor/livekit-client.umd.js';script.onload=function(){window.LivekitClient?resolve(window.LivekitClient):reject(new Error('LiveKit camera SDK unavailable'))};script.onerror=function(){reject(new Error('LiveKit camera SDK failed to load'))};document.head.appendChild(script)});return cameraSdkPromise}
56
56
  function scheduleCameraPublishRetry(){if(cameraPublishRetry||ending||!localVideoStream)return;if(cameraRetryCount>=8){event('camera_published','failed','Giving up after 8 attempts - the media server is not reachable.',{attempts:cameraRetryCount});return}var delay=Math.min(30000,3000*Math.pow(1.6,cameraRetryCount));cameraRetryCount++;cameraPublishRetry=setTimeout(function(){cameraPublishRetry=null;publishLocalVideo().catch(function(){})},delay)}
57
- function publishLocalVideo(){if(!localVideoStream||!localVideoStream.getVideoTracks().length)return Promise.resolve();if(cameraRoom)return Promise.resolve();return Promise.all([ensureCameraSdk(),fetch('/api/robopark/camera-token',{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify({character_id:character,robot_id:robot||null})}).then(function(response){if(!response.ok)throw new Error('camera token '+response.status);return response.json()})]).then(function(parts){var LK=parts[0],info=parts[1],room=new LK.Room();cameraRoom=room;room.on(LK.RoomEvent.Disconnected,function(){if(cameraRoom===room){cameraRoom=null;scheduleCameraPublishRetry()}});return room.connect(info.url,info.token).then(function(){return room.localParticipant.publishTrack(localVideoStream.getVideoTracks()[0],{name:'camera',source:LK.Track.Source.Camera})}).then(function(){cameraRetryCount=0;if(cameraPublishRetry){clearTimeout(cameraPublishRetry);cameraPublishRetry=null}event('camera_published','ok','Camera relay live',{})})}).catch(function(error){try{if(room&&room.disconnect)room.disconnect(true)}catch(_){}cameraRoom=null;event('camera_published','failed',error.message,{});scheduleCameraPublishRetry();throw error})}
57
+ function publishLocalVideo(){var pendingCameraRoom=null;if(!localVideoStream||!localVideoStream.getVideoTracks().length)return Promise.resolve();if(cameraRoom)return Promise.resolve();return Promise.all([ensureCameraSdk(),fetch('/api/robopark/camera-token',{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify({character_id:character,robot_id:robot||null})}).then(function(response){if(!response.ok)throw new Error('camera token '+response.status);return response.json()})]).then(function(parts){var LK=parts[0],info=parts[1],room=new LK.Room();pendingCameraRoom=room;cameraRoom=room;room.on(LK.RoomEvent.Disconnected,function(){if(cameraRoom===room){cameraRoom=null;scheduleCameraPublishRetry()}});return room.connect(info.url,info.token).then(function(){return room.localParticipant.publishTrack(localVideoStream.getVideoTracks()[0],{name:'camera',source:LK.Track.Source.Camera})}).then(function(){cameraRetryCount=0;if(cameraPublishRetry){clearTimeout(cameraPublishRetry);cameraPublishRetry=null}event('camera_published','ok','Camera relay live',{})})}).catch(function(error){try{if(pendingCameraRoom&&pendingCameraRoom.disconnect)pendingCameraRoom.disconnect(true)}catch(_){}pendingCameraRoom=null;cameraRoom=null;event('camera_published','failed',error.message,{});scheduleCameraPublishRetry();throw error})}
58
58
  function startLocalVideo(){if(!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia)return Promise.resolve();if(localVideoStream&&activeCameraDevice===cameraDeviceId)return publishLocalVideo();if(localVideoStream)localVideoStream.getTracks().forEach(function(track){track.stop()});if(cameraRoom){cameraRoom.disconnect();cameraRoom=null}var video=cameraDeviceId?{deviceId:{exact:cameraDeviceId}}:true;return navigator.mediaDevices.getUserMedia({video:video,audio:false}).then(function(stream){localVideoStream=stream;activeCameraDevice=cameraDeviceId;el('robot-video').srcObject=stream;if(!robotStreamActive())el('robot-video').hidden=false;el('vision').hidden=false;return publishLocalVideo().catch(function(){})}).catch(function(error){localVideoStream=null;activeCameraDevice=null;el('robot-video').srcObject=null;if(!robotStreamActive()){el('robot-video').hidden=true;el('vision').hidden=true}throw error})}
59
59
  function robotStreamActive(){var stream=el('robot-stream');return Boolean(stream&&stream.getAttribute('src'))}
60
60
  // Ambient vision. The ElevenLabs contextual_update channel carries text only, so a