robopark 3.3.52 → 3.3.54
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/dist/robopark/tailscale.js +46 -0
- package/dist/robopark/tailscale.js.map +1 -1
- package/dist/robopark/voice-list.js +25 -12
- package/dist/robopark/voice-list.js.map +1 -1
- package/package.json +1 -1
- package/scheduler/static/voice-join.html +15 -4
- package/ui/standalone/.next/BUILD_ID +1 -1
- package/ui/standalone/.next/app-build-manifest.json +64 -64
- package/ui/standalone/.next/app-path-routes-manifest.json +18 -18
- package/ui/standalone/.next/build-manifest.json +2 -2
- package/ui/standalone/.next/prerender-manifest.json +3 -3
- package/ui/standalone/.next/server/app-paths-manifest.json +18 -18
- package/ui/standalone/.next/server/pages/500.html +1 -1
- package/ui/standalone/.next/server/server-reference-manifest.json +1 -1
- package/ui/standalone/public/voice-join.html +15 -4
- /package/ui/standalone/.next/static/{s3wbgjEOXxnix6TIbmHp0 → 18X2Kr5XPUrJm-7AyZRXE}/_buildManifest.js +0 -0
- /package/ui/standalone/.next/static/{s3wbgjEOXxnix6TIbmHp0 → 18X2Kr5XPUrJm-7AyZRXE}/_ssgManifest.js +0 -0
|
@@ -62,6 +62,52 @@ export function resolveTailnet() {
|
|
|
62
62
|
return { identity: { host: ipv4, magicDns: false, hostName: self.HostName } };
|
|
63
63
|
return { error: 'tailscale reported no address for this machine' };
|
|
64
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Front a local port with HTTPS on the tailnet.
|
|
67
|
+
*
|
|
68
|
+
* Printing an http:// tailnet URL is not enough to be useful: browsers expose
|
|
69
|
+
* navigator.mediaDevices only in a secure context, so on plain http the call
|
|
70
|
+
* page cannot open a microphone or camera at all. `tailscale serve` terminates
|
|
71
|
+
* TLS with a real cert for the MagicDNS name, which is what makes the link
|
|
72
|
+
* work on a phone or a robot PC. Returns the https origin, or an error.
|
|
73
|
+
*/
|
|
74
|
+
/**
|
|
75
|
+
* Front a local port with HTTPS on a *dedicated* tailnet port instead of the
|
|
76
|
+
* 443 root.
|
|
77
|
+
*
|
|
78
|
+
* `serveHttps` claims the tailnet root, which fails when another service on the
|
|
79
|
+
* box already owns it (the InfiniBot gateway, another app, …). Call links only
|
|
80
|
+
* need *a* secure origin, not the root, so this mounts the target on its own
|
|
81
|
+
* https port and returns `https://host:httpsPort`. Idempotent: re-running just
|
|
82
|
+
* re-asserts the same mapping. Returns the origin, or an error.
|
|
83
|
+
*/
|
|
84
|
+
export function serveHttpsPort(targetPort, httpsPort) {
|
|
85
|
+
const bin = tailscaleBin();
|
|
86
|
+
if (!bin)
|
|
87
|
+
return { error: 'the tailscale CLI was not found on this machine' };
|
|
88
|
+
const { identity, error } = resolveTailnet();
|
|
89
|
+
if (!identity)
|
|
90
|
+
return { error };
|
|
91
|
+
try {
|
|
92
|
+
execFileSync(bin, ['serve', '--bg', '--https', String(httpsPort), `http://127.0.0.1:${targetPort}`], { stdio: 'pipe' });
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
96
|
+
return { error: `tailscale serve failed: ${detail.split(String.fromCharCode(10))[0]}` };
|
|
97
|
+
}
|
|
98
|
+
// Exit 0 is not proof it bound (a tagged node without the serve attribute
|
|
99
|
+
// silently no-ops), so confirm the mapping is actually present.
|
|
100
|
+
let bound = false;
|
|
101
|
+
try {
|
|
102
|
+
const status = execFileSync(bin, ['serve', 'status'], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] });
|
|
103
|
+
bound = status.includes(`:${httpsPort}`) && status.includes(identity.host);
|
|
104
|
+
}
|
|
105
|
+
catch { /* status failed; treat as not bound */ }
|
|
106
|
+
if (!bound) {
|
|
107
|
+
return { error: `tailscale serve did not bind https://${identity.host}:${httpsPort} (check "tailscale serve status"; a tagged node needs the serve attribute in your tailnet ACL)` };
|
|
108
|
+
}
|
|
109
|
+
return { origin: `https://${identity.host}:${httpsPort}` };
|
|
110
|
+
}
|
|
65
111
|
/**
|
|
66
112
|
* Front a local port with HTTPS on the tailnet.
|
|
67
113
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailscale.js","sourceRoot":"","sources":["../../src/robopark/tailscale.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tailscale.js","sourceRoot":"","sources":["../../src/robopark/tailscale.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,12 @@
|
|
|
7
7
|
* printed link works from anywhere on the tailnet.
|
|
8
8
|
*/
|
|
9
9
|
import chalk from 'chalk';
|
|
10
|
-
import { resolveTailnet } from './tailscale.js';
|
|
10
|
+
import { resolveTailnet, serveHttpsPort } from './tailscale.js';
|
|
11
|
+
// Dedicated tailnet HTTPS port that fronts the scheduler for call links. The
|
|
12
|
+
// 443 root is often already claimed on the box, and browsers only expose the
|
|
13
|
+
// microphone in a secure context — so `--tailscale` stands up its own https
|
|
14
|
+
// port to the scheduler rather than printing an http link the mic can't use.
|
|
15
|
+
const VOICE_HTTPS_PORT = 8446;
|
|
11
16
|
/**
|
|
12
17
|
* The one place a /voice-join.html link is assembled.
|
|
13
18
|
*
|
|
@@ -37,19 +42,27 @@ export async function roboparkVoiceList(opts) {
|
|
|
37
42
|
// is reachable on loopback but the link has to be shared.
|
|
38
43
|
let linkHost = configured;
|
|
39
44
|
if (opts.tailscale) {
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
const schedulerPort = (() => { try {
|
|
46
|
+
return Number(new URL(configured).port) || 8080;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return 8080;
|
|
50
|
+
} })();
|
|
51
|
+
// Stand up (idempotently) an https tailnet front to the scheduler so the
|
|
52
|
+
// printed links open the microphone. Only the scheduler serves
|
|
53
|
+
// voice-join.html + /api, so this must front the scheduler, not the UI.
|
|
54
|
+
const { origin, error } = serveHttpsPort(schedulerPort, VOICE_HTTPS_PORT);
|
|
55
|
+
if (origin) {
|
|
56
|
+
linkHost = origin;
|
|
49
57
|
}
|
|
50
58
|
else {
|
|
51
|
-
|
|
52
|
-
|
|
59
|
+
// Still list the links so the command is useful, but over http — and say
|
|
60
|
+
// why the mic will be blocked until https is available.
|
|
61
|
+
const { identity } = resolveTailnet();
|
|
62
|
+
if (identity)
|
|
63
|
+
linkHost = `http://${identity.host}:${schedulerPort}`;
|
|
64
|
+
console.log(chalk.yellow(` ⚠ --tailscale: could not enable https (${error})`));
|
|
65
|
+
console.log(chalk.dim(' printing http links; a browser will block the microphone until https works.'));
|
|
53
66
|
}
|
|
54
67
|
}
|
|
55
68
|
let presets;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-list.js","sourceRoot":"","sources":["../../src/robopark/voice-list.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"voice-list.js","sourceRoot":"","sources":["../../src/robopark/voice-list.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhE,6EAA6E;AAC7E,6EAA6E;AAC7E,4EAA4E;AAC5E,6EAA6E;AAC7E,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAkB9B;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,MAAuB,EACvB,IAAY,EACZ,KAA8B;IAE9B,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,mBAAmB;QAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACnF,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzB,4EAA4E;IAC5E,sEAAsE;IACtE,+CAA+C;IAC/C,IAAI,MAAM,CAAC,oBAAoB;QAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACtF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC/E,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAsB;IAC5D,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE5H,yEAAyE;IACzE,6EAA6E;IAC7E,0DAA0D;IAC1D,IAAI,QAAQ,GAAG,UAAU,CAAC;IAC1B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAAC,OAAO,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpH,yEAAyE;QACzE,+DAA+D;QAC/D,wEAAwE;QACxE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;QAC1E,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,GAAG,MAAM,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,yEAAyE;YACzE,wDAAwD;YACxD,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAAC;YACtC,IAAI,QAAQ;gBAAE,QAAQ,GAAG,UAAU,QAAQ,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4CAA4C,KAAK,GAAG,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC,CAAC;QAC5G,CAAC;IACH,CAAC;IAED,IAAI,OAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,wBAAwB,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxG,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAuB,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtD,MAAM,KAAK,GAAG,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAE/F,MAAM,IAAI,GAAG,CAAC,MAAuB,EAAE,IAAY,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAEjG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,KAAK,MAAM,MAAM,IAAI,OAAO;YAAE,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QACxF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACtD,IAAI,QAAQ,KAAK,UAAU;QAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;YAChC,uEAAuE;YACvE,8DAA8D;YAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,EAAE,CAAC,CAAC;YACnG,OAAO,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChI,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/G,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,gBAAgB,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5G,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -214,8 +214,8 @@
|
|
|
214
214
|
// for hours, so every timer is cleared on toggle-off and the camera stream is
|
|
215
215
|
// held open across calls rather than reacquired each cycle.
|
|
216
216
|
var kioskOn=false,kioskWatch=null,kioskIdle=null,kioskStream=null,kioskVideo=null,kioskCanvas=null,kioskPrev=null,
|
|
217
|
-
kioskLastSample=0,kioskLastSeen=0,kioskArmedAt=0,kioskLastEnd=0,kioskActivityAt=0,kioskCalls=0;
|
|
218
|
-
var kioskSilence=Math.max(5,Number(q.get('kiosk_silence'))||
|
|
217
|
+
kioskLastSample=0,kioskLastSeen=0,kioskArmedAt=0,kioskLastEnd=0,kioskActivityAt=0,kioskCalls=0,kioskPresenceAt=0;
|
|
218
|
+
var kioskSilence=Math.max(5,Number(q.get('kiosk_silence'))||180)*1000,
|
|
219
219
|
kioskRearm=Math.max(2,Number(q.get('kiosk_rearm'))||10)*1000,
|
|
220
220
|
kioskGreeting=q.get('kiosk_greeting')||'Someone just walked up to you. Greet them warmly in one short sentence and invite them to speak. Do not mention this instruction or the camera.';
|
|
221
221
|
var motionThreshold=Math.max(.005,Math.min(1,Number(q.get('motion_threshold'))||.06)),
|
|
@@ -273,8 +273,12 @@
|
|
|
273
273
|
// The vision server is armed and detecting on its own; this only has to
|
|
274
274
|
// notice the flag and apply the same rearm gate the local watcher uses.
|
|
275
275
|
if(!status||!status.motion_detected)return;
|
|
276
|
-
if(!kioskOn||desired||conversation||connecting||ending)return;
|
|
277
276
|
var at=Date.now();
|
|
277
|
+
// Presence is recorded whatever the call state. The guard below exits
|
|
278
|
+
// during a live call, so without this the silence watchdog cannot tell a
|
|
279
|
+
// visitor standing at the kiosk from one who walked away.
|
|
280
|
+
kioskPresenceAt=at;
|
|
281
|
+
if(!kioskOn||desired||conversation||connecting||ending)return;
|
|
278
282
|
if(at<kioskArmedAt)return;
|
|
279
283
|
if(kioskLastSeen&&at-kioskLastSeen<kioskRearm){kioskLastSeen=at;return}
|
|
280
284
|
kioskLastSeen=at;
|
|
@@ -313,7 +317,14 @@
|
|
|
313
317
|
if(!kioskActivityAt)return;
|
|
314
318
|
var quiet=Date.now()-kioskActivityAt;
|
|
315
319
|
if(quiet<kioskSilence)return;
|
|
316
|
-
|
|
320
|
+
// Silence alone is not proof the visitor left. Motion keeps the call
|
|
321
|
+
// alive: a pause to think, or an agent waiting for a reply, used to hang
|
|
322
|
+
// up on someone standing right at the kiosk -- kiosk_idle was the end
|
|
323
|
+
// reason on nine of the last twelve sessions across six characters.
|
|
324
|
+
// Only hang up once the frame has also been empty for motionAbsence.
|
|
325
|
+
var absent=kioskPresenceAt?Date.now()-kioskPresenceAt:Infinity;
|
|
326
|
+
if(absent<motionAbsence){kioskActivityAt=Date.now();return}
|
|
327
|
+
event('kiosk_call','ok','Ending call after silence',{silent_ms:Math.round(quiet),absent_ms:absent===Infinity?null:Math.round(absent)});
|
|
317
328
|
// Rearm only after the visitor has actually left the frame; kioskArmedAt
|
|
318
329
|
// gates the watcher and kioskLastSeen forces a fresh quiet period.
|
|
319
330
|
kioskArmedAt=Date.now()+kioskRearm;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
18X2Kr5XPUrJm-7AyZRXE
|
|
@@ -18,13 +18,6 @@
|
|
|
18
18
|
"static/chunks/9880-53262785284464cc.js",
|
|
19
19
|
"static/chunks/app/layout-fcce963da1d8220f.js"
|
|
20
20
|
],
|
|
21
|
-
"/api/device-character/route": [
|
|
22
|
-
"static/chunks/webpack-5252e5254da079b5.js",
|
|
23
|
-
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
24
|
-
"static/chunks/1255-404bb8de49c90395.js",
|
|
25
|
-
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
26
|
-
"static/chunks/app/api/device-character/route-0952b44bda5bfb6d.js"
|
|
27
|
-
],
|
|
28
21
|
"/api/download-piper-model/route": [
|
|
29
22
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
30
23
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
@@ -39,12 +32,12 @@
|
|
|
39
32
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
40
33
|
"static/chunks/app/api/models/route-0952b44bda5bfb6d.js"
|
|
41
34
|
],
|
|
42
|
-
"/api/
|
|
35
|
+
"/api/device-character/route": [
|
|
43
36
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
44
37
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
45
38
|
"static/chunks/1255-404bb8de49c90395.js",
|
|
46
39
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
47
|
-
"static/chunks/app/api/
|
|
40
|
+
"static/chunks/app/api/device-character/route-0952b44bda5bfb6d.js"
|
|
48
41
|
],
|
|
49
42
|
"/api/prompt/route": [
|
|
50
43
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
@@ -60,12 +53,12 @@
|
|
|
60
53
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
61
54
|
"static/chunks/app/api/reload-tools/route-0952b44bda5bfb6d.js"
|
|
62
55
|
],
|
|
63
|
-
"/api/
|
|
56
|
+
"/api/prewarm/route": [
|
|
64
57
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
65
58
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
66
59
|
"static/chunks/1255-404bb8de49c90395.js",
|
|
67
60
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
68
|
-
"static/chunks/app/api/
|
|
61
|
+
"static/chunks/app/api/prewarm/route-0952b44bda5bfb6d.js"
|
|
69
62
|
],
|
|
70
63
|
"/api/robopark/robots/[robotId]/operations/route": [
|
|
71
64
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
@@ -74,12 +67,12 @@
|
|
|
74
67
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
75
68
|
"static/chunks/app/api/robopark/robots/[robotId]/operations/route-0952b44bda5bfb6d.js"
|
|
76
69
|
],
|
|
77
|
-
"/api/robopark/
|
|
70
|
+
"/api/robopark/devices/[deviceId]/control/route": [
|
|
78
71
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
79
72
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
80
73
|
"static/chunks/1255-404bb8de49c90395.js",
|
|
81
74
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
82
|
-
"static/chunks/app/api/robopark/
|
|
75
|
+
"static/chunks/app/api/robopark/devices/[deviceId]/control/route-0952b44bda5bfb6d.js"
|
|
83
76
|
],
|
|
84
77
|
"/api/robopark/sessions/[sessionId]/end/route": [
|
|
85
78
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
@@ -88,12 +81,12 @@
|
|
|
88
81
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
89
82
|
"static/chunks/app/api/robopark/sessions/[sessionId]/end/route-0952b44bda5bfb6d.js"
|
|
90
83
|
],
|
|
91
|
-
"/api/
|
|
84
|
+
"/api/robopark/transcripts/[sessionId]/route": [
|
|
92
85
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
93
86
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
94
87
|
"static/chunks/1255-404bb8de49c90395.js",
|
|
95
88
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
96
|
-
"static/chunks/app/api/
|
|
89
|
+
"static/chunks/app/api/robopark/transcripts/[sessionId]/route-0952b44bda5bfb6d.js"
|
|
97
90
|
],
|
|
98
91
|
"/api/setup/complete/route": [
|
|
99
92
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
@@ -102,12 +95,12 @@
|
|
|
102
95
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
103
96
|
"static/chunks/app/api/setup/complete/route-0952b44bda5bfb6d.js"
|
|
104
97
|
],
|
|
105
|
-
"/api/setup/
|
|
98
|
+
"/api/setup/status/route": [
|
|
106
99
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
107
100
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
108
101
|
"static/chunks/1255-404bb8de49c90395.js",
|
|
109
102
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
110
|
-
"static/chunks/app/api/setup/
|
|
103
|
+
"static/chunks/app/api/setup/status/route-0952b44bda5bfb6d.js"
|
|
111
104
|
],
|
|
112
105
|
"/api/setup/test-groq/route": [
|
|
113
106
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
@@ -116,19 +109,19 @@
|
|
|
116
109
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
117
110
|
"static/chunks/app/api/setup/test-groq/route-0952b44bda5bfb6d.js"
|
|
118
111
|
],
|
|
119
|
-
"/api/setup/test-
|
|
112
|
+
"/api/setup/test-hass/route": [
|
|
120
113
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
121
114
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
122
115
|
"static/chunks/1255-404bb8de49c90395.js",
|
|
123
116
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
124
|
-
"static/chunks/app/api/setup/test-
|
|
117
|
+
"static/chunks/app/api/setup/test-hass/route-0952b44bda5bfb6d.js"
|
|
125
118
|
],
|
|
126
|
-
"/api/setup/test-
|
|
119
|
+
"/api/setup/test-n8n/route": [
|
|
127
120
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
128
121
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
129
122
|
"static/chunks/1255-404bb8de49c90395.js",
|
|
130
123
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
131
|
-
"static/chunks/app/api/setup/test-
|
|
124
|
+
"static/chunks/app/api/setup/test-n8n/route-0952b44bda5bfb6d.js"
|
|
132
125
|
],
|
|
133
126
|
"/api/test-tts/route": [
|
|
134
127
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
@@ -137,19 +130,19 @@
|
|
|
137
130
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
138
131
|
"static/chunks/app/api/test-tts/route-0952b44bda5bfb6d.js"
|
|
139
132
|
],
|
|
140
|
-
"/api/
|
|
133
|
+
"/api/wake-word/models/route": [
|
|
141
134
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
142
135
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
143
136
|
"static/chunks/1255-404bb8de49c90395.js",
|
|
144
137
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
145
|
-
"static/chunks/app/api/
|
|
138
|
+
"static/chunks/app/api/wake-word/models/route-0952b44bda5bfb6d.js"
|
|
146
139
|
],
|
|
147
|
-
"/api/
|
|
140
|
+
"/api/setup/test-ollama/route": [
|
|
148
141
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
149
142
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
150
143
|
"static/chunks/1255-404bb8de49c90395.js",
|
|
151
144
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
152
|
-
"static/chunks/app/api/
|
|
145
|
+
"static/chunks/app/api/setup/test-ollama/route-0952b44bda5bfb6d.js"
|
|
153
146
|
],
|
|
154
147
|
"/api/wake-word/status/route": [
|
|
155
148
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
@@ -165,6 +158,13 @@
|
|
|
165
158
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
166
159
|
"static/chunks/app/api/wake-word/upload/route-0952b44bda5bfb6d.js"
|
|
167
160
|
],
|
|
161
|
+
"/api/voices/route": [
|
|
162
|
+
"static/chunks/webpack-5252e5254da079b5.js",
|
|
163
|
+
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
164
|
+
"static/chunks/1255-404bb8de49c90395.js",
|
|
165
|
+
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
166
|
+
"static/chunks/app/api/voices/route-0952b44bda5bfb6d.js"
|
|
167
|
+
],
|
|
168
168
|
"/api/kiosk-hardware/route": [
|
|
169
169
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
170
170
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
@@ -193,13 +193,6 @@
|
|
|
193
193
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
194
194
|
"static/chunks/app/api/robopark/character-ai/route-0952b44bda5bfb6d.js"
|
|
195
195
|
],
|
|
196
|
-
"/api/robopark/camera-token/route": [
|
|
197
|
-
"static/chunks/webpack-5252e5254da079b5.js",
|
|
198
|
-
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
199
|
-
"static/chunks/1255-404bb8de49c90395.js",
|
|
200
|
-
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
201
|
-
"static/chunks/app/api/robopark/camera-token/route-0952b44bda5bfb6d.js"
|
|
202
|
-
],
|
|
203
196
|
"/api/robopark/device-access/route": [
|
|
204
197
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
205
198
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
@@ -214,12 +207,12 @@
|
|
|
214
207
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
215
208
|
"static/chunks/app/api/robopark/live-rooms/route-0952b44bda5bfb6d.js"
|
|
216
209
|
],
|
|
217
|
-
"/api/robopark/
|
|
210
|
+
"/api/robopark/camera-token/route": [
|
|
218
211
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
219
212
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
220
213
|
"static/chunks/1255-404bb8de49c90395.js",
|
|
221
214
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
222
|
-
"static/chunks/app/api/robopark/
|
|
215
|
+
"static/chunks/app/api/robopark/camera-token/route-0952b44bda5bfb6d.js"
|
|
223
216
|
],
|
|
224
217
|
"/api/robopark/robots/route": [
|
|
225
218
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
@@ -228,26 +221,26 @@
|
|
|
228
221
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
229
222
|
"static/chunks/app/api/robopark/robots/route-0952b44bda5bfb6d.js"
|
|
230
223
|
],
|
|
231
|
-
"/api/robopark/
|
|
224
|
+
"/api/robopark/monitor-token/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/
|
|
229
|
+
"static/chunks/app/api/robopark/monitor-token/route-0952b44bda5bfb6d.js"
|
|
237
230
|
],
|
|
238
|
-
"/api/robopark/servers/route": [
|
|
231
|
+
"/api/robopark/servers/[serverId]/metrics/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/servers/route-0952b44bda5bfb6d.js"
|
|
236
|
+
"static/chunks/app/api/robopark/servers/[serverId]/metrics/route-0952b44bda5bfb6d.js"
|
|
244
237
|
],
|
|
245
|
-
"/api/robopark/servers/
|
|
238
|
+
"/api/robopark/servers/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/
|
|
243
|
+
"static/chunks/app/api/robopark/servers/route-0952b44bda5bfb6d.js"
|
|
251
244
|
],
|
|
252
245
|
"/api/robopark/sessions/route": [
|
|
253
246
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
@@ -256,12 +249,12 @@
|
|
|
256
249
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
257
250
|
"static/chunks/app/api/robopark/sessions/route-0952b44bda5bfb6d.js"
|
|
258
251
|
],
|
|
259
|
-
"/api/
|
|
252
|
+
"/api/robopark/servers/[serverId]/route": [
|
|
260
253
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
261
254
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
262
255
|
"static/chunks/1255-404bb8de49c90395.js",
|
|
263
256
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
264
|
-
"static/chunks/app/api/
|
|
257
|
+
"static/chunks/app/api/robopark/servers/[serverId]/route-0952b44bda5bfb6d.js"
|
|
265
258
|
],
|
|
266
259
|
"/api/robopark/vision-caption/route": [
|
|
267
260
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
@@ -277,19 +270,26 @@
|
|
|
277
270
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
278
271
|
"static/chunks/app/api/settings/route-0952b44bda5bfb6d.js"
|
|
279
272
|
],
|
|
280
|
-
"/api/
|
|
273
|
+
"/api/robopark/robots/[robotId]/voice-engine/route": [
|
|
281
274
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
282
275
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
283
276
|
"static/chunks/1255-404bb8de49c90395.js",
|
|
284
277
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
285
|
-
"static/chunks/app/api/
|
|
278
|
+
"static/chunks/app/api/robopark/robots/[robotId]/voice-engine/route-0952b44bda5bfb6d.js"
|
|
286
279
|
],
|
|
287
|
-
"/api/
|
|
280
|
+
"/api/robovoice/robots/[robotId]/media-health/route": [
|
|
288
281
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
289
282
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
290
283
|
"static/chunks/1255-404bb8de49c90395.js",
|
|
291
284
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
292
|
-
"static/chunks/app/api/
|
|
285
|
+
"static/chunks/app/api/robovoice/robots/[robotId]/media-health/route-0952b44bda5bfb6d.js"
|
|
286
|
+
],
|
|
287
|
+
"/api/turn-credentials/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/turn-credentials/route-0952b44bda5bfb6d.js"
|
|
293
293
|
],
|
|
294
294
|
"/api/robopark/transcripts/route": [
|
|
295
295
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
@@ -319,13 +319,6 @@
|
|
|
319
319
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
320
320
|
"static/chunks/app/robopark/[...path]/route-0952b44bda5bfb6d.js"
|
|
321
321
|
],
|
|
322
|
-
"/fed/media/robots/[robotId]/video_feed/route": [
|
|
323
|
-
"static/chunks/webpack-5252e5254da079b5.js",
|
|
324
|
-
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
325
|
-
"static/chunks/1255-404bb8de49c90395.js",
|
|
326
|
-
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
327
|
-
"static/chunks/app/fed/media/robots/[robotId]/video_feed/route-0952b44bda5bfb6d.js"
|
|
328
|
-
],
|
|
329
322
|
"/fed/[...path]/route": [
|
|
330
323
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
331
324
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
@@ -333,12 +326,12 @@
|
|
|
333
326
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
334
327
|
"static/chunks/app/fed/[...path]/route-0952b44bda5bfb6d.js"
|
|
335
328
|
],
|
|
336
|
-
"/
|
|
329
|
+
"/fed/media/robots/[robotId]/video_feed/route": [
|
|
337
330
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
338
331
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
339
332
|
"static/chunks/1255-404bb8de49c90395.js",
|
|
340
333
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
341
|
-
"static/chunks/app/
|
|
334
|
+
"static/chunks/app/fed/media/robots/[robotId]/video_feed/route-0952b44bda5bfb6d.js"
|
|
342
335
|
],
|
|
343
336
|
"/tailnet/route": [
|
|
344
337
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
@@ -347,12 +340,12 @@
|
|
|
347
340
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
348
341
|
"static/chunks/app/tailnet/route-0952b44bda5bfb6d.js"
|
|
349
342
|
],
|
|
350
|
-
"/
|
|
343
|
+
"/robopark/api/robots/[robotId]/stream/route": [
|
|
351
344
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
352
345
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
353
346
|
"static/chunks/1255-404bb8de49c90395.js",
|
|
354
347
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
355
|
-
"static/chunks/app/
|
|
348
|
+
"static/chunks/app/robopark/api/robots/[robotId]/stream/route-0952b44bda5bfb6d.js"
|
|
356
349
|
],
|
|
357
350
|
"/(app)/opengraph-image-xg4ifa/route": [
|
|
358
351
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
@@ -361,6 +354,13 @@
|
|
|
361
354
|
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
362
355
|
"static/chunks/app/(app)/opengraph-image-xg4ifa/route-0952b44bda5bfb6d.js"
|
|
363
356
|
],
|
|
357
|
+
"/vendor/livekit-client.umd.js/route": [
|
|
358
|
+
"static/chunks/webpack-5252e5254da079b5.js",
|
|
359
|
+
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
360
|
+
"static/chunks/1255-404bb8de49c90395.js",
|
|
361
|
+
"static/chunks/main-app-a1f59168303c7f84.js",
|
|
362
|
+
"static/chunks/app/vendor/livekit-client.umd.js/route-0952b44bda5bfb6d.js"
|
|
363
|
+
],
|
|
364
364
|
"/robopark/api/[...path]/route": [
|
|
365
365
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
366
366
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
@@ -389,6 +389,13 @@
|
|
|
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
|
+
],
|
|
392
399
|
"/(app)/voice/page": [
|
|
393
400
|
"static/chunks/webpack-5252e5254da079b5.js",
|
|
394
401
|
"static/chunks/4bd1b696-f785427dddbba9fb.js",
|
|
@@ -400,13 +407,6 @@
|
|
|
400
407
|
"static/chunks/9880-53262785284464cc.js",
|
|
401
408
|
"static/chunks/2333-43c39acb531f7d4e.js",
|
|
402
409
|
"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
|
}
|
|
@@ -1,58 +1,58 @@
|
|
|
1
1
|
{
|
|
2
2
|
"/_not-found/page": "/_not-found",
|
|
3
|
-
"/api/device-character/route": "/api/device-character",
|
|
4
3
|
"/api/download-piper-model/route": "/api/download-piper-model",
|
|
5
4
|
"/api/models/route": "/api/models",
|
|
6
|
-
"/api/
|
|
5
|
+
"/api/device-character/route": "/api/device-character",
|
|
7
6
|
"/api/prompt/route": "/api/prompt",
|
|
8
7
|
"/api/reload-tools/route": "/api/reload-tools",
|
|
9
|
-
"/api/
|
|
8
|
+
"/api/prewarm/route": "/api/prewarm",
|
|
10
9
|
"/api/robopark/robots/[robotId]/operations/route": "/api/robopark/robots/[robotId]/operations",
|
|
11
|
-
"/api/robopark/
|
|
10
|
+
"/api/robopark/devices/[deviceId]/control/route": "/api/robopark/devices/[deviceId]/control",
|
|
12
11
|
"/api/robopark/sessions/[sessionId]/end/route": "/api/robopark/sessions/[sessionId]/end",
|
|
13
|
-
"/api/
|
|
12
|
+
"/api/robopark/transcripts/[sessionId]/route": "/api/robopark/transcripts/[sessionId]",
|
|
14
13
|
"/api/setup/complete/route": "/api/setup/complete",
|
|
15
|
-
"/api/setup/
|
|
14
|
+
"/api/setup/status/route": "/api/setup/status",
|
|
16
15
|
"/api/setup/test-groq/route": "/api/setup/test-groq",
|
|
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",
|
|
19
18
|
"/api/test-tts/route": "/api/test-tts",
|
|
20
|
-
"/api/voices/route": "/api/voices",
|
|
21
19
|
"/api/wake-word/models/route": "/api/wake-word/models",
|
|
20
|
+
"/api/setup/test-ollama/route": "/api/setup/test-ollama",
|
|
22
21
|
"/api/wake-word/status/route": "/api/wake-word/status",
|
|
23
22
|
"/api/wake-word/upload/route": "/api/wake-word/upload",
|
|
23
|
+
"/api/voices/route": "/api/voices",
|
|
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
28
|
"/api/robopark/character-ai/route": "/api/robopark/character-ai",
|
|
29
|
-
"/api/robopark/camera-token/route": "/api/robopark/camera-token",
|
|
30
29
|
"/api/robopark/device-access/route": "/api/robopark/device-access",
|
|
31
30
|
"/api/robopark/live-rooms/route": "/api/robopark/live-rooms",
|
|
32
|
-
"/api/robopark/
|
|
31
|
+
"/api/robopark/camera-token/route": "/api/robopark/camera-token",
|
|
33
32
|
"/api/robopark/robots/route": "/api/robopark/robots",
|
|
33
|
+
"/api/robopark/monitor-token/route": "/api/robopark/monitor-token",
|
|
34
34
|
"/api/robopark/servers/[serverId]/metrics/route": "/api/robopark/servers/[serverId]/metrics",
|
|
35
35
|
"/api/robopark/servers/route": "/api/robopark/servers",
|
|
36
|
-
"/api/robopark/servers/[serverId]/route": "/api/robopark/servers/[serverId]",
|
|
37
36
|
"/api/robopark/sessions/route": "/api/robopark/sessions",
|
|
38
|
-
"/api/
|
|
37
|
+
"/api/robopark/servers/[serverId]/route": "/api/robopark/servers/[serverId]",
|
|
39
38
|
"/api/robopark/vision-caption/route": "/api/robopark/vision-caption",
|
|
40
39
|
"/api/settings/route": "/api/settings",
|
|
41
|
-
"/api/turn-credentials/route": "/api/turn-credentials",
|
|
42
40
|
"/api/robopark/robots/[robotId]/voice-engine/route": "/api/robopark/robots/[robotId]/voice-engine",
|
|
41
|
+
"/api/robovoice/robots/[robotId]/media-health/route": "/api/robovoice/robots/[robotId]/media-health",
|
|
42
|
+
"/api/turn-credentials/route": "/api/turn-credentials",
|
|
43
43
|
"/api/robopark/transcripts/route": "/api/robopark/transcripts",
|
|
44
44
|
"/camera-grid/route": "/camera-grid",
|
|
45
45
|
"/api/wake/route": "/api/wake",
|
|
46
46
|
"/robopark/[...path]/route": "/robopark/[...path]",
|
|
47
|
-
"/fed/media/robots/[robotId]/video_feed/route": "/fed/media/robots/[robotId]/video_feed",
|
|
48
47
|
"/fed/[...path]/route": "/fed/[...path]",
|
|
49
|
-
"/
|
|
48
|
+
"/fed/media/robots/[robotId]/video_feed/route": "/fed/media/robots/[robotId]/video_feed",
|
|
50
49
|
"/tailnet/route": "/tailnet",
|
|
51
|
-
"/
|
|
50
|
+
"/robopark/api/robots/[robotId]/stream/route": "/robopark/api/robots/[robotId]/stream",
|
|
52
51
|
"/(app)/opengraph-image-xg4ifa/route": "/opengraph-image-xg4ifa",
|
|
52
|
+
"/vendor/livekit-client.umd.js/route": "/vendor/livekit-client.umd.js",
|
|
53
53
|
"/robopark/api/[...path]/route": "/robopark/api/[...path]",
|
|
54
54
|
"/voice-tester/page": "/voice-tester",
|
|
55
55
|
"/robopark/page": "/robopark",
|
|
56
|
-
"/(app)/
|
|
57
|
-
"/(app)/page": "/"
|
|
56
|
+
"/(app)/page": "/",
|
|
57
|
+
"/(app)/voice/page": "/voice"
|
|
58
58
|
}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"ampDevFiles": [],
|
|
7
7
|
"lowPriorityFiles": [
|
|
8
|
-
"static/
|
|
9
|
-
"static/
|
|
8
|
+
"static/18X2Kr5XPUrJm-7AyZRXE/_buildManifest.js",
|
|
9
|
+
"static/18X2Kr5XPUrJm-7AyZRXE/_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": "
|
|
38
|
-
"previewModeSigningKey": "
|
|
39
|
-
"previewModeEncryptionKey": "
|
|
37
|
+
"previewModeId": "e4bb612eaf8c0837c4fc576f3f648ae9",
|
|
38
|
+
"previewModeSigningKey": "449d9090b133c8e88fbec8137fcee0f4222da2bfde4a44f5523ce7f6efe448fa",
|
|
39
|
+
"previewModeEncryptionKey": "4ba9486101a12bd914afb2752de27f55c248b3a44319fe054f740e5cb3d9419a"
|
|
40
40
|
}
|
|
41
41
|
}
|
|
@@ -1,58 +1,58 @@
|
|
|
1
1
|
{
|
|
2
2
|
"/_not-found/page": "app/_not-found/page.js",
|
|
3
|
-
"/api/device-character/route": "app/api/device-character/route.js",
|
|
4
3
|
"/api/download-piper-model/route": "app/api/download-piper-model/route.js",
|
|
5
4
|
"/api/models/route": "app/api/models/route.js",
|
|
6
|
-
"/api/
|
|
5
|
+
"/api/device-character/route": "app/api/device-character/route.js",
|
|
7
6
|
"/api/prompt/route": "app/api/prompt/route.js",
|
|
8
7
|
"/api/reload-tools/route": "app/api/reload-tools/route.js",
|
|
9
|
-
"/api/
|
|
8
|
+
"/api/prewarm/route": "app/api/prewarm/route.js",
|
|
10
9
|
"/api/robopark/robots/[robotId]/operations/route": "app/api/robopark/robots/[robotId]/operations/route.js",
|
|
11
|
-
"/api/robopark/
|
|
10
|
+
"/api/robopark/devices/[deviceId]/control/route": "app/api/robopark/devices/[deviceId]/control/route.js",
|
|
12
11
|
"/api/robopark/sessions/[sessionId]/end/route": "app/api/robopark/sessions/[sessionId]/end/route.js",
|
|
13
|
-
"/api/
|
|
12
|
+
"/api/robopark/transcripts/[sessionId]/route": "app/api/robopark/transcripts/[sessionId]/route.js",
|
|
14
13
|
"/api/setup/complete/route": "app/api/setup/complete/route.js",
|
|
15
|
-
"/api/setup/
|
|
14
|
+
"/api/setup/status/route": "app/api/setup/status/route.js",
|
|
16
15
|
"/api/setup/test-groq/route": "app/api/setup/test-groq/route.js",
|
|
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",
|
|
19
18
|
"/api/test-tts/route": "app/api/test-tts/route.js",
|
|
20
|
-
"/api/voices/route": "app/api/voices/route.js",
|
|
21
19
|
"/api/wake-word/models/route": "app/api/wake-word/models/route.js",
|
|
20
|
+
"/api/setup/test-ollama/route": "app/api/setup/test-ollama/route.js",
|
|
22
21
|
"/api/wake-word/status/route": "app/api/wake-word/status/route.js",
|
|
23
22
|
"/api/wake-word/upload/route": "app/api/wake-word/upload/route.js",
|
|
23
|
+
"/api/voices/route": "app/api/voices/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
28
|
"/api/robopark/character-ai/route": "app/api/robopark/character-ai/route.js",
|
|
29
|
-
"/api/robopark/camera-token/route": "app/api/robopark/camera-token/route.js",
|
|
30
29
|
"/api/robopark/device-access/route": "app/api/robopark/device-access/route.js",
|
|
31
30
|
"/api/robopark/live-rooms/route": "app/api/robopark/live-rooms/route.js",
|
|
32
|
-
"/api/robopark/
|
|
31
|
+
"/api/robopark/camera-token/route": "app/api/robopark/camera-token/route.js",
|
|
33
32
|
"/api/robopark/robots/route": "app/api/robopark/robots/route.js",
|
|
33
|
+
"/api/robopark/monitor-token/route": "app/api/robopark/monitor-token/route.js",
|
|
34
34
|
"/api/robopark/servers/[serverId]/metrics/route": "app/api/robopark/servers/[serverId]/metrics/route.js",
|
|
35
35
|
"/api/robopark/servers/route": "app/api/robopark/servers/route.js",
|
|
36
|
-
"/api/robopark/servers/[serverId]/route": "app/api/robopark/servers/[serverId]/route.js",
|
|
37
36
|
"/api/robopark/sessions/route": "app/api/robopark/sessions/route.js",
|
|
38
|
-
"/api/
|
|
37
|
+
"/api/robopark/servers/[serverId]/route": "app/api/robopark/servers/[serverId]/route.js",
|
|
39
38
|
"/api/robopark/vision-caption/route": "app/api/robopark/vision-caption/route.js",
|
|
40
39
|
"/api/settings/route": "app/api/settings/route.js",
|
|
41
|
-
"/api/turn-credentials/route": "app/api/turn-credentials/route.js",
|
|
42
40
|
"/api/robopark/robots/[robotId]/voice-engine/route": "app/api/robopark/robots/[robotId]/voice-engine/route.js",
|
|
41
|
+
"/api/robovoice/robots/[robotId]/media-health/route": "app/api/robovoice/robots/[robotId]/media-health/route.js",
|
|
42
|
+
"/api/turn-credentials/route": "app/api/turn-credentials/route.js",
|
|
43
43
|
"/api/robopark/transcripts/route": "app/api/robopark/transcripts/route.js",
|
|
44
44
|
"/camera-grid/route": "app/camera-grid/route.js",
|
|
45
45
|
"/api/wake/route": "app/api/wake/route.js",
|
|
46
46
|
"/robopark/[...path]/route": "app/robopark/[...path]/route.js",
|
|
47
|
-
"/fed/media/robots/[robotId]/video_feed/route": "app/fed/media/robots/[robotId]/video_feed/route.js",
|
|
48
47
|
"/fed/[...path]/route": "app/fed/[...path]/route.js",
|
|
49
|
-
"/
|
|
48
|
+
"/fed/media/robots/[robotId]/video_feed/route": "app/fed/media/robots/[robotId]/video_feed/route.js",
|
|
50
49
|
"/tailnet/route": "app/tailnet/route.js",
|
|
51
|
-
"/
|
|
50
|
+
"/robopark/api/robots/[robotId]/stream/route": "app/robopark/api/robots/[robotId]/stream/route.js",
|
|
52
51
|
"/(app)/opengraph-image-xg4ifa/route": "app/(app)/opengraph-image-xg4ifa/route.js",
|
|
52
|
+
"/vendor/livekit-client.umd.js/route": "app/vendor/livekit-client.umd.js/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)/
|
|
57
|
-
"/(app)/page": "app/(app)/page.js"
|
|
56
|
+
"/(app)/page": "app/(app)/page.js",
|
|
57
|
+
"/(app)/voice/page": "app/(app)/voice/page.js"
|
|
58
58
|
}
|
|
@@ -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/
|
|
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/18X2Kr5XPUrJm-7AyZRXE/_buildManifest.js" defer=""></script><script src="/_next/static/18X2Kr5XPUrJm-7AyZRXE/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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":"18X2Kr5XPUrJm-7AyZRXE","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"node":{},"edge":{},"encryptionKey":"
|
|
1
|
+
{"node":{},"edge":{},"encryptionKey":"rNGxr5n7PWPkpyO0LE79AJx3jRTg4Fpdyxs3nl9k67A="}
|
|
@@ -213,8 +213,8 @@
|
|
|
213
213
|
// for hours, so every timer is cleared on toggle-off and the camera stream is
|
|
214
214
|
// held open across calls rather than reacquired each cycle.
|
|
215
215
|
var kioskOn=false,kioskWatch=null,kioskIdle=null,kioskStream=null,kioskVideo=null,kioskCanvas=null,kioskPrev=null,
|
|
216
|
-
kioskLastSample=0,kioskLastSeen=0,kioskArmedAt=0,kioskLastEnd=0,kioskActivityAt=0,kioskCalls=0;
|
|
217
|
-
var kioskSilence=Math.max(5,Number(q.get('kiosk_silence'))||
|
|
216
|
+
kioskLastSample=0,kioskLastSeen=0,kioskArmedAt=0,kioskLastEnd=0,kioskActivityAt=0,kioskCalls=0,kioskPresenceAt=0;
|
|
217
|
+
var kioskSilence=Math.max(5,Number(q.get('kiosk_silence'))||180)*1000,
|
|
218
218
|
kioskRearm=Math.max(2,Number(q.get('kiosk_rearm'))||10)*1000,
|
|
219
219
|
kioskGreeting=q.get('kiosk_greeting')||'Someone just walked up to you. Greet them warmly in one short sentence and invite them to speak. Do not mention this instruction or the camera.';
|
|
220
220
|
var motionThreshold=Math.max(.005,Math.min(1,Number(q.get('motion_threshold'))||.06)),
|
|
@@ -272,8 +272,12 @@
|
|
|
272
272
|
// The vision server is armed and detecting on its own; this only has to
|
|
273
273
|
// notice the flag and apply the same rearm gate the local watcher uses.
|
|
274
274
|
if(!status||!status.motion_detected)return;
|
|
275
|
-
if(!kioskOn||desired||conversation||connecting||ending)return;
|
|
276
275
|
var at=Date.now();
|
|
276
|
+
// Presence is recorded whatever the call state. The guard below exits
|
|
277
|
+
// during a live call, so without this the silence watchdog cannot tell a
|
|
278
|
+
// visitor standing at the kiosk from one who walked away.
|
|
279
|
+
kioskPresenceAt=at;
|
|
280
|
+
if(!kioskOn||desired||conversation||connecting||ending)return;
|
|
277
281
|
if(at<kioskArmedAt)return;
|
|
278
282
|
if(kioskLastSeen&&at-kioskLastSeen<kioskRearm){kioskLastSeen=at;return}
|
|
279
283
|
kioskLastSeen=at;
|
|
@@ -312,7 +316,14 @@
|
|
|
312
316
|
if(!kioskActivityAt)return;
|
|
313
317
|
var quiet=Date.now()-kioskActivityAt;
|
|
314
318
|
if(quiet<kioskSilence)return;
|
|
315
|
-
|
|
319
|
+
// Silence alone is not proof the visitor left. Motion keeps the call
|
|
320
|
+
// alive: a pause to think, or an agent waiting for a reply, used to hang
|
|
321
|
+
// up on someone standing right at the kiosk -- kiosk_idle was the end
|
|
322
|
+
// reason on nine of the last twelve sessions across six characters.
|
|
323
|
+
// Only hang up once the frame has also been empty for motionAbsence.
|
|
324
|
+
var absent=kioskPresenceAt?Date.now()-kioskPresenceAt:Infinity;
|
|
325
|
+
if(absent<motionAbsence){kioskActivityAt=Date.now();return}
|
|
326
|
+
event('kiosk_call','ok','Ending call after silence',{silent_ms:Math.round(quiet),absent_ms:absent===Infinity?null:Math.round(absent)});
|
|
316
327
|
// Rearm only after the visitor has actually left the frame; kioskArmedAt
|
|
317
328
|
// gates the watcher and kioskLastSeen forces a fresh quiet period.
|
|
318
329
|
kioskArmedAt=Date.now()+kioskRearm;
|
|
File without changes
|
/package/ui/standalone/.next/static/{s3wbgjEOXxnix6TIbmHp0 → 18X2Kr5XPUrJm-7AyZRXE}/_ssgManifest.js
RENAMED
|
File without changes
|