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.
Files changed (312) hide show
  1. package/README.md +15 -5
  2. package/dist/robopark/frontend-service.js +80 -0
  3. package/dist/robopark/serve.js +2 -2
  4. package/dist/robopark/standalone.js +30 -8
  5. package/package.json +34 -3
  6. package/ui/ROBOVOICE_BUILD.json +9 -0
  7. package/ui/standalone/.next/BUILD_ID +1 -0
  8. package/ui/standalone/.next/app-build-manifest.json +391 -0
  9. package/ui/standalone/.next/app-path-routes-manifest.json +55 -0
  10. package/ui/standalone/.next/build-manifest.json +33 -0
  11. package/ui/standalone/.next/package.json +1 -0
  12. package/ui/standalone/.next/prerender-manifest.json +41 -0
  13. package/ui/standalone/.next/react-loadable-manifest.json +14 -0
  14. package/ui/standalone/.next/required-server-files.json +362 -0
  15. package/ui/standalone/.next/routes-manifest.json +246 -0
  16. package/ui/standalone/.next/server/app/(app)/opengraph-image-xg4ifa/route.js +1 -0
  17. package/ui/standalone/.next/server/app/(app)/opengraph-image-xg4ifa/route.js.nft.json +1 -0
  18. package/ui/standalone/.next/server/app/(app)/opengraph-image-xg4ifa/route_client-reference-manifest.js +1 -0
  19. package/ui/standalone/.next/server/app/(app)/page.js +2 -0
  20. package/ui/standalone/.next/server/app/(app)/page.js.nft.json +1 -0
  21. package/ui/standalone/.next/server/app/(app)/page_client-reference-manifest.js +1 -0
  22. package/ui/standalone/.next/server/app/(app)/voice/page.js +12 -0
  23. package/ui/standalone/.next/server/app/(app)/voice/page.js.nft.json +1 -0
  24. package/ui/standalone/.next/server/app/(app)/voice/page_client-reference-manifest.js +1 -0
  25. package/ui/standalone/.next/server/app/_not-found/page.js +12 -0
  26. package/ui/standalone/.next/server/app/_not-found/page.js.nft.json +1 -0
  27. package/ui/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  28. package/ui/standalone/.next/server/app/api/connection-details/route.js +1 -0
  29. package/ui/standalone/.next/server/app/api/connection-details/route.js.nft.json +1 -0
  30. package/ui/standalone/.next/server/app/api/connection-details/route_client-reference-manifest.js +1 -0
  31. package/ui/standalone/.next/server/app/api/device-character/route.js +1 -0
  32. package/ui/standalone/.next/server/app/api/device-character/route.js.nft.json +1 -0
  33. package/ui/standalone/.next/server/app/api/device-character/route_client-reference-manifest.js +1 -0
  34. package/ui/standalone/.next/server/app/api/download-piper-model/route.js +1 -0
  35. package/ui/standalone/.next/server/app/api/download-piper-model/route.js.nft.json +1 -0
  36. package/ui/standalone/.next/server/app/api/download-piper-model/route_client-reference-manifest.js +1 -0
  37. package/ui/standalone/.next/server/app/api/model-status/route.js +1 -0
  38. package/ui/standalone/.next/server/app/api/model-status/route.js.nft.json +1 -0
  39. package/ui/standalone/.next/server/app/api/model-status/route_client-reference-manifest.js +1 -0
  40. package/ui/standalone/.next/server/app/api/models/route.js +1 -0
  41. package/ui/standalone/.next/server/app/api/models/route.js.nft.json +1 -0
  42. package/ui/standalone/.next/server/app/api/models/route_client-reference-manifest.js +1 -0
  43. package/ui/standalone/.next/server/app/api/prewarm/route.js +1 -0
  44. package/ui/standalone/.next/server/app/api/prewarm/route.js.nft.json +1 -0
  45. package/ui/standalone/.next/server/app/api/prewarm/route_client-reference-manifest.js +1 -0
  46. package/ui/standalone/.next/server/app/api/prompt/route.js +1 -0
  47. package/ui/standalone/.next/server/app/api/prompt/route.js.nft.json +1 -0
  48. package/ui/standalone/.next/server/app/api/prompt/route_client-reference-manifest.js +1 -0
  49. package/ui/standalone/.next/server/app/api/reload-tools/route.js +1 -0
  50. package/ui/standalone/.next/server/app/api/reload-tools/route.js.nft.json +1 -0
  51. package/ui/standalone/.next/server/app/api/reload-tools/route_client-reference-manifest.js +1 -0
  52. package/ui/standalone/.next/server/app/api/robopark/camera-token/route.js +1 -0
  53. package/ui/standalone/.next/server/app/api/robopark/camera-token/route.js.nft.json +1 -0
  54. package/ui/standalone/.next/server/app/api/robopark/camera-token/route_client-reference-manifest.js +1 -0
  55. package/ui/standalone/.next/server/app/api/robopark/character-ai/route.js +1 -0
  56. package/ui/standalone/.next/server/app/api/robopark/character-ai/route.js.nft.json +1 -0
  57. package/ui/standalone/.next/server/app/api/robopark/character-ai/route_client-reference-manifest.js +1 -0
  58. package/ui/standalone/.next/server/app/api/robopark/device-access/route.js +1 -0
  59. package/ui/standalone/.next/server/app/api/robopark/device-access/route.js.nft.json +1 -0
  60. package/ui/standalone/.next/server/app/api/robopark/device-access/route_client-reference-manifest.js +1 -0
  61. package/ui/standalone/.next/server/app/api/robopark/devices/[deviceId]/control/route.js +1 -0
  62. package/ui/standalone/.next/server/app/api/robopark/devices/[deviceId]/control/route.js.nft.json +1 -0
  63. package/ui/standalone/.next/server/app/api/robopark/devices/[deviceId]/control/route_client-reference-manifest.js +1 -0
  64. package/ui/standalone/.next/server/app/api/robopark/live-rooms/route.js +1 -0
  65. package/ui/standalone/.next/server/app/api/robopark/live-rooms/route.js.nft.json +1 -0
  66. package/ui/standalone/.next/server/app/api/robopark/live-rooms/route_client-reference-manifest.js +1 -0
  67. package/ui/standalone/.next/server/app/api/robopark/monitor-token/route.js +1 -0
  68. package/ui/standalone/.next/server/app/api/robopark/monitor-token/route.js.nft.json +1 -0
  69. package/ui/standalone/.next/server/app/api/robopark/monitor-token/route_client-reference-manifest.js +1 -0
  70. package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/operations/route.js +1 -0
  71. package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/operations/route.js.nft.json +1 -0
  72. package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/operations/route_client-reference-manifest.js +1 -0
  73. package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/voice-engine/route.js +1 -0
  74. package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/voice-engine/route.js.nft.json +1 -0
  75. package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/voice-engine/route_client-reference-manifest.js +1 -0
  76. package/ui/standalone/.next/server/app/api/robopark/robots/route.js +1 -0
  77. package/ui/standalone/.next/server/app/api/robopark/robots/route.js.nft.json +1 -0
  78. package/ui/standalone/.next/server/app/api/robopark/robots/route_client-reference-manifest.js +1 -0
  79. package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/metrics/route.js +1 -0
  80. package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/metrics/route.js.nft.json +1 -0
  81. package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/metrics/route_client-reference-manifest.js +1 -0
  82. package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/route.js +1 -0
  83. package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/route.js.nft.json +1 -0
  84. package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/route_client-reference-manifest.js +1 -0
  85. package/ui/standalone/.next/server/app/api/robopark/servers/route.js +1 -0
  86. package/ui/standalone/.next/server/app/api/robopark/servers/route.js.nft.json +1 -0
  87. package/ui/standalone/.next/server/app/api/robopark/servers/route_client-reference-manifest.js +1 -0
  88. package/ui/standalone/.next/server/app/api/robopark/sessions/[sessionId]/end/route.js +1 -0
  89. package/ui/standalone/.next/server/app/api/robopark/sessions/[sessionId]/end/route.js.nft.json +1 -0
  90. package/ui/standalone/.next/server/app/api/robopark/sessions/[sessionId]/end/route_client-reference-manifest.js +1 -0
  91. package/ui/standalone/.next/server/app/api/robopark/sessions/route.js +1 -0
  92. package/ui/standalone/.next/server/app/api/robopark/sessions/route.js.nft.json +1 -0
  93. package/ui/standalone/.next/server/app/api/robopark/sessions/route_client-reference-manifest.js +1 -0
  94. package/ui/standalone/.next/server/app/api/robopark/transcripts/[sessionId]/route.js +1 -0
  95. package/ui/standalone/.next/server/app/api/robopark/transcripts/[sessionId]/route.js.nft.json +1 -0
  96. package/ui/standalone/.next/server/app/api/robopark/transcripts/[sessionId]/route_client-reference-manifest.js +1 -0
  97. package/ui/standalone/.next/server/app/api/robopark/transcripts/route.js +1 -0
  98. package/ui/standalone/.next/server/app/api/robopark/transcripts/route.js.nft.json +1 -0
  99. package/ui/standalone/.next/server/app/api/robopark/transcripts/route_client-reference-manifest.js +1 -0
  100. package/ui/standalone/.next/server/app/api/robovoice/robots/[robotId]/media-health/route.js +1 -0
  101. package/ui/standalone/.next/server/app/api/robovoice/robots/[robotId]/media-health/route.js.nft.json +1 -0
  102. package/ui/standalone/.next/server/app/api/robovoice/robots/[robotId]/media-health/route_client-reference-manifest.js +1 -0
  103. package/ui/standalone/.next/server/app/api/settings/route.js +1 -0
  104. package/ui/standalone/.next/server/app/api/settings/route.js.nft.json +1 -0
  105. package/ui/standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -0
  106. package/ui/standalone/.next/server/app/api/setup/complete/route.js +1 -0
  107. package/ui/standalone/.next/server/app/api/setup/complete/route.js.nft.json +1 -0
  108. package/ui/standalone/.next/server/app/api/setup/complete/route_client-reference-manifest.js +1 -0
  109. package/ui/standalone/.next/server/app/api/setup/status/route.js +1 -0
  110. package/ui/standalone/.next/server/app/api/setup/status/route.js.nft.json +1 -0
  111. package/ui/standalone/.next/server/app/api/setup/status/route_client-reference-manifest.js +1 -0
  112. package/ui/standalone/.next/server/app/api/setup/test-groq/route.js +1 -0
  113. package/ui/standalone/.next/server/app/api/setup/test-groq/route.js.nft.json +1 -0
  114. package/ui/standalone/.next/server/app/api/setup/test-groq/route_client-reference-manifest.js +1 -0
  115. package/ui/standalone/.next/server/app/api/setup/test-hass/route.js +1 -0
  116. package/ui/standalone/.next/server/app/api/setup/test-hass/route.js.nft.json +1 -0
  117. package/ui/standalone/.next/server/app/api/setup/test-hass/route_client-reference-manifest.js +1 -0
  118. package/ui/standalone/.next/server/app/api/setup/test-n8n/route.js +1 -0
  119. package/ui/standalone/.next/server/app/api/setup/test-n8n/route.js.nft.json +1 -0
  120. package/ui/standalone/.next/server/app/api/setup/test-n8n/route_client-reference-manifest.js +1 -0
  121. package/ui/standalone/.next/server/app/api/setup/test-ollama/route.js +1 -0
  122. package/ui/standalone/.next/server/app/api/setup/test-ollama/route.js.nft.json +1 -0
  123. package/ui/standalone/.next/server/app/api/setup/test-ollama/route_client-reference-manifest.js +1 -0
  124. package/ui/standalone/.next/server/app/api/test-tts/route.js +1 -0
  125. package/ui/standalone/.next/server/app/api/test-tts/route.js.nft.json +1 -0
  126. package/ui/standalone/.next/server/app/api/test-tts/route_client-reference-manifest.js +1 -0
  127. package/ui/standalone/.next/server/app/api/turn-credentials/route.js +1 -0
  128. package/ui/standalone/.next/server/app/api/turn-credentials/route.js.nft.json +1 -0
  129. package/ui/standalone/.next/server/app/api/turn-credentials/route_client-reference-manifest.js +1 -0
  130. package/ui/standalone/.next/server/app/api/voices/route.js +1 -0
  131. package/ui/standalone/.next/server/app/api/voices/route.js.nft.json +1 -0
  132. package/ui/standalone/.next/server/app/api/voices/route_client-reference-manifest.js +1 -0
  133. package/ui/standalone/.next/server/app/api/wake/route.js +1 -0
  134. package/ui/standalone/.next/server/app/api/wake/route.js.nft.json +1 -0
  135. package/ui/standalone/.next/server/app/api/wake/route_client-reference-manifest.js +1 -0
  136. package/ui/standalone/.next/server/app/api/wake-word/models/route.js +1 -0
  137. package/ui/standalone/.next/server/app/api/wake-word/models/route.js.nft.json +1 -0
  138. package/ui/standalone/.next/server/app/api/wake-word/models/route_client-reference-manifest.js +1 -0
  139. package/ui/standalone/.next/server/app/api/wake-word/status/route.js +1 -0
  140. package/ui/standalone/.next/server/app/api/wake-word/status/route.js.nft.json +1 -0
  141. package/ui/standalone/.next/server/app/api/wake-word/status/route_client-reference-manifest.js +1 -0
  142. package/ui/standalone/.next/server/app/api/wake-word/upload/route.js +1 -0
  143. package/ui/standalone/.next/server/app/api/wake-word/upload/route.js.nft.json +1 -0
  144. package/ui/standalone/.next/server/app/api/wake-word/upload/route_client-reference-manifest.js +1 -0
  145. package/ui/standalone/.next/server/app/favicon.ico/route.js +1 -0
  146. package/ui/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -0
  147. package/ui/standalone/.next/server/app/favicon.ico.body +0 -0
  148. package/ui/standalone/.next/server/app/favicon.ico.meta +1 -0
  149. package/ui/standalone/.next/server/app/fed/[...path]/route.js +4 -0
  150. package/ui/standalone/.next/server/app/fed/[...path]/route.js.nft.json +1 -0
  151. package/ui/standalone/.next/server/app/fed/[...path]/route_client-reference-manifest.js +1 -0
  152. package/ui/standalone/.next/server/app/fed/media/robots/[robotId]/video_feed/route.js +1 -0
  153. package/ui/standalone/.next/server/app/fed/media/robots/[robotId]/video_feed/route.js.nft.json +1 -0
  154. package/ui/standalone/.next/server/app/fed/media/robots/[robotId]/video_feed/route_client-reference-manifest.js +1 -0
  155. package/ui/standalone/.next/server/app/robopark/[...path]/route.js +1 -0
  156. package/ui/standalone/.next/server/app/robopark/[...path]/route.js.nft.json +1 -0
  157. package/ui/standalone/.next/server/app/robopark/[...path]/route_client-reference-manifest.js +1 -0
  158. package/ui/standalone/.next/server/app/robopark/api/[...path]/route.js +1 -0
  159. package/ui/standalone/.next/server/app/robopark/api/[...path]/route.js.nft.json +1 -0
  160. package/ui/standalone/.next/server/app/robopark/api/[...path]/route_client-reference-manifest.js +1 -0
  161. package/ui/standalone/.next/server/app/robopark/api/robots/[robotId]/stream/route.js +1 -0
  162. package/ui/standalone/.next/server/app/robopark/api/robots/[robotId]/stream/route.js.nft.json +1 -0
  163. package/ui/standalone/.next/server/app/robopark/api/robots/[robotId]/stream/route_client-reference-manifest.js +1 -0
  164. package/ui/standalone/.next/server/app/robopark/page.js +2 -0
  165. package/ui/standalone/.next/server/app/robopark/page.js.nft.json +1 -0
  166. package/ui/standalone/.next/server/app/robopark/page_client-reference-manifest.js +1 -0
  167. package/ui/standalone/.next/server/app/tailnet/route.js +1 -0
  168. package/ui/standalone/.next/server/app/tailnet/route.js.nft.json +1 -0
  169. package/ui/standalone/.next/server/app/tailnet/route_client-reference-manifest.js +1 -0
  170. package/ui/standalone/.next/server/app/vendor/livekit-client.umd.js/route.js +1 -0
  171. package/ui/standalone/.next/server/app/vendor/livekit-client.umd.js/route.js.nft.json +1 -0
  172. package/ui/standalone/.next/server/app/vendor/livekit-client.umd.js/route_client-reference-manifest.js +1 -0
  173. package/ui/standalone/.next/server/app/voice-tester/page.js +2 -0
  174. package/ui/standalone/.next/server/app/voice-tester/page.js.nft.json +1 -0
  175. package/ui/standalone/.next/server/app/voice-tester/page_client-reference-manifest.js +1 -0
  176. package/ui/standalone/.next/server/app-paths-manifest.json +55 -0
  177. package/ui/standalone/.next/server/chunks/1428.js +1 -0
  178. package/ui/standalone/.next/server/chunks/1692.js +1 -0
  179. package/ui/standalone/.next/server/chunks/37.js +1 -0
  180. package/ui/standalone/.next/server/chunks/4876.js +1 -0
  181. package/ui/standalone/.next/server/chunks/5232.js +9 -0
  182. package/ui/standalone/.next/server/chunks/5455.js +11 -0
  183. package/ui/standalone/.next/server/chunks/5611.js +6 -0
  184. package/ui/standalone/.next/server/chunks/5873.js +22 -0
  185. package/ui/standalone/.next/server/chunks/6018.js +1 -0
  186. package/ui/standalone/.next/server/chunks/8755.js +1 -0
  187. package/ui/standalone/.next/server/chunks/9077.js +11 -0
  188. package/ui/standalone/.next/server/functions-config-manifest.json +9 -0
  189. package/ui/standalone/.next/server/middleware-build-manifest.js +1 -0
  190. package/ui/standalone/.next/server/middleware-manifest.json +6 -0
  191. package/ui/standalone/.next/server/middleware-react-loadable-manifest.js +1 -0
  192. package/ui/standalone/.next/server/next-font-manifest.js +1 -0
  193. package/ui/standalone/.next/server/next-font-manifest.json +1 -0
  194. package/ui/standalone/.next/server/pages/500.html +1 -0
  195. package/ui/standalone/.next/server/pages/_app.js +1 -0
  196. package/ui/standalone/.next/server/pages/_app.js.nft.json +1 -0
  197. package/ui/standalone/.next/server/pages/_document.js +1 -0
  198. package/ui/standalone/.next/server/pages/_document.js.nft.json +1 -0
  199. package/ui/standalone/.next/server/pages/_error.js +19 -0
  200. package/ui/standalone/.next/server/pages/_error.js.nft.json +1 -0
  201. package/ui/standalone/.next/server/pages-manifest.json +5 -0
  202. package/ui/standalone/.next/server/server-reference-manifest.js +1 -0
  203. package/ui/standalone/.next/server/server-reference-manifest.json +1 -0
  204. package/ui/standalone/.next/server/webpack-runtime.js +1 -0
  205. package/ui/standalone/.next/static/T3eGaQUuZNb6rhEStcouc/_buildManifest.js +1 -0
  206. package/ui/standalone/.next/static/T3eGaQUuZNb6rhEStcouc/_ssgManifest.js +1 -0
  207. package/ui/standalone/.next/static/chunks/1255-404bb8de49c90395.js +1 -0
  208. package/ui/standalone/.next/static/chunks/144d3bae-bd5d150c0cab972e.js +1 -0
  209. package/ui/standalone/.next/static/chunks/1646.9123ee47220ed70b.js +1 -0
  210. package/ui/standalone/.next/static/chunks/2333-43c39acb531f7d4e.js +3 -0
  211. package/ui/standalone/.next/static/chunks/4bd1b696-f785427dddbba9fb.js +1 -0
  212. package/ui/standalone/.next/static/chunks/5139.c5e46d26064a85db.js +1 -0
  213. package/ui/standalone/.next/static/chunks/76e8f37e-2ae0e3fe7b44d874.js +1 -0
  214. package/ui/standalone/.next/static/chunks/9880-53262785284464cc.js +1 -0
  215. package/ui/standalone/.next/static/chunks/adfb71a7-625c1b5ebd039b6a.js +1 -0
  216. package/ui/standalone/.next/static/chunks/app/(app)/layout-5f312b128a0caf75.js +1 -0
  217. package/ui/standalone/.next/static/chunks/app/(app)/opengraph-image-xg4ifa/route-5f312b128a0caf75.js +1 -0
  218. package/ui/standalone/.next/static/chunks/app/(app)/page-5f312b128a0caf75.js +1 -0
  219. package/ui/standalone/.next/static/chunks/app/(app)/voice/page-72d72d9a70d9c1d4.js +1 -0
  220. package/ui/standalone/.next/static/chunks/app/_not-found/page-cfd7daa82d71540c.js +1 -0
  221. package/ui/standalone/.next/static/chunks/app/api/connection-details/route-5f312b128a0caf75.js +1 -0
  222. package/ui/standalone/.next/static/chunks/app/api/device-character/route-5f312b128a0caf75.js +1 -0
  223. package/ui/standalone/.next/static/chunks/app/api/download-piper-model/route-5f312b128a0caf75.js +1 -0
  224. package/ui/standalone/.next/static/chunks/app/api/model-status/route-5f312b128a0caf75.js +1 -0
  225. package/ui/standalone/.next/static/chunks/app/api/models/route-5f312b128a0caf75.js +1 -0
  226. package/ui/standalone/.next/static/chunks/app/api/prewarm/route-5f312b128a0caf75.js +1 -0
  227. package/ui/standalone/.next/static/chunks/app/api/prompt/route-5f312b128a0caf75.js +1 -0
  228. package/ui/standalone/.next/static/chunks/app/api/reload-tools/route-5f312b128a0caf75.js +1 -0
  229. package/ui/standalone/.next/static/chunks/app/api/robopark/camera-token/route-5f312b128a0caf75.js +1 -0
  230. package/ui/standalone/.next/static/chunks/app/api/robopark/character-ai/route-5f312b128a0caf75.js +1 -0
  231. package/ui/standalone/.next/static/chunks/app/api/robopark/device-access/route-5f312b128a0caf75.js +1 -0
  232. package/ui/standalone/.next/static/chunks/app/api/robopark/devices/[deviceId]/control/route-5f312b128a0caf75.js +1 -0
  233. package/ui/standalone/.next/static/chunks/app/api/robopark/live-rooms/route-5f312b128a0caf75.js +1 -0
  234. package/ui/standalone/.next/static/chunks/app/api/robopark/monitor-token/route-5f312b128a0caf75.js +1 -0
  235. package/ui/standalone/.next/static/chunks/app/api/robopark/robots/[robotId]/operations/route-5f312b128a0caf75.js +1 -0
  236. package/ui/standalone/.next/static/chunks/app/api/robopark/robots/[robotId]/voice-engine/route-5f312b128a0caf75.js +1 -0
  237. package/ui/standalone/.next/static/chunks/app/api/robopark/robots/route-5f312b128a0caf75.js +1 -0
  238. package/ui/standalone/.next/static/chunks/app/api/robopark/servers/[serverId]/metrics/route-5f312b128a0caf75.js +1 -0
  239. package/ui/standalone/.next/static/chunks/app/api/robopark/servers/[serverId]/route-5f312b128a0caf75.js +1 -0
  240. package/ui/standalone/.next/static/chunks/app/api/robopark/servers/route-5f312b128a0caf75.js +1 -0
  241. package/ui/standalone/.next/static/chunks/app/api/robopark/sessions/[sessionId]/end/route-5f312b128a0caf75.js +1 -0
  242. package/ui/standalone/.next/static/chunks/app/api/robopark/sessions/route-5f312b128a0caf75.js +1 -0
  243. package/ui/standalone/.next/static/chunks/app/api/robopark/transcripts/[sessionId]/route-5f312b128a0caf75.js +1 -0
  244. package/ui/standalone/.next/static/chunks/app/api/robopark/transcripts/route-5f312b128a0caf75.js +1 -0
  245. package/ui/standalone/.next/static/chunks/app/api/robovoice/robots/[robotId]/media-health/route-5f312b128a0caf75.js +1 -0
  246. package/ui/standalone/.next/static/chunks/app/api/settings/route-5f312b128a0caf75.js +1 -0
  247. package/ui/standalone/.next/static/chunks/app/api/setup/complete/route-5f312b128a0caf75.js +1 -0
  248. package/ui/standalone/.next/static/chunks/app/api/setup/status/route-5f312b128a0caf75.js +1 -0
  249. package/ui/standalone/.next/static/chunks/app/api/setup/test-groq/route-5f312b128a0caf75.js +1 -0
  250. package/ui/standalone/.next/static/chunks/app/api/setup/test-hass/route-5f312b128a0caf75.js +1 -0
  251. package/ui/standalone/.next/static/chunks/app/api/setup/test-n8n/route-5f312b128a0caf75.js +1 -0
  252. package/ui/standalone/.next/static/chunks/app/api/setup/test-ollama/route-5f312b128a0caf75.js +1 -0
  253. package/ui/standalone/.next/static/chunks/app/api/test-tts/route-5f312b128a0caf75.js +1 -0
  254. package/ui/standalone/.next/static/chunks/app/api/turn-credentials/route-5f312b128a0caf75.js +1 -0
  255. package/ui/standalone/.next/static/chunks/app/api/voices/route-5f312b128a0caf75.js +1 -0
  256. package/ui/standalone/.next/static/chunks/app/api/wake/route-5f312b128a0caf75.js +1 -0
  257. package/ui/standalone/.next/static/chunks/app/api/wake-word/models/route-5f312b128a0caf75.js +1 -0
  258. package/ui/standalone/.next/static/chunks/app/api/wake-word/status/route-5f312b128a0caf75.js +1 -0
  259. package/ui/standalone/.next/static/chunks/app/api/wake-word/upload/route-5f312b128a0caf75.js +1 -0
  260. package/ui/standalone/.next/static/chunks/app/fed/[...path]/route-5f312b128a0caf75.js +1 -0
  261. package/ui/standalone/.next/static/chunks/app/fed/media/robots/[robotId]/video_feed/route-5f312b128a0caf75.js +1 -0
  262. package/ui/standalone/.next/static/chunks/app/layout-fcce963da1d8220f.js +1 -0
  263. package/ui/standalone/.next/static/chunks/app/robopark/[...path]/route-5f312b128a0caf75.js +1 -0
  264. package/ui/standalone/.next/static/chunks/app/robopark/api/[...path]/route-5f312b128a0caf75.js +1 -0
  265. package/ui/standalone/.next/static/chunks/app/robopark/api/robots/[robotId]/stream/route-5f312b128a0caf75.js +1 -0
  266. package/ui/standalone/.next/static/chunks/app/robopark/page-5f312b128a0caf75.js +1 -0
  267. package/ui/standalone/.next/static/chunks/app/tailnet/route-5f312b128a0caf75.js +1 -0
  268. package/ui/standalone/.next/static/chunks/app/vendor/livekit-client.umd.js/route-5f312b128a0caf75.js +1 -0
  269. package/ui/standalone/.next/static/chunks/app/voice-tester/page-ae699e048e0eb834.js +1 -0
  270. package/ui/standalone/.next/static/chunks/framework-e60c938074ff7136.js +1 -0
  271. package/ui/standalone/.next/static/chunks/main-9e24e8708ff075fc.js +1 -0
  272. package/ui/standalone/.next/static/chunks/main-app-a1f59168303c7f84.js +1 -0
  273. package/ui/standalone/.next/static/chunks/pages/_app-131c90850aef965b.js +1 -0
  274. package/ui/standalone/.next/static/chunks/pages/_error-e4ba546eb376bdf4.js +1 -0
  275. package/ui/standalone/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  276. package/ui/standalone/.next/static/chunks/webpack-5252e5254da079b5.js +1 -0
  277. package/ui/standalone/.next/static/css/3f478a573f9be82e.css +1 -0
  278. package/ui/standalone/.next/static/css/51560c4af1d5a21f.css +1 -0
  279. package/ui/standalone/.next/static/media/27fe93087559d480-s.p.otf +0 -0
  280. package/ui/standalone/.next/static/media/4d3869dd8a56345a-s.p.otf +0 -0
  281. package/ui/standalone/.next/static/media/63f3bb9ce29e22d5-s.p.otf +0 -0
  282. package/ui/standalone/.next/static/media/79e1c5d0f2fe9f68-s.p.otf +0 -0
  283. package/ui/standalone/.next/static/media/8bf7b2ceda89477b-s.p.woff2 +0 -0
  284. package/ui/standalone/.next/static/media/98baa4a7809fbf72-s.woff2 +0 -0
  285. package/ui/standalone/.next/static/media/f7650dfaa438c37c-s.woff2 +0 -0
  286. package/ui/standalone/package.json +57 -0
  287. package/ui/standalone/public/caal-logo.svg +3 -0
  288. package/ui/standalone/public/commit-mono-400-regular.woff +0 -0
  289. package/ui/standalone/public/cwl-logo-round.png +0 -0
  290. package/ui/standalone/public/everett-light.woff +0 -0
  291. package/ui/standalone/public/hey_cal.ppn +0 -0
  292. package/ui/standalone/public/install-robot-kiosk.sh +242 -0
  293. package/ui/standalone/public/lk-logo-dark.svg +18 -0
  294. package/ui/standalone/public/lk-logo.svg +18 -0
  295. package/ui/standalone/public/lk-wordmark.svg +12 -0
  296. package/ui/standalone/public/opengraph-image-bg.png +0 -0
  297. package/ui/standalone/public/porcupine_params.pv +0 -0
  298. package/ui/standalone/public/robopark-control.html +9200 -0
  299. package/ui/standalone/public/static/robopark/barracuda.png +0 -0
  300. package/ui/standalone/public/static/robopark/bmw.png +0 -0
  301. package/ui/standalone/public/static/robopark/jaguar.png +0 -0
  302. package/ui/standalone/public/static/robopark/magnus.jpg +0 -0
  303. package/ui/standalone/public/static/robopark/panda.png +0 -0
  304. package/ui/standalone/public/static/robopark/tesla.png +0 -0
  305. package/ui/standalone/public/static/robopark/titan.jpg +0 -0
  306. package/ui/standalone/public/static/robopark/volt.png +0 -0
  307. package/ui/standalone/public/tailnet/index.html +8995 -0
  308. package/ui/standalone/public/transcript-analytics.html +72 -0
  309. package/ui/standalone/public/vendor/elevenlabs-client.iife.js +24200 -0
  310. package/ui/standalone/public/vendor/livekit-client.umd.js +2 -0
  311. package/ui/standalone/public/voice-join.html +89 -0
  312. 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 both RoboPark surfaces:
28
-
29
- - Full Park Control Center: port 47913
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
- InfiniCode is not required to render or operate the Park UI.
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.0 artifact deliberately preserves the current scheduler, Pi client,
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
+ }
@@ -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
- ? 'cmd.exe'
258
+ ? 'explorer.exe'
259
259
  : process.platform === 'darwin'
260
260
  ? 'open'
261
261
  : 'xdg-open';
262
- const args = process.platform === 'win32' ? ['/c', 'start', '', url] : [url];
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
- ? 'cmd.exe'
205
+ ? 'explorer.exe'
205
206
  : process.platform === 'darwin'
206
207
  ? 'open'
207
208
  : 'xdg-open';
208
- const args = process.platform === 'win32' ? ['/c', 'start', '', url] : [url];
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: controlPort,
536
+ port: adapterPort,
531
537
  schedulerUrl: `http://127.0.0.1:${schedulerPort}`,
532
538
  });
533
- console.log(` Park Control Center listening on ${host}:${controlPort}`);
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
- await new Promise((resolve) => {
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.1.2",
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
- "robopark": "^3.1.1"
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/infinicode"
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