robopark 3.1.2 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -5
- package/dist/robopark/frontend-service.js +80 -0
- package/dist/robopark/serve.js +2 -2
- package/dist/robopark/standalone.js +30 -8
- package/package.json +34 -3
- package/ui/ROBOVOICE_BUILD.json +9 -0
- package/ui/standalone/.next/BUILD_ID +1 -0
- package/ui/standalone/.next/app-build-manifest.json +391 -0
- package/ui/standalone/.next/app-path-routes-manifest.json +55 -0
- package/ui/standalone/.next/build-manifest.json +33 -0
- package/ui/standalone/.next/package.json +1 -0
- package/ui/standalone/.next/prerender-manifest.json +41 -0
- package/ui/standalone/.next/react-loadable-manifest.json +14 -0
- package/ui/standalone/.next/required-server-files.json +362 -0
- package/ui/standalone/.next/routes-manifest.json +246 -0
- package/ui/standalone/.next/server/app/(app)/opengraph-image-xg4ifa/route.js +1 -0
- package/ui/standalone/.next/server/app/(app)/opengraph-image-xg4ifa/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/(app)/opengraph-image-xg4ifa/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/(app)/page.js +2 -0
- package/ui/standalone/.next/server/app/(app)/page.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/(app)/page_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/(app)/voice/page.js +12 -0
- package/ui/standalone/.next/server/app/(app)/voice/page.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/(app)/voice/page_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/_not-found/page.js +12 -0
- package/ui/standalone/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/connection-details/route.js +1 -0
- package/ui/standalone/.next/server/app/api/connection-details/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/connection-details/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/device-character/route.js +1 -0
- package/ui/standalone/.next/server/app/api/device-character/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/device-character/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/download-piper-model/route.js +1 -0
- package/ui/standalone/.next/server/app/api/download-piper-model/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/download-piper-model/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/model-status/route.js +1 -0
- package/ui/standalone/.next/server/app/api/model-status/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/model-status/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/models/route.js +1 -0
- package/ui/standalone/.next/server/app/api/models/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/models/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/prewarm/route.js +1 -0
- package/ui/standalone/.next/server/app/api/prewarm/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/prewarm/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/prompt/route.js +1 -0
- package/ui/standalone/.next/server/app/api/prompt/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/prompt/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/reload-tools/route.js +1 -0
- package/ui/standalone/.next/server/app/api/reload-tools/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/reload-tools/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/camera-token/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/camera-token/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/camera-token/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/character-ai/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/character-ai/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/character-ai/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/device-access/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/device-access/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/device-access/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/devices/[deviceId]/control/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/devices/[deviceId]/control/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/devices/[deviceId]/control/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/live-rooms/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/live-rooms/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/live-rooms/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/monitor-token/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/monitor-token/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/monitor-token/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/operations/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/operations/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/operations/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/voice-engine/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/voice-engine/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/voice-engine/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/metrics/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/metrics/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/metrics/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/sessions/[sessionId]/end/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/sessions/[sessionId]/end/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/sessions/[sessionId]/end/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/sessions/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/sessions/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/sessions/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/transcripts/[sessionId]/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/transcripts/[sessionId]/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/transcripts/[sessionId]/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/transcripts/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/transcripts/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/transcripts/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robovoice/robots/[robotId]/media-health/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robovoice/robots/[robotId]/media-health/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robovoice/robots/[robotId]/media-health/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/settings/route.js +1 -0
- package/ui/standalone/.next/server/app/api/settings/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/complete/route.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/complete/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/setup/complete/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/status/route.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/status/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/setup/status/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-groq/route.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-groq/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-groq/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-hass/route.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-hass/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-hass/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-n8n/route.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-n8n/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-n8n/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-ollama/route.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-ollama/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-ollama/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/test-tts/route.js +1 -0
- package/ui/standalone/.next/server/app/api/test-tts/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/test-tts/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/turn-credentials/route.js +1 -0
- package/ui/standalone/.next/server/app/api/turn-credentials/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/turn-credentials/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/voices/route.js +1 -0
- package/ui/standalone/.next/server/app/api/voices/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/voices/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/wake/route.js +1 -0
- package/ui/standalone/.next/server/app/api/wake/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/wake/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/models/route.js +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/models/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/models/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/status/route.js +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/status/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/status/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/upload/route.js +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/upload/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/upload/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/favicon.ico/route.js +1 -0
- package/ui/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/favicon.ico.body +0 -0
- package/ui/standalone/.next/server/app/favicon.ico.meta +1 -0
- package/ui/standalone/.next/server/app/fed/[...path]/route.js +4 -0
- package/ui/standalone/.next/server/app/fed/[...path]/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/fed/[...path]/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/fed/media/robots/[robotId]/video_feed/route.js +1 -0
- package/ui/standalone/.next/server/app/fed/media/robots/[robotId]/video_feed/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/fed/media/robots/[robotId]/video_feed/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/robopark/[...path]/route.js +1 -0
- package/ui/standalone/.next/server/app/robopark/[...path]/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/robopark/[...path]/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/robopark/api/[...path]/route.js +1 -0
- package/ui/standalone/.next/server/app/robopark/api/[...path]/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/robopark/api/[...path]/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/robopark/api/robots/[robotId]/stream/route.js +1 -0
- package/ui/standalone/.next/server/app/robopark/api/robots/[robotId]/stream/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/robopark/api/robots/[robotId]/stream/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/robopark/page.js +2 -0
- package/ui/standalone/.next/server/app/robopark/page.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/robopark/page_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/tailnet/route.js +1 -0
- package/ui/standalone/.next/server/app/tailnet/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/tailnet/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/vendor/livekit-client.umd.js/route.js +1 -0
- package/ui/standalone/.next/server/app/vendor/livekit-client.umd.js/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/vendor/livekit-client.umd.js/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/voice-tester/page.js +2 -0
- package/ui/standalone/.next/server/app/voice-tester/page.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/voice-tester/page_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app-paths-manifest.json +55 -0
- package/ui/standalone/.next/server/chunks/1428.js +1 -0
- package/ui/standalone/.next/server/chunks/1692.js +1 -0
- package/ui/standalone/.next/server/chunks/37.js +1 -0
- package/ui/standalone/.next/server/chunks/4876.js +1 -0
- package/ui/standalone/.next/server/chunks/5232.js +9 -0
- package/ui/standalone/.next/server/chunks/5455.js +11 -0
- package/ui/standalone/.next/server/chunks/5611.js +6 -0
- package/ui/standalone/.next/server/chunks/5873.js +22 -0
- package/ui/standalone/.next/server/chunks/6018.js +1 -0
- package/ui/standalone/.next/server/chunks/8755.js +1 -0
- package/ui/standalone/.next/server/chunks/9077.js +11 -0
- package/ui/standalone/.next/server/functions-config-manifest.json +9 -0
- package/ui/standalone/.next/server/middleware-build-manifest.js +1 -0
- package/ui/standalone/.next/server/middleware-manifest.json +6 -0
- package/ui/standalone/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/ui/standalone/.next/server/next-font-manifest.js +1 -0
- package/ui/standalone/.next/server/next-font-manifest.json +1 -0
- package/ui/standalone/.next/server/pages/500.html +1 -0
- package/ui/standalone/.next/server/pages/_app.js +1 -0
- package/ui/standalone/.next/server/pages/_app.js.nft.json +1 -0
- package/ui/standalone/.next/server/pages/_document.js +1 -0
- package/ui/standalone/.next/server/pages/_document.js.nft.json +1 -0
- package/ui/standalone/.next/server/pages/_error.js +19 -0
- package/ui/standalone/.next/server/pages/_error.js.nft.json +1 -0
- package/ui/standalone/.next/server/pages-manifest.json +5 -0
- package/ui/standalone/.next/server/server-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/server-reference-manifest.json +1 -0
- package/ui/standalone/.next/server/webpack-runtime.js +1 -0
- package/ui/standalone/.next/static/T3eGaQUuZNb6rhEStcouc/_buildManifest.js +1 -0
- package/ui/standalone/.next/static/T3eGaQUuZNb6rhEStcouc/_ssgManifest.js +1 -0
- package/ui/standalone/.next/static/chunks/1255-404bb8de49c90395.js +1 -0
- package/ui/standalone/.next/static/chunks/144d3bae-bd5d150c0cab972e.js +1 -0
- package/ui/standalone/.next/static/chunks/1646.9123ee47220ed70b.js +1 -0
- package/ui/standalone/.next/static/chunks/2333-43c39acb531f7d4e.js +3 -0
- package/ui/standalone/.next/static/chunks/4bd1b696-f785427dddbba9fb.js +1 -0
- package/ui/standalone/.next/static/chunks/5139.c5e46d26064a85db.js +1 -0
- package/ui/standalone/.next/static/chunks/76e8f37e-2ae0e3fe7b44d874.js +1 -0
- package/ui/standalone/.next/static/chunks/9880-53262785284464cc.js +1 -0
- package/ui/standalone/.next/static/chunks/adfb71a7-625c1b5ebd039b6a.js +1 -0
- package/ui/standalone/.next/static/chunks/app/(app)/layout-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/(app)/opengraph-image-xg4ifa/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/(app)/page-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/(app)/voice/page-72d72d9a70d9c1d4.js +1 -0
- package/ui/standalone/.next/static/chunks/app/_not-found/page-cfd7daa82d71540c.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/connection-details/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/device-character/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/download-piper-model/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/model-status/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/models/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/prewarm/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/prompt/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/reload-tools/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/camera-token/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/character-ai/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/device-access/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/devices/[deviceId]/control/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/live-rooms/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/monitor-token/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/robots/[robotId]/operations/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/robots/[robotId]/voice-engine/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/robots/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/servers/[serverId]/metrics/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/servers/[serverId]/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/servers/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/sessions/[sessionId]/end/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/sessions/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/transcripts/[sessionId]/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/transcripts/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robovoice/robots/[robotId]/media-health/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/settings/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/setup/complete/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/setup/status/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/setup/test-groq/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/setup/test-hass/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/setup/test-n8n/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/setup/test-ollama/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/test-tts/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/turn-credentials/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/voices/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/wake/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/wake-word/models/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/wake-word/status/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/wake-word/upload/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/fed/[...path]/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/fed/media/robots/[robotId]/video_feed/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/layout-fcce963da1d8220f.js +1 -0
- package/ui/standalone/.next/static/chunks/app/robopark/[...path]/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/robopark/api/[...path]/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/robopark/api/robots/[robotId]/stream/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/robopark/page-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/tailnet/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/vendor/livekit-client.umd.js/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/voice-tester/page-ae699e048e0eb834.js +1 -0
- package/ui/standalone/.next/static/chunks/framework-e60c938074ff7136.js +1 -0
- package/ui/standalone/.next/static/chunks/main-9e24e8708ff075fc.js +1 -0
- package/ui/standalone/.next/static/chunks/main-app-a1f59168303c7f84.js +1 -0
- package/ui/standalone/.next/static/chunks/pages/_app-131c90850aef965b.js +1 -0
- package/ui/standalone/.next/static/chunks/pages/_error-e4ba546eb376bdf4.js +1 -0
- package/ui/standalone/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/ui/standalone/.next/static/chunks/webpack-5252e5254da079b5.js +1 -0
- package/ui/standalone/.next/static/css/3f478a573f9be82e.css +1 -0
- package/ui/standalone/.next/static/css/51560c4af1d5a21f.css +1 -0
- package/ui/standalone/.next/static/media/27fe93087559d480-s.p.otf +0 -0
- package/ui/standalone/.next/static/media/4d3869dd8a56345a-s.p.otf +0 -0
- package/ui/standalone/.next/static/media/63f3bb9ce29e22d5-s.p.otf +0 -0
- package/ui/standalone/.next/static/media/79e1c5d0f2fe9f68-s.p.otf +0 -0
- package/ui/standalone/.next/static/media/8bf7b2ceda89477b-s.p.woff2 +0 -0
- package/ui/standalone/.next/static/media/98baa4a7809fbf72-s.woff2 +0 -0
- package/ui/standalone/.next/static/media/f7650dfaa438c37c-s.woff2 +0 -0
- package/ui/standalone/package.json +57 -0
- package/ui/standalone/public/caal-logo.svg +3 -0
- package/ui/standalone/public/commit-mono-400-regular.woff +0 -0
- package/ui/standalone/public/cwl-logo-round.png +0 -0
- package/ui/standalone/public/everett-light.woff +0 -0
- package/ui/standalone/public/hey_cal.ppn +0 -0
- package/ui/standalone/public/install-robot-kiosk.sh +242 -0
- package/ui/standalone/public/lk-logo-dark.svg +18 -0
- package/ui/standalone/public/lk-logo.svg +18 -0
- package/ui/standalone/public/lk-wordmark.svg +12 -0
- package/ui/standalone/public/opengraph-image-bg.png +0 -0
- package/ui/standalone/public/porcupine_params.pv +0 -0
- package/ui/standalone/public/robopark-control.html +9200 -0
- package/ui/standalone/public/static/robopark/barracuda.png +0 -0
- package/ui/standalone/public/static/robopark/bmw.png +0 -0
- package/ui/standalone/public/static/robopark/jaguar.png +0 -0
- package/ui/standalone/public/static/robopark/magnus.jpg +0 -0
- package/ui/standalone/public/static/robopark/panda.png +0 -0
- package/ui/standalone/public/static/robopark/tesla.png +0 -0
- package/ui/standalone/public/static/robopark/titan.jpg +0 -0
- package/ui/standalone/public/static/robopark/volt.png +0 -0
- package/ui/standalone/public/tailnet/index.html +8995 -0
- package/ui/standalone/public/transcript-analytics.html +72 -0
- package/ui/standalone/public/vendor/elevenlabs-client.iife.js +24200 -0
- package/ui/standalone/public/vendor/livekit-client.umd.js +2 -0
- package/ui/standalone/public/voice-join.html +89 -0
- package/ui/standalone/server.js +38 -0
package/README.md
CHANGED
|
@@ -24,12 +24,22 @@ On the gateway:
|
|
|
24
24
|
robopark --password '<activation-password>' gateway start --public-url https://robopark.example.com
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
`gateway start` owns
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
`gateway start` owns the complete stable ROBOVOICE frontend and RoboPark
|
|
28
|
+
services:
|
|
29
|
+
|
|
30
|
+
- Full ROBOVOICE stable frontend: port 47913
|
|
31
|
+
- Park Control Center: `/robopark` or `/robopark-control.html`
|
|
32
|
+
- Voice operations: `/voice`
|
|
33
|
+
- Voice tester: `/voice-tester`
|
|
34
|
+
- Managed character joins: `/voice-join.html`
|
|
30
35
|
- Private scheduler/API service: port 8080
|
|
36
|
+
- Private control compatibility adapter: port 47914
|
|
31
37
|
|
|
32
|
-
|
|
38
|
+
The frontend is the prebuilt production output from
|
|
39
|
+
`MrYungCEO/ROBOVOICE-main` stable, including its React application, Next API
|
|
40
|
+
routes, static Park operator UI, native microphone handling, live room/camera
|
|
41
|
+
discovery, transcript surfaces, settings, setup, and device operations.
|
|
42
|
+
InfiniCode is not required to render or operate any RoboPark surface.
|
|
33
43
|
|
|
34
44
|
The gateway prints a complete connection command. Run it once on a device:
|
|
35
45
|
|
|
@@ -82,7 +92,7 @@ RoboPark owns device connectivity, camera/audio, sessions, transcripts, and the
|
|
|
82
92
|
operator gateway. InfiniCode is an optional management/orchestration layer and
|
|
83
93
|
is not a runtime dependency.
|
|
84
94
|
|
|
85
|
-
The 3.
|
|
95
|
+
The 3.2 artifact deliberately preserves the current scheduler, Pi client,
|
|
86
96
|
ElevenLabs conversation worker, camera/vision service, screen relay, motor
|
|
87
97
|
bridge, configuration filenames, and service names. Existing enrolled robots
|
|
88
98
|
are grandfathered on upgrade and continue using their current device identity
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
function packageRoot() {
|
|
6
|
+
return dirname(dirname(dirname(fileURLToPath(import.meta.url))));
|
|
7
|
+
}
|
|
8
|
+
export function frontendServerPath() {
|
|
9
|
+
return join(packageRoot(), 'ui', 'standalone', 'server.js');
|
|
10
|
+
}
|
|
11
|
+
async function waitForFrontend(port, child) {
|
|
12
|
+
const deadline = Date.now() + 60_000;
|
|
13
|
+
let lastError = 'not responding';
|
|
14
|
+
while (Date.now() < deadline) {
|
|
15
|
+
if (child.exitCode !== null) {
|
|
16
|
+
throw new Error(`ROBOVOICE frontend exited before readiness (code ${child.exitCode})`);
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const response = await fetch(`http://127.0.0.1:${port}/fed/ui-build`, {
|
|
20
|
+
signal: AbortSignal.timeout(1_500),
|
|
21
|
+
});
|
|
22
|
+
if (response.ok) {
|
|
23
|
+
const body = await response.json();
|
|
24
|
+
if (body.source === 'robovoice-control' && body.build)
|
|
25
|
+
return;
|
|
26
|
+
lastError = `unexpected UI owner ${JSON.stringify(body)}`;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
lastError = `HTTP ${response.status}`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
lastError = error instanceof Error ? error.message : String(error);
|
|
34
|
+
}
|
|
35
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
36
|
+
}
|
|
37
|
+
throw new Error(`ROBOVOICE frontend did not become healthy on port ${port}: ${lastError}`);
|
|
38
|
+
}
|
|
39
|
+
export async function startFrontendService(opts) {
|
|
40
|
+
const server = frontendServerPath();
|
|
41
|
+
if (!existsSync(server)) {
|
|
42
|
+
throw new Error('packaged ROBOVOICE stable frontend is missing; reinstall robopark');
|
|
43
|
+
}
|
|
44
|
+
const root = dirname(server);
|
|
45
|
+
const child = spawn(process.execPath, [server], {
|
|
46
|
+
cwd: root,
|
|
47
|
+
windowsHide: true,
|
|
48
|
+
stdio: ['ignore', 'inherit', 'inherit'],
|
|
49
|
+
env: {
|
|
50
|
+
...process.env,
|
|
51
|
+
NODE_ENV: 'production',
|
|
52
|
+
HOSTNAME: opts.host,
|
|
53
|
+
PORT: String(opts.port),
|
|
54
|
+
ROBOPARK_CONTROL_URL: `http://127.0.0.1:${opts.adapterPort}`,
|
|
55
|
+
ROBOPARK_SCHEDULER_URL: `http://127.0.0.1:${opts.schedulerPort}`,
|
|
56
|
+
SCHEDULER_URL: `http://127.0.0.1:${opts.schedulerPort}`,
|
|
57
|
+
V2_SCHEDULER_URL: `http://127.0.0.1:${opts.schedulerPort}`,
|
|
58
|
+
NEXT_PUBLIC_LIVEKIT_URL: process.env.NEXT_PUBLIC_LIVEKIT_URL || 'auto',
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
try {
|
|
62
|
+
await waitForFrontend(opts.port, child);
|
|
63
|
+
return child;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
try {
|
|
67
|
+
child.kill('SIGTERM');
|
|
68
|
+
}
|
|
69
|
+
catch { /* already stopped */ }
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
export function stopFrontendService(child) {
|
|
74
|
+
if (!child || child.exitCode !== null)
|
|
75
|
+
return;
|
|
76
|
+
try {
|
|
77
|
+
child.kill('SIGTERM');
|
|
78
|
+
}
|
|
79
|
+
catch { /* already stopped */ }
|
|
80
|
+
}
|
package/dist/robopark/serve.js
CHANGED
|
@@ -255,11 +255,11 @@ function openBrowser(url) {
|
|
|
255
255
|
// Use detached platform-native launchers so robopark serve remains usable
|
|
256
256
|
// from terminals and does not inherit browser stdio or lifecycle.
|
|
257
257
|
const command = process.platform === 'win32'
|
|
258
|
-
? '
|
|
258
|
+
? 'explorer.exe'
|
|
259
259
|
: process.platform === 'darwin'
|
|
260
260
|
? 'open'
|
|
261
261
|
: 'xdg-open';
|
|
262
|
-
const args =
|
|
262
|
+
const args = [url];
|
|
263
263
|
try {
|
|
264
264
|
spawn(command, args, { detached: true, stdio: 'ignore', windowsHide: true }).unref();
|
|
265
265
|
}
|
|
@@ -8,6 +8,7 @@ import { registerAutoStart } from './auto-start.js';
|
|
|
8
8
|
import { findPython, findSchedulerPath, prepareRobotPython } from './python-env.js';
|
|
9
9
|
import { roboparkServe, schedulerHealthy } from './serve.js';
|
|
10
10
|
import { startControlServer } from './control-server.js';
|
|
11
|
+
import { startFrontendService, stopFrontendService } from './frontend-service.js';
|
|
11
12
|
import { activateFromPairing } from './access.js';
|
|
12
13
|
const STATE_DIR = process.env.ROBOPARK_HOME
|
|
13
14
|
? resolve(process.env.ROBOPARK_HOME)
|
|
@@ -201,11 +202,14 @@ function openBrowser(url) {
|
|
|
201
202
|
// Use detached platform-native launchers so this CLI remains usable from
|
|
202
203
|
// terminals and does not inherit browser stdio or lifecycle.
|
|
203
204
|
const command = process.platform === 'win32'
|
|
204
|
-
? '
|
|
205
|
+
? 'explorer.exe'
|
|
205
206
|
: process.platform === 'darwin'
|
|
206
207
|
? 'open'
|
|
207
208
|
: 'xdg-open';
|
|
208
|
-
|
|
209
|
+
// Do not route URLs through cmd.exe. Character links contain "&"; cmd
|
|
210
|
+
// treats each query parameter after the first as a separate shell command,
|
|
211
|
+
// causing the browser to receive an incomplete join link.
|
|
212
|
+
const args = [url];
|
|
209
213
|
try {
|
|
210
214
|
spawn(command, args, { detached: true, stdio: 'ignore', windowsHide: true }).unref();
|
|
211
215
|
}
|
|
@@ -487,7 +491,7 @@ export async function gatewayStart(opts) {
|
|
|
487
491
|
if (!response.ok)
|
|
488
492
|
return false;
|
|
489
493
|
const body = await response.json();
|
|
490
|
-
return body.owner === 'robopark';
|
|
494
|
+
return body.owner === 'robopark' || body.source === 'robovoice-control';
|
|
491
495
|
})
|
|
492
496
|
.catch(() => false),
|
|
493
497
|
]);
|
|
@@ -499,7 +503,8 @@ export async function gatewayStart(opts) {
|
|
|
499
503
|
}
|
|
500
504
|
const token = await createGatewayTokenAt(healthUrl, schedulerUrl, controlPort);
|
|
501
505
|
const controlHost = new URL(schedulerUrl).hostname;
|
|
502
|
-
console.log(` Park Control Center: ${chalk.cyan(`http://${controlHost}:${controlPort}
|
|
506
|
+
console.log(` Park Control Center: ${chalk.cyan(`http://${controlHost}:${controlPort}/robopark`)}`);
|
|
507
|
+
console.log(` Voice operations: ${chalk.cyan(`http://${controlHost}:${controlPort}/voice`)}`);
|
|
503
508
|
console.log(chalk.bold('\n Connect a device'));
|
|
504
509
|
console.log(` ${chalk.cyan(`robopark connect ${token}`)}`);
|
|
505
510
|
console.log(chalk.dim(' This pairing token expires in 24 hours. Connected devices keep their own durable credentials.\n'));
|
|
@@ -524,14 +529,26 @@ async function createGatewayTokenAt(localUrl, publicUrl, controlPort) {
|
|
|
524
529
|
export async function runGatewayService(opts) {
|
|
525
530
|
const schedulerPort = positiveInteger(opts.port, 8080, 'port');
|
|
526
531
|
const controlPort = positiveInteger(opts.controlPort, 47913, 'control port');
|
|
532
|
+
const adapterPort = controlPort + 1;
|
|
527
533
|
const host = opts.host ?? '0.0.0.0';
|
|
528
534
|
const control = await startControlServer({
|
|
529
535
|
host,
|
|
530
|
-
port:
|
|
536
|
+
port: adapterPort,
|
|
531
537
|
schedulerUrl: `http://127.0.0.1:${schedulerPort}`,
|
|
532
538
|
});
|
|
533
|
-
|
|
539
|
+
let frontend;
|
|
534
540
|
try {
|
|
541
|
+
frontend = await startFrontendService({
|
|
542
|
+
host,
|
|
543
|
+
port: controlPort,
|
|
544
|
+
adapterPort,
|
|
545
|
+
schedulerPort,
|
|
546
|
+
});
|
|
547
|
+
console.log(` ROBOVOICE stable frontend listening on ${host}:${controlPort}`);
|
|
548
|
+
console.log(` RoboPark control adapter listening on ${host}:${adapterPort}`);
|
|
549
|
+
const frontendExit = new Promise(resolve => {
|
|
550
|
+
frontend?.once('exit', () => resolve('frontend-exit'));
|
|
551
|
+
});
|
|
535
552
|
await roboparkServe({
|
|
536
553
|
port: String(schedulerPort),
|
|
537
554
|
host,
|
|
@@ -542,13 +559,18 @@ export async function runGatewayService(opts) {
|
|
|
542
559
|
// roboparkServe wires the scheduler child's lifecycle handlers and then
|
|
543
560
|
// returns once it has launched. Keep this outer gateway process alive so
|
|
544
561
|
// the sibling Control Center server is not closed by the finally block.
|
|
545
|
-
|
|
546
|
-
const stop = () => resolve();
|
|
562
|
+
const shutdown = new Promise(resolve => {
|
|
563
|
+
const stop = () => resolve('shutdown');
|
|
547
564
|
process.once('SIGINT', stop);
|
|
548
565
|
process.once('SIGTERM', stop);
|
|
549
566
|
});
|
|
567
|
+
const ended = await Promise.race([shutdown, frontendExit]);
|
|
568
|
+
if (ended === 'frontend-exit') {
|
|
569
|
+
throw new Error('ROBOVOICE stable frontend stopped unexpectedly');
|
|
570
|
+
}
|
|
550
571
|
}
|
|
551
572
|
finally {
|
|
573
|
+
stopFrontendService(frontend);
|
|
552
574
|
control.close();
|
|
553
575
|
}
|
|
554
576
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "robopark",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Standalone packaged RoboPark control center and supervised robot runtime.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
"bin/robopark.js",
|
|
11
11
|
"dist",
|
|
12
|
+
"ui",
|
|
12
13
|
"scripts/windows-shim-fix.cjs",
|
|
13
14
|
"scheduler",
|
|
14
15
|
"pi-client",
|
|
@@ -29,17 +30,42 @@
|
|
|
29
30
|
"node": ">=20"
|
|
30
31
|
},
|
|
31
32
|
"dependencies": {
|
|
33
|
+
"@livekit/components-react": "^2.9.15",
|
|
34
|
+
"@livekit/protocol": "^1.40.0",
|
|
35
|
+
"@phosphor-icons/react": "^2.1.8",
|
|
36
|
+
"@picovoice/porcupine-web": "^4.0.0",
|
|
37
|
+
"@picovoice/web-voice-processor": "^4.0.9",
|
|
38
|
+
"@radix-ui/react-select": "^2.2.5",
|
|
39
|
+
"@radix-ui/react-slot": "^1.2.3",
|
|
40
|
+
"@radix-ui/react-toggle": "^1.1.9",
|
|
41
|
+
"@radix-ui/react-tooltip": "^1.2.8",
|
|
42
|
+
"buffer-image-size": "^0.6.4",
|
|
43
|
+
"class-variance-authority": "^0.7.1",
|
|
32
44
|
"chalk": "^5.3.0",
|
|
45
|
+
"clsx": "^2.1.1",
|
|
33
46
|
"commander": "^12.1.0",
|
|
34
47
|
"conf": "^12.0.0",
|
|
35
48
|
"execa": "^9.3.0",
|
|
49
|
+
"jose": "^6.0.12",
|
|
36
50
|
"livekit-client": "^2.20.1",
|
|
37
|
-
"
|
|
51
|
+
"livekit-server-sdk": "^2.13.2",
|
|
52
|
+
"mime": "^4.0.7",
|
|
53
|
+
"motion": "^12.16.0",
|
|
54
|
+
"next": "15.5.21",
|
|
55
|
+
"next-themes": "^0.4.6",
|
|
56
|
+
"react": "^19.0.0",
|
|
57
|
+
"react-dom": "^19.0.0",
|
|
58
|
+
"sonner": "^2.0.7",
|
|
59
|
+
"tailwind-merge": "^3.3.0"
|
|
38
60
|
},
|
|
39
61
|
"devDependencies": {
|
|
40
62
|
"@types/node": "^20.14.0",
|
|
41
63
|
"typescript": "^5.4.5"
|
|
42
64
|
},
|
|
65
|
+
"overrides": {
|
|
66
|
+
"postcss": "8.5.23",
|
|
67
|
+
"sharp": "0.35.3"
|
|
68
|
+
},
|
|
43
69
|
"keywords": [
|
|
44
70
|
"robopark",
|
|
45
71
|
"fleet",
|
|
@@ -54,6 +80,11 @@
|
|
|
54
80
|
"license": "MIT",
|
|
55
81
|
"repository": {
|
|
56
82
|
"type": "git",
|
|
57
|
-
"url": "https://github.com/MrYungCEO/
|
|
83
|
+
"url": "https://github.com/MrYungCEO/ROBOVOICE-main"
|
|
84
|
+
},
|
|
85
|
+
"roboparkBuild": {
|
|
86
|
+
"uiSourceBranch": "stable",
|
|
87
|
+
"uiSourceCommit": "be4ecb0",
|
|
88
|
+
"uiBuild": "production-native-microphone-20260725-8"
|
|
58
89
|
}
|
|
59
90
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"repository": "https://github.com/MrYungCEO/ROBOVOICE-main",
|
|
3
|
+
"branch": "stable",
|
|
4
|
+
"commit": "be4ecb0",
|
|
5
|
+
"control_ui_build": "production-native-microphone-20260725-8",
|
|
6
|
+
"next_build_version": "15.5.7",
|
|
7
|
+
"next_runtime_version": "15.5.21",
|
|
8
|
+
"packaged_at": "2026-07-26"
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
T3eGaQUuZNb6rhEStcouc
|