robopark 3.3.60 → 3.3.62

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.
@@ -488,10 +488,19 @@ async function openKiosk(schedulerUrl, browserBase, name, device, opts, token) {
488
488
  // and stripped params, while the robot's camera feed does not depend on it:
489
489
  // the MJPEG relay this command sets up is registered with the scheduler by
490
490
  // device id either way. The robot id still rides along for telemetry.
491
+ // No camera=off. That flag existed so the vision server could own the
492
+ // capture device -- but the browser is the RELIABLE camera path (per-device
493
+ // MSMF with explicit deviceIds; it is why card links always work), and with
494
+ // it suppressed a kiosk whose vision server was dead published nothing at
495
+ // all: five live sessions, zero LiveKit publishers, every grid tile
496
+ // truthfully 'waiting for camera track'. The kiosk browser now owns the
497
+ // camera and publishes into the claim room like any card link; the vision
498
+ // server's MJPEG becomes a bonus feed, not the load-bearing one. The page
499
+ // also switches to LOCAL motion detection when the camera is on, so
500
+ // vision_base stays only as a secondary signal.
491
501
  const url = characterCallUrl(browserBase, preset, 'test', {
492
502
  robot: device.id,
493
503
  kiosk: '1',
494
- camera: 'off',
495
504
  vision_base: `http://127.0.0.1:${opts.port ?? DEFAULT_VISION_PORT}`,
496
505
  });
497
506
  console.log(` call page: ${chalk.cyan(url)}`);
@@ -646,19 +655,26 @@ export async function roboparkStart(config, name, opts) {
646
655
  }
647
656
  const failure = await awaitVisionReady(port, { weakSkips });
648
657
  if (failure) {
649
- // A vision agent that never became ready is still holding the camera. Left
650
- // running it makes the NEXT run's preemption find one more app_pi_clean.py,
651
- // which is how kongor accumulated 14180/15504/15312/20832. We started it,
652
- // so we clean it up.
658
+ // NOT fatal any more. The kiosk browser owns the camera and publishes into
659
+ // the LiveKit claim room; the vision server's MJPEG is a bonus feed. When
660
+ // this gate still aborted the whole start, a dead OpenCV capture cost the
661
+ // fleet its RELIABLE feed too -- the browser one that was never even
662
+ // attempted. A vision agent that never became ready is still holding the
663
+ // camera, though, and left running it makes the NEXT run's preemption find
664
+ // one more app_pi_clean.py (kongor accumulated four), so the cleanup stays.
653
665
  for (const pid of startedPids) {
654
666
  const res = killPid(pid);
655
667
  console.log(res.ok
656
668
  ? chalk.dim(` cleanup: terminated the vision agent this run started (pid ${pid})`)
657
669
  : chalk.yellow(` cleanup: could not terminate pid ${pid}: ${res.detail || 'taskkill failed'}`));
658
670
  }
659
- throw new Error(failure);
671
+ console.log(chalk.yellow(` ⚠ vision server camera is not producing frames — continuing without the MJPEG bonus feed`));
672
+ console.log(chalk.dim(` ${failure.split('\n')[0]}`));
673
+ console.log(chalk.dim(' the kiosk browser will publish the camera itself; the grid follows its LiveKit room'));
674
+ }
675
+ else {
676
+ console.log(chalk.green(` ✓ local feed ready at http://127.0.0.1:${port}/video_feed`));
660
677
  }
661
- console.log(chalk.green(` ✓ local feed ready at http://127.0.0.1:${port}/video_feed`));
662
678
  await selectAudio(schedulerUrl, port, device, opts, profile.token);
663
679
  const base = await callPageBase(profile.schedulerUrl);
664
680
  console.log();
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/robopark/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/robopark/start.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "robopark",
3
- "version": "3.3.60",
3
+ "version": "3.3.62",
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
- HVQqws8pwZ7FuPixvQm1d
1
+ Omr4BaSGuNd9w4zCHNwa5
@@ -25,26 +25,26 @@
25
25
  "static/chunks/main-app-a1f59168303c7f84.js",
26
26
  "static/chunks/app/api/device-character/route-0952b44bda5bfb6d.js"
27
27
  ],
28
- "/api/models/route": [
28
+ "/api/download-piper-model/route": [
29
29
  "static/chunks/webpack-5252e5254da079b5.js",
30
30
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
31
31
  "static/chunks/1255-404bb8de49c90395.js",
32
32
  "static/chunks/main-app-a1f59168303c7f84.js",
33
- "static/chunks/app/api/models/route-0952b44bda5bfb6d.js"
33
+ "static/chunks/app/api/download-piper-model/route-0952b44bda5bfb6d.js"
34
34
  ],
35
- "/api/download-piper-model/route": [
35
+ "/api/prewarm/route": [
36
36
  "static/chunks/webpack-5252e5254da079b5.js",
37
37
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
38
38
  "static/chunks/1255-404bb8de49c90395.js",
39
39
  "static/chunks/main-app-a1f59168303c7f84.js",
40
- "static/chunks/app/api/download-piper-model/route-0952b44bda5bfb6d.js"
40
+ "static/chunks/app/api/prewarm/route-0952b44bda5bfb6d.js"
41
41
  ],
42
- "/api/prewarm/route": [
42
+ "/api/models/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/prewarm/route-0952b44bda5bfb6d.js"
47
+ "static/chunks/app/api/models/route-0952b44bda5bfb6d.js"
48
48
  ],
49
49
  "/api/prompt/route": [
50
50
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -95,19 +95,19 @@
95
95
  "static/chunks/main-app-a1f59168303c7f84.js",
96
96
  "static/chunks/app/api/setup/complete/route-0952b44bda5bfb6d.js"
97
97
  ],
98
- "/api/setup/test-groq/route": [
98
+ "/api/setup/status/route": [
99
99
  "static/chunks/webpack-5252e5254da079b5.js",
100
100
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
101
101
  "static/chunks/1255-404bb8de49c90395.js",
102
102
  "static/chunks/main-app-a1f59168303c7f84.js",
103
- "static/chunks/app/api/setup/test-groq/route-0952b44bda5bfb6d.js"
103
+ "static/chunks/app/api/setup/status/route-0952b44bda5bfb6d.js"
104
104
  ],
105
- "/api/setup/status/route": [
105
+ "/api/setup/test-groq/route": [
106
106
  "static/chunks/webpack-5252e5254da079b5.js",
107
107
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
108
108
  "static/chunks/1255-404bb8de49c90395.js",
109
109
  "static/chunks/main-app-a1f59168303c7f84.js",
110
- "static/chunks/app/api/setup/status/route-0952b44bda5bfb6d.js"
110
+ "static/chunks/app/api/setup/test-groq/route-0952b44bda5bfb6d.js"
111
111
  ],
112
112
  "/api/setup/test-hass/route": [
113
113
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -123,47 +123,47 @@
123
123
  "static/chunks/main-app-a1f59168303c7f84.js",
124
124
  "static/chunks/app/api/setup/test-n8n/route-0952b44bda5bfb6d.js"
125
125
  ],
126
- "/api/test-tts/route": [
126
+ "/api/setup/test-ollama/route": [
127
127
  "static/chunks/webpack-5252e5254da079b5.js",
128
128
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
129
129
  "static/chunks/1255-404bb8de49c90395.js",
130
130
  "static/chunks/main-app-a1f59168303c7f84.js",
131
- "static/chunks/app/api/test-tts/route-0952b44bda5bfb6d.js"
131
+ "static/chunks/app/api/setup/test-ollama/route-0952b44bda5bfb6d.js"
132
132
  ],
133
- "/api/voices/route": [
133
+ "/api/test-tts/route": [
134
134
  "static/chunks/webpack-5252e5254da079b5.js",
135
135
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
136
136
  "static/chunks/1255-404bb8de49c90395.js",
137
137
  "static/chunks/main-app-a1f59168303c7f84.js",
138
- "static/chunks/app/api/voices/route-0952b44bda5bfb6d.js"
138
+ "static/chunks/app/api/test-tts/route-0952b44bda5bfb6d.js"
139
139
  ],
140
- "/api/setup/test-ollama/route": [
140
+ "/api/voices/route": [
141
141
  "static/chunks/webpack-5252e5254da079b5.js",
142
142
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
143
143
  "static/chunks/1255-404bb8de49c90395.js",
144
144
  "static/chunks/main-app-a1f59168303c7f84.js",
145
- "static/chunks/app/api/setup/test-ollama/route-0952b44bda5bfb6d.js"
145
+ "static/chunks/app/api/voices/route-0952b44bda5bfb6d.js"
146
146
  ],
147
- "/api/wake-word/models/route": [
147
+ "/api/wake-word/upload/route": [
148
148
  "static/chunks/webpack-5252e5254da079b5.js",
149
149
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
150
150
  "static/chunks/1255-404bb8de49c90395.js",
151
151
  "static/chunks/main-app-a1f59168303c7f84.js",
152
- "static/chunks/app/api/wake-word/models/route-0952b44bda5bfb6d.js"
152
+ "static/chunks/app/api/wake-word/upload/route-0952b44bda5bfb6d.js"
153
153
  ],
154
- "/api/wake-word/upload/route": [
154
+ "/api/wake-word/status/route": [
155
155
  "static/chunks/webpack-5252e5254da079b5.js",
156
156
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
157
157
  "static/chunks/1255-404bb8de49c90395.js",
158
158
  "static/chunks/main-app-a1f59168303c7f84.js",
159
- "static/chunks/app/api/wake-word/upload/route-0952b44bda5bfb6d.js"
159
+ "static/chunks/app/api/wake-word/status/route-0952b44bda5bfb6d.js"
160
160
  ],
161
- "/api/wake-word/status/route": [
161
+ "/api/wake-word/models/route": [
162
162
  "static/chunks/webpack-5252e5254da079b5.js",
163
163
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
164
164
  "static/chunks/1255-404bb8de49c90395.js",
165
165
  "static/chunks/main-app-a1f59168303c7f84.js",
166
- "static/chunks/app/api/wake-word/status/route-0952b44bda5bfb6d.js"
166
+ "static/chunks/app/api/wake-word/models/route-0952b44bda5bfb6d.js"
167
167
  ],
168
168
  "/api/kiosk-hardware/route": [
169
169
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -186,13 +186,6 @@
186
186
  "static/chunks/main-app-a1f59168303c7f84.js",
187
187
  "static/chunks/app/api/connection-details/route-0952b44bda5bfb6d.js"
188
188
  ],
189
- "/api/robopark/device-access/route": [
190
- "static/chunks/webpack-5252e5254da079b5.js",
191
- "static/chunks/4bd1b696-f785427dddbba9fb.js",
192
- "static/chunks/1255-404bb8de49c90395.js",
193
- "static/chunks/main-app-a1f59168303c7f84.js",
194
- "static/chunks/app/api/robopark/device-access/route-0952b44bda5bfb6d.js"
195
- ],
196
189
  "/api/robopark/character-ai/route": [
197
190
  "static/chunks/webpack-5252e5254da079b5.js",
198
191
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
@@ -207,12 +200,12 @@
207
200
  "static/chunks/main-app-a1f59168303c7f84.js",
208
201
  "static/chunks/app/api/robopark/camera-token/route-0952b44bda5bfb6d.js"
209
202
  ],
210
- "/api/robopark/robots/route": [
203
+ "/api/robopark/device-access/route": [
211
204
  "static/chunks/webpack-5252e5254da079b5.js",
212
205
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
213
206
  "static/chunks/1255-404bb8de49c90395.js",
214
207
  "static/chunks/main-app-a1f59168303c7f84.js",
215
- "static/chunks/app/api/robopark/robots/route-0952b44bda5bfb6d.js"
208
+ "static/chunks/app/api/robopark/device-access/route-0952b44bda5bfb6d.js"
216
209
  ],
217
210
  "/api/robopark/servers/[serverId]/metrics/route": [
218
211
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -221,40 +214,40 @@
221
214
  "static/chunks/main-app-a1f59168303c7f84.js",
222
215
  "static/chunks/app/api/robopark/servers/[serverId]/metrics/route-0952b44bda5bfb6d.js"
223
216
  ],
224
- "/api/robopark/monitor-token/route": [
217
+ "/api/robopark/live-rooms/route": [
225
218
  "static/chunks/webpack-5252e5254da079b5.js",
226
219
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
227
220
  "static/chunks/1255-404bb8de49c90395.js",
228
221
  "static/chunks/main-app-a1f59168303c7f84.js",
229
- "static/chunks/app/api/robopark/monitor-token/route-0952b44bda5bfb6d.js"
222
+ "static/chunks/app/api/robopark/live-rooms/route-0952b44bda5bfb6d.js"
230
223
  ],
231
- "/api/robopark/servers/[serverId]/route": [
224
+ "/api/robopark/robots/route": [
232
225
  "static/chunks/webpack-5252e5254da079b5.js",
233
226
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
234
227
  "static/chunks/1255-404bb8de49c90395.js",
235
228
  "static/chunks/main-app-a1f59168303c7f84.js",
236
- "static/chunks/app/api/robopark/servers/[serverId]/route-0952b44bda5bfb6d.js"
229
+ "static/chunks/app/api/robopark/robots/route-0952b44bda5bfb6d.js"
237
230
  ],
238
- "/api/robopark/live-rooms/route": [
231
+ "/api/robopark/monitor-token/route": [
239
232
  "static/chunks/webpack-5252e5254da079b5.js",
240
233
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
241
234
  "static/chunks/1255-404bb8de49c90395.js",
242
235
  "static/chunks/main-app-a1f59168303c7f84.js",
243
- "static/chunks/app/api/robopark/live-rooms/route-0952b44bda5bfb6d.js"
236
+ "static/chunks/app/api/robopark/monitor-token/route-0952b44bda5bfb6d.js"
244
237
  ],
245
- "/api/robopark/servers/route": [
238
+ "/api/robopark/servers/[serverId]/route": [
246
239
  "static/chunks/webpack-5252e5254da079b5.js",
247
240
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
248
241
  "static/chunks/1255-404bb8de49c90395.js",
249
242
  "static/chunks/main-app-a1f59168303c7f84.js",
250
- "static/chunks/app/api/robopark/servers/route-0952b44bda5bfb6d.js"
243
+ "static/chunks/app/api/robopark/servers/[serverId]/route-0952b44bda5bfb6d.js"
251
244
  ],
252
- "/api/robopark/sessions/route": [
245
+ "/api/robopark/servers/route": [
253
246
  "static/chunks/webpack-5252e5254da079b5.js",
254
247
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
255
248
  "static/chunks/1255-404bb8de49c90395.js",
256
249
  "static/chunks/main-app-a1f59168303c7f84.js",
257
- "static/chunks/app/api/robopark/sessions/route-0952b44bda5bfb6d.js"
250
+ "static/chunks/app/api/robopark/servers/route-0952b44bda5bfb6d.js"
258
251
  ],
259
252
  "/api/robovoice/robots/[robotId]/media-health/route": [
260
253
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -270,6 +263,13 @@
270
263
  "static/chunks/main-app-a1f59168303c7f84.js",
271
264
  "static/chunks/app/api/robopark/vision-caption/route-0952b44bda5bfb6d.js"
272
265
  ],
266
+ "/api/robopark/robots/[robotId]/voice-engine/route": [
267
+ "static/chunks/webpack-5252e5254da079b5.js",
268
+ "static/chunks/4bd1b696-f785427dddbba9fb.js",
269
+ "static/chunks/1255-404bb8de49c90395.js",
270
+ "static/chunks/main-app-a1f59168303c7f84.js",
271
+ "static/chunks/app/api/robopark/robots/[robotId]/voice-engine/route-0952b44bda5bfb6d.js"
272
+ ],
273
273
  "/api/settings/route": [
274
274
  "static/chunks/webpack-5252e5254da079b5.js",
275
275
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
@@ -277,12 +277,12 @@
277
277
  "static/chunks/main-app-a1f59168303c7f84.js",
278
278
  "static/chunks/app/api/settings/route-0952b44bda5bfb6d.js"
279
279
  ],
280
- "/api/robopark/robots/[robotId]/voice-engine/route": [
280
+ "/api/robopark/sessions/route": [
281
281
  "static/chunks/webpack-5252e5254da079b5.js",
282
282
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
283
283
  "static/chunks/1255-404bb8de49c90395.js",
284
284
  "static/chunks/main-app-a1f59168303c7f84.js",
285
- "static/chunks/app/api/robopark/robots/[robotId]/voice-engine/route-0952b44bda5bfb6d.js"
285
+ "static/chunks/app/api/robopark/sessions/route-0952b44bda5bfb6d.js"
286
286
  ],
287
287
  "/api/turn-credentials/route": [
288
288
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -291,61 +291,61 @@
291
291
  "static/chunks/main-app-a1f59168303c7f84.js",
292
292
  "static/chunks/app/api/turn-credentials/route-0952b44bda5bfb6d.js"
293
293
  ],
294
- "/camera-grid/route": [
294
+ "/api/robopark/transcripts/route": [
295
295
  "static/chunks/webpack-5252e5254da079b5.js",
296
296
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
297
297
  "static/chunks/1255-404bb8de49c90395.js",
298
298
  "static/chunks/main-app-a1f59168303c7f84.js",
299
- "static/chunks/app/camera-grid/route-0952b44bda5bfb6d.js"
299
+ "static/chunks/app/api/robopark/transcripts/route-0952b44bda5bfb6d.js"
300
300
  ],
301
- "/fed/media/robots/[robotId]/video_feed/route": [
301
+ "/camera-grid/route": [
302
302
  "static/chunks/webpack-5252e5254da079b5.js",
303
303
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
304
304
  "static/chunks/1255-404bb8de49c90395.js",
305
305
  "static/chunks/main-app-a1f59168303c7f84.js",
306
- "static/chunks/app/fed/media/robots/[robotId]/video_feed/route-0952b44bda5bfb6d.js"
306
+ "static/chunks/app/camera-grid/route-0952b44bda5bfb6d.js"
307
307
  ],
308
- "/api/robopark/transcripts/route": [
308
+ "/api/wake/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/api/robopark/transcripts/route-0952b44bda5bfb6d.js"
313
+ "static/chunks/app/api/wake/route-0952b44bda5bfb6d.js"
314
314
  ],
315
- "/tailnet/route": [
315
+ "/fed/media/robots/[robotId]/video_feed/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/tailnet/route-0952b44bda5bfb6d.js"
320
+ "static/chunks/app/fed/media/robots/[robotId]/video_feed/route-0952b44bda5bfb6d.js"
321
321
  ],
322
- "/fed/[...path]/route": [
322
+ "/robopark/[...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/[...path]/route-0952b44bda5bfb6d.js"
327
+ "static/chunks/app/robopark/[...path]/route-0952b44bda5bfb6d.js"
328
328
  ],
329
- "/api/wake/route": [
329
+ "/tailnet/route": [
330
330
  "static/chunks/webpack-5252e5254da079b5.js",
331
331
  "static/chunks/4bd1b696-f785427dddbba9fb.js",
332
332
  "static/chunks/1255-404bb8de49c90395.js",
333
333
  "static/chunks/main-app-a1f59168303c7f84.js",
334
- "static/chunks/app/api/wake/route-0952b44bda5bfb6d.js"
334
+ "static/chunks/app/tailnet/route-0952b44bda5bfb6d.js"
335
335
  ],
336
- "/robopark/[...path]/route": [
336
+ "/vendor/livekit-client.umd.js/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/robopark/[...path]/route-0952b44bda5bfb6d.js"
341
+ "static/chunks/app/vendor/livekit-client.umd.js/route-0952b44bda5bfb6d.js"
342
342
  ],
343
- "/vendor/livekit-client.umd.js/route": [
343
+ "/fed/[...path]/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/vendor/livekit-client.umd.js/route-0952b44bda5bfb6d.js"
348
+ "static/chunks/app/fed/[...path]/route-0952b44bda5bfb6d.js"
349
349
  ],
350
350
  "/robopark/api/robots/[robotId]/stream/route": [
351
351
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "/_not-found/page": "/_not-found",
3
3
  "/api/device-character/route": "/api/device-character",
4
- "/api/models/route": "/api/models",
5
4
  "/api/download-piper-model/route": "/api/download-piper-model",
6
5
  "/api/prewarm/route": "/api/prewarm",
6
+ "/api/models/route": "/api/models",
7
7
  "/api/prompt/route": "/api/prompt",
8
8
  "/api/reload-tools/route": "/api/reload-tools",
9
9
  "/api/robopark/devices/[deviceId]/control/route": "/api/robopark/devices/[deviceId]/control",
@@ -11,43 +11,43 @@
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
13
  "/api/setup/complete/route": "/api/setup/complete",
14
- "/api/setup/test-groq/route": "/api/setup/test-groq",
15
14
  "/api/setup/status/route": "/api/setup/status",
15
+ "/api/setup/test-groq/route": "/api/setup/test-groq",
16
16
  "/api/setup/test-hass/route": "/api/setup/test-hass",
17
17
  "/api/setup/test-n8n/route": "/api/setup/test-n8n",
18
+ "/api/setup/test-ollama/route": "/api/setup/test-ollama",
18
19
  "/api/test-tts/route": "/api/test-tts",
19
20
  "/api/voices/route": "/api/voices",
20
- "/api/setup/test-ollama/route": "/api/setup/test-ollama",
21
- "/api/wake-word/models/route": "/api/wake-word/models",
22
21
  "/api/wake-word/upload/route": "/api/wake-word/upload",
23
22
  "/api/wake-word/status/route": "/api/wake-word/status",
23
+ "/api/wake-word/models/route": "/api/wake-word/models",
24
24
  "/favicon.ico/route": "/favicon.ico",
25
25
  "/api/kiosk-hardware/route": "/api/kiosk-hardware",
26
26
  "/api/model-status/route": "/api/model-status",
27
27
  "/api/connection-details/route": "/api/connection-details",
28
- "/api/robopark/device-access/route": "/api/robopark/device-access",
29
28
  "/api/robopark/character-ai/route": "/api/robopark/character-ai",
30
29
  "/api/robopark/camera-token/route": "/api/robopark/camera-token",
31
- "/api/robopark/robots/route": "/api/robopark/robots",
30
+ "/api/robopark/device-access/route": "/api/robopark/device-access",
32
31
  "/api/robopark/servers/[serverId]/metrics/route": "/api/robopark/servers/[serverId]/metrics",
32
+ "/api/robopark/live-rooms/route": "/api/robopark/live-rooms",
33
+ "/api/robopark/robots/route": "/api/robopark/robots",
33
34
  "/api/robopark/monitor-token/route": "/api/robopark/monitor-token",
34
35
  "/api/robopark/servers/[serverId]/route": "/api/robopark/servers/[serverId]",
35
- "/api/robopark/live-rooms/route": "/api/robopark/live-rooms",
36
36
  "/api/robopark/servers/route": "/api/robopark/servers",
37
- "/api/robopark/sessions/route": "/api/robopark/sessions",
38
37
  "/api/robovoice/robots/[robotId]/media-health/route": "/api/robovoice/robots/[robotId]/media-health",
39
38
  "/api/robopark/vision-caption/route": "/api/robopark/vision-caption",
40
- "/api/settings/route": "/api/settings",
41
39
  "/api/robopark/robots/[robotId]/voice-engine/route": "/api/robopark/robots/[robotId]/voice-engine",
40
+ "/api/settings/route": "/api/settings",
41
+ "/api/robopark/sessions/route": "/api/robopark/sessions",
42
42
  "/api/turn-credentials/route": "/api/turn-credentials",
43
- "/camera-grid/route": "/camera-grid",
44
- "/fed/media/robots/[robotId]/video_feed/route": "/fed/media/robots/[robotId]/video_feed",
45
43
  "/api/robopark/transcripts/route": "/api/robopark/transcripts",
46
- "/tailnet/route": "/tailnet",
47
- "/fed/[...path]/route": "/fed/[...path]",
44
+ "/camera-grid/route": "/camera-grid",
48
45
  "/api/wake/route": "/api/wake",
46
+ "/fed/media/robots/[robotId]/video_feed/route": "/fed/media/robots/[robotId]/video_feed",
49
47
  "/robopark/[...path]/route": "/robopark/[...path]",
48
+ "/tailnet/route": "/tailnet",
50
49
  "/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]",
@@ -5,8 +5,8 @@
5
5
  "devFiles": [],
6
6
  "ampDevFiles": [],
7
7
  "lowPriorityFiles": [
8
- "static/HVQqws8pwZ7FuPixvQm1d/_buildManifest.js",
9
- "static/HVQqws8pwZ7FuPixvQm1d/_ssgManifest.js"
8
+ "static/Omr4BaSGuNd9w4zCHNwa5/_buildManifest.js",
9
+ "static/Omr4BaSGuNd9w4zCHNwa5/_ssgManifest.js"
10
10
  ],
11
11
  "rootMainFiles": [
12
12
  "static/chunks/webpack-5252e5254da079b5.js",
@@ -34,8 +34,8 @@
34
34
  "dynamicRoutes": {},
35
35
  "notFoundRoutes": [],
36
36
  "preview": {
37
- "previewModeId": "0d998d4caf45f7b789418b21e5c7f328",
38
- "previewModeSigningKey": "a0b0b3c3af824d87478b8e8ff7ac2d88635c6044dc512c80831a99c528ba9b24",
39
- "previewModeEncryptionKey": "30d361a69e866a2a82b3f2afcc58296d4ed7dc870f3fbd88a21aba2fdfaf72c8"
37
+ "previewModeId": "c38e1344b99b1c742a36d6c24fd3a618",
38
+ "previewModeSigningKey": "bb7f74585af2b67c95f333ea93a95a78e0bfb18bdfdece05c0d4b2315f9d7b7a",
39
+ "previewModeEncryptionKey": "72b2c4e8c2ce1269ca7d3e8707ccf19ca03f0e038228c18984dc4316dc49b351"
40
40
  }
41
41
  }
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "/_not-found/page": "app/_not-found/page.js",
3
3
  "/api/device-character/route": "app/api/device-character/route.js",
4
- "/api/models/route": "app/api/models/route.js",
5
4
  "/api/download-piper-model/route": "app/api/download-piper-model/route.js",
6
5
  "/api/prewarm/route": "app/api/prewarm/route.js",
6
+ "/api/models/route": "app/api/models/route.js",
7
7
  "/api/prompt/route": "app/api/prompt/route.js",
8
8
  "/api/reload-tools/route": "app/api/reload-tools/route.js",
9
9
  "/api/robopark/devices/[deviceId]/control/route": "app/api/robopark/devices/[deviceId]/control/route.js",
@@ -11,43 +11,43 @@
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
13
  "/api/setup/complete/route": "app/api/setup/complete/route.js",
14
- "/api/setup/test-groq/route": "app/api/setup/test-groq/route.js",
15
14
  "/api/setup/status/route": "app/api/setup/status/route.js",
15
+ "/api/setup/test-groq/route": "app/api/setup/test-groq/route.js",
16
16
  "/api/setup/test-hass/route": "app/api/setup/test-hass/route.js",
17
17
  "/api/setup/test-n8n/route": "app/api/setup/test-n8n/route.js",
18
+ "/api/setup/test-ollama/route": "app/api/setup/test-ollama/route.js",
18
19
  "/api/test-tts/route": "app/api/test-tts/route.js",
19
20
  "/api/voices/route": "app/api/voices/route.js",
20
- "/api/setup/test-ollama/route": "app/api/setup/test-ollama/route.js",
21
- "/api/wake-word/models/route": "app/api/wake-word/models/route.js",
22
21
  "/api/wake-word/upload/route": "app/api/wake-word/upload/route.js",
23
22
  "/api/wake-word/status/route": "app/api/wake-word/status/route.js",
23
+ "/api/wake-word/models/route": "app/api/wake-word/models/route.js",
24
24
  "/favicon.ico/route": "app/favicon.ico/route.js",
25
25
  "/api/kiosk-hardware/route": "app/api/kiosk-hardware/route.js",
26
26
  "/api/model-status/route": "app/api/model-status/route.js",
27
27
  "/api/connection-details/route": "app/api/connection-details/route.js",
28
- "/api/robopark/device-access/route": "app/api/robopark/device-access/route.js",
29
28
  "/api/robopark/character-ai/route": "app/api/robopark/character-ai/route.js",
30
29
  "/api/robopark/camera-token/route": "app/api/robopark/camera-token/route.js",
31
- "/api/robopark/robots/route": "app/api/robopark/robots/route.js",
30
+ "/api/robopark/device-access/route": "app/api/robopark/device-access/route.js",
32
31
  "/api/robopark/servers/[serverId]/metrics/route": "app/api/robopark/servers/[serverId]/metrics/route.js",
32
+ "/api/robopark/live-rooms/route": "app/api/robopark/live-rooms/route.js",
33
+ "/api/robopark/robots/route": "app/api/robopark/robots/route.js",
33
34
  "/api/robopark/monitor-token/route": "app/api/robopark/monitor-token/route.js",
34
35
  "/api/robopark/servers/[serverId]/route": "app/api/robopark/servers/[serverId]/route.js",
35
- "/api/robopark/live-rooms/route": "app/api/robopark/live-rooms/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
37
  "/api/robovoice/robots/[robotId]/media-health/route": "app/api/robovoice/robots/[robotId]/media-health/route.js",
39
38
  "/api/robopark/vision-caption/route": "app/api/robopark/vision-caption/route.js",
40
- "/api/settings/route": "app/api/settings/route.js",
41
39
  "/api/robopark/robots/[robotId]/voice-engine/route": "app/api/robopark/robots/[robotId]/voice-engine/route.js",
40
+ "/api/settings/route": "app/api/settings/route.js",
41
+ "/api/robopark/sessions/route": "app/api/robopark/sessions/route.js",
42
42
  "/api/turn-credentials/route": "app/api/turn-credentials/route.js",
43
- "/camera-grid/route": "app/camera-grid/route.js",
44
- "/fed/media/robots/[robotId]/video_feed/route": "app/fed/media/robots/[robotId]/video_feed/route.js",
45
43
  "/api/robopark/transcripts/route": "app/api/robopark/transcripts/route.js",
46
- "/tailnet/route": "app/tailnet/route.js",
47
- "/fed/[...path]/route": "app/fed/[...path]/route.js",
44
+ "/camera-grid/route": "app/camera-grid/route.js",
48
45
  "/api/wake/route": "app/api/wake/route.js",
46
+ "/fed/media/robots/[robotId]/video_feed/route": "app/fed/media/robots/[robotId]/video_feed/route.js",
49
47
  "/robopark/[...path]/route": "app/robopark/[...path]/route.js",
48
+ "/tailnet/route": "app/tailnet/route.js",
50
49
  "/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",
@@ -3,8 +3,8 @@
3
3
  "functions": {
4
4
  "/api/kiosk-hardware": {},
5
5
  "/api/robovoice/robots/[robotId]/media-health": {},
6
- "/robopark/[...path]": {},
7
6
  "/fed/media/robots/[robotId]/video_feed": {},
7
+ "/robopark/[...path]": {},
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/HVQqws8pwZ7FuPixvQm1d/_buildManifest.js" defer=""></script><script src="/_next/static/HVQqws8pwZ7FuPixvQm1d/_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":"HVQqws8pwZ7FuPixvQm1d","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/Omr4BaSGuNd9w4zCHNwa5/_buildManifest.js" defer=""></script><script src="/_next/static/Omr4BaSGuNd9w4zCHNwa5/_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":"Omr4BaSGuNd9w4zCHNwa5","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- {"node":{},"edge":{},"encryptionKey":"ioPxRkh8Xwgx69nEuUm4wQZjzduDtHbMBv/X8CyfNLA="}
1
+ {"node":{},"edge":{},"encryptionKey":"sJTotsE+lm1BGwIDO9xwXe4GVqC5RCZujpDcR19GDRI="}
@@ -149,7 +149,7 @@ section h2 .count{color:var(--muted);}
149
149
  .fleet-services{margin:.5rem 0;border:1px solid var(--glass-border);border-radius:11px;overflow:hidden;background:rgba(0,0,0,.2)}.fleet-services-head{display:flex;justify-content:space-between;align-items:center;padding:.42rem .52rem;border-bottom:1px solid var(--glass-border);font:700 .51rem var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--gold-pale)}.fleet-service{display:grid;grid-template-columns:8px minmax(72px,.7fr) minmax(90px,1fr) auto;gap:.42rem;align-items:center;padding:.4rem .5rem;border-bottom:1px solid rgba(255,255,255,.035);font:.51rem var(--mono)}.fleet-service:last-child{border-bottom:0}.fleet-service i{width:7px;height:7px;border-radius:50%;background:var(--bad)}.fleet-service.up i{background:var(--ok);box-shadow:0 0 7px rgba(111,224,166,.45)}.fleet-service.missing i{background:var(--muted)}.fleet-service b{color:var(--ink);white-space:nowrap}.fleet-service span{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fleet-service-actions{display:flex;gap:.22rem}.fleet-service-actions button{padding:.22rem .34rem;font-size:.47rem}.fleet-service-fix{padding:.38rem .5rem;border-top:1px solid rgba(246,215,123,.08);background:rgba(246,215,123,.025)}.fleet-service-fix code{display:block;overflow:auto;white-space:nowrap;color:var(--gold-pale);font:.48rem var(--mono)}.fleet-service-fix button{margin-top:.3rem}
150
150
  .fleet-group-title{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;margin-top:.35rem;padding:.55rem .15rem .25rem;border-bottom:1px solid rgba(246,215,123,.18);font-family:var(--display);color:var(--gold-pale);font-size:.82rem;letter-spacing:.04em}.fleet-group-title span{font:500 .54rem var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.1em}
151
151
  .fleet-live-camera{position:relative;aspect-ratio:16/9;margin:.55rem 0;border:1px solid var(--glass-border);border-radius:12px;overflow:hidden;background:radial-gradient(circle at 50% 35%,rgba(246,215,123,.08),transparent 44%),#050504;box-shadow:inset 0 1px 0 var(--glass-hi)}
152
- .fleet-live-camera img{width:100%;height:100%;display:block;object-fit:contain;background:#050504}.fleet-live-camera .state{position:absolute;left:.5rem;bottom:.45rem;padding:.18rem .4rem;border-radius:100px;background:rgba(3,3,2,.78);border:1px solid var(--glass-border);font-family:var(--mono);font-size:.5rem;color:var(--warn);backdrop-filter:blur(8px)}.fleet-live-camera.live .state{color:var(--ok)}.fleet-live-camera.failed .state{color:var(--bad)}
152
+ .fleet-live-camera img,.fleet-live-camera video{width:100%;height:100%;display:block;object-fit:contain;background:#050504}.fleet-live-camera .state{position:absolute;left:.5rem;bottom:.45rem;padding:.18rem .4rem;border-radius:100px;background:rgba(3,3,2,.78);border:1px solid var(--glass-border);font-family:var(--mono);font-size:.5rem;color:var(--warn);backdrop-filter:blur(8px)}.fleet-live-camera.live .state{color:var(--ok)}.fleet-live-camera.failed .state{color:var(--bad)}
153
153
  @media(max-width:1150px){.fleet-kpis{grid-template-columns:repeat(3,1fr)}.fleet-insights{grid-template-columns:1fr 1fr}.fleet-insights .fleet-panel:last-of-type{grid-column:1/-1}}
154
154
  @media(max-width:720px){.fleet-hero{align-items:flex-start;flex-direction:column}.fleet-hero-actions{justify-content:flex-start}.fleet-kpis{grid-template-columns:repeat(2,1fr)}.fleet-insights{display:block}.fleet-panel{margin-bottom:.65rem}.fleet-readiness{grid-template-columns:90px 1fr}.fleet-donut{width:86px;height:86px}}
155
155
 
@@ -1702,6 +1702,210 @@ footer.cmd{left:var(--global-nav-width);transition:left .24s cubic-bezier(.2,.8,
1702
1702
  }
1703
1703
  window.addEventListener('online',rpRecoverVisibleCameras);
1704
1704
  document.addEventListener('visibilitychange',function(){if(document.visibilityState==='visible')rpRecoverVisibleCameras();});
1705
+ // ── Fleet LiveKit cameras ──
1706
+ // Robot kiosks/character call pages publish the camera into LiveKit room
1707
+ // robopark-<stream id>, where the stream id is the claim/device id (e.g.
1708
+ // claim_63a36d48…). The fleet tiles used to hit only the MJPEG relay, which
1709
+ // 502s for claim devices, so tiles spun on "connecting camera" forever.
1710
+ // Subscribe each tile through /api/robopark/monitor-token instead and keep
1711
+ // the MJPEG relay strictly as a grace-period fallback.
1712
+ var fleetLiveKitRooms = {};
1713
+ var rpCameraStreamIds = {}; // tile key (display name) -> claim/device stream id
1714
+ var fleetLiveKitSdkPromise = null;
1715
+ function ensureFleetLiveKit(){
1716
+ if(window.LivekitClient)return Promise.resolve(window.LivekitClient);
1717
+ if(fleetLiveKitSdkPromise)return fleetLiveKitSdkPromise;
1718
+ fleetLiveKitSdkPromise=new Promise(function(resolve,reject){var s=document.createElement('script');s.src='/vendor/livekit-client.umd.js'+QS;s.onload=function(){resolve(window.LivekitClient);};s.onerror=function(){fleetLiveKitSdkPromise=null;reject(new Error('LiveKit SDK failed to load'));};document.head.appendChild(s);});
1719
+ return fleetLiveKitSdkPromise;
1720
+ }
1721
+ function pruneRoomTargets(entry){
1722
+ entry.videos=(entry.videos||[]).filter(function(node){return node&&node.isConnected;});
1723
+ entry.states=(entry.states||[]).filter(function(node){return node&&node.isConnected;});
1724
+ return entry;
1725
+ }
1726
+ // MJPEG fallback: when a LiveKit room connects but nobody publishes video
1727
+ // (no character call open), the tile fell into 'waiting for camera track'
1728
+ // forever. After a grace period we overlay the vision-server MJPEG stream in
1729
+ // the tile while keeping the room joined; a real LiveKit track always wins
1730
+ // and tears the overlay down. Every open MJPEG <img> holds an HTTP
1731
+ // connection, so teardown must be exhaustive (close, sweep, pagehide, error).
1732
+ var FLEET_FALLBACK_DELAY=12000;
1733
+ function removeFleetFallbackImgs(entry){
1734
+ (entry.fallbackImgs||[]).forEach(function(img){
1735
+ try{img.onload=null;img.onerror=null;img.src='';}catch(e){}
1736
+ var host=img._rpHost;
1737
+ if(img.parentNode)img.parentNode.removeChild(img);
1738
+ if(host&&!entry.hasTrack)host.classList.remove('live');
1739
+ });
1740
+ entry.fallbackImgs=[];entry.fallbackActive=false;
1741
+ }
1742
+ function clearFleetFallback(entry){
1743
+ if(!entry)return;
1744
+ if(entry.fallbackTimer){clearTimeout(entry.fallbackTimer);entry.fallbackTimer=null;}
1745
+ removeFleetFallbackImgs(entry);
1746
+ }
1747
+ function tryFleetFallback(cameraKey,entry){
1748
+ if(fleetLiveKitRooms[cameraKey]!==entry||entry.hasTrack)return;
1749
+ pruneRoomTargets(entry);
1750
+ if(!entry.videos.length)return;
1751
+ entry.fallbackImgs=(entry.fallbackImgs||[]).filter(function(img){return img&&img.isConnected;});
1752
+ entry.videos.forEach(function(video){
1753
+ var host=(video.closest&&video.closest('[data-fleet-camera-host]'))||video.parentNode;
1754
+ if(!host||host.querySelector('img[data-fleet-fallback]'))return;
1755
+ var img=document.createElement('img');
1756
+ img.setAttribute('data-fleet-fallback',cameraKey);
1757
+ img.alt='fallback camera stream';
1758
+ img.style.position='absolute';img.style.inset='0';img.style.zIndex='2';
1759
+ img.style.width='100%';img.style.height='100%';img.style.objectFit='contain';
1760
+ img._rpHost=host;
1761
+ img.onload=function(){
1762
+ if(fleetLiveKitRooms[cameraKey]!==entry||entry.hasTrack)return;
1763
+ entry.fallbackActive=true;entry.fallbackFailures=0;
1764
+ host.classList.add('live');host.classList.remove('failed');
1765
+ setRoomStatus(entry,'MJPEG camera live (fallback)');
1766
+ };
1767
+ img.onerror=function(){
1768
+ if(fleetLiveKitRooms[cameraKey]!==entry)return;
1769
+ removeFleetFallbackImgs(entry);
1770
+ if(entry.hasTrack)return;
1771
+ setRoomStatus(entry,'connected · waiting for camera track');
1772
+ armFleetFallback(cameraKey,entry,true);
1773
+ };
1774
+ // The MJPEG relay is keyed by the robot display name (the legacy tile
1775
+ // identity), not the LiveKit stream id.
1776
+ img.src=rpCameraFeedUrl(cameraKey);
1777
+ entry.fallbackImgs.push(img);
1778
+ host.appendChild(img);
1779
+ });
1780
+ }
1781
+ function armFleetFallback(cameraKey,entry,backoff){
1782
+ if(!entry||entry.fallbackTimer||entry.hasTrack)return;
1783
+ var delay=FLEET_FALLBACK_DELAY;
1784
+ if(backoff){
1785
+ entry.fallbackFailures=(entry.fallbackFailures||0)+1;
1786
+ delay=Math.min(15000,Math.round(1500*Math.pow(1.6,Math.min(entry.fallbackFailures-1,6))+Math.random()*500));
1787
+ }
1788
+ entry.fallbackTimer=setTimeout(function(){
1789
+ entry.fallbackTimer=null;
1790
+ if(fleetLiveKitRooms[cameraKey]!==entry)return;
1791
+ tryFleetFallback(cameraKey,entry);
1792
+ },delay);
1793
+ }
1794
+ // Always disconnect before dropping a room reference. Abandoning the object
1795
+ // leaves the monitor joined server-side, so every refresh or re-render would
1796
+ // stack another monitor participant in the room.
1797
+ function closeFleetCameraRoom(cameraKey,entry){
1798
+ entry=entry||fleetLiveKitRooms[cameraKey];
1799
+ if(!entry)return;
1800
+ if(entry.retry){clearTimeout(entry.retry);entry.retry=null;}
1801
+ clearFleetFallback(entry);
1802
+ entry.hasTrack=false;
1803
+ var room=entry.room;entry.room=null;
1804
+ if(room){try{room.disconnect(true);}catch(e){}}
1805
+ if(fleetLiveKitRooms[cameraKey]===entry)delete fleetLiveKitRooms[cameraKey];
1806
+ }
1807
+ // Sweep rooms whose tiles are gone. Without this a room stayed joined for as
1808
+ // long as the tab lived, even after its tile was re-rendered away.
1809
+ function sweepFleetCameraRooms(){
1810
+ Object.keys(fleetLiveKitRooms||{}).forEach(function(cameraKey){
1811
+ var entry=fleetLiveKitRooms[cameraKey];if(!entry)return;
1812
+ pruneRoomTargets(entry);
1813
+ if(!entry.videos.length&&!entry.connecting)closeFleetCameraRoom(cameraKey,entry);
1814
+ });
1815
+ }
1816
+ if(typeof window!=='undefined'&&!window.__rpFleetRoomTeardown){
1817
+ window.__rpFleetRoomTeardown=true;
1818
+ setInterval(sweepFleetCameraRooms,15000);
1819
+ // pagehide covers refresh, navigation and tab close; without it the monitor
1820
+ // lingered until LiveKit's own participant timeout.
1821
+ window.addEventListener('pagehide',function(){
1822
+ Object.keys(fleetLiveKitRooms||{}).forEach(function(cameraKey){closeFleetCameraRoom(cameraKey);});
1823
+ });
1824
+ }
1825
+ function setRoomStatus(entry,message){
1826
+ entry.states.forEach(function(label){if(label&&label.isConnected)label.textContent=message;});
1827
+ }
1828
+ function attachRoomTrack(entry,track){
1829
+ entry.videos.forEach(function(target){
1830
+ if(!target||!target.isConnected)return;
1831
+ track.attach(target);target.muted=true;target.autoplay=true;target.playsInline=true;
1832
+ var host=target.closest('[data-fleet-camera-host]');if(host){host.classList.add('live');host.classList.remove('failed');}
1833
+ });
1834
+ }
1835
+ // Retries must never capture a specific <video>. renderFleet() rebuilds its
1836
+ // tiles, so a captured element can already be detached when the timer fires.
1837
+ // Retry against the device entry instead; later renders register their fresh
1838
+ // elements on it.
1839
+ function scheduleFleetCameraRetry(cameraKey){
1840
+ var entry=fleetLiveKitRooms[cameraKey];if(!entry||entry.retry)return;
1841
+ entry.failures=(entry.failures||0)+1;
1842
+ var delay=Math.min(15000,Math.round(1500*Math.pow(1.6,Math.min(entry.failures-1,6))+Math.random()*500));
1843
+ entry.retry=setTimeout(function(){
1844
+ entry.retry=null;
1845
+ if(fleetLiveKitRooms[cameraKey]!==entry)return;
1846
+ pruneRoomTargets(entry);
1847
+ // Nothing on screen is waiting for this room any more.
1848
+ if(!entry.videos.length){closeFleetCameraRoom(cameraKey,entry);return;}
1849
+ openFleetCameraRoom(cameraKey);
1850
+ },delay);
1851
+ }
1852
+ function openFleetCameraRoom(cameraKey){
1853
+ var entry=fleetLiveKitRooms[cameraKey];if(!entry||entry.connecting||entry.room)return;
1854
+ var roomId=String(rpCameraStreamIds[cameraKey]||cameraKey);
1855
+ entry.roomId=roomId;
1856
+ if(!/^[a-zA-Z0-9_-]{1,64}$/.test(roomId)){
1857
+ // Not a valid robopark-<id> room name; skip LiveKit and rely on the
1858
+ // MJPEG relay so the tile is never a terminal 'connecting' state.
1859
+ if(!entry.fallbackActive&&!entry.fallbackTimer)armFleetFallback(cameraKey,entry,true);
1860
+ return;
1861
+ }
1862
+ entry.connecting=true;
1863
+ Promise.all([ensureFleetLiveKit(),fetch('/api/robopark/monitor-token',{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify({room_name:'robopark-'+roomId})}).then(function(r){if(!r.ok)throw new Error('monitor token '+r.status);return r.json();})]).then(function(parts){
1864
+ var LK=parts[0],info=parts[1];
1865
+ entry.connecting=false;
1866
+ if(fleetLiveKitRooms[cameraKey]!==entry)return null;
1867
+ var room=new LK.Room();entry.room=room;
1868
+ room.on(LK.RoomEvent.TrackSubscribed,function(track){if(track.kind==='video'){entry.hasTrack=true;clearFleetFallback(entry);pruneRoomTargets(entry);attachRoomTrack(entry,track);setRoomStatus(entry,'LiveKit camera live');}});
1869
+ room.on(LK.RoomEvent.Disconnected,function(){if(fleetLiveKitRooms[cameraKey]!==entry)return;entry.room=null;entry.hasTrack=false;if(!entry.fallbackActive)setRoomStatus(entry,'camera disconnected · retrying');scheduleFleetCameraRetry(cameraKey);});
1870
+ return room.connect(info.serverUrl,info.token);
1871
+ }).then(function(result){if(result===null||fleetLiveKitRooms[cameraKey]!==entry)return;entry.failures=0;if(entry.fallbackActive){setRoomStatus(entry,'MJPEG camera live (fallback)');}else{setRoomStatus(entry,'connected · waiting for camera track');armFleetFallback(cameraKey,entry);}}).catch(function(error){
1872
+ entry.connecting=false;entry.room=null;entry.hasTrack=false;
1873
+ if(fleetLiveKitRooms[cameraKey]!==entry)return;
1874
+ if(!entry.fallbackActive)setRoomStatus(entry,'camera unavailable · '+error.message+' · retrying');
1875
+ scheduleFleetCameraRetry(cameraKey);
1876
+ // LiveKit is down entirely; don't sit dark for the full grace period.
1877
+ if(!entry.fallbackActive&&!entry.fallbackTimer)armFleetFallback(cameraKey,entry,true);
1878
+ });
1879
+ }
1880
+ function connectFleetLiveCamera(video,cameraKey,state){
1881
+ if(!cameraKey||!video)return;
1882
+ var desiredRoomId=String(rpCameraStreamIds[cameraKey]||cameraKey);
1883
+ var entry=fleetLiveKitRooms[cameraKey];
1884
+ // The session/live-room census can discover that the camera publishes into
1885
+ // a claim room (robopark-claim_<hash>) after we already joined a stale
1886
+ // room. Re-key: drop the stale subscription and rejoin the room that
1887
+ // actually has a publisher. Only when not mid-connect and the target
1888
+ // genuinely changed.
1889
+ if(entry&&!entry.connecting&&entry.roomId&&entry.roomId!==desiredRoomId){closeFleetCameraRoom(cameraKey,entry);entry=null;}
1890
+ if(!entry){entry={connecting:false,room:null,roomId:null,videos:[],states:[],retry:null,failures:0,hasTrack:false,fallbackTimer:null,fallbackImgs:[],fallbackActive:false,fallbackFailures:0};fleetLiveKitRooms[cameraKey]=entry;}
1891
+ pruneRoomTargets(entry);
1892
+ if(entry.videos.indexOf(video)<0)entry.videos.push(video);
1893
+ if(state&&entry.states.indexOf(state)<0)entry.states.push(state);
1894
+ if(entry.room){
1895
+ entry.room.remoteParticipants.forEach(function(p){p.trackPublications.forEach(function(pub){if(pub.track&&pub.track.kind==='video'){entry.hasTrack=true;clearFleetFallback(entry);attachRoomTrack(entry,pub.track);setRoomStatus(entry,'LiveKit camera live');}});});
1896
+ if(!entry.hasTrack){
1897
+ // Freshly rendered tile joined an already-open but publisher-less room:
1898
+ // re-cover it with the active fallback, or make sure the timer is armed
1899
+ // so 'waiting for camera track' can never be a terminal state.
1900
+ if(entry.fallbackActive)tryFleetFallback(cameraKey,entry);
1901
+ else if(!entry.fallbackTimer)armFleetFallback(cameraKey,entry);
1902
+ }
1903
+ return;
1904
+ }
1905
+ // A connect or retry is already in flight; it will pick up this element.
1906
+ if(entry.connecting||entry.retry)return;
1907
+ openFleetCameraRoom(cameraKey);
1908
+ }
1705
1909
  function renderFleetOperations(nodes, prefix, telemetryRows){
1706
1910
  prefix=prefix||'fleet'; nodes=Array.isArray(nodes)?nodes:[]; telemetryRows=Array.isArray(telemetryRows)?telemetryRows:null;
1707
1911
  var rows=[];
@@ -1764,11 +1968,12 @@ footer.cmd{left:var(--global-nav-width);transition:left .24s cubic-bezier(.2,.8,
1764
1968
  }
1765
1969
  function renderFleet(nodes){
1766
1970
  var el = $('fleet');
1767
- // Keep existing MJPEG elements alive while telemetry cards are rebuilt.
1768
- // Replacing an <img> tears down its long-lived stream and made cameras
1769
- // appear to reconnect on every fleet poll.
1971
+ // Keep existing camera hosts alive while telemetry cards are rebuilt.
1972
+ // Replacing the host tears down the attached LiveKit <video> and any
1973
+ // long-lived MJPEG fallback <img>, making cameras appear to reconnect on
1974
+ // every fleet poll.
1770
1975
  var preservedCameras={};
1771
- if(el){Array.prototype.forEach.call(el.querySelectorAll('[data-fleet-camera]'),function(img){var key=img.getAttribute('data-fleet-camera');if(key)preservedCameras[key]=img;});}
1976
+ if(el){Array.prototype.forEach.call(el.querySelectorAll('[data-fleet-camera-host]'),function(host){var key=host.getAttribute('data-fleet-camera-host');if(key&&host.querySelector('[data-fleet-camera]'))preservedCameras[key]=host;});}
1772
1977
  renderFleetOperations(nodes||[],'fleet');
1773
1978
  if(!nodes || !nodes.length){ el.innerHTML = '<div class="empty">No nodes reporting yet. Start peers with <span class="mono">infinicode serve</span> or <span class="mono">robopark setup</span>.</div>'; return; }
1774
1979
  nodes=nodes.slice();
@@ -1871,7 +2076,7 @@ footer.cmd{left:var(--global-nav-width);transition:left .24s cubic-bezier(.2,.8,
1871
2076
  if(tele){var fleetStage=tele.current_stage||{},fleetStageStatus=fleetStage.status||tele.current_stage_status||'waiting',fleetStageLabel=fleetStage.label||tele.current_stage_label||'Waiting for pipeline telemetry';html+='<div class="fleet-stage-focus '+esc(fleetStageStatus)+'"><span>Live production stage</span><b>'+esc(fleetStageLabel)+'</b></div>';}
1872
2077
 
1873
2078
  if(isRegisteredRobot&&cameraRef){
1874
- html += '<div class="fleet-live-camera" data-fleet-camera-host="'+esc(cameraRef)+'">'+((up||partialOnline)?'<img alt="Live camera for '+esc(n.displayName)+'" data-fleet-camera="'+esc(cameraRef)+'">':'')+'<span class="state">'+(up?'connecting camera':(partialOnline?'connecting camera / voice active':'offline / camera paused'))+'</span></div>';
2079
+ html += '<div class="fleet-live-camera" data-fleet-camera-host="'+esc(cameraRef)+'">'+((up||partialOnline)?'<video muted autoplay playsinline aria-label="Live camera for '+esc(n.displayName)+'" data-fleet-camera="'+esc(cameraRef)+'"></video>':'')+'<span class="state">'+(up?'connecting camera':(partialOnline?'connecting camera / voice active':'offline / camera paused'))+'</span></div>';
1875
2080
  }
1876
2081
 
1877
2082
  if(up){
@@ -1896,16 +2101,15 @@ footer.cmd{left:var(--global-nav-width);transition:left .24s cubic-bezier(.2,.8,
1896
2101
  + (isRegisteredRobot?('<div class="fleet-card-actions"><button class="rp-btn primary" data-fleet-action="camera" data-robot="'+esc(n.displayName)+'"'+(up?'':' disabled')+'>Live camera</button><button class="rp-btn" data-fleet-action="motors" data-robot="'+esc(n.displayName)+'">Motors</button><button class="rp-btn" data-fleet-action="sessions" data-robot="'+esc(n.displayName)+'">Sessions</button><button class="rp-btn" data-fleet-action="incidents" data-robot="'+esc(n.displayName)+'">Health</button>'+(tele&&(tele.character_id||tele.character_preset_id)?'<button class="rp-btn" data-config-edit-character="'+esc(tele.character_id||tele.character_preset_id)+'">Edit character</button>':'')+(tele&&tele.voice_stack_id?'<button class="rp-btn" data-config-edit-stack="'+esc(tele.voice_stack_id)+'">Edit voice</button>':'')+'</div>'):'')+'</div>';
1897
2102
  }
1898
2103
  el.innerHTML = html;
1899
- Array.prototype.forEach.call(el.querySelectorAll('[data-fleet-camera]'),function(placeholder){
1900
- var key=placeholder.getAttribute('data-fleet-camera'),old=preservedCameras[key];
1901
- if(old){placeholder.parentNode.replaceChild(old,placeholder);placeholder=old;}
1902
- var host=placeholder.closest('[data-fleet-camera-host]'),state=host&&host.querySelector('.state');
1903
- rpReliableCamera(placeholder,key,{
1904
- connecting:function(){if(host){host.classList.remove('failed');}if(state)state.textContent='connecting camera';},
1905
- live:function(){if(host){host.classList.add('live');host.classList.remove('failed');}if(state)state.textContent='always-on live';},
1906
- failed:function(){if(host){host.classList.remove('live');host.classList.add('failed');}if(state)state.textContent='reconnecting camera';}
1907
- });
2104
+ Array.prototype.forEach.call(el.querySelectorAll('[data-fleet-camera-host]'),function(host){
2105
+ var key=host.getAttribute('data-fleet-camera-host'),video=host.querySelector('[data-fleet-camera]'),old=preservedCameras[key];
2106
+ if(!video)return; // offline card: no live media requested
2107
+ if(old&&host.parentNode){host.parentNode.replaceChild(old,host);host=old;video=host.querySelector('[data-fleet-camera]');}
2108
+ var state=host.querySelector('.state');
2109
+ connectFleetLiveCamera(video,key,state);
1908
2110
  });
2111
+ // Close rooms whose tiles just went offline or were rendered away.
2112
+ sweepFleetCameraRooms();
1909
2113
  var cards = el.querySelectorAll('.node');
1910
2114
  for(var j=0;j<cards.length;j++){
1911
2115
  (function(card){
@@ -2057,8 +2261,8 @@ footer.cmd{left:var(--global-nav-width);transition:left .24s cubic-bezier(.2,.8,
2057
2261
  });
2058
2262
  }
2059
2263
  function mergeSchedulerRobots(nodes){
2060
- return Promise.all([getJson('/robopark/api/robots'), getJson('/robopark/api/devices'), getJson('/robopark/api/character-presets'), getJson('/api/robopark/live-rooms').catch(function(){return [];})]).then(function(data){
2061
- var rows = data[0], devices = data[1], liveRooms=Array.isArray(data[3])?data[3]:[];
2264
+ return Promise.all([getJson('/robopark/api/robots'), getJson('/robopark/api/devices'), getJson('/robopark/api/character-presets'), getJson('/api/robopark/live-rooms').catch(function(){return [];}), getJson('/robopark/api/sessions?active_only=true').catch(function(){return [];})]).then(function(data){
2265
+ var rows = data[0], devices = data[1], liveRooms=Array.isArray(data[3])?data[3]:[], activeSessions=Array.isArray(data[4])?data[4]:[];
2062
2266
  characterPresets=Array.isArray(data[2])?data[2]:(data[2]&&data[2].presets)||[];
2063
2267
  var deviceById = {}, deviceByName = {};
2064
2268
  function norm(v){ return String(v||'').trim().toLowerCase(); }
@@ -2117,6 +2321,18 @@ footer.cmd{left:var(--global-nav-width);transition:left .24s cubic-bezier(.2,.8,
2117
2321
  var id=device.id||activeRow.id||activeRow.robot_id||(liveRoom&&liveRoom.robot_id)||'';
2118
2322
  var row=activeRow.id||activeRow.robot_id?activeRow:(rowsById[norm(id)]||{});
2119
2323
  var name=String(preset.name||characterId).trim();
2324
+ // Camera publishers join robopark-<claim/device id> (a character call
2325
+ // page claims a device id like claim_63a36d48…), so an active
2326
+ // session's robot_id or the live-room census is the authoritative
2327
+ // camera stream identity; the bound device id is only a fallback.
2328
+ var activeSession=activeSessions.find(function(sess){
2329
+ var sid=norm(sess.robot_id||sess.device_id);if(!sid)return false;
2330
+ if(sid===characterId||norm(sess.character_id||sess.character_preset_id)===characterId)return true;
2331
+ return matchingDevices.some(function(candidate){return norm(candidate.id)===sid;});
2332
+ })||null;
2333
+ var liveRoomName=liveRoom?String(liveRoom.room_name||liveRoom.room||'').trim():'';
2334
+ var cameraStreamId=String((activeSession&&(activeSession.robot_id||activeSession.device_id))||(liveRoomName?liveRoomName.replace(/^robopark-/,''):'')||(liveRoom&&liveRoom.robot_id)||id||'').trim();
2335
+ if(name&&cameraStreamId)rpCameraStreamIds[name]=cameraStreamId;
2120
2336
  var status = String(row.connection_status || row.status || device.connection_status || device.status || '').toLowerCase();
2121
2337
  var heartbeat = row.last_heartbeat || device.last_heartbeat;
2122
2338
  var heartbeatAt = heartbeat ? Date.parse(heartbeat) : NaN;