@mentra/engine 0.1.0-dev.0 → 3.1.0-beta.100

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 (574) hide show
  1. package/README.md +73 -18
  2. package/build/bluetooth-sdk/debug.d.ts +2 -0
  3. package/build/bluetooth-sdk/debug.d.ts.map +1 -0
  4. package/build/bluetooth-sdk/debug.js +2 -0
  5. package/build/bluetooth-sdk/debug.js.map +1 -0
  6. package/build/bluetooth-sdk/index.d.ts +3 -0
  7. package/build/bluetooth-sdk/index.d.ts.map +1 -0
  8. package/build/bluetooth-sdk/index.js +3 -0
  9. package/build/bluetooth-sdk/index.js.map +1 -0
  10. package/build/bluetooth-sdk/ota-transport.d.ts +2 -0
  11. package/build/bluetooth-sdk/ota-transport.d.ts.map +1 -0
  12. package/build/bluetooth-sdk/ota-transport.js +2 -0
  13. package/build/bluetooth-sdk/ota-transport.js.map +1 -0
  14. package/build/bluetooth-sdk/photo-receiver.d.ts +3 -0
  15. package/build/bluetooth-sdk/photo-receiver.d.ts.map +1 -0
  16. package/build/bluetooth-sdk/photo-receiver.js +3 -0
  17. package/build/bluetooth-sdk/photo-receiver.js.map +1 -0
  18. package/build/bluetooth-sdk/react.d.ts +2 -0
  19. package/build/bluetooth-sdk/react.d.ts.map +1 -0
  20. package/build/bluetooth-sdk/react.js +2 -0
  21. package/build/bluetooth-sdk/react.js.map +1 -0
  22. package/build/bluetooth-sdk/types.d.ts +2 -0
  23. package/build/bluetooth-sdk/types.d.ts.map +1 -0
  24. package/build/bluetooth-sdk/types.js +2 -0
  25. package/build/bluetooth-sdk/types.js.map +1 -0
  26. package/build/engine.d.ts +29 -18
  27. package/build/engine.d.ts.map +1 -1
  28. package/build/engine.js +9 -4
  29. package/build/engine.js.map +1 -1
  30. package/build/facades/dev.d.ts +3 -2
  31. package/build/facades/dev.d.ts.map +1 -1
  32. package/build/facades/dev.js +18 -12
  33. package/build/facades/dev.js.map +1 -1
  34. package/build/facades/display.d.ts +1 -1
  35. package/build/facades/display.d.ts.map +1 -1
  36. package/build/facades/display.js +1 -1
  37. package/build/facades/display.js.map +1 -1
  38. package/build/facades/gallery.js +1 -1
  39. package/build/facades/gallery.js.map +1 -1
  40. package/build/facades/glasses.d.ts +4 -13
  41. package/build/facades/glasses.d.ts.map +1 -1
  42. package/build/facades/glasses.js +21 -6
  43. package/build/facades/glasses.js.map +1 -1
  44. package/build/facades/glassesSettings.d.ts.map +1 -1
  45. package/build/facades/glassesSettings.js +1 -0
  46. package/build/facades/glassesSettings.js.map +1 -1
  47. package/build/facades/miniapps.d.ts +4 -0
  48. package/build/facades/miniapps.d.ts.map +1 -1
  49. package/build/facades/miniapps.js +5 -0
  50. package/build/facades/miniapps.js.map +1 -1
  51. package/build/facades/ota.d.ts +24 -21
  52. package/build/facades/ota.d.ts.map +1 -1
  53. package/build/facades/ota.js +31 -12
  54. package/build/facades/ota.js.map +1 -1
  55. package/build/facades/pairing.d.ts +12 -5
  56. package/build/facades/pairing.d.ts.map +1 -1
  57. package/build/facades/pairing.js +93 -17
  58. package/build/facades/pairing.js.map +1 -1
  59. package/build/facades/permissions.d.ts +10 -0
  60. package/build/facades/permissions.d.ts.map +1 -1
  61. package/build/facades/permissions.js +10 -0
  62. package/build/facades/permissions.js.map +1 -1
  63. package/build/facades/phoneNotifications.d.ts +0 -4
  64. package/build/facades/phoneNotifications.d.ts.map +1 -1
  65. package/build/facades/phoneNotifications.js +4 -14
  66. package/build/facades/phoneNotifications.js.map +1 -1
  67. package/build/facades/speech.d.ts +7 -6
  68. package/build/facades/speech.d.ts.map +1 -1
  69. package/build/facades/speech.js +1 -1
  70. package/build/facades/speech.js.map +1 -1
  71. package/build/generated/releaseMetadata.d.ts +12 -0
  72. package/build/generated/releaseMetadata.d.ts.map +1 -0
  73. package/build/generated/releaseMetadata.js +10 -0
  74. package/build/generated/releaseMetadata.js.map +1 -0
  75. package/build/index.d.ts +12 -10
  76. package/build/index.d.ts.map +1 -1
  77. package/build/index.js +7 -6
  78. package/build/index.js.map +1 -1
  79. package/build/react/MentraLiveOtaFlow.d.ts +44 -0
  80. package/build/react/MentraLiveOtaFlow.d.ts.map +1 -0
  81. package/build/react/MentraLiveOtaFlow.js +430 -0
  82. package/build/react/MentraLiveOtaFlow.js.map +1 -0
  83. package/build/react/index.d.ts +3 -0
  84. package/build/react/index.d.ts.map +1 -0
  85. package/build/react/index.js +3 -0
  86. package/build/react/index.js.map +1 -0
  87. package/build/react/useEngineSnapshot.d.ts +2 -0
  88. package/build/react/useEngineSnapshot.d.ts.map +1 -0
  89. package/build/react/useEngineSnapshot.js +14 -0
  90. package/build/react/useEngineSnapshot.js.map +1 -0
  91. package/build/react/useMentraLiveOta.d.ts +84 -0
  92. package/build/react/useMentraLiveOta.d.ts.map +1 -0
  93. package/build/react/useMentraLiveOta.js +627 -0
  94. package/build/react/useMentraLiveOta.js.map +1 -0
  95. package/build/runtime/bootstrap.d.ts +24 -1
  96. package/build/runtime/bootstrap.d.ts.map +1 -1
  97. package/build/runtime/bootstrap.js +17 -0
  98. package/build/runtime/bootstrap.js.map +1 -1
  99. package/build/runtime/scanQrSeam.d.ts +7 -0
  100. package/build/runtime/scanQrSeam.d.ts.map +1 -0
  101. package/build/runtime/scanQrSeam.js +16 -0
  102. package/build/runtime/scanQrSeam.js.map +1 -0
  103. package/build/services/AppRegistry.d.ts +41 -57
  104. package/build/services/AppRegistry.d.ts.map +1 -1
  105. package/build/services/AppRegistry.js +208 -144
  106. package/build/services/AppRegistry.js.map +1 -1
  107. package/build/services/AudioCloudUplink.d.ts +12 -0
  108. package/build/services/AudioCloudUplink.d.ts.map +1 -1
  109. package/build/services/AudioCloudUplink.js +22 -1
  110. package/build/services/AudioCloudUplink.js.map +1 -1
  111. package/build/services/AudioPlaybackService.d.ts +41 -2
  112. package/build/services/AudioPlaybackService.d.ts.map +1 -1
  113. package/build/services/AudioPlaybackService.js +250 -33
  114. package/build/services/AudioPlaybackService.js.map +1 -1
  115. package/build/services/BlobStore.d.ts +4 -1
  116. package/build/services/BlobStore.d.ts.map +1 -1
  117. package/build/services/BlobStore.js +80 -19
  118. package/build/services/BlobStore.js.map +1 -1
  119. package/build/services/CloudAudioSubscriptionSync.d.ts.map +1 -1
  120. package/build/services/CloudAudioSubscriptionSync.js +13 -1
  121. package/build/services/CloudAudioSubscriptionSync.js.map +1 -1
  122. package/build/services/CloudClientService.d.ts +15 -0
  123. package/build/services/CloudClientService.d.ts.map +1 -1
  124. package/build/services/CloudClientService.js +93 -1
  125. package/build/services/CloudClientService.js.map +1 -1
  126. package/build/services/DeviceEventRouter.js +5 -5
  127. package/build/services/DeviceEventRouter.js.map +1 -1
  128. package/build/services/DisplayProcessor.d.ts +3 -3
  129. package/build/services/DisplayProcessor.js +3 -3
  130. package/build/services/DisplayProcessor.js.map +1 -1
  131. package/build/services/ForegroundLocationPermission.d.ts +13 -0
  132. package/build/services/ForegroundLocationPermission.d.ts.map +1 -0
  133. package/build/services/ForegroundLocationPermission.js +12 -0
  134. package/build/services/ForegroundLocationPermission.js.map +1 -0
  135. package/build/services/GlassesSettingsSync.d.ts.map +1 -1
  136. package/build/services/GlassesSettingsSync.js +9 -3
  137. package/build/services/GlassesSettingsSync.js.map +1 -1
  138. package/build/services/GlassesStatusProjection.d.ts +15 -1
  139. package/build/services/GlassesStatusProjection.d.ts.map +1 -1
  140. package/build/services/GlassesStatusProjection.js +18 -11
  141. package/build/services/GlassesStatusProjection.js.map +1 -1
  142. package/build/services/HotspotOtaTransport.d.ts +29 -0
  143. package/build/services/HotspotOtaTransport.d.ts.map +1 -0
  144. package/build/services/HotspotOtaTransport.js +147 -0
  145. package/build/services/HotspotOtaTransport.js.map +1 -0
  146. package/build/services/HotspotShutdown.d.ts +17 -0
  147. package/build/services/HotspotShutdown.d.ts.map +1 -0
  148. package/build/services/HotspotShutdown.js +29 -0
  149. package/build/services/HotspotShutdown.js.map +1 -0
  150. package/build/services/LocalDisplayManager.d.ts +17 -3
  151. package/build/services/LocalDisplayManager.d.ts.map +1 -1
  152. package/build/services/LocalDisplayManager.js +108 -23
  153. package/build/services/LocalDisplayManager.js.map +1 -1
  154. package/build/services/LocalMiniappRuntime.d.ts +74 -2
  155. package/build/services/LocalMiniappRuntime.d.ts.map +1 -1
  156. package/build/services/LocalMiniappRuntime.js +785 -291
  157. package/build/services/LocalMiniappRuntime.js.map +1 -1
  158. package/build/services/LocalMiniappStorage.d.ts +32 -0
  159. package/build/services/LocalMiniappStorage.d.ts.map +1 -0
  160. package/build/services/LocalMiniappStorage.js +66 -0
  161. package/build/services/LocalMiniappStorage.js.map +1 -0
  162. package/build/services/LocalMiniappUserIdentity.d.ts +20 -0
  163. package/build/services/LocalMiniappUserIdentity.d.ts.map +1 -0
  164. package/build/services/LocalMiniappUserIdentity.js +43 -0
  165. package/build/services/LocalMiniappUserIdentity.js.map +1 -0
  166. package/build/services/LocalSttFallbackCoordinator.d.ts +9 -6
  167. package/build/services/LocalSttFallbackCoordinator.d.ts.map +1 -1
  168. package/build/services/LocalSttFallbackCoordinator.js +18 -12
  169. package/build/services/LocalSttFallbackCoordinator.js.map +1 -1
  170. package/build/services/MicStateCoordinator.d.ts +42 -1
  171. package/build/services/MicStateCoordinator.d.ts.map +1 -1
  172. package/build/services/MicStateCoordinator.js +141 -3
  173. package/build/services/MicStateCoordinator.js.map +1 -1
  174. package/build/services/MiniappLauncher.d.ts.map +1 -1
  175. package/build/services/MiniappLauncher.js +23 -3
  176. package/build/services/MiniappLauncher.js.map +1 -1
  177. package/build/services/MiniappLiveness.d.ts +12 -0
  178. package/build/services/MiniappLiveness.d.ts.map +1 -0
  179. package/build/services/MiniappLiveness.js +16 -0
  180. package/build/services/MiniappLiveness.js.map +1 -0
  181. package/build/services/NativeHttpResponse.d.ts +3 -0
  182. package/build/services/NativeHttpResponse.d.ts.map +1 -0
  183. package/build/services/NativeHttpResponse.js +6 -0
  184. package/build/services/NativeHttpResponse.js.map +1 -0
  185. package/build/services/OtaArtifactDownloader.d.ts +65 -0
  186. package/build/services/OtaArtifactDownloader.d.ts.map +1 -0
  187. package/build/services/OtaArtifactDownloader.js +226 -0
  188. package/build/services/OtaArtifactDownloader.js.map +1 -0
  189. package/build/services/OtaAutoChain.d.ts +41 -0
  190. package/build/services/OtaAutoChain.d.ts.map +1 -0
  191. package/build/services/OtaAutoChain.js +91 -0
  192. package/build/services/OtaAutoChain.js.map +1 -0
  193. package/build/services/OtaErrorMapping.d.ts +18 -0
  194. package/build/services/OtaErrorMapping.d.ts.map +1 -0
  195. package/build/services/OtaErrorMapping.js +63 -0
  196. package/build/services/OtaErrorMapping.js.map +1 -0
  197. package/build/services/OtaInstallCoordinator.d.ts +120 -17
  198. package/build/services/OtaInstallCoordinator.d.ts.map +1 -1
  199. package/build/services/OtaInstallCoordinator.js +605 -136
  200. package/build/services/OtaInstallCoordinator.js.map +1 -1
  201. package/build/services/OtaService.d.ts.map +1 -1
  202. package/build/services/OtaService.js +9 -2
  203. package/build/services/OtaService.js.map +1 -1
  204. package/build/services/OtaUpdateCheckService.d.ts +42 -4
  205. package/build/services/OtaUpdateCheckService.d.ts.map +1 -1
  206. package/build/services/OtaUpdateCheckService.js +158 -26
  207. package/build/services/OtaUpdateCheckService.js.map +1 -1
  208. package/build/services/PhoneCalendarHelpers.d.ts +32 -0
  209. package/build/services/PhoneCalendarHelpers.d.ts.map +1 -0
  210. package/build/services/PhoneCalendarHelpers.js +157 -0
  211. package/build/services/PhoneCalendarHelpers.js.map +1 -0
  212. package/build/services/PhoneCalendarService.d.ts +5 -0
  213. package/build/services/PhoneCalendarService.d.ts.map +1 -0
  214. package/build/services/PhoneCalendarService.js +45 -0
  215. package/build/services/PhoneCalendarService.js.map +1 -0
  216. package/build/services/PhoneCameraFovCoordinator.d.ts +30 -0
  217. package/build/services/PhoneCameraFovCoordinator.d.ts.map +1 -0
  218. package/build/services/PhoneCameraFovCoordinator.js +194 -0
  219. package/build/services/PhoneCameraFovCoordinator.js.map +1 -0
  220. package/build/services/PhoneNotificationsSync.d.ts.map +1 -1
  221. package/build/services/PhoneNotificationsSync.js +12 -10
  222. package/build/services/PhoneNotificationsSync.js.map +1 -1
  223. package/build/services/PhonePhotoCoordinator.d.ts +26 -2
  224. package/build/services/PhonePhotoCoordinator.d.ts.map +1 -1
  225. package/build/services/PhonePhotoCoordinator.js +80 -10
  226. package/build/services/PhonePhotoCoordinator.js.map +1 -1
  227. package/build/services/PhoneStreamCoordinator.d.ts +8 -1
  228. package/build/services/PhoneStreamCoordinator.d.ts.map +1 -1
  229. package/build/services/PhoneStreamCoordinator.js +125 -13
  230. package/build/services/PhoneStreamCoordinator.js.map +1 -1
  231. package/build/services/PhoneVideoCoordinator.d.ts +2 -0
  232. package/build/services/PhoneVideoCoordinator.d.ts.map +1 -1
  233. package/build/services/PhoneVideoCoordinator.js +10 -0
  234. package/build/services/PhoneVideoCoordinator.js.map +1 -1
  235. package/build/services/SceneRenderer.d.ts.map +1 -1
  236. package/build/services/SceneRenderer.js +15 -0
  237. package/build/services/SceneRenderer.js.map +1 -1
  238. package/build/services/SentenceTtsPipeline.d.ts +31 -0
  239. package/build/services/SentenceTtsPipeline.d.ts.map +1 -0
  240. package/build/services/SentenceTtsPipeline.js +67 -0
  241. package/build/services/SentenceTtsPipeline.js.map +1 -0
  242. package/build/services/StreamLifecycleController.d.ts +3 -3
  243. package/build/services/StreamLifecycleController.js +3 -3
  244. package/build/services/StreamLifecycleController.js.map +1 -1
  245. package/build/services/SupportProfileSync.d.ts +22 -0
  246. package/build/services/SupportProfileSync.d.ts.map +1 -0
  247. package/build/services/SupportProfileSync.js +213 -0
  248. package/build/services/SupportProfileSync.js.map +1 -0
  249. package/build/services/TranscriptionRouting.d.ts +12 -0
  250. package/build/services/TranscriptionRouting.d.ts.map +1 -0
  251. package/build/services/TranscriptionRouting.js +24 -0
  252. package/build/services/TranscriptionRouting.js.map +1 -0
  253. package/build/services/TtsTextSanitizer.d.ts +5 -0
  254. package/build/services/TtsTextSanitizer.d.ts.map +1 -0
  255. package/build/services/TtsTextSanitizer.js +61 -0
  256. package/build/services/TtsTextSanitizer.js.map +1 -0
  257. package/build/services/WifiAdbRequest.d.ts +17 -0
  258. package/build/services/WifiAdbRequest.d.ts.map +1 -0
  259. package/build/services/WifiAdbRequest.js +35 -0
  260. package/build/services/WifiAdbRequest.js.map +1 -0
  261. package/build/services/asg/asgCameraApi.d.ts +43 -0
  262. package/build/services/asg/asgCameraApi.d.ts.map +1 -1
  263. package/build/services/asg/asgCameraApi.js +509 -26
  264. package/build/services/asg/asgCameraApi.js.map +1 -1
  265. package/build/services/asg/cameraRollExportCoordinator.d.ts +60 -0
  266. package/build/services/asg/cameraRollExportCoordinator.d.ts.map +1 -0
  267. package/build/services/asg/cameraRollExportCoordinator.js +618 -0
  268. package/build/services/asg/cameraRollExportCoordinator.js.map +1 -0
  269. package/build/services/asg/cameraRollExportLedger.d.ts +44 -0
  270. package/build/services/asg/cameraRollExportLedger.d.ts.map +1 -0
  271. package/build/services/asg/cameraRollExportLedger.js +78 -0
  272. package/build/services/asg/cameraRollExportLedger.js.map +1 -0
  273. package/build/services/asg/galleryNotices.d.ts +1 -1
  274. package/build/services/asg/galleryNotices.d.ts.map +1 -1
  275. package/build/services/asg/galleryNotices.js.map +1 -1
  276. package/build/services/asg/galleryPathMigration.d.ts +3 -0
  277. package/build/services/asg/galleryPathMigration.d.ts.map +1 -0
  278. package/build/services/asg/galleryPathMigration.js +26 -0
  279. package/build/services/asg/galleryPathMigration.js.map +1 -0
  280. package/build/services/asg/gallerySettingsService.d.ts +1 -0
  281. package/build/services/asg/gallerySettingsService.d.ts.map +1 -1
  282. package/build/services/asg/gallerySettingsService.js +2 -0
  283. package/build/services/asg/gallerySettingsService.js.map +1 -1
  284. package/build/services/asg/gallerySyncService.d.ts.map +1 -1
  285. package/build/services/asg/gallerySyncService.js +162 -56
  286. package/build/services/asg/gallerySyncService.js.map +1 -1
  287. package/build/services/asg/galleryTransferLedger.d.ts +58 -0
  288. package/build/services/asg/galleryTransferLedger.d.ts.map +1 -0
  289. package/build/services/asg/galleryTransferLedger.js +225 -0
  290. package/build/services/asg/galleryTransferLedger.js.map +1 -0
  291. package/build/services/asg/localNetworkTransport.d.ts +15 -0
  292. package/build/services/asg/localNetworkTransport.d.ts.map +1 -0
  293. package/build/services/asg/localNetworkTransport.js +145 -0
  294. package/build/services/asg/localNetworkTransport.js.map +1 -0
  295. package/build/services/asg/localStorageService.d.ts +18 -0
  296. package/build/services/asg/localStorageService.d.ts.map +1 -1
  297. package/build/services/asg/localStorageService.js +168 -19
  298. package/build/services/asg/localStorageService.js.map +1 -1
  299. package/build/services/asg/mediaProcessingQueue.d.ts +10 -0
  300. package/build/services/asg/mediaProcessingQueue.d.ts.map +1 -1
  301. package/build/services/asg/mediaProcessingQueue.js +193 -62
  302. package/build/services/asg/mediaProcessingQueue.js.map +1 -1
  303. package/build/services/audioPlaybackAssets.d.ts +8 -0
  304. package/build/services/audioPlaybackAssets.d.ts.map +1 -0
  305. package/build/services/audioPlaybackAssets.js +7 -0
  306. package/build/services/audioPlaybackAssets.js.map +1 -0
  307. package/build/services/gallerySyncClock.js +1 -1
  308. package/build/services/gallerySyncClock.js.map +1 -1
  309. package/build/services/glassesClockSync.d.ts.map +1 -1
  310. package/build/services/glassesClockSync.js +7 -3
  311. package/build/services/glassesClockSync.js.map +1 -1
  312. package/build/services/manifestActions.d.ts +7 -0
  313. package/build/services/manifestActions.d.ts.map +1 -0
  314. package/build/services/manifestActions.js +25 -0
  315. package/build/services/manifestActions.js.map +1 -0
  316. package/build/services/otaDisplayState.d.ts +23 -12
  317. package/build/services/otaDisplayState.d.ts.map +1 -1
  318. package/build/services/otaDisplayState.js +36 -14
  319. package/build/services/otaDisplayState.js.map +1 -1
  320. package/build/services/otaInstallPolicy.d.ts +20 -4
  321. package/build/services/otaInstallPolicy.d.ts.map +1 -1
  322. package/build/services/otaInstallPolicy.js +28 -3
  323. package/build/services/otaInstallPolicy.js.map +1 -1
  324. package/build/services/otaLegacyMapping.d.ts +1 -1
  325. package/build/services/otaLegacyMapping.d.ts.map +1 -1
  326. package/build/services/otaLegacyMapping.js.map +1 -1
  327. package/build/services/otaManifestPolicy.d.ts +14 -0
  328. package/build/services/otaManifestPolicy.d.ts.map +1 -0
  329. package/build/services/otaManifestPolicy.js +19 -0
  330. package/build/services/otaManifestPolicy.js.map +1 -0
  331. package/build/services/otaManifestUrl.d.ts +3 -0
  332. package/build/services/otaManifestUrl.d.ts.map +1 -0
  333. package/build/services/otaManifestUrl.js +38 -0
  334. package/build/services/otaManifestUrl.js.map +1 -0
  335. package/build/services/otaReleaseVersion.d.ts +10 -0
  336. package/build/services/otaReleaseVersion.d.ts.map +1 -0
  337. package/build/services/otaReleaseVersion.js +14 -0
  338. package/build/services/otaReleaseVersion.js.map +1 -0
  339. package/build/services/slimStreamStatus.d.ts +11 -0
  340. package/build/services/slimStreamStatus.d.ts.map +1 -1
  341. package/build/services/slimStreamStatus.js +14 -4
  342. package/build/services/slimStreamStatus.js.map +1 -1
  343. package/build/stores/appVisibility.d.ts +3 -0
  344. package/build/stores/appVisibility.d.ts.map +1 -0
  345. package/build/stores/appVisibility.js +3 -0
  346. package/build/stores/appVisibility.js.map +1 -0
  347. package/build/stores/apps.d.ts.map +1 -1
  348. package/build/stores/apps.js +18 -1
  349. package/build/stores/apps.js.map +1 -1
  350. package/build/stores/bluetoothSettingKeys.d.ts.map +1 -1
  351. package/build/stores/bluetoothSettingKeys.js +2 -0
  352. package/build/stores/bluetoothSettingKeys.js.map +1 -1
  353. package/build/stores/core.d.ts +3 -3
  354. package/build/stores/core.d.ts.map +1 -1
  355. package/build/stores/core.js.map +1 -1
  356. package/build/stores/gallerySync.d.ts +2 -0
  357. package/build/stores/gallerySync.d.ts.map +1 -1
  358. package/build/stores/gallerySync.js +2 -0
  359. package/build/stores/gallerySync.js.map +1 -1
  360. package/build/stores/glasses.d.ts +10 -4
  361. package/build/stores/glasses.d.ts.map +1 -1
  362. package/build/stores/glasses.js +3 -0
  363. package/build/stores/glasses.js.map +1 -1
  364. package/build/stores/settings.d.ts +17 -0
  365. package/build/stores/settings.d.ts.map +1 -1
  366. package/build/stores/settings.js +157 -17
  367. package/build/stores/settings.js.map +1 -1
  368. package/build/types/applet.d.ts +3 -1
  369. package/build/types/applet.d.ts.map +1 -1
  370. package/build/types/applet.js +1 -1
  371. package/build/types/applet.js.map +1 -1
  372. package/build/types/asg.d.ts +7 -0
  373. package/build/types/asg.d.ts.map +1 -1
  374. package/build/types/asg.js.map +1 -1
  375. package/build/types/capabilities/even-realities-g1.d.ts.map +1 -1
  376. package/build/types/capabilities/even-realities-g1.js +2 -0
  377. package/build/types/capabilities/even-realities-g1.js.map +1 -1
  378. package/build/types/capabilities/even-realities-g2.d.ts.map +1 -1
  379. package/build/types/capabilities/even-realities-g2.js +2 -0
  380. package/build/types/capabilities/even-realities-g2.js.map +1 -1
  381. package/build/types/capabilities/mentra-display.d.ts.map +1 -1
  382. package/build/types/capabilities/mentra-display.js +2 -0
  383. package/build/types/capabilities/mentra-display.js.map +1 -1
  384. package/build/types/capabilities/mentra-live.d.ts.map +1 -1
  385. package/build/types/capabilities/mentra-live.js +2 -0
  386. package/build/types/capabilities/mentra-live.js.map +1 -1
  387. package/build/types/capabilities/nimo.d.ts +9 -0
  388. package/build/types/capabilities/nimo.d.ts.map +1 -0
  389. package/build/types/capabilities/nimo.js +57 -0
  390. package/build/types/capabilities/nimo.js.map +1 -0
  391. package/build/types/capabilities/none.d.ts.map +1 -1
  392. package/build/types/capabilities/none.js +2 -0
  393. package/build/types/capabilities/none.js.map +1 -1
  394. package/build/types/capabilities/simulated-glasses.d.ts.map +1 -1
  395. package/build/types/capabilities/simulated-glasses.js +2 -0
  396. package/build/types/capabilities/simulated-glasses.js.map +1 -1
  397. package/build/types/capabilities/vuzix-z100.d.ts.map +1 -1
  398. package/build/types/capabilities/vuzix-z100.js +2 -0
  399. package/build/types/capabilities/vuzix-z100.js.map +1 -1
  400. package/build/types/enums.d.ts +4 -26
  401. package/build/types/enums.d.ts.map +1 -1
  402. package/build/types/enums.js +3 -27
  403. package/build/types/enums.js.map +1 -1
  404. package/build/types/hardware.d.ts +6 -14
  405. package/build/types/hardware.d.ts.map +1 -1
  406. package/build/types/hardware.js +18 -4
  407. package/build/types/hardware.js.map +1 -1
  408. package/build/types/index.d.ts +3 -7
  409. package/build/types/index.d.ts.map +1 -1
  410. package/build/types/index.js +3 -7
  411. package/build/types/index.js.map +1 -1
  412. package/build/utils/configuredDevHost.d.ts +6 -0
  413. package/build/utils/configuredDevHost.d.ts.map +1 -0
  414. package/build/utils/configuredDevHost.js +19 -0
  415. package/build/utils/configuredDevHost.js.map +1 -0
  416. package/build/utils/devMiniappLaunch.d.ts +19 -8
  417. package/build/utils/devMiniappLaunch.d.ts.map +1 -1
  418. package/build/utils/devMiniappLaunch.js +144 -21
  419. package/build/utils/devMiniappLaunch.js.map +1 -1
  420. package/build/utils/diagnosticContext.d.ts.map +1 -1
  421. package/build/utils/diagnosticContext.js +15 -17
  422. package/build/utils/diagnosticContext.js.map +1 -1
  423. package/build/utils/display/composer/ColumnComposer.d.ts +1 -1
  424. package/build/utils/display/composer/ColumnComposer.js +1 -1
  425. package/build/utils/display/composer/ColumnComposer.js.map +1 -1
  426. package/build/utils/hardware/hardware.d.ts.map +1 -1
  427. package/build/utils/hardware/hardware.js +7 -3
  428. package/build/utils/hardware/hardware.js.map +1 -1
  429. package/build/utils/miniappDiagnostics.d.ts +64 -0
  430. package/build/utils/miniappDiagnostics.d.ts.map +1 -0
  431. package/build/utils/miniappDiagnostics.js +173 -0
  432. package/build/utils/miniappDiagnostics.js.map +1 -0
  433. package/build/utils/permissions/MediaLibraryPermissions.d.ts +11 -0
  434. package/build/utils/permissions/MediaLibraryPermissions.d.ts.map +1 -1
  435. package/build/utils/permissions/MediaLibraryPermissions.js +27 -4
  436. package/build/utils/permissions/MediaLibraryPermissions.js.map +1 -1
  437. package/build/utils/timers/timers.d.ts.map +1 -1
  438. package/build/utils/timers/timers.js +55 -18
  439. package/build/utils/timers/timers.js.map +1 -1
  440. package/package.json +66 -31
  441. package/src/assets/silence.wav +0 -0
  442. package/src/bluetooth-sdk/debug.ts +1 -0
  443. package/src/bluetooth-sdk/index.ts +2 -0
  444. package/src/bluetooth-sdk/ota-transport.ts +1 -0
  445. package/src/bluetooth-sdk/photo-receiver.ts +2 -0
  446. package/src/bluetooth-sdk/react.ts +1 -0
  447. package/src/bluetooth-sdk/types.ts +1 -0
  448. package/src/engine.ts +9 -4
  449. package/src/facades/dev.ts +17 -12
  450. package/src/facades/display.ts +1 -1
  451. package/src/facades/gallery.ts +1 -1
  452. package/src/facades/glasses.ts +20 -7
  453. package/src/facades/glassesSettings.ts +5 -0
  454. package/src/facades/miniapps.ts +7 -0
  455. package/src/facades/ota.ts +41 -13
  456. package/src/facades/pairing.ts +103 -23
  457. package/src/facades/permissions.ts +14 -0
  458. package/src/facades/phoneNotifications.ts +4 -13
  459. package/src/facades/speech.ts +21 -7
  460. package/src/generated/releaseMetadata.ts +20 -0
  461. package/src/index.ts +42 -13
  462. package/src/react/MentraLiveOtaFlow.tsx +754 -0
  463. package/src/react/index.ts +21 -0
  464. package/src/react/useEngineSnapshot.ts +16 -0
  465. package/src/react/useMentraLiveOta.ts +793 -0
  466. package/src/runtime/bootstrap.ts +33 -1
  467. package/src/runtime/scanQrSeam.ts +20 -0
  468. package/src/services/AppRegistry.ts +240 -149
  469. package/src/services/AudioCloudUplink.ts +23 -1
  470. package/src/services/AudioPlaybackService.ts +287 -38
  471. package/src/services/BlobStore.ts +79 -19
  472. package/src/services/CloudAudioSubscriptionSync.ts +13 -1
  473. package/src/services/CloudClientService.ts +96 -1
  474. package/src/services/DeviceEventRouter.ts +5 -5
  475. package/src/services/DisplayProcessor.ts +3 -3
  476. package/src/services/ForegroundLocationPermission.ts +24 -0
  477. package/src/services/GlassesSettingsSync.ts +9 -3
  478. package/src/services/GlassesStatusProjection.ts +20 -11
  479. package/src/services/HotspotOtaTransport.ts +185 -0
  480. package/src/services/HotspotShutdown.ts +41 -0
  481. package/src/services/LocalDisplayManager.ts +114 -24
  482. package/src/services/LocalMiniappRuntime.ts +967 -346
  483. package/src/services/LocalMiniappStorage.ts +82 -0
  484. package/src/services/LocalMiniappUserIdentity.ts +46 -0
  485. package/src/services/LocalSttFallbackCoordinator.ts +19 -12
  486. package/src/services/MicStateCoordinator.ts +169 -4
  487. package/src/services/MiniappLauncher.ts +30 -3
  488. package/src/services/MiniappLiveness.ts +24 -0
  489. package/src/services/NativeHttpResponse.ts +6 -0
  490. package/src/services/OtaArtifactDownloader.ts +312 -0
  491. package/src/services/OtaAutoChain.ts +130 -0
  492. package/src/services/OtaErrorMapping.ts +80 -0
  493. package/src/services/OtaInstallCoordinator.ts +680 -151
  494. package/src/services/OtaService.ts +12 -7
  495. package/src/services/OtaUpdateCheckService.ts +205 -27
  496. package/src/services/PhoneCalendarHelpers.ts +212 -0
  497. package/src/services/PhoneCalendarService.ts +65 -0
  498. package/src/services/PhoneCameraFovCoordinator.ts +210 -0
  499. package/src/services/PhoneNotificationsSync.ts +12 -10
  500. package/src/services/PhonePhotoCoordinator.ts +117 -19
  501. package/src/services/PhoneStreamCoordinator.ts +139 -25
  502. package/src/services/PhoneVideoCoordinator.ts +11 -0
  503. package/src/services/SceneRenderer.ts +16 -0
  504. package/src/services/SentenceTtsPipeline.ts +106 -0
  505. package/src/services/StreamLifecycleController.ts +3 -3
  506. package/src/services/SupportProfileSync.ts +218 -0
  507. package/src/services/TranscriptionRouting.ts +37 -0
  508. package/src/services/TtsTextSanitizer.ts +66 -0
  509. package/src/services/WifiAdbRequest.ts +53 -0
  510. package/src/services/asg/asgCameraApi.ts +615 -33
  511. package/src/services/asg/cameraRollExportCoordinator.ts +627 -0
  512. package/src/services/asg/cameraRollExportLedger.ts +122 -0
  513. package/src/services/asg/galleryNotices.ts +1 -0
  514. package/src/services/asg/galleryPathMigration.ts +22 -0
  515. package/src/services/asg/gallerySettingsService.ts +3 -0
  516. package/src/services/asg/gallerySyncService.ts +184 -73
  517. package/src/services/asg/galleryTransferLedger.ts +312 -0
  518. package/src/services/asg/localNetworkTransport.ts +170 -0
  519. package/src/services/asg/localStorageService.ts +179 -24
  520. package/src/services/asg/mediaProcessingQueue.ts +209 -62
  521. package/src/services/audioPlaybackAssets.ts +8 -0
  522. package/src/services/gallerySyncClock.ts +1 -1
  523. package/src/services/glassesClockSync.ts +7 -3
  524. package/src/services/manifestActions.ts +30 -0
  525. package/src/services/otaDisplayState.ts +58 -17
  526. package/src/services/otaInstallPolicy.ts +34 -4
  527. package/src/services/otaLegacyMapping.ts +1 -1
  528. package/src/services/otaManifestPolicy.ts +42 -0
  529. package/src/services/otaManifestUrl.ts +44 -0
  530. package/src/services/otaReleaseVersion.ts +22 -0
  531. package/src/services/slimStreamStatus.ts +16 -5
  532. package/src/stores/appVisibility.ts +3 -0
  533. package/src/stores/apps.ts +19 -1
  534. package/src/stores/bluetoothSettingKeys.ts +2 -0
  535. package/src/stores/core.ts +4 -4
  536. package/src/stores/gallerySync.ts +4 -0
  537. package/src/stores/glasses.ts +16 -6
  538. package/src/stores/settings.ts +179 -18
  539. package/src/types/applet.ts +3 -1
  540. package/src/types/asg.ts +7 -0
  541. package/src/types/capabilities/even-realities-g1.ts +3 -0
  542. package/src/types/capabilities/even-realities-g2.ts +3 -0
  543. package/src/types/capabilities/mentra-display.ts +3 -0
  544. package/src/types/capabilities/mentra-live.ts +3 -0
  545. package/src/types/capabilities/nimo.ts +59 -0
  546. package/src/types/capabilities/none.ts +3 -0
  547. package/src/types/capabilities/simulated-glasses.ts +3 -0
  548. package/src/types/capabilities/vuzix-z100.ts +3 -0
  549. package/src/types/enums.ts +4 -28
  550. package/src/types/hardware.ts +23 -14
  551. package/src/types/index.ts +3 -6
  552. package/src/utils/configuredDevHost.ts +17 -0
  553. package/src/utils/devMiniappLaunch.ts +151 -23
  554. package/src/utils/diagnosticContext.ts +17 -17
  555. package/src/utils/display/composer/ColumnComposer.ts +1 -1
  556. package/src/utils/hardware/hardware.ts +7 -9
  557. package/src/utils/miniappDiagnostics.ts +226 -0
  558. package/src/utils/permissions/MediaLibraryPermissions.ts +35 -4
  559. package/src/utils/timers/timers.ts +57 -21
  560. package/build/devtools.d.ts +0 -11
  561. package/build/devtools.d.ts.map +0 -1
  562. package/build/devtools.js +0 -13
  563. package/build/devtools.js.map +0 -1
  564. package/build/internal.d.ts +0 -66
  565. package/build/internal.d.ts.map +0 -1
  566. package/build/internal.js +0 -89
  567. package/build/internal.js.map +0 -1
  568. package/build/services/asgOtaVersionUrl.d.ts +0 -2
  569. package/build/services/asgOtaVersionUrl.d.ts.map +0 -1
  570. package/build/services/asgOtaVersionUrl.js +0 -36
  571. package/build/services/asgOtaVersionUrl.js.map +0 -1
  572. package/src/devtools.ts +0 -13
  573. package/src/internal.ts +0 -158
  574. package/src/services/asgOtaVersionUrl.ts +0 -41
@@ -0,0 +1,627 @@
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
+ import { ota } from "../facades/ota";
3
+ import { beginOtaAutoChain, clearOtaAutoChainReconnectWait, isOtaAutoChainActive, otaAutoChainFingerprint, otaAutoChainReleaseRange, otaAutoChainReconnectWaitRemaining, stopOtaAutoChain, tryAdvanceOtaAutoChain, } from "../services/OtaAutoChain";
4
+ import { BES_INSTALL_RESTART_MESSAGE, getOtaErrorMessage, shouldRequireGlassesRebootForBesFailure, shouldShowChangeWifiForOtaDownloadFailure, } from "../services/OtaErrorMapping";
5
+ import { useEngineSnapshot } from "./useEngineSnapshot";
6
+ const AUTO_CHAIN_NETWORK_RETRY_DELAY_MS = 5000;
7
+ const AUTO_CHAIN_COMPLETE_DELAY_MS = 750;
8
+ export const MINIMUM_OTA_BATTERY_LEVEL = 25;
9
+ function releaseRangeTargetVersion(result) {
10
+ return result.releaseVersion ?? result.updateInfo?.versionName ?? result.latestVersionInfo?.versionName ?? null;
11
+ }
12
+ function currentReleaseVersion(appVersion) {
13
+ const version = appVersion?.trim();
14
+ return version || null;
15
+ }
16
+ function releaseTransitionFromRange(range) {
17
+ if (!range?.releaseVersion)
18
+ return null;
19
+ return { fromVersion: range.fromVersion, toVersion: range.releaseVersion };
20
+ }
21
+ function releaseChangelogsForActiveChain() {
22
+ const range = otaAutoChainReleaseRange();
23
+ if (!range?.toVersion)
24
+ return [];
25
+ try {
26
+ return ota.getReleaseChangelogs(range.fromVersion, range.toVersion);
27
+ }
28
+ catch {
29
+ try {
30
+ return ota.getReleaseChangelogs(null, range.toVersion);
31
+ }
32
+ catch {
33
+ return [];
34
+ }
35
+ }
36
+ }
37
+ function installProgress(snapshot) {
38
+ if (snapshot.displayState !== "updating")
39
+ return null;
40
+ const { otaStatus } = snapshot;
41
+ const isDownload = otaStatus?.phase === "download";
42
+ const totalSteps = otaStatus?.totalSteps ?? 1;
43
+ const rawPercent = isDownload
44
+ ? (otaStatus?.stepPercent ?? 0)
45
+ : totalSteps >= 2
46
+ ? (otaStatus?.overallPercent ?? 0)
47
+ : (otaStatus?.stepPercent ?? 0);
48
+ return Math.min(Math.max(rawPercent, snapshot.mtkInstallStallSimulatedPercent ?? 0, 0), 100);
49
+ }
50
+ function progressScreen(snapshot) {
51
+ if (snapshot.versionChangePhase === "restarting")
52
+ return "restarting";
53
+ if (snapshot.versionChangePhase === "verifying")
54
+ return "verifying";
55
+ switch (snapshot.displayState) {
56
+ case "starting":
57
+ return snapshot.hotspotPhase === "idle" || snapshot.hotspotPhase === "serving" ? "starting" : "preparing_hotspot";
58
+ case "updating":
59
+ return "updating";
60
+ case "restarting":
61
+ return "restarting";
62
+ case "complete":
63
+ return "complete";
64
+ case "failed":
65
+ return "failed";
66
+ default:
67
+ return "disconnected";
68
+ }
69
+ }
70
+ /**
71
+ * Headless Mentra Live OTA flow. Engine owns checking, hotspot staging,
72
+ * APK/MTK/BES sequencing, restart recovery, retries, and verification; the host
73
+ * renders semantic state and invokes these idempotent actions.
74
+ */
75
+ export function useMentraLiveOta(options = {}) {
76
+ const { initialPage = "check", initializeRuntime = true, onFinished, onFirmwareRestartingChange, onOpenWifiSetup, } = options;
77
+ const otaSnapshot = useEngineSnapshot(ota.snapshot, ota.onSnapshot);
78
+ const installSnapshot = useEngineSnapshot(ota.installSession.snapshot, ota.installSession.onSnapshot);
79
+ const [page, setPage] = useState(initialPage);
80
+ const [runtimeReady, setRuntimeReady] = useState(!initializeRuntime);
81
+ const [checkState, setCheckState] = useState("checking");
82
+ const [isUpdateRequired, setIsUpdateRequired] = useState(true);
83
+ const [isVersionChange, setIsVersionChange] = useState(false);
84
+ const [errorKind, setErrorKind] = useState("network");
85
+ const [updateFingerprint, setUpdateFingerprint] = useState(null);
86
+ const [offeredReleaseTransition, setOfferedReleaseTransition] = useState(null);
87
+ const [completedReleaseTransition, setCompletedReleaseTransition] = useState(null);
88
+ const [completedUpdate, setCompletedUpdate] = useState(false);
89
+ const [completedChangelogs, setCompletedChangelogs] = useState([]);
90
+ const [batteryBlocked, setBatteryBlocked] = useState(false);
91
+ const [checkGeneration, setCheckGeneration] = useState(0);
92
+ const performCheckGenerationRef = useRef(0);
93
+ const activeCheckKeyRef = useRef(null);
94
+ const checkStartedRef = useRef(false);
95
+ const checkCompletedRef = useRef(false);
96
+ const selectedCheckResultRef = useRef(null);
97
+ const autoChainAdvancedRef = useRef(false);
98
+ const installActionPendingRef = useRef(false);
99
+ const onFinishedRef = useRef(onFinished);
100
+ const onOpenWifiSetupRef = useRef(onOpenWifiSetup);
101
+ const onFirmwareRestartingChangeRef = useRef(onFirmwareRestartingChange);
102
+ onFinishedRef.current = onFinished;
103
+ onOpenWifiSetupRef.current = onOpenWifiSetup;
104
+ onFirmwareRestartingChangeRef.current = onFirmwareRestartingChange;
105
+ useEffect(() => {
106
+ if (!initializeRuntime) {
107
+ setRuntimeReady(true);
108
+ return;
109
+ }
110
+ let cancelled = false;
111
+ setRuntimeReady(false);
112
+ void ota.initialize().finally(() => {
113
+ if (!cancelled)
114
+ setRuntimeReady(true);
115
+ });
116
+ return () => {
117
+ cancelled = true;
118
+ };
119
+ }, [initializeRuntime]);
120
+ const returnToCheck = useCallback(() => {
121
+ installActionPendingRef.current = false;
122
+ autoChainAdvancedRef.current = false;
123
+ setCheckState("checking");
124
+ setPage("check");
125
+ setCheckGeneration((generation) => generation + 1);
126
+ }, []);
127
+ const navigateToProgress = useCallback(() => {
128
+ installActionPendingRef.current = true;
129
+ ota.clearProgress();
130
+ setPage("progress");
131
+ }, []);
132
+ const continueApprovedChain = useCallback((result) => {
133
+ if (installActionPendingRef.current || !isOtaAutoChainActive() || !result.updateInfo)
134
+ return false;
135
+ const snapshot = ota.snapshot();
136
+ if (!snapshot.wifiStatusKnown || (!snapshot.wifiConnected && snapshot.hotspotOtaVersion !== 1))
137
+ return false;
138
+ const admission = tryAdvanceOtaAutoChain(otaAutoChainFingerprint(result), result.updateInfo.isDowngrade === true, releaseRangeTargetVersion(result), result.releaseVersion);
139
+ if (!admission.advance)
140
+ return false;
141
+ checkCompletedRef.current = true;
142
+ ota.installSession.prepare(result);
143
+ navigateToProgress();
144
+ return true;
145
+ }, [navigateToProgress]);
146
+ useEffect(() => {
147
+ if (!runtimeReady || page !== "check")
148
+ return;
149
+ const MIN_DISPLAY_TIME_MS = 1100;
150
+ const MAX_WAIT_FOR_VERSION_INFO_MS = 10_000;
151
+ const checkKey = String(checkGeneration);
152
+ if (activeCheckKeyRef.current !== checkKey) {
153
+ activeCheckKeyRef.current = checkKey;
154
+ checkStartedRef.current = false;
155
+ checkCompletedRef.current = false;
156
+ selectedCheckResultRef.current = null;
157
+ installActionPendingRef.current = false;
158
+ setCheckState("checking");
159
+ }
160
+ const myGeneration = ++performCheckGenerationRef.current;
161
+ let cancelled = false;
162
+ let reconnectTimeout = null;
163
+ const performCheck = async () => {
164
+ if (checkCompletedRef.current)
165
+ return;
166
+ if (isOtaAutoChainActive() && !otaSnapshot.ready) {
167
+ const remainingMs = otaAutoChainReconnectWaitRemaining();
168
+ if (remainingMs === null)
169
+ return;
170
+ reconnectTimeout = setTimeout(() => {
171
+ if (cancelled || myGeneration !== performCheckGenerationRef.current || ota.snapshot().ready)
172
+ return;
173
+ stopOtaAutoChain();
174
+ checkCompletedRef.current = true;
175
+ setCheckState("error");
176
+ }, remainingMs);
177
+ return;
178
+ }
179
+ if (!otaSnapshot.connected) {
180
+ if (checkStartedRef.current) {
181
+ stopOtaAutoChain();
182
+ checkCompletedRef.current = true;
183
+ setCheckState("error");
184
+ return;
185
+ }
186
+ checkCompletedRef.current = true;
187
+ onFinishedRef.current?.();
188
+ return;
189
+ }
190
+ clearOtaAutoChainReconnectWait();
191
+ checkStartedRef.current = true;
192
+ const startTime = Date.now();
193
+ try {
194
+ const checkOptions = {
195
+ waitForBuildNumberMs: MAX_WAIT_FOR_VERSION_INFO_MS,
196
+ waitForBesVersionMs: 5000,
197
+ waitForMtkVersionMs: 2000,
198
+ refreshVersionInfo: true,
199
+ fixClockBeforeCheck: false,
200
+ };
201
+ let result = await ota.checkForUpdates(checkOptions);
202
+ if (cancelled || myGeneration !== performCheckGenerationRef.current)
203
+ return;
204
+ if (!result.hasCheckCompleted && result.checkFailureReason === "network" && isOtaAutoChainActive()) {
205
+ await new Promise((resolve) => setTimeout(resolve, AUTO_CHAIN_NETWORK_RETRY_DELAY_MS));
206
+ if (cancelled || myGeneration !== performCheckGenerationRef.current)
207
+ return;
208
+ result = await ota.checkForUpdates(checkOptions);
209
+ }
210
+ if (cancelled || myGeneration !== performCheckGenerationRef.current)
211
+ return;
212
+ selectedCheckResultRef.current = result;
213
+ await new Promise((resolve) => setTimeout(resolve, Math.max(0, MIN_DISPLAY_TIME_MS - (Date.now() - startTime))));
214
+ if (cancelled || myGeneration !== performCheckGenerationRef.current)
215
+ return;
216
+ if (result.skippedReason === "disconnected") {
217
+ stopOtaAutoChain();
218
+ checkCompletedRef.current = true;
219
+ setCheckState("error");
220
+ return;
221
+ }
222
+ if (result.skippedReason === "missing_build") {
223
+ checkCompletedRef.current = true;
224
+ if (isOtaAutoChainActive()) {
225
+ stopOtaAutoChain();
226
+ setCheckState("error");
227
+ }
228
+ else {
229
+ onFinishedRef.current?.();
230
+ }
231
+ return;
232
+ }
233
+ if (result.skippedReason === "dev_build") {
234
+ stopOtaAutoChain();
235
+ checkCompletedRef.current = true;
236
+ ota.clearUpdateAvailable();
237
+ setCheckState("dev_build");
238
+ return;
239
+ }
240
+ if (!result.hasCheckCompleted) {
241
+ stopOtaAutoChain();
242
+ checkCompletedRef.current = true;
243
+ setErrorKind(result.checkFailureReason === "pin_unavailable" ? "pin_unavailable" : "network");
244
+ setCheckState("error");
245
+ return;
246
+ }
247
+ if (result.updateAvailable && result.updateInfo) {
248
+ setIsUpdateRequired(result.isRequired);
249
+ setIsVersionChange(result.updateInfo.isDowngrade === true);
250
+ const fingerprint = otaAutoChainFingerprint(result);
251
+ setUpdateFingerprint(fingerprint);
252
+ if (!isOtaAutoChainActive()) {
253
+ const fromVersion = currentReleaseVersion(ota.snapshot().appVersion);
254
+ setOfferedReleaseTransition(result.releaseVersion ? { fromVersion, toVersion: result.releaseVersion } : null);
255
+ }
256
+ if (isOtaAutoChainActive() && !ota.snapshot().wifiStatusKnown) {
257
+ checkCompletedRef.current = true;
258
+ return;
259
+ }
260
+ if (continueApprovedChain(result))
261
+ return;
262
+ checkCompletedRef.current = true;
263
+ setCheckState("update_available");
264
+ return;
265
+ }
266
+ const completedApprovedSession = isOtaAutoChainActive();
267
+ if (completedApprovedSession) {
268
+ setCompletedChangelogs(releaseChangelogsForActiveChain());
269
+ setCompletedReleaseTransition(releaseTransitionFromRange(otaAutoChainReleaseRange()));
270
+ }
271
+ setCompletedUpdate(completedApprovedSession);
272
+ stopOtaAutoChain();
273
+ checkCompletedRef.current = true;
274
+ ota.clearUpdateAvailable();
275
+ setCheckState("no_update");
276
+ }
277
+ catch (error) {
278
+ console.error("OTA check failed:", error);
279
+ await new Promise((resolve) => setTimeout(resolve, Math.max(0, MIN_DISPLAY_TIME_MS - (Date.now() - startTime))));
280
+ if (cancelled || myGeneration !== performCheckGenerationRef.current)
281
+ return;
282
+ stopOtaAutoChain();
283
+ checkCompletedRef.current = true;
284
+ setErrorKind("network");
285
+ setCheckState("error");
286
+ }
287
+ };
288
+ void performCheck();
289
+ return () => {
290
+ cancelled = true;
291
+ if (reconnectTimeout)
292
+ clearTimeout(reconnectTimeout);
293
+ };
294
+ }, [
295
+ checkGeneration,
296
+ continueApprovedChain,
297
+ otaSnapshot.connected,
298
+ otaSnapshot.ready,
299
+ otaSnapshot.wifiStatusKnown,
300
+ page,
301
+ runtimeReady,
302
+ ]);
303
+ useEffect(() => {
304
+ if (!runtimeReady ||
305
+ page !== "check" ||
306
+ (checkState !== "checking" && checkState !== "update_available") ||
307
+ !otaSnapshot.wifiStatusKnown ||
308
+ !isOtaAutoChainActive()) {
309
+ return;
310
+ }
311
+ const result = selectedCheckResultRef.current;
312
+ if (!result?.updateAvailable || !result.updateInfo)
313
+ return;
314
+ if (!otaSnapshot.wifiConnected && otaSnapshot.hotspotOtaVersion !== 1) {
315
+ setCheckState("update_available");
316
+ return;
317
+ }
318
+ continueApprovedChain(result);
319
+ }, [
320
+ checkState,
321
+ continueApprovedChain,
322
+ otaSnapshot.hotspotOtaVersion,
323
+ otaSnapshot.wifiConnected,
324
+ otaSnapshot.wifiStatusKnown,
325
+ page,
326
+ runtimeReady,
327
+ ]);
328
+ useEffect(() => {
329
+ if (!runtimeReady || page !== "progress")
330
+ return;
331
+ ota.installSession.attach();
332
+ return () => ota.installSession.detach();
333
+ }, [page, runtimeReady]);
334
+ const firmwareRestarting = page === "progress" &&
335
+ ((!installSnapshot.connected && installSnapshot.displayState === "restarting") ||
336
+ installSnapshot.versionChangePhase === "restarting");
337
+ useEffect(() => {
338
+ if (page !== "progress")
339
+ return;
340
+ onFirmwareRestartingChangeRef.current?.(firmwareRestarting, true);
341
+ }, [firmwareRestarting, page]);
342
+ useEffect(() => {
343
+ if (page !== "progress")
344
+ return;
345
+ return () => {
346
+ onFirmwareRestartingChangeRef.current?.(false, false);
347
+ };
348
+ }, [page]);
349
+ useEffect(() => {
350
+ if (page !== "progress" ||
351
+ installSnapshot.displayState !== "complete" ||
352
+ !installSnapshot.connected ||
353
+ !isOtaAutoChainActive() ||
354
+ autoChainAdvancedRef.current) {
355
+ return;
356
+ }
357
+ const timeout = setTimeout(async () => {
358
+ if (!isOtaAutoChainActive())
359
+ return;
360
+ autoChainAdvancedRef.current = true;
361
+ await ota.installSession.finish();
362
+ returnToCheck();
363
+ }, AUTO_CHAIN_COMPLETE_DELAY_MS);
364
+ return () => clearTimeout(timeout);
365
+ }, [installSnapshot.connected, installSnapshot.displayState, page, returnToCheck]);
366
+ const check = useCallback(() => {
367
+ setBatteryBlocked(false);
368
+ setOfferedReleaseTransition(null);
369
+ setCompletedReleaseTransition(null);
370
+ setCompletedUpdate(false);
371
+ setCompletedChangelogs([]);
372
+ setPage("check");
373
+ setCheckState("checking");
374
+ setCheckGeneration((generation) => generation + 1);
375
+ }, []);
376
+ const install = useCallback(() => {
377
+ if (installActionPendingRef.current || page !== "check")
378
+ return;
379
+ const result = selectedCheckResultRef.current;
380
+ if (!result) {
381
+ setErrorKind("network");
382
+ setCheckState("error");
383
+ return;
384
+ }
385
+ const snapshot = ota.snapshot();
386
+ if (snapshot.batteryLevel !== null && snapshot.batteryLevel < MINIMUM_OTA_BATTERY_LEVEL) {
387
+ setBatteryBlocked(true);
388
+ return;
389
+ }
390
+ if (!snapshot.wifiStatusKnown) {
391
+ check();
392
+ return;
393
+ }
394
+ if (!snapshot.wifiConnected && snapshot.hotspotOtaVersion !== 1) {
395
+ onOpenWifiSetupRef.current?.();
396
+ return;
397
+ }
398
+ ota.installSession.prepare(result);
399
+ setBatteryBlocked(false);
400
+ setCompletedUpdate(false);
401
+ setCompletedChangelogs([]);
402
+ if (updateFingerprint) {
403
+ const fromVersion = offeredReleaseTransition
404
+ ? offeredReleaseTransition.fromVersion
405
+ : currentReleaseVersion(snapshot.appVersion);
406
+ beginOtaAutoChain(updateFingerprint, isVersionChange, {
407
+ fromVersion,
408
+ toVersion: releaseRangeTargetVersion(result),
409
+ releaseVersion: result.releaseVersion,
410
+ });
411
+ }
412
+ navigateToProgress();
413
+ }, [check, isVersionChange, navigateToProgress, offeredReleaseTransition, page, updateFingerprint]);
414
+ useEffect(() => {
415
+ if (batteryBlocked &&
416
+ (otaSnapshot.batteryLevel === null || otaSnapshot.batteryLevel >= MINIMUM_OTA_BATTERY_LEVEL)) {
417
+ setBatteryBlocked(false);
418
+ }
419
+ }, [batteryBlocked, otaSnapshot.batteryLevel]);
420
+ const retryInstall = useCallback(() => {
421
+ if (page !== "progress")
422
+ return;
423
+ onFirmwareRestartingChangeRef.current?.(false, true);
424
+ ota.installSession.retry();
425
+ }, [page]);
426
+ const finish = useCallback(async () => {
427
+ if (page === "check") {
428
+ onFinishedRef.current?.();
429
+ return;
430
+ }
431
+ const restartStillInProgress = installSnapshot.displayState === "restarting" ||
432
+ installSnapshot.versionChangePhase === "restarting" ||
433
+ installSnapshot.versionChangePhase === "verifying";
434
+ if (restartStillInProgress)
435
+ return;
436
+ const requiresGlassesReboot = shouldRequireGlassesRebootForBesFailure(installSnapshot.otaStatus, installSnapshot.otaProgress, installSnapshot.errorMsg);
437
+ if (requiresGlassesReboot)
438
+ stopOtaAutoChain();
439
+ await ota.installSession.finish();
440
+ returnToCheck();
441
+ }, [installSnapshot, page, returnToCheck]);
442
+ const discard = useCallback(async () => {
443
+ if (page !== "progress")
444
+ return;
445
+ stopOtaAutoChain();
446
+ await ota.installSession.discard();
447
+ returnToCheck();
448
+ }, [page, returnToCheck]);
449
+ const openWifiSetup = useCallback(() => {
450
+ if (page === "progress")
451
+ stopOtaAutoChain();
452
+ onOpenWifiSetupRef.current?.();
453
+ }, [page]);
454
+ const state = useMemo(() => {
455
+ const hotspotSupported = otaSnapshot.hotspotOtaVersion === 1;
456
+ const canInstall = otaSnapshot.wifiStatusKnown && (otaSnapshot.wifiConnected || hotspotSupported);
457
+ const autoChainActive = isOtaAutoChainActive();
458
+ if (!runtimeReady) {
459
+ return {
460
+ screen: "initializing",
461
+ connected: otaSnapshot.connected,
462
+ batteryLevel: otaSnapshot.batteryLevel,
463
+ transport: null,
464
+ updateRequired: isUpdateRequired,
465
+ versionChange: isVersionChange,
466
+ versionChangeConverged: false,
467
+ versionChangePhase: null,
468
+ wifiConnected: otaSnapshot.wifiConnected,
469
+ wifiStatusKnown: otaSnapshot.wifiStatusKnown,
470
+ hotspotSupported,
471
+ hotspotPhase: "idle",
472
+ hotspotArtifactPercent: null,
473
+ phase: null,
474
+ step: null,
475
+ currentStep: null,
476
+ totalSteps: null,
477
+ progress: null,
478
+ installingApkOnly: false,
479
+ firmwareRestarting: false,
480
+ error: null,
481
+ canInstall: false,
482
+ canRetry: false,
483
+ canFinish: false,
484
+ canDismiss: false,
485
+ canDiscard: false,
486
+ canOpenWifiSetup: false,
487
+ continueDisabled: false,
488
+ completedUpdate: false,
489
+ releaseTransition: null,
490
+ changelogs: [],
491
+ };
492
+ }
493
+ if (page === "check") {
494
+ const wifiRequired = otaSnapshot.wifiStatusKnown && !otaSnapshot.wifiConnected && !hotspotSupported;
495
+ let screen;
496
+ if (checkState === "checking")
497
+ screen = autoChainActive ? "finishing" : "checking";
498
+ else if (checkState === "update_available") {
499
+ screen = wifiRequired ? "wifi_required" : batteryBlocked ? "battery_required" : "update_available";
500
+ }
501
+ else if (checkState === "no_update")
502
+ screen = "up_to_date";
503
+ else if (checkState === "dev_build")
504
+ screen = "dev_build";
505
+ else
506
+ screen = errorKind === "pin_unavailable" ? "update_info_unavailable" : "check_failed";
507
+ let error = null;
508
+ if (screen === "check_failed") {
509
+ error = {
510
+ code: "check_failed",
511
+ message: "Couldn't check for updates. Please check your connection and try again.",
512
+ };
513
+ }
514
+ else if (screen === "update_info_unavailable") {
515
+ error = { code: "update_info_unavailable", message: "Update information for this app version is unavailable." };
516
+ }
517
+ return {
518
+ screen,
519
+ connected: otaSnapshot.connected,
520
+ batteryLevel: otaSnapshot.batteryLevel,
521
+ transport: otaSnapshot.wifiConnected ? "wifi" : hotspotSupported ? "hotspot" : null,
522
+ updateRequired: isUpdateRequired,
523
+ versionChange: isVersionChange,
524
+ versionChangeConverged: false,
525
+ versionChangePhase: null,
526
+ wifiConnected: otaSnapshot.wifiConnected,
527
+ wifiStatusKnown: otaSnapshot.wifiStatusKnown,
528
+ hotspotSupported,
529
+ hotspotPhase: "idle",
530
+ hotspotArtifactPercent: null,
531
+ phase: null,
532
+ step: null,
533
+ currentStep: null,
534
+ totalSteps: null,
535
+ progress: null,
536
+ installingApkOnly: false,
537
+ firmwareRestarting: false,
538
+ error,
539
+ canInstall: screen === "update_available" && canInstall,
540
+ canRetry: screen === "check_failed",
541
+ canFinish: screen === "up_to_date" || screen === "dev_build" || screen === "update_info_unavailable",
542
+ canDismiss: (screen === "update_available" || screen === "wifi_required" || screen === "battery_required") &&
543
+ !isUpdateRequired &&
544
+ !autoChainActive,
545
+ canDiscard: false,
546
+ canOpenWifiSetup: screen === "wifi_required",
547
+ continueDisabled: false,
548
+ completedUpdate: screen === "up_to_date" && completedUpdate,
549
+ releaseTransition: screen === "update_available" || screen === "wifi_required"
550
+ ? autoChainActive
551
+ ? releaseTransitionFromRange(otaAutoChainReleaseRange())
552
+ : offeredReleaseTransition
553
+ : screen === "up_to_date"
554
+ ? completedReleaseTransition
555
+ : null,
556
+ changelogs: screen === "up_to_date" ? completedChangelogs : [],
557
+ };
558
+ }
559
+ const requiresGlassesReboot = shouldRequireGlassesRebootForBesFailure(installSnapshot.otaStatus, installSnapshot.otaProgress, installSnapshot.errorMsg);
560
+ const showChangeWifi = shouldShowChangeWifiForOtaDownloadFailure(installSnapshot.otaStatus, installSnapshot.otaProgress, installSnapshot.errorMsg);
561
+ const displayedError = requiresGlassesReboot
562
+ ? BES_INSTALL_RESTART_MESSAGE
563
+ : installSnapshot.errorMsg || getOtaErrorMessage(installSnapshot.otaStatus?.error);
564
+ const progressState = progressScreen(installSnapshot);
565
+ const screen = progressState === "complete" && autoChainActive ? "finishing" : progressState;
566
+ const error = screen === "failed"
567
+ ? {
568
+ code: requiresGlassesReboot ? "bes_restart_required" : "install_failed",
569
+ message: displayedError,
570
+ }
571
+ : null;
572
+ const totalSteps = installSnapshot.otaStatus?.totalSteps ?? null;
573
+ const changelogs = screen === "complete" ? releaseChangelogsForActiveChain() : [];
574
+ return {
575
+ screen,
576
+ connected: installSnapshot.connected,
577
+ batteryLevel: otaSnapshot.batteryLevel,
578
+ transport: installSnapshot.transport,
579
+ updateRequired: isUpdateRequired,
580
+ versionChange: installSnapshot.isVersionChange,
581
+ versionChangeConverged: installSnapshot.versionChangeConverged,
582
+ versionChangePhase: installSnapshot.versionChangePhase,
583
+ wifiConnected: otaSnapshot.wifiConnected,
584
+ wifiStatusKnown: otaSnapshot.wifiStatusKnown,
585
+ hotspotSupported,
586
+ hotspotPhase: installSnapshot.hotspotPhase,
587
+ hotspotArtifactPercent: installSnapshot.hotspotArtifactPercent,
588
+ phase: installSnapshot.otaStatus?.phase ?? installSnapshot.otaProgress?.stage ?? null,
589
+ step: installSnapshot.otaStatus?.stepType ?? null,
590
+ currentStep: installSnapshot.otaStatus?.currentStep ?? null,
591
+ totalSteps,
592
+ progress: installProgress(installSnapshot),
593
+ installingApkOnly: installSnapshot.otaStatus?.stepType === "apk" &&
594
+ installSnapshot.otaStatus.phase === "install" &&
595
+ totalSteps === 1,
596
+ firmwareRestarting,
597
+ error,
598
+ canInstall: false,
599
+ canRetry: screen === "failed" && !requiresGlassesReboot,
600
+ canFinish: screen === "complete" || (screen === "failed" && requiresGlassesReboot),
601
+ canDismiss: false,
602
+ canDiscard: screen === "disconnected",
603
+ canOpenWifiSetup: screen === "failed" && showChangeWifi,
604
+ continueDisabled: installSnapshot.continueButtonDisabled,
605
+ completedUpdate: false,
606
+ releaseTransition: releaseTransitionFromRange(otaAutoChainReleaseRange()),
607
+ changelogs,
608
+ };
609
+ }, [
610
+ checkState,
611
+ batteryBlocked,
612
+ completedChangelogs,
613
+ completedReleaseTransition,
614
+ completedUpdate,
615
+ errorKind,
616
+ firmwareRestarting,
617
+ installSnapshot,
618
+ isUpdateRequired,
619
+ isVersionChange,
620
+ otaSnapshot,
621
+ offeredReleaseTransition,
622
+ page,
623
+ runtimeReady,
624
+ ]);
625
+ return useMemo(() => ({ state, check, retryCheck: check, install, retryInstall, finish, discard, openWifiSetup }), [check, discard, finish, install, openWifiSetup, retryInstall, state]);
626
+ }
627
+ //# sourceMappingURL=useMentraLiveOta.js.map