@mentra/engine 0.1.0-beta.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 (842) hide show
  1. package/README.md +79 -0
  2. package/build/devtools.d.ts +11 -0
  3. package/build/devtools.d.ts.map +1 -0
  4. package/build/devtools.js +13 -0
  5. package/build/devtools.js.map +1 -0
  6. package/build/engine.d.ts +261 -0
  7. package/build/engine.d.ts.map +1 -0
  8. package/build/engine.js +170 -0
  9. package/build/engine.js.map +1 -0
  10. package/build/facades/dev.d.ts +58 -0
  11. package/build/facades/dev.d.ts.map +1 -0
  12. package/build/facades/dev.js +189 -0
  13. package/build/facades/dev.js.map +1 -0
  14. package/build/facades/display.d.ts +21 -0
  15. package/build/facades/display.d.ts.map +1 -0
  16. package/build/facades/display.js +17 -0
  17. package/build/facades/display.js.map +1 -0
  18. package/build/facades/displayMirror.d.ts +15 -0
  19. package/build/facades/displayMirror.d.ts.map +1 -0
  20. package/build/facades/displayMirror.js +29 -0
  21. package/build/facades/displayMirror.js.map +1 -0
  22. package/build/facades/gallery.d.ts +62 -0
  23. package/build/facades/gallery.d.ts.map +1 -0
  24. package/build/facades/gallery.js +61 -0
  25. package/build/facades/gallery.js.map +1 -0
  26. package/build/facades/glasses.d.ts +141 -0
  27. package/build/facades/glasses.d.ts.map +1 -0
  28. package/build/facades/glasses.js +199 -0
  29. package/build/facades/glasses.js.map +1 -0
  30. package/build/facades/glassesSettings.d.ts +13 -0
  31. package/build/facades/glassesSettings.d.ts.map +1 -0
  32. package/build/facades/glassesSettings.js +54 -0
  33. package/build/facades/glassesSettings.js.map +1 -0
  34. package/build/facades/glassesWifi.d.ts +25 -0
  35. package/build/facades/glassesWifi.d.ts.map +1 -0
  36. package/build/facades/glassesWifi.js +57 -0
  37. package/build/facades/glassesWifi.js.map +1 -0
  38. package/build/facades/miniapps.d.ts +43 -0
  39. package/build/facades/miniapps.d.ts.map +1 -0
  40. package/build/facades/miniapps.js +49 -0
  41. package/build/facades/miniapps.js.map +1 -0
  42. package/build/facades/notifications.d.ts +13 -0
  43. package/build/facades/notifications.d.ts.map +1 -0
  44. package/build/facades/notifications.js +12 -0
  45. package/build/facades/notifications.js.map +1 -0
  46. package/build/facades/ota.d.ts +103 -0
  47. package/build/facades/ota.d.ts.map +1 -0
  48. package/build/facades/ota.js +156 -0
  49. package/build/facades/ota.js.map +1 -0
  50. package/build/facades/pairing.d.ts +114 -0
  51. package/build/facades/pairing.d.ts.map +1 -0
  52. package/build/facades/pairing.js +275 -0
  53. package/build/facades/pairing.js.map +1 -0
  54. package/build/facades/permissions.d.ts +33 -0
  55. package/build/facades/permissions.d.ts.map +1 -0
  56. package/build/facades/permissions.js +155 -0
  57. package/build/facades/permissions.js.map +1 -0
  58. package/build/facades/phoneNotifications.d.ts +21 -0
  59. package/build/facades/phoneNotifications.d.ts.map +1 -0
  60. package/build/facades/phoneNotifications.js +51 -0
  61. package/build/facades/phoneNotifications.js.map +1 -0
  62. package/build/facades/reports.d.ts +36 -0
  63. package/build/facades/reports.d.ts.map +1 -0
  64. package/build/facades/reports.js +134 -0
  65. package/build/facades/reports.js.map +1 -0
  66. package/build/facades/session.d.ts +21 -0
  67. package/build/facades/session.d.ts.map +1 -0
  68. package/build/facades/session.js +52 -0
  69. package/build/facades/session.js.map +1 -0
  70. package/build/facades/settings.d.ts +37 -0
  71. package/build/facades/settings.d.ts.map +1 -0
  72. package/build/facades/settings.js +55 -0
  73. package/build/facades/settings.js.map +1 -0
  74. package/build/facades/speech.d.ts +30 -0
  75. package/build/facades/speech.d.ts.map +1 -0
  76. package/build/facades/speech.js +37 -0
  77. package/build/facades/speech.js.map +1 -0
  78. package/build/index.d.ts +43 -0
  79. package/build/index.d.ts.map +1 -0
  80. package/build/index.js +45 -0
  81. package/build/index.js.map +1 -0
  82. package/build/internal.d.ts +67 -0
  83. package/build/internal.d.ts.map +1 -0
  84. package/build/internal.js +90 -0
  85. package/build/internal.js.map +1 -0
  86. package/build/runtime/bootstrap.d.ts +83 -0
  87. package/build/runtime/bootstrap.d.ts.map +1 -0
  88. package/build/runtime/bootstrap.js +56 -0
  89. package/build/runtime/bootstrap.js.map +1 -0
  90. package/build/runtime/config.d.ts +146 -0
  91. package/build/runtime/config.d.ts.map +1 -0
  92. package/build/runtime/config.js +18 -0
  93. package/build/runtime/config.js.map +1 -0
  94. package/build/runtime/streamConfig.d.ts +4 -0
  95. package/build/runtime/streamConfig.d.ts.map +1 -0
  96. package/build/runtime/streamConfig.js +38 -0
  97. package/build/runtime/streamConfig.js.map +1 -0
  98. package/build/services/AppRegistry.d.ts +269 -0
  99. package/build/services/AppRegistry.d.ts.map +1 -0
  100. package/build/services/AppRegistry.js +1079 -0
  101. package/build/services/AppRegistry.js.map +1 -0
  102. package/build/services/AudioCloudUplink.d.ts +9 -0
  103. package/build/services/AudioCloudUplink.d.ts.map +1 -0
  104. package/build/services/AudioCloudUplink.js +48 -0
  105. package/build/services/AudioCloudUplink.js.map +1 -0
  106. package/build/services/AudioPlaybackService.d.ts +175 -0
  107. package/build/services/AudioPlaybackService.d.ts.map +1 -0
  108. package/build/services/AudioPlaybackService.js +705 -0
  109. package/build/services/AudioPlaybackService.js.map +1 -0
  110. package/build/services/AutomaticReportResult.d.ts +20 -0
  111. package/build/services/AutomaticReportResult.d.ts.map +1 -0
  112. package/build/services/AutomaticReportResult.js +29 -0
  113. package/build/services/AutomaticReportResult.js.map +1 -0
  114. package/build/services/BlobStore.d.ts +91 -0
  115. package/build/services/BlobStore.d.ts.map +1 -0
  116. package/build/services/BlobStore.js +668 -0
  117. package/build/services/BlobStore.js.map +1 -0
  118. package/build/services/CaptionsTesterReportService.d.ts +4 -0
  119. package/build/services/CaptionsTesterReportService.d.ts.map +1 -0
  120. package/build/services/CaptionsTesterReportService.js +80 -0
  121. package/build/services/CaptionsTesterReportService.js.map +1 -0
  122. package/build/services/CloudAudioSubscriptionSync.d.ts +24 -0
  123. package/build/services/CloudAudioSubscriptionSync.d.ts.map +1 -0
  124. package/build/services/CloudAudioSubscriptionSync.js +39 -0
  125. package/build/services/CloudAudioSubscriptionSync.js.map +1 -0
  126. package/build/services/CloudClientService.d.ts +143 -0
  127. package/build/services/CloudClientService.d.ts.map +1 -0
  128. package/build/services/CloudClientService.js +644 -0
  129. package/build/services/CloudClientService.js.map +1 -0
  130. package/build/services/CloudTranscriptE2EMetrics.d.ts +4 -0
  131. package/build/services/CloudTranscriptE2EMetrics.d.ts.map +1 -0
  132. package/build/services/CloudTranscriptE2EMetrics.js +24 -0
  133. package/build/services/CloudTranscriptE2EMetrics.js.map +1 -0
  134. package/build/services/ConnectionCoordinator.d.ts +51 -0
  135. package/build/services/ConnectionCoordinator.d.ts.map +1 -0
  136. package/build/services/ConnectionCoordinator.js +34 -0
  137. package/build/services/ConnectionCoordinator.js.map +1 -0
  138. package/build/services/DevServerBridge.d.ts +63 -0
  139. package/build/services/DevServerBridge.d.ts.map +1 -0
  140. package/build/services/DevServerBridge.js +294 -0
  141. package/build/services/DevServerBridge.js.map +1 -0
  142. package/build/services/DeviceEventRouter.d.ts +3 -0
  143. package/build/services/DeviceEventRouter.d.ts.map +1 -0
  144. package/build/services/DeviceEventRouter.js +190 -0
  145. package/build/services/DeviceEventRouter.js.map +1 -0
  146. package/build/services/DeviceStoreHydration.d.ts +38 -0
  147. package/build/services/DeviceStoreHydration.d.ts.map +1 -0
  148. package/build/services/DeviceStoreHydration.js +124 -0
  149. package/build/services/DeviceStoreHydration.js.map +1 -0
  150. package/build/services/DisplayProcessor.d.ts +223 -0
  151. package/build/services/DisplayProcessor.d.ts.map +1 -0
  152. package/build/services/DisplayProcessor.js +552 -0
  153. package/build/services/DisplayProcessor.js.map +1 -0
  154. package/build/services/GlassesReadiness.d.ts +41 -0
  155. package/build/services/GlassesReadiness.d.ts.map +1 -0
  156. package/build/services/GlassesReadiness.js +82 -0
  157. package/build/services/GlassesReadiness.js.map +1 -0
  158. package/build/services/GlassesSettingsSync.d.ts +33 -0
  159. package/build/services/GlassesSettingsSync.d.ts.map +1 -0
  160. package/build/services/GlassesSettingsSync.js +121 -0
  161. package/build/services/GlassesSettingsSync.js.map +1 -0
  162. package/build/services/GlassesStatusProjection.d.ts +3 -0
  163. package/build/services/GlassesStatusProjection.d.ts.map +1 -0
  164. package/build/services/GlassesStatusProjection.js +65 -0
  165. package/build/services/GlassesStatusProjection.js.map +1 -0
  166. package/build/services/HeadingService.d.ts +27 -0
  167. package/build/services/HeadingService.d.ts.map +1 -0
  168. package/build/services/HeadingService.js +96 -0
  169. package/build/services/HeadingService.js.map +1 -0
  170. package/build/services/LocalDisplayManager.d.ts +139 -0
  171. package/build/services/LocalDisplayManager.d.ts.map +1 -0
  172. package/build/services/LocalDisplayManager.js +579 -0
  173. package/build/services/LocalDisplayManager.js.map +1 -0
  174. package/build/services/LocalMiniappRuntime.d.ts +439 -0
  175. package/build/services/LocalMiniappRuntime.d.ts.map +1 -0
  176. package/build/services/LocalMiniappRuntime.js +3695 -0
  177. package/build/services/LocalMiniappRuntime.js.map +1 -0
  178. package/build/services/LocalSttFallbackCoordinator.d.ts +57 -0
  179. package/build/services/LocalSttFallbackCoordinator.d.ts.map +1 -0
  180. package/build/services/LocalSttFallbackCoordinator.js +137 -0
  181. package/build/services/LocalSttFallbackCoordinator.js.map +1 -0
  182. package/build/services/MentraJSCrashController.d.ts +97 -0
  183. package/build/services/MentraJSCrashController.d.ts.map +1 -0
  184. package/build/services/MentraJSCrashController.js +138 -0
  185. package/build/services/MentraJSCrashController.js.map +1 -0
  186. package/build/services/MentraJSCrashloopReportService.d.ts +9 -0
  187. package/build/services/MentraJSCrashloopReportService.d.ts.map +1 -0
  188. package/build/services/MentraJSCrashloopReportService.js +54 -0
  189. package/build/services/MentraJSCrashloopReportService.js.map +1 -0
  190. package/build/services/MentraJSLogPipeline.d.ts +87 -0
  191. package/build/services/MentraJSLogPipeline.d.ts.map +1 -0
  192. package/build/services/MentraJSLogPipeline.js +137 -0
  193. package/build/services/MentraJSLogPipeline.js.map +1 -0
  194. package/build/services/MentraJSRouter.d.ts +203 -0
  195. package/build/services/MentraJSRouter.d.ts.map +1 -0
  196. package/build/services/MentraJSRouter.js +480 -0
  197. package/build/services/MentraJSRouter.js.map +1 -0
  198. package/build/services/MentraUIRouter.d.ts +137 -0
  199. package/build/services/MentraUIRouter.d.ts.map +1 -0
  200. package/build/services/MentraUIRouter.js +210 -0
  201. package/build/services/MentraUIRouter.js.map +1 -0
  202. package/build/services/MicStateCoordinator.d.ts +37 -0
  203. package/build/services/MicStateCoordinator.d.ts.map +1 -0
  204. package/build/services/MicStateCoordinator.js +81 -0
  205. package/build/services/MicStateCoordinator.js.map +1 -0
  206. package/build/services/MiniappEngine.d.ts +31 -0
  207. package/build/services/MiniappEngine.d.ts.map +1 -0
  208. package/build/services/MiniappEngine.js +119 -0
  209. package/build/services/MiniappEngine.js.map +1 -0
  210. package/build/services/MiniappLauncher.d.ts +129 -0
  211. package/build/services/MiniappLauncher.d.ts.map +1 -0
  212. package/build/services/MiniappLauncher.js +291 -0
  213. package/build/services/MiniappLauncher.js.map +1 -0
  214. package/build/services/MiniappRunningRegistry.d.ts +24 -0
  215. package/build/services/MiniappRunningRegistry.d.ts.map +1 -0
  216. package/build/services/MiniappRunningRegistry.js +52 -0
  217. package/build/services/MiniappRunningRegistry.js.map +1 -0
  218. package/build/services/NativeHttpResponse.d.ts +3 -0
  219. package/build/services/NativeHttpResponse.d.ts.map +1 -0
  220. package/build/services/NativeHttpResponse.js +6 -0
  221. package/build/services/NativeHttpResponse.js.map +1 -0
  222. package/build/services/NavigationHandlers.d.ts +90 -0
  223. package/build/services/NavigationHandlers.d.ts.map +1 -0
  224. package/build/services/NavigationHandlers.js +379 -0
  225. package/build/services/NavigationHandlers.js.map +1 -0
  226. package/build/services/NavigationService.d.ts +254 -0
  227. package/build/services/NavigationService.d.ts.map +1 -0
  228. package/build/services/NavigationService.js +553 -0
  229. package/build/services/NavigationService.js.map +1 -0
  230. package/build/services/NotificationsEmitter.d.ts +28 -0
  231. package/build/services/NotificationsEmitter.d.ts.map +1 -0
  232. package/build/services/NotificationsEmitter.js +22 -0
  233. package/build/services/NotificationsEmitter.js.map +1 -0
  234. package/build/services/OfflineSpeechModelService.d.ts +33 -0
  235. package/build/services/OfflineSpeechModelService.d.ts.map +1 -0
  236. package/build/services/OfflineSpeechModelService.js +136 -0
  237. package/build/services/OfflineSpeechModelService.js.map +1 -0
  238. package/build/services/OtaInstallCoordinator.d.ts +195 -0
  239. package/build/services/OtaInstallCoordinator.d.ts.map +1 -0
  240. package/build/services/OtaInstallCoordinator.js +1047 -0
  241. package/build/services/OtaInstallCoordinator.js.map +1 -0
  242. package/build/services/OtaService.d.ts +3 -0
  243. package/build/services/OtaService.d.ts.map +1 -0
  244. package/build/services/OtaService.js +65 -0
  245. package/build/services/OtaService.js.map +1 -0
  246. package/build/services/OtaUpdateCheckService.d.ts +65 -0
  247. package/build/services/OtaUpdateCheckService.d.ts.map +1 -0
  248. package/build/services/OtaUpdateCheckService.js +260 -0
  249. package/build/services/OtaUpdateCheckService.js.map +1 -0
  250. package/build/services/PairingIdentity.d.ts +80 -0
  251. package/build/services/PairingIdentity.d.ts.map +1 -0
  252. package/build/services/PairingIdentity.js +145 -0
  253. package/build/services/PairingIdentity.js.map +1 -0
  254. package/build/services/PhoneCalendarHelpers.d.ts +32 -0
  255. package/build/services/PhoneCalendarHelpers.d.ts.map +1 -0
  256. package/build/services/PhoneCalendarHelpers.js +157 -0
  257. package/build/services/PhoneCalendarHelpers.js.map +1 -0
  258. package/build/services/PhoneCalendarService.d.ts +5 -0
  259. package/build/services/PhoneCalendarService.d.ts.map +1 -0
  260. package/build/services/PhoneCalendarService.js +24 -0
  261. package/build/services/PhoneCalendarService.js.map +1 -0
  262. package/build/services/PhoneCameraFovCoordinator.d.ts +28 -0
  263. package/build/services/PhoneCameraFovCoordinator.d.ts.map +1 -0
  264. package/build/services/PhoneCameraFovCoordinator.js +180 -0
  265. package/build/services/PhoneCameraFovCoordinator.js.map +1 -0
  266. package/build/services/PhoneLocationService.d.ts +36 -0
  267. package/build/services/PhoneLocationService.d.ts.map +1 -0
  268. package/build/services/PhoneLocationService.js +115 -0
  269. package/build/services/PhoneLocationService.js.map +1 -0
  270. package/build/services/PhoneNotificationsSync.d.ts +3 -0
  271. package/build/services/PhoneNotificationsSync.d.ts.map +1 -0
  272. package/build/services/PhoneNotificationsSync.js +35 -0
  273. package/build/services/PhoneNotificationsSync.js.map +1 -0
  274. package/build/services/PhonePhotoCoordinator.d.ts +103 -0
  275. package/build/services/PhonePhotoCoordinator.d.ts.map +1 -0
  276. package/build/services/PhonePhotoCoordinator.js +326 -0
  277. package/build/services/PhonePhotoCoordinator.js.map +1 -0
  278. package/build/services/PhoneStreamCoordinator.d.ts +168 -0
  279. package/build/services/PhoneStreamCoordinator.d.ts.map +1 -0
  280. package/build/services/PhoneStreamCoordinator.js +632 -0
  281. package/build/services/PhoneStreamCoordinator.js.map +1 -0
  282. package/build/services/PhoneVideoCoordinator.d.ts +50 -0
  283. package/build/services/PhoneVideoCoordinator.d.ts.map +1 -0
  284. package/build/services/PhoneVideoCoordinator.js +147 -0
  285. package/build/services/PhoneVideoCoordinator.js.map +1 -0
  286. package/build/services/STTModelManager.d.ts +65 -0
  287. package/build/services/STTModelManager.d.ts.map +1 -0
  288. package/build/services/STTModelManager.js +292 -0
  289. package/build/services/STTModelManager.js.map +1 -0
  290. package/build/services/SceneRenderer.d.ts +90 -0
  291. package/build/services/SceneRenderer.d.ts.map +1 -0
  292. package/build/services/SceneRenderer.js +248 -0
  293. package/build/services/SceneRenderer.js.map +1 -0
  294. package/build/services/SentenceTtsPipeline.d.ts +31 -0
  295. package/build/services/SentenceTtsPipeline.d.ts.map +1 -0
  296. package/build/services/SentenceTtsPipeline.js +67 -0
  297. package/build/services/SentenceTtsPipeline.js.map +1 -0
  298. package/build/services/StreamLifecycleController.d.ts +67 -0
  299. package/build/services/StreamLifecycleController.d.ts.map +1 -0
  300. package/build/services/StreamLifecycleController.js +152 -0
  301. package/build/services/StreamLifecycleController.js.map +1 -0
  302. package/build/services/TTSModelManager.d.ts +90 -0
  303. package/build/services/TTSModelManager.d.ts.map +1 -0
  304. package/build/services/TTSModelManager.js +366 -0
  305. package/build/services/TTSModelManager.js.map +1 -0
  306. package/build/services/TranscriptionRouting.d.ts +12 -0
  307. package/build/services/TranscriptionRouting.d.ts.map +1 -0
  308. package/build/services/TranscriptionRouting.js +24 -0
  309. package/build/services/TranscriptionRouting.js.map +1 -0
  310. package/build/services/WebviewBridge.d.ts +22 -0
  311. package/build/services/WebviewBridge.d.ts.map +1 -0
  312. package/build/services/WebviewBridge.js +47 -0
  313. package/build/services/WebviewBridge.js.map +1 -0
  314. package/build/services/asg/GalleryMediaIntegrityReportService.d.ts +17 -0
  315. package/build/services/asg/GalleryMediaIntegrityReportService.d.ts.map +1 -0
  316. package/build/services/asg/GalleryMediaIntegrityReportService.js +43 -0
  317. package/build/services/asg/GalleryMediaIntegrityReportService.js.map +1 -0
  318. package/build/services/asg/asgCameraApi.d.ts +205 -0
  319. package/build/services/asg/asgCameraApi.d.ts.map +1 -0
  320. package/build/services/asg/asgCameraApi.js +1410 -0
  321. package/build/services/asg/asgCameraApi.js.map +1 -0
  322. package/build/services/asg/cameraRollExportCoordinator.d.ts +60 -0
  323. package/build/services/asg/cameraRollExportCoordinator.d.ts.map +1 -0
  324. package/build/services/asg/cameraRollExportCoordinator.js +618 -0
  325. package/build/services/asg/cameraRollExportCoordinator.js.map +1 -0
  326. package/build/services/asg/cameraRollExportLedger.d.ts +44 -0
  327. package/build/services/asg/cameraRollExportLedger.d.ts.map +1 -0
  328. package/build/services/asg/cameraRollExportLedger.js +78 -0
  329. package/build/services/asg/cameraRollExportLedger.js.map +1 -0
  330. package/build/services/asg/galleryMediaValidation.d.ts +29 -0
  331. package/build/services/asg/galleryMediaValidation.d.ts.map +1 -0
  332. package/build/services/asg/galleryMediaValidation.js +149 -0
  333. package/build/services/asg/galleryMediaValidation.js.map +1 -0
  334. package/build/services/asg/galleryNotices.d.ts +33 -0
  335. package/build/services/asg/galleryNotices.d.ts.map +1 -0
  336. package/build/services/asg/galleryNotices.js +29 -0
  337. package/build/services/asg/galleryNotices.js.map +1 -0
  338. package/build/services/asg/galleryPathMigration.d.ts +3 -0
  339. package/build/services/asg/galleryPathMigration.d.ts.map +1 -0
  340. package/build/services/asg/galleryPathMigration.js +26 -0
  341. package/build/services/asg/galleryPathMigration.js.map +1 -0
  342. package/build/services/asg/gallerySettingsService.d.ts +20 -0
  343. package/build/services/asg/gallerySettingsService.d.ts.map +1 -0
  344. package/build/services/asg/gallerySettingsService.js +53 -0
  345. package/build/services/asg/gallerySettingsService.js.map +1 -0
  346. package/build/services/asg/gallerySyncNotifications.d.ts +56 -0
  347. package/build/services/asg/gallerySyncNotifications.d.ts.map +1 -0
  348. package/build/services/asg/gallerySyncNotifications.js +198 -0
  349. package/build/services/asg/gallerySyncNotifications.js.map +1 -0
  350. package/build/services/asg/gallerySyncService.d.ts +137 -0
  351. package/build/services/asg/gallerySyncService.d.ts.map +1 -0
  352. package/build/services/asg/gallerySyncService.js +1933 -0
  353. package/build/services/asg/gallerySyncService.js.map +1 -0
  354. package/build/services/asg/galleryTransferLedger.d.ts +58 -0
  355. package/build/services/asg/galleryTransferLedger.d.ts.map +1 -0
  356. package/build/services/asg/galleryTransferLedger.js +225 -0
  357. package/build/services/asg/galleryTransferLedger.js.map +1 -0
  358. package/build/services/asg/localNetworkTransport.d.ts +15 -0
  359. package/build/services/asg/localNetworkTransport.d.ts.map +1 -0
  360. package/build/services/asg/localNetworkTransport.js +144 -0
  361. package/build/services/asg/localNetworkTransport.js.map +1 -0
  362. package/build/services/asg/localStorageService.d.ts +146 -0
  363. package/build/services/asg/localStorageService.d.ts.map +1 -0
  364. package/build/services/asg/localStorageService.js +572 -0
  365. package/build/services/asg/localStorageService.js.map +1 -0
  366. package/build/services/asg/mediaProcessingQueue.d.ts +70 -0
  367. package/build/services/asg/mediaProcessingQueue.d.ts.map +1 -0
  368. package/build/services/asg/mediaProcessingQueue.js +451 -0
  369. package/build/services/asg/mediaProcessingQueue.js.map +1 -0
  370. package/build/services/asgOtaVersionUrl.d.ts +2 -0
  371. package/build/services/asgOtaVersionUrl.d.ts.map +1 -0
  372. package/build/services/asgOtaVersionUrl.js +36 -0
  373. package/build/services/asgOtaVersionUrl.js.map +1 -0
  374. package/build/services/blobPaths.d.ts +31 -0
  375. package/build/services/blobPaths.d.ts.map +1 -0
  376. package/build/services/blobPaths.js +86 -0
  377. package/build/services/blobPaths.js.map +1 -0
  378. package/build/services/cloudStreamApi.d.ts +59 -0
  379. package/build/services/cloudStreamApi.d.ts.map +1 -0
  380. package/build/services/cloudStreamApi.js +81 -0
  381. package/build/services/cloudStreamApi.js.map +1 -0
  382. package/build/services/gallerySyncClock.d.ts +17 -0
  383. package/build/services/gallerySyncClock.d.ts.map +1 -0
  384. package/build/services/gallerySyncClock.js +21 -0
  385. package/build/services/gallerySyncClock.js.map +1 -0
  386. package/build/services/glassesClockSync.d.ts +20 -0
  387. package/build/services/glassesClockSync.d.ts.map +1 -0
  388. package/build/services/glassesClockSync.js +97 -0
  389. package/build/services/glassesClockSync.js.map +1 -0
  390. package/build/services/manifestVersionGate.d.ts +28 -0
  391. package/build/services/manifestVersionGate.d.ts.map +1 -0
  392. package/build/services/manifestVersionGate.js +41 -0
  393. package/build/services/manifestVersionGate.js.map +1 -0
  394. package/build/services/mentraUiShim.d.ts +38 -0
  395. package/build/services/mentraUiShim.d.ts.map +1 -0
  396. package/build/services/mentraUiShim.js +360 -0
  397. package/build/services/mentraUiShim.js.map +1 -0
  398. package/build/services/navigation/roadNameResolver.d.ts +67 -0
  399. package/build/services/navigation/roadNameResolver.d.ts.map +1 -0
  400. package/build/services/navigation/roadNameResolver.js +96 -0
  401. package/build/services/navigation/roadNameResolver.js.map +1 -0
  402. package/build/services/navigation/routesApiCodec.d.ts +38 -0
  403. package/build/services/navigation/routesApiCodec.d.ts.map +1 -0
  404. package/build/services/navigation/routesApiCodec.js +68 -0
  405. package/build/services/navigation/routesApiCodec.js.map +1 -0
  406. package/build/services/otaDisplayState.d.ts +42 -0
  407. package/build/services/otaDisplayState.d.ts.map +1 -0
  408. package/build/services/otaDisplayState.js +92 -0
  409. package/build/services/otaDisplayState.js.map +1 -0
  410. package/build/services/otaInstallPolicy.d.ts +81 -0
  411. package/build/services/otaInstallPolicy.d.ts.map +1 -0
  412. package/build/services/otaInstallPolicy.js +96 -0
  413. package/build/services/otaInstallPolicy.js.map +1 -0
  414. package/build/services/otaLegacyMapping.d.ts +22 -0
  415. package/build/services/otaLegacyMapping.d.ts.map +1 -0
  416. package/build/services/otaLegacyMapping.js +56 -0
  417. package/build/services/otaLegacyMapping.js.map +1 -0
  418. package/build/services/slimStreamStatus.d.ts +7 -0
  419. package/build/services/slimStreamStatus.d.ts.map +1 -0
  420. package/build/services/slimStreamStatus.js +26 -0
  421. package/build/services/slimStreamStatus.js.map +1 -0
  422. package/build/stores/apps.d.ts +104 -0
  423. package/build/stores/apps.d.ts.map +1 -0
  424. package/build/stores/apps.js +492 -0
  425. package/build/stores/apps.js.map +1 -0
  426. package/build/stores/bluetoothSettingKeys.d.ts +4 -0
  427. package/build/stores/bluetoothSettingKeys.d.ts.map +1 -0
  428. package/build/stores/bluetoothSettingKeys.js +31 -0
  429. package/build/stores/bluetoothSettingKeys.js.map +1 -0
  430. package/build/stores/cloudClientStatus.d.ts +9 -0
  431. package/build/stores/cloudClientStatus.d.ts.map +1 -0
  432. package/build/stores/cloudClientStatus.js +24 -0
  433. package/build/stores/cloudClientStatus.js.map +1 -0
  434. package/build/stores/connection.d.ts +22 -0
  435. package/build/stores/connection.d.ts.map +1 -0
  436. package/build/stores/connection.js +43 -0
  437. package/build/stores/connection.js.map +1 -0
  438. package/build/stores/core.d.ts +15 -0
  439. package/build/stores/core.d.ts.map +1 -0
  440. package/build/stores/core.js +21 -0
  441. package/build/stores/core.js.map +1 -0
  442. package/build/stores/display.d.ts +24 -0
  443. package/build/stores/display.d.ts.map +1 -0
  444. package/build/stores/display.js +96 -0
  445. package/build/stores/display.js.map +1 -0
  446. package/build/stores/gallerySync.d.ts +101 -0
  447. package/build/stores/gallerySync.d.ts.map +1 -0
  448. package/build/stores/gallerySync.js +217 -0
  449. package/build/stores/gallerySync.js.map +1 -0
  450. package/build/stores/glasses.d.ts +62 -0
  451. package/build/stores/glasses.d.ts.map +1 -0
  452. package/build/stores/glasses.js +203 -0
  453. package/build/stores/glasses.js.map +1 -0
  454. package/build/stores/settings.d.ts +37 -0
  455. package/build/stores/settings.d.ts.map +1 -0
  456. package/build/stores/settings.js +922 -0
  457. package/build/stores/settings.js.map +1 -0
  458. package/build/types/applet.d.ts +96 -0
  459. package/build/types/applet.d.ts.map +1 -0
  460. package/build/types/applet.js +5 -0
  461. package/build/types/applet.js.map +1 -0
  462. package/build/types/asg.d.ts +53 -0
  463. package/build/types/asg.d.ts.map +1 -0
  464. package/build/types/asg.js +2 -0
  465. package/build/types/asg.js.map +1 -0
  466. package/build/types/capabilities/even-realities-g1.d.ts +12 -0
  467. package/build/types/capabilities/even-realities-g1.d.ts.map +1 -0
  468. package/build/types/capabilities/even-realities-g1.js +55 -0
  469. package/build/types/capabilities/even-realities-g1.js.map +1 -0
  470. package/build/types/capabilities/even-realities-g2.d.ts +12 -0
  471. package/build/types/capabilities/even-realities-g2.d.ts.map +1 -0
  472. package/build/types/capabilities/even-realities-g2.js +75 -0
  473. package/build/types/capabilities/even-realities-g2.js.map +1 -0
  474. package/build/types/capabilities/mentra-display.d.ts +12 -0
  475. package/build/types/capabilities/mentra-display.d.ts.map +1 -0
  476. package/build/types/capabilities/mentra-display.js +63 -0
  477. package/build/types/capabilities/mentra-display.js.map +1 -0
  478. package/build/types/capabilities/mentra-live.d.ts +12 -0
  479. package/build/types/capabilities/mentra-live.d.ts.map +1 -0
  480. package/build/types/capabilities/mentra-live.js +92 -0
  481. package/build/types/capabilities/mentra-live.js.map +1 -0
  482. package/build/types/capabilities/none.d.ts +13 -0
  483. package/build/types/capabilities/none.d.ts.map +1 -0
  484. package/build/types/capabilities/none.js +65 -0
  485. package/build/types/capabilities/none.js.map +1 -0
  486. package/build/types/capabilities/simulated-glasses.d.ts +13 -0
  487. package/build/types/capabilities/simulated-glasses.d.ts.map +1 -0
  488. package/build/types/capabilities/simulated-glasses.js +65 -0
  489. package/build/types/capabilities/simulated-glasses.js.map +1 -0
  490. package/build/types/capabilities/vuzix-z100.d.ts +12 -0
  491. package/build/types/capabilities/vuzix-z100.d.ts.map +1 -0
  492. package/build/types/capabilities/vuzix-z100.js +52 -0
  493. package/build/types/capabilities/vuzix-z100.js.map +1 -0
  494. package/build/types/enums.d.ts +40 -0
  495. package/build/types/enums.d.ts.map +1 -0
  496. package/build/types/enums.js +44 -0
  497. package/build/types/enums.js.map +1 -0
  498. package/build/types/hardware.d.ts +160 -0
  499. package/build/types/hardware.d.ts.map +1 -0
  500. package/build/types/hardware.js +36 -0
  501. package/build/types/hardware.js.map +1 -0
  502. package/build/types/index.d.ts +11 -0
  503. package/build/types/index.d.ts.map +1 -0
  504. package/build/types/index.js +10 -0
  505. package/build/types/index.js.map +1 -0
  506. package/build/utils/GlobalEventEmitter.d.ts +10 -0
  507. package/build/utils/GlobalEventEmitter.d.ts.map +1 -0
  508. package/build/utils/GlobalEventEmitter.js +13 -0
  509. package/build/utils/GlobalEventEmitter.js.map +1 -0
  510. package/build/utils/cloudClient/RnUdpAdapter.d.ts +3 -0
  511. package/build/utils/cloudClient/RnUdpAdapter.d.ts.map +1 -0
  512. package/build/utils/cloudClient/RnUdpAdapter.js +41 -0
  513. package/build/utils/cloudClient/RnUdpAdapter.js.map +1 -0
  514. package/build/utils/cloudClient/cloudSecureStore.d.ts +3 -0
  515. package/build/utils/cloudClient/cloudSecureStore.d.ts.map +1 -0
  516. package/build/utils/cloudClient/cloudSecureStore.js +26 -0
  517. package/build/utils/cloudClient/cloudSecureStore.js.map +1 -0
  518. package/build/utils/debouncedPatch.d.ts +6 -0
  519. package/build/utils/debouncedPatch.d.ts.map +1 -0
  520. package/build/utils/debouncedPatch.js +25 -0
  521. package/build/utils/debouncedPatch.js.map +1 -0
  522. package/build/utils/devLogging.d.ts +26 -0
  523. package/build/utils/devLogging.d.ts.map +1 -0
  524. package/build/utils/devLogging.js +116 -0
  525. package/build/utils/devLogging.js.map +1 -0
  526. package/build/utils/devMiniappLaunch.d.ts +44 -0
  527. package/build/utils/devMiniappLaunch.d.ts.map +1 -0
  528. package/build/utils/devMiniappLaunch.js +52 -0
  529. package/build/utils/devMiniappLaunch.js.map +1 -0
  530. package/build/utils/diagnosticContext.d.ts +3 -0
  531. package/build/utils/diagnosticContext.d.ts.map +1 -0
  532. package/build/utils/diagnosticContext.js +119 -0
  533. package/build/utils/diagnosticContext.js.map +1 -0
  534. package/build/utils/display/composer/ColumnComposer.d.ts +131 -0
  535. package/build/utils/display/composer/ColumnComposer.d.ts.map +1 -0
  536. package/build/utils/display/composer/ColumnComposer.js +204 -0
  537. package/build/utils/display/composer/ColumnComposer.js.map +1 -0
  538. package/build/utils/display/composer/index.d.ts +9 -0
  539. package/build/utils/display/composer/index.d.ts.map +1 -0
  540. package/build/utils/display/composer/index.js +9 -0
  541. package/build/utils/display/composer/index.js.map +1 -0
  542. package/build/utils/display/helpers/DisplayHelpers.d.ts +165 -0
  543. package/build/utils/display/helpers/DisplayHelpers.d.ts.map +1 -0
  544. package/build/utils/display/helpers/DisplayHelpers.js +312 -0
  545. package/build/utils/display/helpers/DisplayHelpers.js.map +1 -0
  546. package/build/utils/display/helpers/ScrollView.d.ts +183 -0
  547. package/build/utils/display/helpers/ScrollView.d.ts.map +1 -0
  548. package/build/utils/display/helpers/ScrollView.js +257 -0
  549. package/build/utils/display/helpers/ScrollView.js.map +1 -0
  550. package/build/utils/display/helpers/index.d.ts +11 -0
  551. package/build/utils/display/helpers/index.d.ts.map +1 -0
  552. package/build/utils/display/helpers/index.js +10 -0
  553. package/build/utils/display/helpers/index.js.map +1 -0
  554. package/build/utils/display/index.d.ts +174 -0
  555. package/build/utils/display/index.d.ts.map +1 -0
  556. package/build/utils/display/index.js +185 -0
  557. package/build/utils/display/index.js.map +1 -0
  558. package/build/utils/display/measurer/TextMeasurer.d.ts +160 -0
  559. package/build/utils/display/measurer/TextMeasurer.d.ts.map +1 -0
  560. package/build/utils/display/measurer/TextMeasurer.js +273 -0
  561. package/build/utils/display/measurer/TextMeasurer.js.map +1 -0
  562. package/build/utils/display/measurer/index.d.ts +10 -0
  563. package/build/utils/display/measurer/index.d.ts.map +1 -0
  564. package/build/utils/display/measurer/index.js +11 -0
  565. package/build/utils/display/measurer/index.js.map +1 -0
  566. package/build/utils/display/measurer/script-detection.d.ts +53 -0
  567. package/build/utils/display/measurer/script-detection.d.ts.map +1 -0
  568. package/build/utils/display/measurer/script-detection.js +184 -0
  569. package/build/utils/display/measurer/script-detection.js.map +1 -0
  570. package/build/utils/display/profiles/g1.d.ts +33 -0
  571. package/build/utils/display/profiles/g1.d.ts.map +1 -0
  572. package/build/utils/display/profiles/g1.js +213 -0
  573. package/build/utils/display/profiles/g1.js.map +1 -0
  574. package/build/utils/display/profiles/g2.d.ts +13 -0
  575. package/build/utils/display/profiles/g2.d.ts.map +1 -0
  576. package/build/utils/display/profiles/g2.js +34 -0
  577. package/build/utils/display/profiles/g2.js.map +1 -0
  578. package/build/utils/display/profiles/index.d.ts +12 -0
  579. package/build/utils/display/profiles/index.d.ts.map +1 -0
  580. package/build/utils/display/profiles/index.js +15 -0
  581. package/build/utils/display/profiles/index.js.map +1 -0
  582. package/build/utils/display/profiles/nex.d.ts +10 -0
  583. package/build/utils/display/profiles/nex.d.ts.map +1 -0
  584. package/build/utils/display/profiles/nex.js +150 -0
  585. package/build/utils/display/profiles/nex.js.map +1 -0
  586. package/build/utils/display/profiles/types.d.ts +103 -0
  587. package/build/utils/display/profiles/types.d.ts.map +1 -0
  588. package/build/utils/display/profiles/types.js +2 -0
  589. package/build/utils/display/profiles/types.js.map +1 -0
  590. package/build/utils/display/profiles/z100.d.ts +33 -0
  591. package/build/utils/display/profiles/z100.d.ts.map +1 -0
  592. package/build/utils/display/profiles/z100.js +182 -0
  593. package/build/utils/display/profiles/z100.js.map +1 -0
  594. package/build/utils/display/scene/degrade.d.ts +25 -0
  595. package/build/utils/display/scene/degrade.d.ts.map +1 -0
  596. package/build/utils/display/scene/degrade.js +64 -0
  597. package/build/utils/display/scene/degrade.js.map +1 -0
  598. package/build/utils/display/scene/differ.d.ts +38 -0
  599. package/build/utils/display/scene/differ.d.ts.map +1 -0
  600. package/build/utils/display/scene/differ.js +107 -0
  601. package/build/utils/display/scene/differ.js.map +1 -0
  602. package/build/utils/display/scene/index.d.ts +10 -0
  603. package/build/utils/display/scene/index.d.ts.map +1 -0
  604. package/build/utils/display/scene/index.js +6 -0
  605. package/build/utils/display/scene/index.js.map +1 -0
  606. package/build/utils/display/scene/process.d.ts +35 -0
  607. package/build/utils/display/scene/process.d.ts.map +1 -0
  608. package/build/utils/display/scene/process.js +187 -0
  609. package/build/utils/display/scene/process.js.map +1 -0
  610. package/build/utils/display/scene/store.d.ts +48 -0
  611. package/build/utils/display/scene/store.d.ts.map +1 -0
  612. package/build/utils/display/scene/store.js +0 -0
  613. package/build/utils/display/scene/store.js.map +1 -0
  614. package/build/utils/display/scene/types.d.ts +120 -0
  615. package/build/utils/display/scene/types.d.ts.map +1 -0
  616. package/build/utils/display/scene/types.js +0 -0
  617. package/build/utils/display/scene/types.js.map +1 -0
  618. package/build/utils/display/wrapper/TextWrapper.d.ts +102 -0
  619. package/build/utils/display/wrapper/TextWrapper.d.ts.map +1 -0
  620. package/build/utils/display/wrapper/TextWrapper.js +471 -0
  621. package/build/utils/display/wrapper/TextWrapper.js.map +1 -0
  622. package/build/utils/display/wrapper/index.d.ts +12 -0
  623. package/build/utils/display/wrapper/index.d.ts.map +1 -0
  624. package/build/utils/display/wrapper/index.js +12 -0
  625. package/build/utils/display/wrapper/index.js.map +1 -0
  626. package/build/utils/display/wrapper/types.d.ts +75 -0
  627. package/build/utils/display/wrapper/types.d.ts.map +1 -0
  628. package/build/utils/display/wrapper/types.js +11 -0
  629. package/build/utils/display/wrapper/types.js.map +1 -0
  630. package/build/utils/e2eMetrics.d.ts +6 -0
  631. package/build/utils/e2eMetrics.d.ts.map +1 -0
  632. package/build/utils/e2eMetrics.js +27 -0
  633. package/build/utils/e2eMetrics.js.map +1 -0
  634. package/build/utils/hardware/hardware.d.ts +42 -0
  635. package/build/utils/hardware/hardware.d.ts.map +1 -0
  636. package/build/utils/hardware/hardware.js +127 -0
  637. package/build/utils/hardware/hardware.js.map +1 -0
  638. package/build/utils/hardware/index.d.ts +2 -0
  639. package/build/utils/hardware/index.d.ts.map +1 -0
  640. package/build/utils/hardware/index.js +2 -0
  641. package/build/utils/hardware/index.js.map +1 -0
  642. package/build/utils/miniappGlobals.d.ts +60 -0
  643. package/build/utils/miniappGlobals.d.ts.map +1 -0
  644. package/build/utils/miniappGlobals.js +224 -0
  645. package/build/utils/miniappGlobals.js.map +1 -0
  646. package/build/utils/permissions/MediaLibraryPermissions.d.ts +45 -0
  647. package/build/utils/permissions/MediaLibraryPermissions.d.ts.map +1 -0
  648. package/build/utils/permissions/MediaLibraryPermissions.js +145 -0
  649. package/build/utils/permissions/MediaLibraryPermissions.js.map +1 -0
  650. package/build/utils/permissions/galleryDisplayName.d.ts +8 -0
  651. package/build/utils/permissions/galleryDisplayName.d.ts.map +1 -0
  652. package/build/utils/permissions/galleryDisplayName.js +25 -0
  653. package/build/utils/permissions/galleryDisplayName.js.map +1 -0
  654. package/build/utils/storage/index.d.ts +3 -0
  655. package/build/utils/storage/index.d.ts.map +1 -0
  656. package/build/utils/storage/index.js +3 -0
  657. package/build/utils/storage/index.js.map +1 -0
  658. package/build/utils/storage/storage.d.ts +24 -0
  659. package/build/utils/storage/storage.d.ts.map +1 -0
  660. package/build/utils/storage/storage.js +85 -0
  661. package/build/utils/storage/storage.js.map +1 -0
  662. package/build/utils/storage/zip.d.ts +3 -0
  663. package/build/utils/storage/zip.d.ts.map +1 -0
  664. package/build/utils/storage/zip.js +14 -0
  665. package/build/utils/storage/zip.js.map +1 -0
  666. package/build/utils/timers/index.d.ts +3 -0
  667. package/build/utils/timers/index.d.ts.map +1 -0
  668. package/build/utils/timers/index.js +3 -0
  669. package/build/utils/timers/index.js.map +1 -0
  670. package/build/utils/timers/timers.d.ts +9 -0
  671. package/build/utils/timers/timers.d.ts.map +1 -0
  672. package/build/utils/timers/timers.js +105 -0
  673. package/build/utils/timers/timers.js.map +1 -0
  674. package/package.json +120 -0
  675. package/src/devtools.ts +13 -0
  676. package/src/engine.ts +173 -0
  677. package/src/facades/dev.ts +198 -0
  678. package/src/facades/display.ts +17 -0
  679. package/src/facades/displayMirror.ts +33 -0
  680. package/src/facades/gallery.ts +69 -0
  681. package/src/facades/glasses.ts +206 -0
  682. package/src/facades/glassesSettings.ts +56 -0
  683. package/src/facades/glassesWifi.ts +68 -0
  684. package/src/facades/miniapps.ts +55 -0
  685. package/src/facades/notifications.ts +15 -0
  686. package/src/facades/ota.ts +174 -0
  687. package/src/facades/pairing.ts +329 -0
  688. package/src/facades/permissions.ts +165 -0
  689. package/src/facades/phoneNotifications.ts +50 -0
  690. package/src/facades/reports.ts +185 -0
  691. package/src/facades/session.ts +55 -0
  692. package/src/facades/settings.ts +57 -0
  693. package/src/facades/speech.ts +38 -0
  694. package/src/index.ts +191 -0
  695. package/src/internal.ts +159 -0
  696. package/src/runtime/bootstrap.ts +118 -0
  697. package/src/runtime/config.ts +147 -0
  698. package/src/runtime/streamConfig.ts +34 -0
  699. package/src/services/AppRegistry.ts +1190 -0
  700. package/src/services/AudioCloudUplink.ts +50 -0
  701. package/src/services/AudioPlaybackService.ts +813 -0
  702. package/src/services/AutomaticReportResult.ts +48 -0
  703. package/src/services/BlobStore.ts +746 -0
  704. package/src/services/CaptionsTesterReportService.ts +107 -0
  705. package/src/services/CloudAudioSubscriptionSync.ts +41 -0
  706. package/src/services/CloudClientService.ts +689 -0
  707. package/src/services/CloudTranscriptE2EMetrics.ts +27 -0
  708. package/src/services/ConnectionCoordinator.ts +65 -0
  709. package/src/services/DevServerBridge.ts +332 -0
  710. package/src/services/DeviceEventRouter.ts +238 -0
  711. package/src/services/DeviceStoreHydration.ts +130 -0
  712. package/src/services/DisplayProcessor.ts +775 -0
  713. package/src/services/GlassesReadiness.ts +103 -0
  714. package/src/services/GlassesSettingsSync.ts +134 -0
  715. package/src/services/GlassesStatusProjection.ts +73 -0
  716. package/src/services/HeadingService.ts +98 -0
  717. package/src/services/LocalDisplayManager.ts +703 -0
  718. package/src/services/LocalMiniappRuntime.ts +4213 -0
  719. package/src/services/LocalSttFallbackCoordinator.ts +147 -0
  720. package/src/services/MentraJSCrashController.ts +189 -0
  721. package/src/services/MentraJSCrashloopReportService.ts +66 -0
  722. package/src/services/MentraJSLogPipeline.ts +166 -0
  723. package/src/services/MentraJSRouter.ts +557 -0
  724. package/src/services/MentraUIRouter.ts +244 -0
  725. package/src/services/MicStateCoordinator.ts +94 -0
  726. package/src/services/MiniappEngine.ts +143 -0
  727. package/src/services/MiniappLauncher.ts +340 -0
  728. package/src/services/MiniappRunningRegistry.ts +57 -0
  729. package/src/services/NativeHttpResponse.ts +6 -0
  730. package/src/services/NavigationHandlers.ts +423 -0
  731. package/src/services/NavigationService.ts +731 -0
  732. package/src/services/NotificationsEmitter.ts +48 -0
  733. package/src/services/OfflineSpeechModelService.ts +168 -0
  734. package/src/services/OtaInstallCoordinator.ts +1205 -0
  735. package/src/services/OtaService.ts +83 -0
  736. package/src/services/OtaUpdateCheckService.ts +386 -0
  737. package/src/services/PairingIdentity.ts +154 -0
  738. package/src/services/PhoneCalendarHelpers.ts +212 -0
  739. package/src/services/PhoneCalendarService.ts +42 -0
  740. package/src/services/PhoneCameraFovCoordinator.ts +195 -0
  741. package/src/services/PhoneLocationService.ts +122 -0
  742. package/src/services/PhoneNotificationsSync.ts +44 -0
  743. package/src/services/PhonePhotoCoordinator.ts +409 -0
  744. package/src/services/PhoneStreamCoordinator.ts +777 -0
  745. package/src/services/PhoneVideoCoordinator.ts +189 -0
  746. package/src/services/STTModelManager.ts +360 -0
  747. package/src/services/SceneRenderer.ts +292 -0
  748. package/src/services/SentenceTtsPipeline.ts +106 -0
  749. package/src/services/StreamLifecycleController.ts +213 -0
  750. package/src/services/TTSModelManager.ts +466 -0
  751. package/src/services/TranscriptionRouting.ts +37 -0
  752. package/src/services/WebviewBridge.ts +50 -0
  753. package/src/services/asg/GalleryMediaIntegrityReportService.ts +70 -0
  754. package/src/services/asg/asgCameraApi.ts +1695 -0
  755. package/src/services/asg/cameraRollExportCoordinator.ts +627 -0
  756. package/src/services/asg/cameraRollExportLedger.ts +122 -0
  757. package/src/services/asg/galleryMediaValidation.ts +183 -0
  758. package/src/services/asg/galleryNotices.ts +61 -0
  759. package/src/services/asg/galleryPathMigration.ts +22 -0
  760. package/src/services/asg/gallerySettingsService.ts +68 -0
  761. package/src/services/asg/gallerySyncNotifications.ts +236 -0
  762. package/src/services/asg/gallerySyncService.ts +2269 -0
  763. package/src/services/asg/galleryTransferLedger.ts +312 -0
  764. package/src/services/asg/localNetworkTransport.ts +173 -0
  765. package/src/services/asg/localStorageService.ts +652 -0
  766. package/src/services/asg/mediaProcessingQueue.ts +518 -0
  767. package/src/services/asgOtaVersionUrl.ts +41 -0
  768. package/src/services/blobPaths.ts +86 -0
  769. package/src/services/cloudStreamApi.ts +154 -0
  770. package/src/services/gallerySyncClock.ts +39 -0
  771. package/src/services/glassesClockSync.ts +115 -0
  772. package/src/services/manifestVersionGate.ts +43 -0
  773. package/src/services/mentraUiShim.ts +366 -0
  774. package/src/services/navigation/roadNameResolver.ts +112 -0
  775. package/src/services/navigation/routesApiCodec.ts +69 -0
  776. package/src/services/otaDisplayState.ts +115 -0
  777. package/src/services/otaInstallPolicy.ts +106 -0
  778. package/src/services/otaLegacyMapping.ts +71 -0
  779. package/src/services/slimStreamStatus.ts +28 -0
  780. package/src/stores/apps.ts +614 -0
  781. package/src/stores/bluetoothSettingKeys.ts +36 -0
  782. package/src/stores/cloudClientStatus.ts +37 -0
  783. package/src/stores/connection.ts +69 -0
  784. package/src/stores/core.ts +32 -0
  785. package/src/stores/display.ts +121 -0
  786. package/src/stores/gallerySync.ts +380 -0
  787. package/src/stores/glasses.ts +309 -0
  788. package/src/stores/settings.ts +1001 -0
  789. package/src/types/applet.ts +112 -0
  790. package/src/types/asg.ts +58 -0
  791. package/src/types/capabilities/even-realities-g1.ts +67 -0
  792. package/src/types/capabilities/even-realities-g2.ts +88 -0
  793. package/src/types/capabilities/mentra-display.ts +75 -0
  794. package/src/types/capabilities/mentra-live.ts +103 -0
  795. package/src/types/capabilities/none.ts +76 -0
  796. package/src/types/capabilities/simulated-glasses.ts +76 -0
  797. package/src/types/capabilities/vuzix-z100.ts +64 -0
  798. package/src/types/enums.ts +43 -0
  799. package/src/types/hardware.ts +203 -0
  800. package/src/types/index.ts +37 -0
  801. package/src/utils/GlobalEventEmitter.ts +14 -0
  802. package/src/utils/cloudClient/RnUdpAdapter.ts +47 -0
  803. package/src/utils/cloudClient/cloudSecureStore.ts +28 -0
  804. package/src/utils/debouncedPatch.ts +28 -0
  805. package/src/utils/devLogging.ts +140 -0
  806. package/src/utils/devMiniappLaunch.ts +68 -0
  807. package/src/utils/diagnosticContext.ts +155 -0
  808. package/src/utils/display/composer/ColumnComposer.ts +285 -0
  809. package/src/utils/display/composer/index.ts +15 -0
  810. package/src/utils/display/helpers/DisplayHelpers.ts +413 -0
  811. package/src/utils/display/helpers/ScrollView.ts +337 -0
  812. package/src/utils/display/helpers/index.ts +14 -0
  813. package/src/utils/display/index.ts +273 -0
  814. package/src/utils/display/measurer/TextMeasurer.ts +346 -0
  815. package/src/utils/display/measurer/index.ts +21 -0
  816. package/src/utils/display/measurer/script-detection.ts +218 -0
  817. package/src/utils/display/profiles/g1.ts +236 -0
  818. package/src/utils/display/profiles/g2.ts +39 -0
  819. package/src/utils/display/profiles/index.ts +28 -0
  820. package/src/utils/display/profiles/nex.ts +166 -0
  821. package/src/utils/display/profiles/types.ts +132 -0
  822. package/src/utils/display/profiles/z100.ts +198 -0
  823. package/src/utils/display/scene/degrade.ts +80 -0
  824. package/src/utils/display/scene/differ.ts +128 -0
  825. package/src/utils/display/scene/index.ts +21 -0
  826. package/src/utils/display/scene/process.ts +214 -0
  827. package/src/utils/display/scene/store.ts +0 -0
  828. package/src/utils/display/scene/types.ts +0 -0
  829. package/src/utils/display/wrapper/TextWrapper.ts +546 -0
  830. package/src/utils/display/wrapper/index.ts +15 -0
  831. package/src/utils/display/wrapper/types.ts +102 -0
  832. package/src/utils/e2eMetrics.ts +30 -0
  833. package/src/utils/hardware/hardware.ts +166 -0
  834. package/src/utils/hardware/index.ts +1 -0
  835. package/src/utils/miniappGlobals.ts +260 -0
  836. package/src/utils/permissions/MediaLibraryPermissions.ts +161 -0
  837. package/src/utils/permissions/galleryDisplayName.ts +28 -0
  838. package/src/utils/storage/index.ts +2 -0
  839. package/src/utils/storage/storage.ts +101 -0
  840. package/src/utils/storage/zip.ts +13 -0
  841. package/src/utils/timers/index.ts +2 -0
  842. package/src/utils/timers/timers.ts +139 -0
@@ -0,0 +1,731 @@
1
+ /**
2
+ * NavigationService
3
+ *
4
+ * Thin singleton wrapper around the native Google Navigation SDK exposed
5
+ * by the `crust` Expo module.
6
+ *
7
+ * Mini apps will eventually subscribe through the mini app SDK, which
8
+ * routes via LocalMiniappRuntime and ultimately calls into here. For now,
9
+ * this is also called directly by the developer-settings test button.
10
+ *
11
+ * Works on both Android and iOS via the native GoogleNavigation SDK.
12
+ */
13
+
14
+ import CrustModule from "@mentra/crust"
15
+
16
+ import {decodePolyline, parseDurationSeconds} from "./navigation/routesApiCodec"
17
+ import {resolveStepRoads} from "./navigation/roadNameResolver"
18
+
19
+ const LOG_TAG = "NAV_SERVICE"
20
+
21
+ export type NavManeuver = {
22
+ kind: "maneuver"
23
+ /**
24
+ * Categorical type of the upcoming maneuver. One of: STRAIGHT,
25
+ * SLIGHT_LEFT, SLIGHT_RIGHT, TURN_LEFT, TURN_RIGHT, SHARP_LEFT,
26
+ * SHARP_RIGHT, U_TURN, ARRIVE.
27
+ */
28
+ maneuverType: string
29
+ distanceMeters: number
30
+ /** Road the user is currently on. Null if the SDK didn't supply one. */
31
+ fromRoad?: string | null
32
+ /** Road the user will be on after the maneuver. Null if the SDK didn't supply one. */
33
+ toRoad?: string | null
34
+ distanceToDestinationMeters?: number
35
+ timeToDestinationSeconds?: number
36
+ currentSpeedMps?: number | null
37
+ speedLimitMps?: number | null
38
+ routeHeadingDeg?: number | null
39
+ }
40
+
41
+ export type NavOffRoute = {
42
+ kind: "off_route"
43
+ offRouteDistanceMeters: number
44
+ }
45
+
46
+ export type NavRerouting = {kind: "rerouting"}
47
+ export type NavArrived = {kind: "arrived"}
48
+ export type NavError = {kind: "error"; message: string}
49
+
50
+ export type NavUpdate = NavManeuver | NavOffRoute | NavRerouting | NavArrived | NavError
51
+
52
+ export type NavListener = (update: NavUpdate) => void
53
+
54
+ export type NavLocation = {
55
+ lat: number
56
+ lng: number
57
+ accuracy: number | null
58
+ timestamp: number
59
+ }
60
+ export type NavLocationListener = (loc: NavLocation) => void
61
+
62
+ export type NavRouteStep = {
63
+ lat: number
64
+ lng: number
65
+ routeIndex: number
66
+ road: string | null
67
+ maneuver: string
68
+ distanceMeters: number
69
+ }
70
+ export type NavRoute = {
71
+ points: Array<{lat: number; lng: number}>
72
+ steps?: NavRouteStep[]
73
+ }
74
+ export type NavRouteListener = (route: NavRoute) => void
75
+
76
+ export type NavState = "idle" | "navigating" | "rerouting" | "arrived"
77
+
78
+ /**
79
+ * Snapshot of the active trip — fed to miniapps that open mid-trip via
80
+ * `navigation.getState()`. Mirrors the SDK's NavState shape closely; the
81
+ * runtime keeps it strictly in sync as nav events arrive.
82
+ */
83
+ export type NavTripSnapshot = {
84
+ active: boolean
85
+ mode?: string
86
+ stops?: Array<{lat: number; lng: number}>
87
+ currentStopIndex?: number
88
+ route?: NavRoute
89
+ maneuver?: NavManeuver
90
+ distanceToDestinationMeters?: number
91
+ timeToDestinationSeconds?: number
92
+ currentSpeedMps?: number | null
93
+ speedLimitMps?: number | null
94
+ }
95
+
96
+ class NavigationService {
97
+ private static instance: NavigationService | null = null
98
+ private listeners = new Set<NavListener>()
99
+ private locationListeners = new Set<NavLocationListener>()
100
+ private routeListeners = new Set<NavRouteListener>()
101
+ private subs: Array<{remove: () => void}> = []
102
+ private state: NavState = "idle"
103
+ /** Last emitted route — replayed to late subscribers so they get the
104
+ * current geometry immediately. */
105
+ private lastRoute: NavRoute | null = null
106
+ /** Last maneuver event observed — used to hydrate getState() on mid-trip mount. */
107
+ private lastManeuver: NavManeuver | null = null
108
+ /** Trip configuration captured at start(), surfaced via getState(). */
109
+ private tripStops: Array<{lat: number; lng: number}> = []
110
+ private tripMode: string = "driving"
111
+
112
+ private constructor() {}
113
+
114
+ public static getInstance(): NavigationService {
115
+ if (!NavigationService.instance) {
116
+ NavigationService.instance = new NavigationService()
117
+ }
118
+ return NavigationService.instance
119
+ }
120
+
121
+ public getState(): NavState {
122
+ return this.state
123
+ }
124
+
125
+ public addListener(listener: NavListener): () => void {
126
+ this.listeners.add(listener)
127
+ if (this.subs.length === 0) {
128
+ this.attachNativeSubs()
129
+ }
130
+ return () => {
131
+ this.listeners.delete(listener)
132
+ if (this.noListeners()) {
133
+ this.detachNativeSubs()
134
+ }
135
+ }
136
+ }
137
+
138
+ /**
139
+ * Subscribe to the Google Nav SDK's road-snapped location stream. Only
140
+ * fires while a nav session is active. Returns an unsubscribe fn.
141
+ */
142
+ public addLocationListener(listener: NavLocationListener): () => void {
143
+ this.locationListeners.add(listener)
144
+ if (this.subs.length === 0) {
145
+ this.attachNativeSubs()
146
+ }
147
+ return () => {
148
+ this.locationListeners.delete(listener)
149
+ if (this.noListeners()) {
150
+ this.detachNativeSubs()
151
+ }
152
+ }
153
+ }
154
+
155
+ /**
156
+ * Subscribe to the active route's polyline. Fires once per route build
157
+ * (initial + after every reroute). Late subscribers get the current
158
+ * route replayed on subscribe so the UI can render immediately.
159
+ */
160
+ public addRouteListener(listener: NavRouteListener): () => void {
161
+ this.routeListeners.add(listener)
162
+ if (this.subs.length === 0) {
163
+ this.attachNativeSubs()
164
+ }
165
+ if (this.lastRoute) {
166
+ try {
167
+ listener(this.lastRoute)
168
+ } catch (err) {
169
+ console.error(`${LOG_TAG}: route listener threw on replay`, err)
170
+ }
171
+ }
172
+ return () => {
173
+ this.routeListeners.delete(listener)
174
+ if (this.noListeners()) {
175
+ this.detachNativeSubs()
176
+ }
177
+ }
178
+ }
179
+
180
+ private noListeners(): boolean {
181
+ return this.listeners.size === 0 && this.locationListeners.size === 0 && this.routeListeners.size === 0
182
+ }
183
+
184
+ public async start(
185
+ coords: {lat: number; lng: number},
186
+ options?: {
187
+ simulate?: boolean
188
+ speedMultiplier?: number
189
+ stops?: Array<{lat: number; lng: number}>
190
+ mode?: string
191
+ avoid?: {highways?: boolean; tolls?: boolean; ferries?: boolean}
192
+ missedTurnRerouteMeters?: number
193
+ },
194
+ ): Promise<{ok: boolean; error?: string}> {
195
+ console.log(
196
+ `${LOG_TAG}: start ${coords.lat},${coords.lng} sim=${options?.simulate ?? false} speed=${options?.speedMultiplier ?? 5}`,
197
+ )
198
+ if (this.subs.length === 0) {
199
+ // Listeners may attach after start(); make sure native subs exist
200
+ // so we don't drop early events.
201
+ this.attachNativeSubs()
202
+ }
203
+ const result = await CrustModule.startNavigation(coords.lat, coords.lng, {
204
+ simulate: options?.simulate ?? false,
205
+ speedMultiplier: options?.speedMultiplier ?? 5,
206
+ stops: options?.stops,
207
+ mode: options?.mode ?? "driving",
208
+ avoid: options?.avoid,
209
+ missedTurnRerouteMeters: options?.missedTurnRerouteMeters,
210
+ })
211
+ if (!result.ok) {
212
+ console.warn(`${LOG_TAG}: start failed — ${result.error}`)
213
+ this.state = "idle"
214
+ this.tripStops = []
215
+ this.tripMode = "driving"
216
+ } else {
217
+ this.state = "navigating"
218
+ this.tripStops = options?.stops ?? [{lat: coords.lat, lng: coords.lng}]
219
+ this.tripMode = options?.mode ?? "driving"
220
+ }
221
+ return result
222
+ }
223
+
224
+ /**
225
+ * Snapshot of the active trip for `navigation.getState()`. Returns null
226
+ * when no trip is running. The snapshot is built from in-memory state
227
+ * fed by the existing native event stream — no extra IPC.
228
+ */
229
+ public getSnapshot(): NavTripSnapshot | null {
230
+ if (this.state === "idle") return null
231
+ const m = this.lastManeuver
232
+ return {
233
+ active: this.state !== "arrived",
234
+ mode: this.tripMode,
235
+ stops: this.tripStops.length > 0 ? this.tripStops : undefined,
236
+ // Single-destination trips: index is always 0 (final stop). The Nav
237
+ // SDK manages waypoint progression internally, so for now we report 0.
238
+ currentStopIndex: 0,
239
+ route: this.lastRoute ?? undefined,
240
+ maneuver: m ?? undefined,
241
+ distanceToDestinationMeters: m?.distanceToDestinationMeters,
242
+ timeToDestinationSeconds: m?.timeToDestinationSeconds,
243
+ currentSpeedMps: m?.currentSpeedMps,
244
+ speedLimitMps: m?.speedLimitMps,
245
+ }
246
+ }
247
+
248
+ public async stop(): Promise<{ok: boolean; error?: string}> {
249
+ console.log(`${LOG_TAG}: stop`)
250
+ const result = await CrustModule.stopNavigation()
251
+ this.state = "idle"
252
+ this.lastRoute = null
253
+ this.lastManeuver = null
254
+ this.tripStops = []
255
+ this.tripMode = "driving"
256
+ return result
257
+ }
258
+
259
+ /**
260
+ * Trigger the Google Nav SDK Terms & Conditions dialog if the user
261
+ * hasn't accepted yet. Resolves immediately when acceptance is already
262
+ * on file, so it's safe (and intended) to call eagerly on mount.
263
+ */
264
+ public async requestPermission(): Promise<{ok: boolean; accepted: boolean; error?: string}> {
265
+ console.log(`${LOG_TAG}: requestPermission`)
266
+ return await CrustModule.requestNavigationPermission()
267
+ }
268
+
269
+ // Dev-only: clear the cached "terms accepted" flags so the next
270
+ // requestPermission() call re-shows Google's dialog. Android only;
271
+ // iOS bridge returns {ok: false, error: "not supported on iOS"}.
272
+ public async resetPermission(): Promise<{ok: boolean; error?: string}> {
273
+ console.log(`${LOG_TAG}: resetPermission`)
274
+ return await CrustModule.resetNavigationPermission()
275
+ }
276
+
277
+ /**
278
+ * Dev-only: nudge the simulator off-route to trigger an actual reroute
279
+ * from the Nav SDK. Useful for verifying the rerouting pipeline (UI
280
+ * flips to "Rebuilding route…", route polyline updates, glasses display
281
+ * mirrors the new path). No-op on iOS or with real GPS fixes.
282
+ */
283
+ public async simulateDeviation(offsetMeters: number = 20): Promise<{ok: boolean; error?: string}> {
284
+ console.log(`${LOG_TAG}: simulateDeviation(${offsetMeters}m)`)
285
+ return await CrustModule.simulateDeviation(offsetMeters)
286
+ }
287
+
288
+ /**
289
+ * Dev toggle: lock simulated locations onto the wrong sidewalk
290
+ * (perpendicular-right of the route bearing by ~8m). Used to verify
291
+ * the SDK's along-path pivot trigger fires even when the user never
292
+ * comes within the 7m radius of a pivot point. Android-only today; iOS
293
+ * is a no-op stub.
294
+ */
295
+ public async setWrongSidewalkOffset(enabled: boolean): Promise<{ok: boolean; error?: string}> {
296
+ console.log(`${LOG_TAG}: setWrongSidewalkOffset(${enabled})`)
297
+ return await CrustModule.setWrongSidewalkOffset(enabled)
298
+ }
299
+
300
+ /**
301
+ * Dev toggle: take over from the Google simulator and walk the user
302
+ * along a modified polyline that skips crossing micro-steps. Lets us
303
+ * reproduce the wrong-sidewalk-then-missed-the-turn scenario for
304
+ * pivot trigger testing. Android-only today; iOS is a no-op stub.
305
+ */
306
+ public async setSkipCrossings(enabled: boolean): Promise<{ok: boolean; error?: string}> {
307
+ console.log(`${LOG_TAG}: setSkipCrossings(${enabled})`)
308
+ return await CrustModule.setSkipCrossings(enabled)
309
+ }
310
+
311
+ /**
312
+ * @deprecated Route computation moved to the v2 cloud maps service
313
+ * (cloud.runtime.maps.directions), which holds the provider token
314
+ * server-side and caches results. The miniapp bridge now routes
315
+ * NAVIGATION_COMPUTE_ROUTE to NavigationHandlers -> cloud.maps; this direct
316
+ * Mapbox path is no longer reached from miniapps. Kept only as reference /
317
+ * for any non-bridge caller; do not add new callers.
318
+ *
319
+ * Compute one or more routes without starting a trip. Implemented by
320
+ * calling Mapbox's Directions API (REST) so we don't disturb the active
321
+ * Navigator. Returns `{ok: false}` plus an error string when the engine
322
+ * can't produce a route — mirrors the SDK's ComputeRouteResult shape so
323
+ * the host can pass it back to miniapps unchanged.
324
+ */
325
+ public async computeRoute(payload: Record<string, unknown>): Promise<{
326
+ ok: boolean
327
+ error?: string
328
+ routes?: Array<{
329
+ points: Array<{lat: number; lng: number}>
330
+ totalDistanceMeters: number
331
+ totalDurationSeconds: number
332
+ summary?: string
333
+ }>
334
+ }> {
335
+ return computeRouteViaRoutesApi(payload)
336
+ }
337
+
338
+ /**
339
+ * @deprecated Reverse geocoding moved to the v2 cloud maps service
340
+ * (cloud.runtime.maps.reverseGeocode). The miniapp bridge now routes
341
+ * NAVIGATION_REVERSE_GEOCODE to NavigationHandlers -> cloud.maps; this direct
342
+ * Mapbox path is no longer reached from miniapps. Kept only as reference; do
343
+ * not add new callers.
344
+ *
345
+ * Reverse-geocode a coordinate into a short road/route name via
346
+ * Mapbox's Geocoding REST API. Backs the SDK pivot engine's
347
+ * last-resort fallback when a Routes-API instruction didn't carry a
348
+ * parseable road. Returns `{ok: true, road: null}` when the
349
+ * coordinate is genuinely off-grid (mid-park, water) — that's a
350
+ * successful query with no road component, distinct from a failure.
351
+ */
352
+ public async reverseGeocodeRoad(coord: {lat: number; lng: number}): Promise<{
353
+ ok: boolean
354
+ road?: string | null
355
+ error?: string
356
+ }> {
357
+ return reverseGeocodeRoadViaGeocodingApi(coord)
358
+ }
359
+
360
+ private attachNativeSubs(): void {
361
+ console.log(`${LOG_TAG}: attachNativeSubs() — listeners=${this.listeners.size}`)
362
+ this.subs.push(
363
+ CrustModule.addListener("onNavManeuver", (data) => {
364
+ this.state = "navigating"
365
+ const event: NavManeuver = {kind: "maneuver", ...data}
366
+ this.lastManeuver = event
367
+ this.fanout(event)
368
+ }),
369
+ CrustModule.addListener("onNavRerouting", () => {
370
+ console.log(`${LOG_TAG}: ← onNavRerouting`)
371
+ this.state = "rerouting"
372
+ this.fanout({kind: "rerouting"})
373
+ }),
374
+ CrustModule.addListener("onNavArrived", () => {
375
+ console.log(`${LOG_TAG}: ← onNavArrived`)
376
+ this.state = "arrived"
377
+ this.lastManeuver = null
378
+ this.fanout({kind: "arrived"})
379
+ }),
380
+ CrustModule.addListener("onNavError", (data) => {
381
+ console.log(`${LOG_TAG}: ← onNavError`, data?.message)
382
+ this.fanout({kind: "error", message: data.message})
383
+ }),
384
+ CrustModule.addListener("onNavLocation", (data) => {
385
+ const loc: NavLocation = {
386
+ lat: data.lat,
387
+ lng: data.lng,
388
+ accuracy: data.accuracy ?? null,
389
+ timestamp: data.timestamp,
390
+ }
391
+ this.locationListeners.forEach((l) => {
392
+ try {
393
+ l(loc)
394
+ } catch (err) {
395
+ console.error(`${LOG_TAG}: location listener threw`, err)
396
+ }
397
+ })
398
+ }),
399
+ CrustModule.addListener("onNavRoute", (data) => {
400
+ const route: NavRoute = {
401
+ points: data.points ?? [],
402
+ steps: data.steps?.map((step) => ({
403
+ ...step,
404
+ road: step.road ?? null,
405
+ })),
406
+ }
407
+ this.lastRoute = route
408
+ console.log(`${LOG_TAG}: ← onNavRoute (${route.points.length} points, steps=${route.steps?.length ?? "null"})`)
409
+ this.routeListeners.forEach((l) => {
410
+ try {
411
+ l(route)
412
+ } catch (err) {
413
+ console.error(`${LOG_TAG}: route listener threw`, err)
414
+ }
415
+ })
416
+ }),
417
+ CrustModule.addListener("onNavOffRoute", (data) => {
418
+ console.log(`${LOG_TAG}: ← onNavOffRoute`, data?.offRouteDistanceMeters)
419
+ this.fanout({kind: "off_route", offRouteDistanceMeters: data?.offRouteDistanceMeters ?? 0})
420
+ }),
421
+ )
422
+ }
423
+
424
+ private detachNativeSubs(): void {
425
+ this.subs.forEach((s) => s.remove())
426
+ this.subs = []
427
+ }
428
+
429
+ private fanout(update: NavUpdate): void {
430
+ this.listeners.forEach((l) => {
431
+ try {
432
+ l(update)
433
+ } catch (err) {
434
+ console.error(`${LOG_TAG}: listener threw`, err)
435
+ }
436
+ })
437
+ }
438
+ }
439
+
440
+ const navigationService = NavigationService.getInstance()
441
+ export default navigationService
442
+
443
+ // ---------------------------------------------------------------------------
444
+ // Routes API (REST)
445
+ // ---------------------------------------------------------------------------
446
+
447
+ // Mapbox migration: Routes + Geocoding now go DIRECT to Mapbox from the
448
+ // phone process, authenticated with the public runtime token
449
+ // (EXPO_PUBLIC_MAPBOX_ACCESS_TOKEN, inlined at build). No cloud proxy in
450
+ // this cut — the token is a public pk.… that's safe to ship; moving it
451
+ // server-side (re-introducing the proxy) is a later hardening step. See
452
+ // issues/mapbox-navigation-migration.md §8a.
453
+ const MAPBOX_DIRECTIONS_BASE = "https://api.mapbox.com/directions/v5/mapbox"
454
+ const MAPBOX_GEOCODE_REVERSE = "https://api.mapbox.com/search/geocode/v6/reverse"
455
+
456
+ /** The public Mapbox token, inlined at build time. Empty in misconfigured builds. */
457
+ function mapboxToken(): string {
458
+ return process.env.EXPO_PUBLIC_MAPBOX_ACCESS_TOKEN ?? ""
459
+ }
460
+
461
+ /**
462
+ * @deprecated Superseded by the v2 cloud maps service
463
+ * (cloud.runtime.maps.directions). This direct-to-Mapbox call from the device
464
+ * is no longer on the miniapp path; the token now lives server-side. Retained
465
+ * for reference only — do not add new callers.
466
+ *
467
+ * Phone-side helper: hit the Mapbox Directions API directly. Lives here
468
+ * (not in Kotlin) so it's platform-independent across the JS bridge.
469
+ * Returns the SDK-shaped result with primary + alternates.
470
+ *
471
+ * Mapbox Directions differs from Google Routes in shape: numeric
472
+ * `distance`/`duration`, `polyline6` geometry per-route AND per-step, and
473
+ * `maneuver = {location:[lng,lat], type, modifier, instruction}`. We
474
+ * synthesize the SDK's `ComputedRouteStep` (lat/lng start, endLat/endLng
475
+ * = next step's start) from the ordered step list.
476
+ */
477
+ async function computeRouteViaRoutesApi(payload: Record<string, unknown>): Promise<{
478
+ ok: boolean
479
+ error?: string
480
+ routes?: Array<{
481
+ points: Array<{lat: number; lng: number}>
482
+ totalDistanceMeters: number
483
+ totalDurationSeconds: number
484
+ summary?: string
485
+ steps?: Array<{
486
+ lat: number
487
+ lng: number
488
+ endLat: number
489
+ endLng: number
490
+ distanceMeters: number
491
+ maneuver?: string
492
+ instruction?: string
493
+ road?: string | null
494
+ }>
495
+ }>
496
+ }> {
497
+ const origin = payload.origin as {lat?: unknown; lng?: unknown} | undefined
498
+ const stopsRaw = payload.stops as Array<{lat?: unknown; lng?: unknown}> | undefined
499
+ const mode = (typeof payload.mode === "string" ? payload.mode : "driving").toLowerCase()
500
+ const alt = Number(payload.alternatives)
501
+ const alternatives = Number.isFinite(alt) && alt > 0 ? alt : 1
502
+ const avoid = (payload.avoid as Record<string, unknown> | undefined) ?? {}
503
+
504
+ const oLat = Number(origin?.lat)
505
+ const oLng = Number(origin?.lng)
506
+ if (!Number.isFinite(oLat) || !Number.isFinite(oLng)) {
507
+ return {ok: false, error: "computeRoute: origin.lat/lng required"}
508
+ }
509
+ const stops = (Array.isArray(stopsRaw) ? stopsRaw : [])
510
+ .map((s) => ({lat: Number(s?.lat), lng: Number(s?.lng)}))
511
+ .filter((s) => Number.isFinite(s.lat) && Number.isFinite(s.lng))
512
+ if (stops.length === 0) {
513
+ return {ok: false, error: "computeRoute: at least one stop required"}
514
+ }
515
+
516
+ const token = mapboxToken()
517
+ if (!token) return {ok: false, error: "computeRoute: EXPO_PUBLIC_MAPBOX_ACCESS_TOKEN not set"}
518
+
519
+ // Mapbox path is a semicolon-joined `lng,lat` list: origin then each stop.
520
+ const coords = [`${oLng},${oLat}`, ...stops.map((s) => `${s.lng},${s.lat}`)].join(";")
521
+ const exclude = mapboxExclude(avoid)
522
+ const params = new URLSearchParams({
523
+ alternatives: String(alternatives > 1),
524
+ geometries: "polyline6",
525
+ overview: "full",
526
+ steps: "true",
527
+ banner_instructions: "true",
528
+ voice_instructions: "false",
529
+ access_token: token,
530
+ })
531
+ if (exclude) params.set("exclude", exclude)
532
+ const url = `${MAPBOX_DIRECTIONS_BASE}/${mapboxProfile(mode)}/${coords}?${params.toString()}`
533
+
534
+ try {
535
+ const res = await fetch(url, {method: "GET"})
536
+ if (!res.ok) {
537
+ return {ok: false, error: `Directions API ${res.status}`}
538
+ }
539
+ const json = (await res.json()) as {
540
+ code?: string
541
+ message?: string
542
+ routes?: Array<{
543
+ geometry?: string
544
+ distance?: number
545
+ duration?: string | number
546
+ weight_name?: string
547
+ legs?: Array<{
548
+ summary?: string
549
+ steps?: Array<{
550
+ geometry?: string
551
+ name?: string
552
+ distance?: number
553
+ maneuver?: {location?: [number, number]; type?: string; modifier?: string; instruction?: string}
554
+ }>
555
+ }>
556
+ }>
557
+ }
558
+ if (json.code && json.code !== "Ok") {
559
+ return {ok: false, error: json.message ?? `Directions code ${json.code}`}
560
+ }
561
+ // Resolve `road` for every step whose Mapbox `name` was blank (slip
562
+ // lanes, unnamed paths, arrival legs) via reverse-geocode. Per-route
563
+ // and per-alternate resolution fire concurrently.
564
+ const routes = await Promise.all(
565
+ (json.routes ?? []).slice(0, alternatives).map(async (r) => {
566
+ const legs = r.legs ?? []
567
+ const flatSteps = legs.flatMap((leg) => leg.steps ?? [])
568
+ const rawSteps = flatSteps.map((s, i) => {
569
+ const here = s.maneuver?.location // [lng, lat]
570
+ const next = flatSteps[i + 1]?.maneuver?.location
571
+ const lat = here?.[1] ?? Number.NaN
572
+ const lng = here?.[0] ?? Number.NaN
573
+ return {
574
+ lat,
575
+ lng,
576
+ // End of step i == start of step i+1; final step ends at itself.
577
+ endLat: next?.[1] ?? lat,
578
+ endLng: next?.[0] ?? lng,
579
+ distanceMeters: Math.round(s.distance ?? 0),
580
+ maneuver: mapboxManeuverToKind(s.maneuver?.type, s.maneuver?.modifier),
581
+ instruction: s.maneuver?.instruction,
582
+ // Mapbox gives the road name inline as `step.name`; prefer it
583
+ // over geocoding. Blank names fall through to resolveStepRoads.
584
+ road: s.name && s.name.trim().length > 0 ? s.name.trim() : undefined,
585
+ }
586
+ })
587
+ const steps = await resolveStepRoads(rawSteps, reverseGeocodeRoadViaGeocodingApi)
588
+ return {
589
+ points: decodePolyline(r.geometry ?? "", 6),
590
+ totalDistanceMeters: Math.round(r.distance ?? 0),
591
+ totalDurationSeconds: parseDurationSeconds(r.duration ?? 0),
592
+ summary: legs[0]?.summary,
593
+ steps: steps.length > 0 ? steps : undefined,
594
+ }
595
+ }),
596
+ )
597
+ if (routes.length === 0) return {ok: false, error: "no routes returned"}
598
+ return {ok: true, routes}
599
+ } catch (err) {
600
+ return {ok: false, error: err instanceof Error ? err.message : "computeRoute failed"}
601
+ }
602
+ }
603
+
604
+ /** SDK-agnostic mode → Mapbox Directions profile. two_wheeler → driving. */
605
+ function mapboxProfile(mode: string): string {
606
+ switch (mode) {
607
+ case "walking":
608
+ return "walking"
609
+ case "cycling":
610
+ return "cycling"
611
+ case "two_wheeler":
612
+ return "driving"
613
+ default:
614
+ return "driving-traffic"
615
+ }
616
+ }
617
+
618
+ /** Avoid flags → Mapbox `exclude` param. Null when nothing to exclude. */
619
+ function mapboxExclude(avoid: Record<string, unknown>): string | null {
620
+ const ex: string[] = []
621
+ if (avoid.tolls === true) ex.push("toll")
622
+ if (avoid.ferries === true) ex.push("ferry")
623
+ if (avoid.highways === true) ex.push("motorway")
624
+ return ex.length > 0 ? ex.join(",") : null
625
+ }
626
+
627
+ /**
628
+ * Map Mapbox `maneuver.type` + `modifier` to the SDK's ManeuverKind
629
+ * vocabulary — the JS-side mirror of NavigationManager.kt's mapManeuver
630
+ * (issues/mapbox-navigation-migration.md §7). Kept here so the
631
+ * computeRoute preview path labels turns the same way the live trip does.
632
+ */
633
+ function mapboxManeuverToKind(type?: string, modifier?: string): string | undefined {
634
+ switch (type) {
635
+ case "depart":
636
+ return "DEPART"
637
+ case "arrive":
638
+ return "ARRIVE"
639
+ case "new name":
640
+ return "NAME_CHANGE"
641
+ case "continue":
642
+ case "merge":
643
+ return "CONTINUE"
644
+ case "notification":
645
+ return "STRAIGHT"
646
+ default:
647
+ break
648
+ }
649
+ switch (modifier) {
650
+ case "uturn":
651
+ return "U_TURN"
652
+ case "sharp left":
653
+ return "SHARP_LEFT"
654
+ case "left":
655
+ return "TURN_LEFT"
656
+ case "slight left":
657
+ return "SLIGHT_LEFT"
658
+ case "straight":
659
+ return "STRAIGHT"
660
+ case "slight right":
661
+ return "SLIGHT_RIGHT"
662
+ case "right":
663
+ return "TURN_RIGHT"
664
+ case "sharp right":
665
+ return "SHARP_RIGHT"
666
+ default:
667
+ return type ? "STRAIGHT" : undefined
668
+ }
669
+ }
670
+
671
+ /**
672
+ * @deprecated Superseded by the v2 cloud maps service
673
+ * (cloud.runtime.maps.reverseGeocode). This direct-to-Mapbox call from the
674
+ * device is no longer on the miniapp path; the token now lives server-side.
675
+ * Retained for reference only — do not add new callers.
676
+ *
677
+ * Reverse-geocode a coordinate via the Mapbox Geocoding v6 API directly and
678
+ * return the road/street name (e.g. "Octavia Blvd"). When no street is
679
+ * present — the coordinate is genuinely off-grid (water, park interior) —
680
+ * resolves with `{ok: true, road: null}`. Network failures and missing
681
+ * token resolve with `{ok: false, error}`.
682
+ *
683
+ * Mapbox v6 returns a GeoJSON FeatureCollection; the street name lives at
684
+ * `features[0].properties.context.street.name`. We also accept a feature
685
+ * whose own `feature_type` is `street` (its `name` is the road). We prefer
686
+ * the most-specific feature (the first), matching how the Google-era code
687
+ * took the first `route` component.
688
+ */
689
+ async function reverseGeocodeRoadViaGeocodingApi(coord: {lat: number; lng: number}): Promise<{
690
+ ok: boolean
691
+ road?: string | null
692
+ error?: string
693
+ }> {
694
+ if (!Number.isFinite(coord.lat) || !Number.isFinite(coord.lng)) {
695
+ return {ok: false, error: "reverseGeocode: invalid coord"}
696
+ }
697
+ const token = mapboxToken()
698
+ if (!token) return {ok: false, error: "reverseGeocode: EXPO_PUBLIC_MAPBOX_ACCESS_TOKEN not set"}
699
+ const params = new URLSearchParams({
700
+ longitude: String(coord.lng),
701
+ latitude: String(coord.lat),
702
+ // Bias toward address/street features so the street context is present.
703
+ types: "address,street",
704
+ limit: "1",
705
+ access_token: token,
706
+ })
707
+ try {
708
+ const res = await fetch(`${MAPBOX_GEOCODE_REVERSE}?${params.toString()}`, {method: "GET"})
709
+ if (!res.ok) return {ok: false, error: `Geocoding API ${res.status}`}
710
+ const json = (await res.json()) as {
711
+ features?: Array<{
712
+ properties?: {
713
+ feature_type?: string
714
+ name?: string
715
+ context?: {street?: {name?: string}}
716
+ }
717
+ }>
718
+ }
719
+ for (const feature of json.features ?? []) {
720
+ const props = feature.properties
721
+ // A street-type feature's own name is the road; otherwise read the
722
+ // street from context.
723
+ const fromStreetType = props?.feature_type === "street" ? props?.name : undefined
724
+ const name = (fromStreetType ?? props?.context?.street?.name ?? "").trim()
725
+ if (name) return {ok: true, road: name}
726
+ }
727
+ return {ok: true, road: null}
728
+ } catch (err) {
729
+ return {ok: false, error: err instanceof Error ? err.message : "reverseGeocode failed"}
730
+ }
731
+ }