@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,1001 @@
1
+ import {getTimeZone} from "react-native-localize"
2
+ import {AsyncResult, result as Res, Result} from "typesafe-ts"
3
+ import {create} from "zustand"
4
+ import {subscribeWithSelector} from "zustand/middleware"
5
+
6
+ import {storage} from "../utils/storage"
7
+ import {getBluetoothSettingKeysForDevice} from "./bluetoothSettingKeys"
8
+ import {useGlassesStore} from "./glasses"
9
+
10
+ export {MENTRA_LIVE_SETTING_KEYS, getBluetoothSettingKeysForDevice} from "./bluetoothSettingKeys"
11
+
12
+ export interface Setting {
13
+ key: string
14
+ defaultValue: () => any
15
+ writable: boolean
16
+ saveOnServer: boolean
17
+ // change the key to a different key based on the indexer
18
+ // NEVER do any network calls in the indexer (or performance will suffer greatly
19
+ indexer?: (key: string) => string
20
+ // optionally override the value of the setting when it's accessed
21
+ override?: () => any
22
+ // onWrite?: () => void
23
+ persist: boolean
24
+ // Pairing-identity keys are NATIVE-authoritative: the native layer writes
25
+ // them on pairing success (handleDeviceReady) / forget and echoes them down
26
+ // via save_setting; JS→native they travel only in the explicit SEEDS
27
+ // (hydration, pre-connect, post-demotion, abandon re-seed) — never the
28
+ // change-push and never the on-connect replay, whose mid-relay snapshot can
29
+ // overwrite a just-promoted identity. PAIRING_IDENTITY_KEYS is derived from
30
+ // this flag so the sync exclusions can't drift from the descriptors.
31
+ nativeAuthoritative?: true
32
+ }
33
+
34
+ export const SETTINGS: Record<string, Setting> = {
35
+ // feature flags / mantle settings:
36
+ dev_mode: {key: "dev_mode", defaultValue: () => __DEV__, writable: true, saveOnServer: true, persist: true}, // deprecated
37
+ debug_mode: {key: "debug_mode", defaultValue: () => __DEV__, writable: true, saveOnServer: true, persist: true},
38
+ super_mode: {key: "super_mode", defaultValue: () => false, writable: true, saveOnServer: true, persist: true},
39
+ appearance_menu_enabled: {
40
+ key: "appearance_menu_enabled",
41
+ defaultValue: () => false,
42
+ writable: true,
43
+ saveOnServer: true,
44
+ persist: true,
45
+ },
46
+ app_boot_extra_info: {
47
+ key: "app_boot_extra_info",
48
+ defaultValue: () => false,
49
+ writable: true,
50
+ saveOnServer: true,
51
+ persist: true,
52
+ },
53
+ miniapp_dev_mode: {
54
+ key: "miniapp_dev_mode",
55
+ defaultValue: () => false,
56
+ writable: true,
57
+ saveOnServer: true,
58
+ persist: true,
59
+ },
60
+ enable_squircles: {
61
+ key: "enable_squircles",
62
+ defaultValue: () => true,
63
+ writable: true,
64
+ saveOnServer: true,
65
+ persist: true,
66
+ },
67
+ android_blur: {
68
+ key: "android_blur",
69
+ defaultValue: () => {
70
+ return false
71
+ },
72
+ writable: true,
73
+ saveOnServer: true,
74
+ persist: true,
75
+ },
76
+ android_inner_shadow: {
77
+ key: "android_inner_shadow",
78
+ defaultValue: () => {
79
+ return false
80
+ },
81
+ writable: true,
82
+ saveOnServer: true,
83
+ persist: true,
84
+ },
85
+ ios_glass_effect: {
86
+ key: "ios_glass_effect",
87
+ defaultValue: () => true,
88
+ writable: true,
89
+ saveOnServer: true,
90
+ persist: true,
91
+ },
92
+ ios_app_switcher_bottom_swipe: {
93
+ key: "ios_app_switcher_bottom_swipe",
94
+ defaultValue: () => false,
95
+ writable: true,
96
+ saveOnServer: true,
97
+ persist: true,
98
+ },
99
+ debug_console: {
100
+ key: "debug_console",
101
+ defaultValue: () => false,
102
+ writable: true,
103
+ saveOnServer: true,
104
+ persist: true,
105
+ },
106
+ debug_navigation_history: {
107
+ key: "debug_navigation_history",
108
+ defaultValue: () => false,
109
+ writable: true,
110
+ saveOnServer: true,
111
+ persist: true,
112
+ },
113
+ debug_core_status_bar: {
114
+ key: "debug_core_status_bar",
115
+ defaultValue: () => false,
116
+ writable: true,
117
+ saveOnServer: true,
118
+ persist: true,
119
+ },
120
+ // Mentra Nex feature flags (off by default; toggled from Nex Developer Settings).
121
+ // When on, the Nex display skips ASCII-only text sanitization so CJK/Chinese
122
+ // captions render on glasses. Synced to the Bluetooth SDK via BLUETOOTH_SETTING_KEYS.
123
+ nex_chinese_captions: {
124
+ key: "nex_chinese_captions",
125
+ defaultValue: () => false,
126
+ writable: true,
127
+ saveOnServer: true,
128
+ persist: true,
129
+ },
130
+ // When on, LC3 audio received from Nex glasses is played back (Android only).
131
+ // Local-only dev toggle: defaults off and never synced to the cloud account
132
+ // (saveOnServer: false); persists locally so it survives app restarts.
133
+ // Key renamed from the legacy `nex_audio_playback` so stale server/local
134
+ // values (saved back when this was saveOnServer:true) can't re-enable it.
135
+ nex_lc3_audio_playback: {
136
+ key: "nex_lc3_audio_playback",
137
+ defaultValue: () => false,
138
+ writable: true,
139
+ saveOnServer: false,
140
+ persist: true,
141
+ },
142
+ china_deployment: {
143
+ key: "china_deployment",
144
+ defaultValue: () => (process.env.EXPO_PUBLIC_DEPLOYMENT_REGION === "china" ? true : false),
145
+ override: () => (process.env.EXPO_PUBLIC_DEPLOYMENT_REGION === "china" ? true : false),
146
+ writable: false,
147
+ saveOnServer: false,
148
+ persist: true,
149
+ },
150
+ // Cloud V2 endpoint OVERRIDES. Empty = no override; cloudClient's resolveUrl
151
+ // owns the full precedence (override -> env -> Metro-derived dev default).
152
+ // The value may be an explicit URL or the METRO_AUTO sentinel ("my dev
153
+ // laptop", resolved live from Metro so it survives network changes). Never
154
+ // bake an env var or a personal LAN IP into the default here: that makes the
155
+ // override branch always-truthy and strands devs on a stale address.
156
+ cloud_core_url: {
157
+ key: "cloud_core_url",
158
+ defaultValue: () => "",
159
+ writable: true,
160
+ saveOnServer: false,
161
+ persist: true,
162
+ },
163
+ cloud_runtime_url: {
164
+ key: "cloud_runtime_url",
165
+ defaultValue: () => "",
166
+ writable: true,
167
+ saveOnServer: false,
168
+ persist: true,
169
+ },
170
+ // Bookmarked Cloud V2 endpoint pairs. Each entry is {label, coreUrl,
171
+ // runtimeUrl} — core + runtime are saved together because they are always
172
+ // applied as a matched set (presets fill both; Save & Test verifies both).
173
+ saved_cloud_url_pairs: {
174
+ key: "saved_cloud_url_pairs",
175
+ defaultValue: () => [],
176
+ writable: true,
177
+ saveOnServer: false,
178
+ persist: true,
179
+ },
180
+ // Developer override for the ASG OTA manifest URL. null/empty = no override;
181
+ // the normal selection applies (legacy-glasses gate, EXPO_PUBLIC_ASG_OTA_VERSION_URL,
182
+ // glasses-reported URL, then production). See getAsgOtaVersionUrl.
183
+ ota_version_url: {
184
+ key: "ota_version_url",
185
+ defaultValue: () => null,
186
+ writable: true,
187
+ saveOnServer: false,
188
+ persist: true,
189
+ },
190
+ saved_ota_version_urls: {
191
+ key: "saved_ota_version_urls",
192
+ defaultValue: () => [],
193
+ writable: true,
194
+ saveOnServer: false,
195
+ persist: true,
196
+ },
197
+ reconnect_on_app_foreground: {
198
+ key: "reconnect_on_app_foreground",
199
+ defaultValue: () => true,
200
+ writable: true,
201
+ saveOnServer: true,
202
+ persist: true,
203
+ },
204
+ location_tier: {key: "location_tier", defaultValue: () => "", writable: true, saveOnServer: true, persist: true},
205
+ // Volatile bearer synced to Bluetooth for glasses-side Cloud V2 calls. The
206
+ // key name is kept for BLE compatibility, but the value must never be loaded
207
+ // from or saved to the legacy Cloud V1 settings store.
208
+ core_token: {key: "core_token", defaultValue: () => "", writable: true, saveOnServer: false, persist: false},
209
+ auth_email: {key: "auth_email", defaultValue: () => "", writable: true, saveOnServer: false, persist: true},
210
+ // Pairing identity is per-phone, not per-account: two phones on one account
211
+ // can be paired to different glasses, so none of these keys may sync to the
212
+ // server (saveOnServer: false — a stale server copy resurrecting a local
213
+ // pairing identity is exactly the desync this group's flags prevent).
214
+ //
215
+ // Two-phase identity: pending_wearable is the model the user last STARTED
216
+ // pairing (written at selection, rendered as a finish-pairing card);
217
+ // default_wearable + device_name + device_address are only promoted by the
218
+ // native layer when pairing actually succeeds (handleDeviceReady).
219
+ // pending_wearable persists so an abandoned selection still shows its
220
+ // finish-pairing card after an app restart.
221
+ pending_wearable: {
222
+ key: "pending_wearable",
223
+ defaultValue: () => "",
224
+ writable: true,
225
+ saveOnServer: false,
226
+ persist: true,
227
+ nativeAuthoritative: true,
228
+ },
229
+ default_wearable: {
230
+ key: "default_wearable",
231
+ defaultValue: () => "",
232
+ writable: true,
233
+ saveOnServer: false,
234
+ persist: true,
235
+ nativeAuthoritative: true,
236
+ },
237
+ device_name: {
238
+ key: "device_name",
239
+ defaultValue: () => "",
240
+ writable: true,
241
+ saveOnServer: false,
242
+ persist: true,
243
+ nativeAuthoritative: true,
244
+ },
245
+ device_address: {
246
+ key: "device_address",
247
+ defaultValue: () => "",
248
+ writable: true,
249
+ saveOnServer: false,
250
+ persist: true,
251
+ nativeAuthoritative: true,
252
+ },
253
+ default_controller: {
254
+ key: "default_controller",
255
+ defaultValue: () => "",
256
+ writable: true,
257
+ saveOnServer: false,
258
+ persist: true,
259
+ nativeAuthoritative: true,
260
+ },
261
+ pending_controller: {
262
+ key: "pending_controller",
263
+ defaultValue: () => "",
264
+ writable: true,
265
+ saveOnServer: false,
266
+ persist: true,
267
+ nativeAuthoritative: true,
268
+ },
269
+ controller_device_name: {
270
+ key: "controller_device_name",
271
+ defaultValue: () => "",
272
+ writable: true,
273
+ saveOnServer: false,
274
+ persist: true,
275
+ nativeAuthoritative: true,
276
+ },
277
+ controller_address: {
278
+ key: "controller_address",
279
+ defaultValue: () => "",
280
+ writable: true,
281
+ saveOnServer: false,
282
+ persist: true,
283
+ nativeAuthoritative: true,
284
+ },
285
+ // ui state:
286
+ home_background: {
287
+ key: "home_background",
288
+ defaultValue: () => "",
289
+ writable: true,
290
+ saveOnServer: false,
291
+ persist: true,
292
+ },
293
+ theme_preference: {
294
+ key: "theme_preference",
295
+ defaultValue: () => "light",
296
+ // Force light mode - i mode is not complete yet
297
+ // override: () => "light",
298
+ writable: true,
299
+ saveOnServer: true,
300
+ persist: true,
301
+ },
302
+ enable_phone_notifications: {
303
+ key: "enable_phone_notifications",
304
+ defaultValue: () => false,
305
+ writable: true,
306
+ saveOnServer: true,
307
+ persist: true,
308
+ },
309
+ settings_access_count: {
310
+ key: "settings_access_count",
311
+ defaultValue: () => 0,
312
+ writable: true,
313
+ saveOnServer: true,
314
+ persist: true,
315
+ },
316
+ show_advanced_settings: {
317
+ key: "show_advanced_settings",
318
+ defaultValue: () => false,
319
+ writable: true,
320
+ saveOnServer: false,
321
+ persist: true,
322
+ },
323
+ onboarding_completed: {
324
+ key: "onboarding_completed",
325
+ defaultValue: () => false,
326
+ writable: true,
327
+ saveOnServer: true,
328
+ persist: true,
329
+ },
330
+ onboarding_live_completed: {
331
+ key: "onboarding_live_completed",
332
+ defaultValue: () => false,
333
+ writable: true,
334
+ saveOnServer: true,
335
+ persist: true,
336
+ },
337
+ onboarding_os_completed: {
338
+ key: "onboarding_os_completed",
339
+ defaultValue: () => false,
340
+ writable: true,
341
+ saveOnServer: true,
342
+ persist: true,
343
+ },
344
+ has_ever_activated_app: {
345
+ key: "has_ever_activated_app",
346
+ defaultValue: () => false,
347
+ writable: true,
348
+ saveOnServer: true,
349
+ persist: true,
350
+ },
351
+
352
+ // Bluetooth SDK settings:
353
+ sensing_enabled: {
354
+ key: "sensing_enabled",
355
+ defaultValue: () => true,
356
+ writable: true,
357
+ saveOnServer: true,
358
+ persist: true,
359
+ },
360
+ power_saving_mode: {
361
+ key: "power_saving_mode",
362
+ defaultValue: () => false,
363
+ writable: true,
364
+ saveOnServer: true,
365
+ persist: true,
366
+ },
367
+ voice_activity_detection_enabled: {
368
+ key: "voice_activity_detection_enabled",
369
+ defaultValue: () => true,
370
+ writable: true,
371
+ saveOnServer: false,
372
+ persist: false,
373
+ },
374
+ always_on_status_bar: {
375
+ key: "always_on_status_bar",
376
+ defaultValue: () => false,
377
+ writable: true,
378
+ saveOnServer: true,
379
+ persist: true,
380
+ },
381
+ // Legacy cloud/mobile setting name. Locally it maps to glasses-side Voice Activity Detection.
382
+ bypass_vad_for_debugging: {
383
+ key: "bypass_vad_for_debugging",
384
+ defaultValue: () => false,
385
+ writable: true,
386
+ saveOnServer: true,
387
+ persist: true,
388
+ },
389
+ bypass_audio_encoding_for_debugging: {
390
+ key: "bypass_audio_encoding_for_debugging",
391
+ defaultValue: () => false,
392
+ writable: true,
393
+ saveOnServer: true,
394
+ persist: true,
395
+ },
396
+ metric_system: {
397
+ key: "metric_system",
398
+ defaultValue: () => false,
399
+ writable: true,
400
+ saveOnServer: true,
401
+ persist: true,
402
+ },
403
+ twelve_hour_time: {
404
+ key: "twelve_hour_time",
405
+ defaultValue: () => true,
406
+ writable: true,
407
+ saveOnServer: true,
408
+ persist: true,
409
+ },
410
+ enforce_local_transcription: {
411
+ key: "enforce_local_transcription",
412
+ defaultValue: () => false,
413
+ writable: true,
414
+ saveOnServer: true,
415
+ persist: true,
416
+ },
417
+ // LC3 audio quality setting (frame size in bytes)
418
+ // 20 = 16kbps (low bandwidth), 40 = 32kbps (balanced), 60 = 48kbps (high quality)
419
+ lc3_frame_size: {
420
+ key: "lc3_frame_size",
421
+ defaultValue: () => 60,
422
+ writable: true,
423
+ saveOnServer: false,
424
+ persist: true,
425
+ },
426
+ preferred_mic: {
427
+ key: "preferred_mic",
428
+ defaultValue: () => "auto",
429
+ writable: true,
430
+ indexer: (key: string) => {
431
+ const glasses = useSettingsStore.getState().getSetting(SETTINGS.default_wearable.key)
432
+ if (glasses) {
433
+ return `${key}:${glasses}`
434
+ }
435
+ return key
436
+ },
437
+ saveOnServer: true,
438
+ persist: true,
439
+ },
440
+ screen_disabled: {
441
+ key: "screen_disabled",
442
+ defaultValue: () => false,
443
+ writable: true,
444
+ saveOnServer: false,
445
+ persist: true,
446
+ },
447
+ // glasses settings:
448
+ contextual_dashboard: {
449
+ key: "contextual_dashboard",
450
+ defaultValue: () => true,
451
+ writable: true,
452
+ saveOnServer: true,
453
+ persist: true,
454
+ },
455
+ use_native_dashboard: {
456
+ key: "use_native_dashboard",
457
+ defaultValue: () => true,
458
+ writable: true,
459
+ saveOnServer: true,
460
+ persist: true,
461
+ },
462
+ head_up_angle: {key: "head_up_angle", defaultValue: () => 45, writable: true, saveOnServer: true, persist: true},
463
+ brightness: {key: "brightness", defaultValue: () => 50, writable: true, saveOnServer: true, persist: true},
464
+ auto_brightness: {
465
+ key: "auto_brightness",
466
+ defaultValue: () => true,
467
+ writable: true,
468
+ saveOnServer: true,
469
+ persist: true,
470
+ },
471
+ dashboard_height: {
472
+ key: "dashboard_height",
473
+ defaultValue: () => 4,
474
+ writable: true,
475
+ saveOnServer: true,
476
+ persist: true,
477
+ },
478
+ dashboard_depth: {
479
+ key: "dashboard_depth",
480
+ defaultValue: () => 2,
481
+ writable: true,
482
+ saveOnServer: true,
483
+ persist: true,
484
+ },
485
+ menu_apps: {
486
+ key: "menu_apps",
487
+ defaultValue: () => null,
488
+ writable: true,
489
+ saveOnServer: true,
490
+ persist: true,
491
+ },
492
+ calendar_events: {
493
+ key: "calendar_events",
494
+ defaultValue: () => [],
495
+ writable: true,
496
+ saveOnServer: false,
497
+ persist: false,
498
+ },
499
+ // button settings
500
+ // Legacy persisted/cloud key; hardware behavior is now controlled by gallery_mode plus capture settings.
501
+ button_mode: {key: "button_mode", defaultValue: () => "photo", writable: true, saveOnServer: true, persist: true},
502
+ button_photo_size: {
503
+ key: "button_photo_size",
504
+ defaultValue: () => "max",
505
+ writable: true,
506
+ saveOnServer: true,
507
+ persist: true,
508
+ },
509
+ button_video_settings: {
510
+ key: "button_video_settings",
511
+ defaultValue: () => ({width: 1920, height: 1080, fps: 30}),
512
+ writable: true,
513
+ saveOnServer: true,
514
+ persist: true,
515
+ },
516
+ button_max_recording_time: {
517
+ key: "button_max_recording_time",
518
+ defaultValue: () => 10,
519
+ writable: true,
520
+ saveOnServer: true,
521
+ persist: true,
522
+ },
523
+ camera_fov: {
524
+ key: "camera_fov",
525
+ defaultValue: () => ({fov: 102, roi_position: 0}),
526
+ writable: true,
527
+ saveOnServer: true,
528
+ persist: true,
529
+ },
530
+ media_post_processing: {
531
+ key: "media_post_processing",
532
+ defaultValue: () => false,
533
+ writable: true,
534
+ saveOnServer: true,
535
+ persist: true,
536
+ },
537
+
538
+ // time zone settings
539
+ time_zone: {
540
+ key: "time_zone",
541
+ defaultValue: () => "",
542
+ writable: true,
543
+ override: () => {
544
+ const override = useSettingsStore.getState().getSetting(SETTINGS.time_zone_override.key)
545
+ if (override) {
546
+ return override
547
+ }
548
+ return getTimeZone()
549
+ },
550
+ saveOnServer: true,
551
+ persist: true,
552
+ },
553
+ time_zone_override: {
554
+ key: "time_zone_override",
555
+ defaultValue: () => "",
556
+ writable: true,
557
+ saveOnServer: true,
558
+ persist: true,
559
+ },
560
+ // offline applets
561
+ offline_mode: {key: "offline_mode", defaultValue: () => false, writable: true, saveOnServer: true, persist: true},
562
+ // Runtime flag: coordinator flips this on when cloud STT has failed and fallback is active.
563
+ // Native GlassesStore watches it to gate PCM → Sherpa feeding. Not user-facing.
564
+ local_stt_fallback_active: {
565
+ key: "local_stt_fallback_active",
566
+ defaultValue: () => false,
567
+ writable: true,
568
+ saveOnServer: false,
569
+ persist: false,
570
+ },
571
+ gallery_mode: {key: "gallery_mode", defaultValue: () => true, writable: true, saveOnServer: true, persist: true},
572
+ gallery_sync_explained: {
573
+ key: "gallery_sync_explained",
574
+ defaultValue: () => false,
575
+ writable: true,
576
+ saveOnServer: false,
577
+ persist: true,
578
+ },
579
+ offline_camera_running: {
580
+ key: "offline_camera_running",
581
+ defaultValue: () => false,
582
+ writable: true,
583
+ saveOnServer: false,
584
+ persist: true,
585
+ },
586
+ // offline translation
587
+ offline_translation_running: {
588
+ key: "offline_translation_running",
589
+ defaultValue: () => false,
590
+ writable: true,
591
+ saveOnServer: true,
592
+ persist: true,
593
+ },
594
+ offline_translation_source: {
595
+ key: "offline_translation_source",
596
+ defaultValue: () => "en",
597
+ writable: true,
598
+ saveOnServer: true,
599
+ persist: true,
600
+ },
601
+ offline_translation_target: {
602
+ key: "offline_translation_target",
603
+ defaultValue: () => "es",
604
+ writable: true,
605
+ saveOnServer: true,
606
+ persist: true,
607
+ },
608
+ // button action settings
609
+ default_button_action_enabled: {
610
+ key: "default_button_action_enabled",
611
+ defaultValue: () => true,
612
+ writable: true,
613
+ saveOnServer: true,
614
+ persist: true,
615
+ },
616
+ default_button_action_app: {
617
+ key: "default_button_action_app",
618
+ defaultValue: () => "com.mentra.camera",
619
+ writable: true,
620
+ saveOnServer: true,
621
+ persist: true,
622
+ },
623
+ // notifications
624
+ notifications_enabled: {
625
+ key: "notifications_enabled",
626
+ defaultValue: () => true,
627
+ writable: true,
628
+ saveOnServer: true,
629
+ persist: true,
630
+ },
631
+ notifications_blocklist: {
632
+ key: "notifications_blocklist",
633
+ defaultValue: () => [],
634
+ writable: true,
635
+ saveOnServer: true,
636
+ persist: true,
637
+ },
638
+ // Cached required version from server - used to enforce updates even when offline
639
+ cached_required_version: {
640
+ key: "cached_required_version",
641
+ defaultValue: () => "",
642
+ writable: true,
643
+ saveOnServer: false,
644
+ persist: true,
645
+ },
646
+ // OTA update dismissal - stores the version code user dismissed (not persisted so resets on app restart)
647
+ dismissed_ota_version: {
648
+ key: "dismissed_ota_version",
649
+ defaultValue: () => "",
650
+ writable: true,
651
+ saveOnServer: false,
652
+ persist: false,
653
+ },
654
+ // Contact email for feedback (persisted for Apple private relay users)
655
+ contact_email: {
656
+ key: "contact_email",
657
+ defaultValue: () => "",
658
+ writable: true,
659
+ saveOnServer: false,
660
+ persist: true,
661
+ },
662
+ } as const
663
+
664
+ export const OFFLINE_APPLETS: string[] = ["com.mentra.livecaptions", "com.mentra.camera"]
665
+
666
+ // These settings are automatically synced to the Bluetooth SDK.
667
+ // Keep this list hardware-facing; app/UI/cloud-only preferences should stay in JS/Crust.
668
+ export const BLUETOOTH_SETTING_KEYS: string[] = [
669
+ // Bluetooth settings:
670
+ SETTINGS.sensing_enabled.key,
671
+ SETTINGS.power_saving_mode.key,
672
+ SETTINGS.voice_activity_detection_enabled.key,
673
+ SETTINGS.lc3_frame_size.key,
674
+ SETTINGS.preferred_mic.key,
675
+ SETTINGS.screen_disabled.key,
676
+ SETTINGS.auth_email.key,
677
+ SETTINGS.core_token.key,
678
+ // glasses settings:
679
+ SETTINGS.contextual_dashboard.key,
680
+ SETTINGS.head_up_angle.key,
681
+ SETTINGS.brightness.key,
682
+ SETTINGS.auto_brightness.key,
683
+ SETTINGS.dashboard_height.key,
684
+ SETTINGS.dashboard_depth.key,
685
+ SETTINGS.menu_apps.key,
686
+ SETTINGS.calendar_events.key,
687
+ SETTINGS.use_native_dashboard.key,
688
+ SETTINGS.twelve_hour_time.key,
689
+ SETTINGS.metric_system.key,
690
+ // button:
691
+ SETTINGS.button_photo_size.key,
692
+ // Legacy MentraLive native code reads the object form when syncing video settings.
693
+ SETTINGS.button_video_settings.key,
694
+ SETTINGS.button_max_recording_time.key,
695
+ SETTINGS.camera_fov.key,
696
+ // device / pairing:
697
+ SETTINGS.pending_wearable.key,
698
+ SETTINGS.default_wearable.key,
699
+ SETTINGS.device_name.key,
700
+ SETTINGS.device_address.key,
701
+ SETTINGS.default_controller.key,
702
+ SETTINGS.pending_controller.key,
703
+ SETTINGS.controller_device_name.key,
704
+ SETTINGS.controller_address.key,
705
+ // offline applets:
706
+ SETTINGS.offline_mode.key,
707
+ // Runtime flag flipped by LocalSttFallbackCoordinator. Native reads it from
708
+ // GlassesStore to gate PCM → Sherpa feeding in handlePcm and to keep the
709
+ // mic on while local STT is the active engine.
710
+ SETTINGS.local_stt_fallback_active.key,
711
+ SETTINGS.gallery_mode.key,
712
+ // Mentra Nex feature flags:
713
+ SETTINGS.nex_chinese_captions.key,
714
+ SETTINGS.nex_lc3_audio_playback.key,
715
+ ]
716
+
717
+ // Pairing identity is NATIVE-authoritative: the native layer writes it on
718
+ // pairing success (handleDeviceReady) / forget and echoes it down via
719
+ // save_setting; JS persists those echoes. JS→native, identity travels ONLY in
720
+ // the explicit full seeds (device-store hydration, pre-connect push,
721
+ // post-demotion re-push) — never in the change-push subscription. Relaying an
722
+ // echoed identity change back up would make the sync bidirectional with loop
723
+ // gain 1: two identity values in flight (e.g. a boot demotion crossing a
724
+ // native promotion) then chase each other through push→apply→echo→push
725
+ // forever, flapping the UI.
726
+ //
727
+ // Derived from the `nativeAuthoritative` descriptor flag (not maintained as a
728
+ // parallel list) so the change-push exclusion in GlassesSettingsSync can't
729
+ // drift from the setting declarations.
730
+ export const PAIRING_IDENTITY_KEYS: string[] = Object.values(SETTINGS)
731
+ .filter((setting) => setting.nativeAuthoritative)
732
+ .map((setting) => setting.key)
733
+
734
+ // const PER_GLASSES_SETTINGS_KEYS: string[] = [SETTINGS.preferred_mic.key]
735
+
736
+ export interface SettingsState {
737
+ // Settings values
738
+ settings: Record<string, any>
739
+ // Loading states
740
+ isInitialized: boolean
741
+ // Actions
742
+ setSetting: (key: string, value: any, updateServer?: boolean) => AsyncResult<void, Error>
743
+ setManyLocally: (settings: Record<string, any>) => AsyncResult<void, Error>
744
+ getSetting: (key: string) => any
745
+ // loadSetting: (key: string) => AsyncResult<void, Error>
746
+ loadAllSettings: () => AsyncResult<void, Error>
747
+ // Utility methods
748
+ getBluetoothSettings: () => Record<string, any>
749
+ resetAllSettingsLocally: () => void
750
+ }
751
+
752
+ const getDefaultSettings = () =>
753
+ Object.keys(SETTINGS).reduce(
754
+ (acc, key) => {
755
+ acc[key] = SETTINGS[key].defaultValue()
756
+ return acc
757
+ },
758
+ {} as Record<string, any>,
759
+ )
760
+
761
+ // Single-flight for loadAllSettings: the host fires it at module load and
762
+ // engine.start()'s device-store hydration awaits it — without the memo the
763
+ // second caller runs a duplicate full disk load while the first is still in
764
+ // flight. Cleared on failure so a later call can retry.
765
+ let loadAllSettingsInFlight: AsyncResult<void, Error> | null = null
766
+
767
+ export const useSettingsStore = create<SettingsState>()(
768
+ subscribeWithSelector((set, get) => ({
769
+ settings: getDefaultSettings(),
770
+ isInitialized: false,
771
+ loadingKeys: new Set(),
772
+ setSetting: (key: string, value: any, _updateServer = true): AsyncResult<void, Error> => {
773
+ return Res.try_async(async () => {
774
+ const setting = SETTINGS[key]
775
+ const originalKey = key
776
+
777
+ if (!setting) {
778
+ throw new Error(`SETTINGS: SET: ${originalKey} is not a valid setting!`)
779
+ }
780
+
781
+ if (setting.indexer) {
782
+ key = setting.indexer(originalKey)
783
+ }
784
+
785
+ if (!setting.writable) {
786
+ throw new Error(`SETTINGS: ${originalKey} is not writable!`)
787
+ }
788
+
789
+ // Update store immediately for optimistic UI
790
+ console.log(`SETTINGS: SET: ${key} = ${value}`)
791
+ set((state) => ({
792
+ settings: {...state.settings, [key]: value},
793
+ }))
794
+
795
+ if (setting.persist) {
796
+ let res = await storage.save(key, value)
797
+ if (res.is_error()) {
798
+ throw new Error(`SETTINGS: couldn't save setting to storage: ${res.error}`)
799
+ }
800
+
801
+ // Cloud V1 per-change server sync removed with the V1 ripout (issue
802
+ // #3392). Settings are local-first until a V2 sync lands; the
803
+ // saveOnServer flags are retained as intent markers for that work.
804
+ }
805
+ })
806
+ },
807
+ getSetting: (key: string) => {
808
+ const state = get()
809
+ const originalKey = key
810
+ const setting = SETTINGS[originalKey]
811
+
812
+ if (!setting) {
813
+ console.error(`SETTINGS: GET: ${originalKey} is not a valid setting!`)
814
+ return undefined
815
+ }
816
+
817
+ if (setting.override) {
818
+ let override = setting.override()
819
+ if (override !== undefined) {
820
+ return override
821
+ }
822
+ }
823
+
824
+ if (setting.indexer) {
825
+ key = setting.indexer(originalKey)
826
+ }
827
+
828
+ // console.log(`GET SETTING: ${key} = ${state.settings[key]}`)
829
+
830
+ try {
831
+ const raw = state.settings[key] ?? SETTINGS[originalKey].defaultValue()
832
+ return raw
833
+ } catch (e) {
834
+ // for dynamically created settings, we need to create a new setting in SETTINGS:
835
+ console.log(`Failed to get setting, creating new setting:(${key}):`, e)
836
+ SETTINGS[key] = {key: key, defaultValue: () => undefined, writable: true, saveOnServer: false, persist: true}
837
+ return SETTINGS[key].defaultValue()
838
+ }
839
+ },
840
+ // batch update many settings from the server:
841
+ setManyLocally: (settings: Record<string, any>): AsyncResult<void, Error> => {
842
+ return Res.try_async(async () => {
843
+ const settingsToLoad: Record<string, any> = {}
844
+ // if a setting should not persist, don't load it:
845
+ for (const [key, value] of Object.entries(settings)) {
846
+ const stg: Setting | undefined = SETTINGS[key.toLowerCase()]
847
+ if (!stg) {
848
+ continue
849
+ }
850
+ if (!stg.persist) {
851
+ continue
852
+ }
853
+ settingsToLoad[key.toLowerCase()] = value
854
+ }
855
+ // console.log("SETTINGS: SET MANY LOCALLY: ", settingsToLoad)
856
+
857
+ set((state) => ({
858
+ settings: {...state.settings, ...settingsToLoad},
859
+ }))
860
+
861
+ // save to storage:
862
+ await Promise.all(Object.entries(settingsToLoad).map(([key, value]) => storage.save(key, value)))
863
+ })
864
+ },
865
+ // loads any preferences that have been changed from the default and saved to DISK!
866
+ loadAllSettings: (): AsyncResult<void, Error> => {
867
+ console.log("SETTINGS: loadAllSettings()")
868
+ if (loadAllSettingsInFlight) {
869
+ return loadAllSettingsInFlight
870
+ }
871
+ const inFlight = Res.try_async(async () => {
872
+ const state = get()
873
+ let loadedSettings: Record<string, any> = {}
874
+
875
+ if (state.isInitialized) {
876
+ return undefined
877
+ }
878
+
879
+ for (const setting of Object.values(SETTINGS)) {
880
+ // if the settings should not persist, don't load it:
881
+ if (!setting.persist) {
882
+ continue
883
+ }
884
+
885
+ // load all subkeys for an indexed setting:
886
+ if (setting?.indexer) {
887
+ console.log(`SETTINGS: LOAD: ${setting.key} with indexer!`)
888
+
889
+ let res: Result<Record<string, unknown>, Error> = storage.loadSubKeys(setting.key)
890
+ if (res.is_error()) {
891
+ console.log(`SETTINGS: LOAD: ${setting.key}`, res.error)
892
+ continue
893
+ }
894
+
895
+ let subKeys: Record<string, unknown> = res.value
896
+ console.log(`SETTINGS: LOAD: ${setting.key} subkeys are set!`, subKeys)
897
+ loadedSettings = {...loadedSettings, ...subKeys}
898
+ continue
899
+ }
900
+
901
+ let res = storage.load<any>(setting.key)
902
+ if (res.is_error()) {
903
+ console.log(`SETTINGS: LOAD: ${setting.key} is not set!`, res.error)
904
+ // this setting isn't set from the default, so we don't load anything
905
+ continue
906
+ }
907
+ // normal key:value pair:
908
+ let value = res.value
909
+ // res.value IS the stored value; logging value.value printed
910
+ // "undefined" for every loaded setting and disguised present
911
+ // values as missing. Redact token- and email-bearing keys: console
912
+ // logs are uploaded in bug-report artifacts (same keys
913
+ // diagnosticContext's SENSITIVE_SETTINGS_KEYS strips, minus an
914
+ // import that would cycle stores <-> utils).
915
+ const printable =
916
+ setting.key.includes("token") || setting.key.includes("email") ? "<redacted>" : JSON.stringify(value)
917
+ console.log(`SETTINGS: LOAD: ${setting.key} = ${printable}`)
918
+ loadedSettings[setting.key] = value
919
+ }
920
+
921
+ // console.log("##############################################")
922
+ // console.log(loadedSettings)
923
+ // console.log("##############################################")
924
+
925
+ set((state) => ({
926
+ isInitialized: true,
927
+ settings: {...state.settings, ...loadedSettings},
928
+ }))
929
+
930
+ // One-time migration: force android_blur=false for existing users.
931
+ // The setting's default is already false; this migration covers users
932
+ // who explicitly opted into Android blur effects before we discovered
933
+ // they're a major source of frame drops on cheap Android phones.
934
+ // The dimezisBlurViewSdk31Plus blur each costs ~5-10ms/frame; with
935
+ // multiple blurs on home (top fade + AppSwitcherButton x2) a low-end
936
+ // device misses the 16ms budget consistently. Users can turn it back
937
+ // on under Settings → Appearance once we've optimized further.
938
+ //
939
+ // The setSetting call also pushes to the server (saveOnServer: true)
940
+ // so the server-stored value flips too — otherwise the next sync
941
+ // from the user's server-stored prefs would re-enable blur.
942
+ // Best-effort: a server failure (offline, 5xx) shouldn't block boot;
943
+ // we still mark the migration done locally so we don't loop.
944
+ const MIGRATION_KEY = "migration:android_blur_default_false_v1"
945
+ const migrationDone = storage.load<boolean>(MIGRATION_KEY)
946
+ if (migrationDone.is_error() || !migrationDone.value) {
947
+ const current = get().getSetting(SETTINGS.android_blur.key)
948
+ if (current === true) {
949
+ const result = await get().setSetting(SETTINGS.android_blur.key, false, true)
950
+ if (result.is_error()) {
951
+ // Server push failed (offline / 5xx). Local storage was still
952
+ // updated, so the user immediately gets the new behavior. The
953
+ // server-side stale `true` will be overwritten the next time
954
+ // the user opens Appearance settings and the auto-sync runs.
955
+ console.log("SETTINGS: android_blur migration server-push failed:", result.error)
956
+ }
957
+ }
958
+ // Mark done unconditionally — even on server-push failure we don't
959
+ // want to retry the migration on every boot. The local value is
960
+ // already correct.
961
+ storage.save(MIGRATION_KEY, true)
962
+ }
963
+ })
964
+ loadAllSettingsInFlight = inFlight
965
+ void Promise.resolve(inFlight).then((result) => {
966
+ if (result.is_error()) {
967
+ loadAllSettingsInFlight = null
968
+ }
969
+ })
970
+ return inFlight
971
+ },
972
+ getBluetoothSettings: () => {
973
+ const state = get()
974
+ // Device-model-filtered key set (wire v2): Mentra Live (no display) gets
975
+ // the reduced MENTRA_LIVE_SETTING_KEYS; display glasses get the full set.
976
+ const deviceModel = useGlassesStore.getState().deviceModel || state.getSetting(SETTINGS.default_wearable.key)
977
+ const keys = getBluetoothSettingKeysForDevice(deviceModel, BLUETOOTH_SETTING_KEYS)
978
+ const bluetoothSettings: Record<string, any> = {}
979
+ for (const key of keys) {
980
+ const value = state.getSetting(key)
981
+ if (key === SETTINGS.core_token.key && (typeof value !== "string" || value.trim().length === 0)) {
982
+ continue
983
+ }
984
+ bluetoothSettings[key] = value
985
+ }
986
+ return bluetoothSettings
987
+ },
988
+ resetAllSettingsLocally: () => {
989
+ set((_state) => ({
990
+ settings: getDefaultSettings(),
991
+ isInitialized: true,
992
+ }))
993
+ },
994
+ })),
995
+ )
996
+
997
+ export const useSetting = <T = any>(key: string): [T, (value: T) => AsyncResult<void, Error>] => {
998
+ const value = useSettingsStore((state) => state.getSetting(key))
999
+ const setSetting = useSettingsStore((state) => state.setSetting)
1000
+ return [value, (newValue: T) => setSetting(key, newValue)]
1001
+ }