@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.
- package/README.md +79 -0
- package/build/devtools.d.ts +11 -0
- package/build/devtools.d.ts.map +1 -0
- package/build/devtools.js +13 -0
- package/build/devtools.js.map +1 -0
- package/build/engine.d.ts +261 -0
- package/build/engine.d.ts.map +1 -0
- package/build/engine.js +170 -0
- package/build/engine.js.map +1 -0
- package/build/facades/dev.d.ts +58 -0
- package/build/facades/dev.d.ts.map +1 -0
- package/build/facades/dev.js +189 -0
- package/build/facades/dev.js.map +1 -0
- package/build/facades/display.d.ts +21 -0
- package/build/facades/display.d.ts.map +1 -0
- package/build/facades/display.js +17 -0
- package/build/facades/display.js.map +1 -0
- package/build/facades/displayMirror.d.ts +15 -0
- package/build/facades/displayMirror.d.ts.map +1 -0
- package/build/facades/displayMirror.js +29 -0
- package/build/facades/displayMirror.js.map +1 -0
- package/build/facades/gallery.d.ts +62 -0
- package/build/facades/gallery.d.ts.map +1 -0
- package/build/facades/gallery.js +61 -0
- package/build/facades/gallery.js.map +1 -0
- package/build/facades/glasses.d.ts +141 -0
- package/build/facades/glasses.d.ts.map +1 -0
- package/build/facades/glasses.js +199 -0
- package/build/facades/glasses.js.map +1 -0
- package/build/facades/glassesSettings.d.ts +13 -0
- package/build/facades/glassesSettings.d.ts.map +1 -0
- package/build/facades/glassesSettings.js +54 -0
- package/build/facades/glassesSettings.js.map +1 -0
- package/build/facades/glassesWifi.d.ts +25 -0
- package/build/facades/glassesWifi.d.ts.map +1 -0
- package/build/facades/glassesWifi.js +57 -0
- package/build/facades/glassesWifi.js.map +1 -0
- package/build/facades/miniapps.d.ts +43 -0
- package/build/facades/miniapps.d.ts.map +1 -0
- package/build/facades/miniapps.js +49 -0
- package/build/facades/miniapps.js.map +1 -0
- package/build/facades/notifications.d.ts +13 -0
- package/build/facades/notifications.d.ts.map +1 -0
- package/build/facades/notifications.js +12 -0
- package/build/facades/notifications.js.map +1 -0
- package/build/facades/ota.d.ts +103 -0
- package/build/facades/ota.d.ts.map +1 -0
- package/build/facades/ota.js +156 -0
- package/build/facades/ota.js.map +1 -0
- package/build/facades/pairing.d.ts +114 -0
- package/build/facades/pairing.d.ts.map +1 -0
- package/build/facades/pairing.js +275 -0
- package/build/facades/pairing.js.map +1 -0
- package/build/facades/permissions.d.ts +33 -0
- package/build/facades/permissions.d.ts.map +1 -0
- package/build/facades/permissions.js +155 -0
- package/build/facades/permissions.js.map +1 -0
- package/build/facades/phoneNotifications.d.ts +21 -0
- package/build/facades/phoneNotifications.d.ts.map +1 -0
- package/build/facades/phoneNotifications.js +51 -0
- package/build/facades/phoneNotifications.js.map +1 -0
- package/build/facades/reports.d.ts +36 -0
- package/build/facades/reports.d.ts.map +1 -0
- package/build/facades/reports.js +134 -0
- package/build/facades/reports.js.map +1 -0
- package/build/facades/session.d.ts +21 -0
- package/build/facades/session.d.ts.map +1 -0
- package/build/facades/session.js +52 -0
- package/build/facades/session.js.map +1 -0
- package/build/facades/settings.d.ts +37 -0
- package/build/facades/settings.d.ts.map +1 -0
- package/build/facades/settings.js +55 -0
- package/build/facades/settings.js.map +1 -0
- package/build/facades/speech.d.ts +30 -0
- package/build/facades/speech.d.ts.map +1 -0
- package/build/facades/speech.js +37 -0
- package/build/facades/speech.js.map +1 -0
- package/build/index.d.ts +43 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +45 -0
- package/build/index.js.map +1 -0
- package/build/internal.d.ts +67 -0
- package/build/internal.d.ts.map +1 -0
- package/build/internal.js +90 -0
- package/build/internal.js.map +1 -0
- package/build/runtime/bootstrap.d.ts +83 -0
- package/build/runtime/bootstrap.d.ts.map +1 -0
- package/build/runtime/bootstrap.js +56 -0
- package/build/runtime/bootstrap.js.map +1 -0
- package/build/runtime/config.d.ts +146 -0
- package/build/runtime/config.d.ts.map +1 -0
- package/build/runtime/config.js +18 -0
- package/build/runtime/config.js.map +1 -0
- package/build/runtime/streamConfig.d.ts +4 -0
- package/build/runtime/streamConfig.d.ts.map +1 -0
- package/build/runtime/streamConfig.js +38 -0
- package/build/runtime/streamConfig.js.map +1 -0
- package/build/services/AppRegistry.d.ts +269 -0
- package/build/services/AppRegistry.d.ts.map +1 -0
- package/build/services/AppRegistry.js +1079 -0
- package/build/services/AppRegistry.js.map +1 -0
- package/build/services/AudioCloudUplink.d.ts +9 -0
- package/build/services/AudioCloudUplink.d.ts.map +1 -0
- package/build/services/AudioCloudUplink.js +48 -0
- package/build/services/AudioCloudUplink.js.map +1 -0
- package/build/services/AudioPlaybackService.d.ts +175 -0
- package/build/services/AudioPlaybackService.d.ts.map +1 -0
- package/build/services/AudioPlaybackService.js +705 -0
- package/build/services/AudioPlaybackService.js.map +1 -0
- package/build/services/AutomaticReportResult.d.ts +20 -0
- package/build/services/AutomaticReportResult.d.ts.map +1 -0
- package/build/services/AutomaticReportResult.js +29 -0
- package/build/services/AutomaticReportResult.js.map +1 -0
- package/build/services/BlobStore.d.ts +91 -0
- package/build/services/BlobStore.d.ts.map +1 -0
- package/build/services/BlobStore.js +668 -0
- package/build/services/BlobStore.js.map +1 -0
- package/build/services/CaptionsTesterReportService.d.ts +4 -0
- package/build/services/CaptionsTesterReportService.d.ts.map +1 -0
- package/build/services/CaptionsTesterReportService.js +80 -0
- package/build/services/CaptionsTesterReportService.js.map +1 -0
- package/build/services/CloudAudioSubscriptionSync.d.ts +24 -0
- package/build/services/CloudAudioSubscriptionSync.d.ts.map +1 -0
- package/build/services/CloudAudioSubscriptionSync.js +39 -0
- package/build/services/CloudAudioSubscriptionSync.js.map +1 -0
- package/build/services/CloudClientService.d.ts +143 -0
- package/build/services/CloudClientService.d.ts.map +1 -0
- package/build/services/CloudClientService.js +644 -0
- package/build/services/CloudClientService.js.map +1 -0
- package/build/services/CloudTranscriptE2EMetrics.d.ts +4 -0
- package/build/services/CloudTranscriptE2EMetrics.d.ts.map +1 -0
- package/build/services/CloudTranscriptE2EMetrics.js +24 -0
- package/build/services/CloudTranscriptE2EMetrics.js.map +1 -0
- package/build/services/ConnectionCoordinator.d.ts +51 -0
- package/build/services/ConnectionCoordinator.d.ts.map +1 -0
- package/build/services/ConnectionCoordinator.js +34 -0
- package/build/services/ConnectionCoordinator.js.map +1 -0
- package/build/services/DevServerBridge.d.ts +63 -0
- package/build/services/DevServerBridge.d.ts.map +1 -0
- package/build/services/DevServerBridge.js +294 -0
- package/build/services/DevServerBridge.js.map +1 -0
- package/build/services/DeviceEventRouter.d.ts +3 -0
- package/build/services/DeviceEventRouter.d.ts.map +1 -0
- package/build/services/DeviceEventRouter.js +190 -0
- package/build/services/DeviceEventRouter.js.map +1 -0
- package/build/services/DeviceStoreHydration.d.ts +38 -0
- package/build/services/DeviceStoreHydration.d.ts.map +1 -0
- package/build/services/DeviceStoreHydration.js +124 -0
- package/build/services/DeviceStoreHydration.js.map +1 -0
- package/build/services/DisplayProcessor.d.ts +223 -0
- package/build/services/DisplayProcessor.d.ts.map +1 -0
- package/build/services/DisplayProcessor.js +552 -0
- package/build/services/DisplayProcessor.js.map +1 -0
- package/build/services/GlassesReadiness.d.ts +41 -0
- package/build/services/GlassesReadiness.d.ts.map +1 -0
- package/build/services/GlassesReadiness.js +82 -0
- package/build/services/GlassesReadiness.js.map +1 -0
- package/build/services/GlassesSettingsSync.d.ts +33 -0
- package/build/services/GlassesSettingsSync.d.ts.map +1 -0
- package/build/services/GlassesSettingsSync.js +121 -0
- package/build/services/GlassesSettingsSync.js.map +1 -0
- package/build/services/GlassesStatusProjection.d.ts +3 -0
- package/build/services/GlassesStatusProjection.d.ts.map +1 -0
- package/build/services/GlassesStatusProjection.js +65 -0
- package/build/services/GlassesStatusProjection.js.map +1 -0
- package/build/services/HeadingService.d.ts +27 -0
- package/build/services/HeadingService.d.ts.map +1 -0
- package/build/services/HeadingService.js +96 -0
- package/build/services/HeadingService.js.map +1 -0
- package/build/services/LocalDisplayManager.d.ts +139 -0
- package/build/services/LocalDisplayManager.d.ts.map +1 -0
- package/build/services/LocalDisplayManager.js +579 -0
- package/build/services/LocalDisplayManager.js.map +1 -0
- package/build/services/LocalMiniappRuntime.d.ts +439 -0
- package/build/services/LocalMiniappRuntime.d.ts.map +1 -0
- package/build/services/LocalMiniappRuntime.js +3695 -0
- package/build/services/LocalMiniappRuntime.js.map +1 -0
- package/build/services/LocalSttFallbackCoordinator.d.ts +57 -0
- package/build/services/LocalSttFallbackCoordinator.d.ts.map +1 -0
- package/build/services/LocalSttFallbackCoordinator.js +137 -0
- package/build/services/LocalSttFallbackCoordinator.js.map +1 -0
- package/build/services/MentraJSCrashController.d.ts +97 -0
- package/build/services/MentraJSCrashController.d.ts.map +1 -0
- package/build/services/MentraJSCrashController.js +138 -0
- package/build/services/MentraJSCrashController.js.map +1 -0
- package/build/services/MentraJSCrashloopReportService.d.ts +9 -0
- package/build/services/MentraJSCrashloopReportService.d.ts.map +1 -0
- package/build/services/MentraJSCrashloopReportService.js +54 -0
- package/build/services/MentraJSCrashloopReportService.js.map +1 -0
- package/build/services/MentraJSLogPipeline.d.ts +87 -0
- package/build/services/MentraJSLogPipeline.d.ts.map +1 -0
- package/build/services/MentraJSLogPipeline.js +137 -0
- package/build/services/MentraJSLogPipeline.js.map +1 -0
- package/build/services/MentraJSRouter.d.ts +203 -0
- package/build/services/MentraJSRouter.d.ts.map +1 -0
- package/build/services/MentraJSRouter.js +480 -0
- package/build/services/MentraJSRouter.js.map +1 -0
- package/build/services/MentraUIRouter.d.ts +137 -0
- package/build/services/MentraUIRouter.d.ts.map +1 -0
- package/build/services/MentraUIRouter.js +210 -0
- package/build/services/MentraUIRouter.js.map +1 -0
- package/build/services/MicStateCoordinator.d.ts +37 -0
- package/build/services/MicStateCoordinator.d.ts.map +1 -0
- package/build/services/MicStateCoordinator.js +81 -0
- package/build/services/MicStateCoordinator.js.map +1 -0
- package/build/services/MiniappEngine.d.ts +31 -0
- package/build/services/MiniappEngine.d.ts.map +1 -0
- package/build/services/MiniappEngine.js +119 -0
- package/build/services/MiniappEngine.js.map +1 -0
- package/build/services/MiniappLauncher.d.ts +129 -0
- package/build/services/MiniappLauncher.d.ts.map +1 -0
- package/build/services/MiniappLauncher.js +291 -0
- package/build/services/MiniappLauncher.js.map +1 -0
- package/build/services/MiniappRunningRegistry.d.ts +24 -0
- package/build/services/MiniappRunningRegistry.d.ts.map +1 -0
- package/build/services/MiniappRunningRegistry.js +52 -0
- package/build/services/MiniappRunningRegistry.js.map +1 -0
- package/build/services/NativeHttpResponse.d.ts +3 -0
- package/build/services/NativeHttpResponse.d.ts.map +1 -0
- package/build/services/NativeHttpResponse.js +6 -0
- package/build/services/NativeHttpResponse.js.map +1 -0
- package/build/services/NavigationHandlers.d.ts +90 -0
- package/build/services/NavigationHandlers.d.ts.map +1 -0
- package/build/services/NavigationHandlers.js +379 -0
- package/build/services/NavigationHandlers.js.map +1 -0
- package/build/services/NavigationService.d.ts +254 -0
- package/build/services/NavigationService.d.ts.map +1 -0
- package/build/services/NavigationService.js +553 -0
- package/build/services/NavigationService.js.map +1 -0
- package/build/services/NotificationsEmitter.d.ts +28 -0
- package/build/services/NotificationsEmitter.d.ts.map +1 -0
- package/build/services/NotificationsEmitter.js +22 -0
- package/build/services/NotificationsEmitter.js.map +1 -0
- package/build/services/OfflineSpeechModelService.d.ts +33 -0
- package/build/services/OfflineSpeechModelService.d.ts.map +1 -0
- package/build/services/OfflineSpeechModelService.js +136 -0
- package/build/services/OfflineSpeechModelService.js.map +1 -0
- package/build/services/OtaInstallCoordinator.d.ts +195 -0
- package/build/services/OtaInstallCoordinator.d.ts.map +1 -0
- package/build/services/OtaInstallCoordinator.js +1047 -0
- package/build/services/OtaInstallCoordinator.js.map +1 -0
- package/build/services/OtaService.d.ts +3 -0
- package/build/services/OtaService.d.ts.map +1 -0
- package/build/services/OtaService.js +65 -0
- package/build/services/OtaService.js.map +1 -0
- package/build/services/OtaUpdateCheckService.d.ts +65 -0
- package/build/services/OtaUpdateCheckService.d.ts.map +1 -0
- package/build/services/OtaUpdateCheckService.js +260 -0
- package/build/services/OtaUpdateCheckService.js.map +1 -0
- package/build/services/PairingIdentity.d.ts +80 -0
- package/build/services/PairingIdentity.d.ts.map +1 -0
- package/build/services/PairingIdentity.js +145 -0
- package/build/services/PairingIdentity.js.map +1 -0
- package/build/services/PhoneCalendarHelpers.d.ts +32 -0
- package/build/services/PhoneCalendarHelpers.d.ts.map +1 -0
- package/build/services/PhoneCalendarHelpers.js +157 -0
- package/build/services/PhoneCalendarHelpers.js.map +1 -0
- package/build/services/PhoneCalendarService.d.ts +5 -0
- package/build/services/PhoneCalendarService.d.ts.map +1 -0
- package/build/services/PhoneCalendarService.js +24 -0
- package/build/services/PhoneCalendarService.js.map +1 -0
- package/build/services/PhoneCameraFovCoordinator.d.ts +28 -0
- package/build/services/PhoneCameraFovCoordinator.d.ts.map +1 -0
- package/build/services/PhoneCameraFovCoordinator.js +180 -0
- package/build/services/PhoneCameraFovCoordinator.js.map +1 -0
- package/build/services/PhoneLocationService.d.ts +36 -0
- package/build/services/PhoneLocationService.d.ts.map +1 -0
- package/build/services/PhoneLocationService.js +115 -0
- package/build/services/PhoneLocationService.js.map +1 -0
- package/build/services/PhoneNotificationsSync.d.ts +3 -0
- package/build/services/PhoneNotificationsSync.d.ts.map +1 -0
- package/build/services/PhoneNotificationsSync.js +35 -0
- package/build/services/PhoneNotificationsSync.js.map +1 -0
- package/build/services/PhonePhotoCoordinator.d.ts +103 -0
- package/build/services/PhonePhotoCoordinator.d.ts.map +1 -0
- package/build/services/PhonePhotoCoordinator.js +326 -0
- package/build/services/PhonePhotoCoordinator.js.map +1 -0
- package/build/services/PhoneStreamCoordinator.d.ts +168 -0
- package/build/services/PhoneStreamCoordinator.d.ts.map +1 -0
- package/build/services/PhoneStreamCoordinator.js +632 -0
- package/build/services/PhoneStreamCoordinator.js.map +1 -0
- package/build/services/PhoneVideoCoordinator.d.ts +50 -0
- package/build/services/PhoneVideoCoordinator.d.ts.map +1 -0
- package/build/services/PhoneVideoCoordinator.js +147 -0
- package/build/services/PhoneVideoCoordinator.js.map +1 -0
- package/build/services/STTModelManager.d.ts +65 -0
- package/build/services/STTModelManager.d.ts.map +1 -0
- package/build/services/STTModelManager.js +292 -0
- package/build/services/STTModelManager.js.map +1 -0
- package/build/services/SceneRenderer.d.ts +90 -0
- package/build/services/SceneRenderer.d.ts.map +1 -0
- package/build/services/SceneRenderer.js +248 -0
- package/build/services/SceneRenderer.js.map +1 -0
- package/build/services/SentenceTtsPipeline.d.ts +31 -0
- package/build/services/SentenceTtsPipeline.d.ts.map +1 -0
- package/build/services/SentenceTtsPipeline.js +67 -0
- package/build/services/SentenceTtsPipeline.js.map +1 -0
- package/build/services/StreamLifecycleController.d.ts +67 -0
- package/build/services/StreamLifecycleController.d.ts.map +1 -0
- package/build/services/StreamLifecycleController.js +152 -0
- package/build/services/StreamLifecycleController.js.map +1 -0
- package/build/services/TTSModelManager.d.ts +90 -0
- package/build/services/TTSModelManager.d.ts.map +1 -0
- package/build/services/TTSModelManager.js +366 -0
- package/build/services/TTSModelManager.js.map +1 -0
- package/build/services/TranscriptionRouting.d.ts +12 -0
- package/build/services/TranscriptionRouting.d.ts.map +1 -0
- package/build/services/TranscriptionRouting.js +24 -0
- package/build/services/TranscriptionRouting.js.map +1 -0
- package/build/services/WebviewBridge.d.ts +22 -0
- package/build/services/WebviewBridge.d.ts.map +1 -0
- package/build/services/WebviewBridge.js +47 -0
- package/build/services/WebviewBridge.js.map +1 -0
- package/build/services/asg/GalleryMediaIntegrityReportService.d.ts +17 -0
- package/build/services/asg/GalleryMediaIntegrityReportService.d.ts.map +1 -0
- package/build/services/asg/GalleryMediaIntegrityReportService.js +43 -0
- package/build/services/asg/GalleryMediaIntegrityReportService.js.map +1 -0
- package/build/services/asg/asgCameraApi.d.ts +205 -0
- package/build/services/asg/asgCameraApi.d.ts.map +1 -0
- package/build/services/asg/asgCameraApi.js +1410 -0
- package/build/services/asg/asgCameraApi.js.map +1 -0
- package/build/services/asg/cameraRollExportCoordinator.d.ts +60 -0
- package/build/services/asg/cameraRollExportCoordinator.d.ts.map +1 -0
- package/build/services/asg/cameraRollExportCoordinator.js +618 -0
- package/build/services/asg/cameraRollExportCoordinator.js.map +1 -0
- package/build/services/asg/cameraRollExportLedger.d.ts +44 -0
- package/build/services/asg/cameraRollExportLedger.d.ts.map +1 -0
- package/build/services/asg/cameraRollExportLedger.js +78 -0
- package/build/services/asg/cameraRollExportLedger.js.map +1 -0
- package/build/services/asg/galleryMediaValidation.d.ts +29 -0
- package/build/services/asg/galleryMediaValidation.d.ts.map +1 -0
- package/build/services/asg/galleryMediaValidation.js +149 -0
- package/build/services/asg/galleryMediaValidation.js.map +1 -0
- package/build/services/asg/galleryNotices.d.ts +33 -0
- package/build/services/asg/galleryNotices.d.ts.map +1 -0
- package/build/services/asg/galleryNotices.js +29 -0
- package/build/services/asg/galleryNotices.js.map +1 -0
- package/build/services/asg/galleryPathMigration.d.ts +3 -0
- package/build/services/asg/galleryPathMigration.d.ts.map +1 -0
- package/build/services/asg/galleryPathMigration.js +26 -0
- package/build/services/asg/galleryPathMigration.js.map +1 -0
- package/build/services/asg/gallerySettingsService.d.ts +20 -0
- package/build/services/asg/gallerySettingsService.d.ts.map +1 -0
- package/build/services/asg/gallerySettingsService.js +53 -0
- package/build/services/asg/gallerySettingsService.js.map +1 -0
- package/build/services/asg/gallerySyncNotifications.d.ts +56 -0
- package/build/services/asg/gallerySyncNotifications.d.ts.map +1 -0
- package/build/services/asg/gallerySyncNotifications.js +198 -0
- package/build/services/asg/gallerySyncNotifications.js.map +1 -0
- package/build/services/asg/gallerySyncService.d.ts +137 -0
- package/build/services/asg/gallerySyncService.d.ts.map +1 -0
- package/build/services/asg/gallerySyncService.js +1933 -0
- package/build/services/asg/gallerySyncService.js.map +1 -0
- package/build/services/asg/galleryTransferLedger.d.ts +58 -0
- package/build/services/asg/galleryTransferLedger.d.ts.map +1 -0
- package/build/services/asg/galleryTransferLedger.js +225 -0
- package/build/services/asg/galleryTransferLedger.js.map +1 -0
- package/build/services/asg/localNetworkTransport.d.ts +15 -0
- package/build/services/asg/localNetworkTransport.d.ts.map +1 -0
- package/build/services/asg/localNetworkTransport.js +144 -0
- package/build/services/asg/localNetworkTransport.js.map +1 -0
- package/build/services/asg/localStorageService.d.ts +146 -0
- package/build/services/asg/localStorageService.d.ts.map +1 -0
- package/build/services/asg/localStorageService.js +572 -0
- package/build/services/asg/localStorageService.js.map +1 -0
- package/build/services/asg/mediaProcessingQueue.d.ts +70 -0
- package/build/services/asg/mediaProcessingQueue.d.ts.map +1 -0
- package/build/services/asg/mediaProcessingQueue.js +451 -0
- package/build/services/asg/mediaProcessingQueue.js.map +1 -0
- package/build/services/asgOtaVersionUrl.d.ts +2 -0
- package/build/services/asgOtaVersionUrl.d.ts.map +1 -0
- package/build/services/asgOtaVersionUrl.js +36 -0
- package/build/services/asgOtaVersionUrl.js.map +1 -0
- package/build/services/blobPaths.d.ts +31 -0
- package/build/services/blobPaths.d.ts.map +1 -0
- package/build/services/blobPaths.js +86 -0
- package/build/services/blobPaths.js.map +1 -0
- package/build/services/cloudStreamApi.d.ts +59 -0
- package/build/services/cloudStreamApi.d.ts.map +1 -0
- package/build/services/cloudStreamApi.js +81 -0
- package/build/services/cloudStreamApi.js.map +1 -0
- package/build/services/gallerySyncClock.d.ts +17 -0
- package/build/services/gallerySyncClock.d.ts.map +1 -0
- package/build/services/gallerySyncClock.js +21 -0
- package/build/services/gallerySyncClock.js.map +1 -0
- package/build/services/glassesClockSync.d.ts +20 -0
- package/build/services/glassesClockSync.d.ts.map +1 -0
- package/build/services/glassesClockSync.js +97 -0
- package/build/services/glassesClockSync.js.map +1 -0
- package/build/services/manifestVersionGate.d.ts +28 -0
- package/build/services/manifestVersionGate.d.ts.map +1 -0
- package/build/services/manifestVersionGate.js +41 -0
- package/build/services/manifestVersionGate.js.map +1 -0
- package/build/services/mentraUiShim.d.ts +38 -0
- package/build/services/mentraUiShim.d.ts.map +1 -0
- package/build/services/mentraUiShim.js +360 -0
- package/build/services/mentraUiShim.js.map +1 -0
- package/build/services/navigation/roadNameResolver.d.ts +67 -0
- package/build/services/navigation/roadNameResolver.d.ts.map +1 -0
- package/build/services/navigation/roadNameResolver.js +96 -0
- package/build/services/navigation/roadNameResolver.js.map +1 -0
- package/build/services/navigation/routesApiCodec.d.ts +38 -0
- package/build/services/navigation/routesApiCodec.d.ts.map +1 -0
- package/build/services/navigation/routesApiCodec.js +68 -0
- package/build/services/navigation/routesApiCodec.js.map +1 -0
- package/build/services/otaDisplayState.d.ts +42 -0
- package/build/services/otaDisplayState.d.ts.map +1 -0
- package/build/services/otaDisplayState.js +92 -0
- package/build/services/otaDisplayState.js.map +1 -0
- package/build/services/otaInstallPolicy.d.ts +81 -0
- package/build/services/otaInstallPolicy.d.ts.map +1 -0
- package/build/services/otaInstallPolicy.js +96 -0
- package/build/services/otaInstallPolicy.js.map +1 -0
- package/build/services/otaLegacyMapping.d.ts +22 -0
- package/build/services/otaLegacyMapping.d.ts.map +1 -0
- package/build/services/otaLegacyMapping.js +56 -0
- package/build/services/otaLegacyMapping.js.map +1 -0
- package/build/services/slimStreamStatus.d.ts +7 -0
- package/build/services/slimStreamStatus.d.ts.map +1 -0
- package/build/services/slimStreamStatus.js +26 -0
- package/build/services/slimStreamStatus.js.map +1 -0
- package/build/stores/apps.d.ts +104 -0
- package/build/stores/apps.d.ts.map +1 -0
- package/build/stores/apps.js +492 -0
- package/build/stores/apps.js.map +1 -0
- package/build/stores/bluetoothSettingKeys.d.ts +4 -0
- package/build/stores/bluetoothSettingKeys.d.ts.map +1 -0
- package/build/stores/bluetoothSettingKeys.js +31 -0
- package/build/stores/bluetoothSettingKeys.js.map +1 -0
- package/build/stores/cloudClientStatus.d.ts +9 -0
- package/build/stores/cloudClientStatus.d.ts.map +1 -0
- package/build/stores/cloudClientStatus.js +24 -0
- package/build/stores/cloudClientStatus.js.map +1 -0
- package/build/stores/connection.d.ts +22 -0
- package/build/stores/connection.d.ts.map +1 -0
- package/build/stores/connection.js +43 -0
- package/build/stores/connection.js.map +1 -0
- package/build/stores/core.d.ts +15 -0
- package/build/stores/core.d.ts.map +1 -0
- package/build/stores/core.js +21 -0
- package/build/stores/core.js.map +1 -0
- package/build/stores/display.d.ts +24 -0
- package/build/stores/display.d.ts.map +1 -0
- package/build/stores/display.js +96 -0
- package/build/stores/display.js.map +1 -0
- package/build/stores/gallerySync.d.ts +101 -0
- package/build/stores/gallerySync.d.ts.map +1 -0
- package/build/stores/gallerySync.js +217 -0
- package/build/stores/gallerySync.js.map +1 -0
- package/build/stores/glasses.d.ts +62 -0
- package/build/stores/glasses.d.ts.map +1 -0
- package/build/stores/glasses.js +203 -0
- package/build/stores/glasses.js.map +1 -0
- package/build/stores/settings.d.ts +37 -0
- package/build/stores/settings.d.ts.map +1 -0
- package/build/stores/settings.js +922 -0
- package/build/stores/settings.js.map +1 -0
- package/build/types/applet.d.ts +96 -0
- package/build/types/applet.d.ts.map +1 -0
- package/build/types/applet.js +5 -0
- package/build/types/applet.js.map +1 -0
- package/build/types/asg.d.ts +53 -0
- package/build/types/asg.d.ts.map +1 -0
- package/build/types/asg.js +2 -0
- package/build/types/asg.js.map +1 -0
- package/build/types/capabilities/even-realities-g1.d.ts +12 -0
- package/build/types/capabilities/even-realities-g1.d.ts.map +1 -0
- package/build/types/capabilities/even-realities-g1.js +55 -0
- package/build/types/capabilities/even-realities-g1.js.map +1 -0
- package/build/types/capabilities/even-realities-g2.d.ts +12 -0
- package/build/types/capabilities/even-realities-g2.d.ts.map +1 -0
- package/build/types/capabilities/even-realities-g2.js +75 -0
- package/build/types/capabilities/even-realities-g2.js.map +1 -0
- package/build/types/capabilities/mentra-display.d.ts +12 -0
- package/build/types/capabilities/mentra-display.d.ts.map +1 -0
- package/build/types/capabilities/mentra-display.js +63 -0
- package/build/types/capabilities/mentra-display.js.map +1 -0
- package/build/types/capabilities/mentra-live.d.ts +12 -0
- package/build/types/capabilities/mentra-live.d.ts.map +1 -0
- package/build/types/capabilities/mentra-live.js +92 -0
- package/build/types/capabilities/mentra-live.js.map +1 -0
- package/build/types/capabilities/none.d.ts +13 -0
- package/build/types/capabilities/none.d.ts.map +1 -0
- package/build/types/capabilities/none.js +65 -0
- package/build/types/capabilities/none.js.map +1 -0
- package/build/types/capabilities/simulated-glasses.d.ts +13 -0
- package/build/types/capabilities/simulated-glasses.d.ts.map +1 -0
- package/build/types/capabilities/simulated-glasses.js +65 -0
- package/build/types/capabilities/simulated-glasses.js.map +1 -0
- package/build/types/capabilities/vuzix-z100.d.ts +12 -0
- package/build/types/capabilities/vuzix-z100.d.ts.map +1 -0
- package/build/types/capabilities/vuzix-z100.js +52 -0
- package/build/types/capabilities/vuzix-z100.js.map +1 -0
- package/build/types/enums.d.ts +40 -0
- package/build/types/enums.d.ts.map +1 -0
- package/build/types/enums.js +44 -0
- package/build/types/enums.js.map +1 -0
- package/build/types/hardware.d.ts +160 -0
- package/build/types/hardware.d.ts.map +1 -0
- package/build/types/hardware.js +36 -0
- package/build/types/hardware.js.map +1 -0
- package/build/types/index.d.ts +11 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/index.js +10 -0
- package/build/types/index.js.map +1 -0
- package/build/utils/GlobalEventEmitter.d.ts +10 -0
- package/build/utils/GlobalEventEmitter.d.ts.map +1 -0
- package/build/utils/GlobalEventEmitter.js +13 -0
- package/build/utils/GlobalEventEmitter.js.map +1 -0
- package/build/utils/cloudClient/RnUdpAdapter.d.ts +3 -0
- package/build/utils/cloudClient/RnUdpAdapter.d.ts.map +1 -0
- package/build/utils/cloudClient/RnUdpAdapter.js +41 -0
- package/build/utils/cloudClient/RnUdpAdapter.js.map +1 -0
- package/build/utils/cloudClient/cloudSecureStore.d.ts +3 -0
- package/build/utils/cloudClient/cloudSecureStore.d.ts.map +1 -0
- package/build/utils/cloudClient/cloudSecureStore.js +26 -0
- package/build/utils/cloudClient/cloudSecureStore.js.map +1 -0
- package/build/utils/debouncedPatch.d.ts +6 -0
- package/build/utils/debouncedPatch.d.ts.map +1 -0
- package/build/utils/debouncedPatch.js +25 -0
- package/build/utils/debouncedPatch.js.map +1 -0
- package/build/utils/devLogging.d.ts +26 -0
- package/build/utils/devLogging.d.ts.map +1 -0
- package/build/utils/devLogging.js +116 -0
- package/build/utils/devLogging.js.map +1 -0
- package/build/utils/devMiniappLaunch.d.ts +44 -0
- package/build/utils/devMiniappLaunch.d.ts.map +1 -0
- package/build/utils/devMiniappLaunch.js +52 -0
- package/build/utils/devMiniappLaunch.js.map +1 -0
- package/build/utils/diagnosticContext.d.ts +3 -0
- package/build/utils/diagnosticContext.d.ts.map +1 -0
- package/build/utils/diagnosticContext.js +119 -0
- package/build/utils/diagnosticContext.js.map +1 -0
- package/build/utils/display/composer/ColumnComposer.d.ts +131 -0
- package/build/utils/display/composer/ColumnComposer.d.ts.map +1 -0
- package/build/utils/display/composer/ColumnComposer.js +204 -0
- package/build/utils/display/composer/ColumnComposer.js.map +1 -0
- package/build/utils/display/composer/index.d.ts +9 -0
- package/build/utils/display/composer/index.d.ts.map +1 -0
- package/build/utils/display/composer/index.js +9 -0
- package/build/utils/display/composer/index.js.map +1 -0
- package/build/utils/display/helpers/DisplayHelpers.d.ts +165 -0
- package/build/utils/display/helpers/DisplayHelpers.d.ts.map +1 -0
- package/build/utils/display/helpers/DisplayHelpers.js +312 -0
- package/build/utils/display/helpers/DisplayHelpers.js.map +1 -0
- package/build/utils/display/helpers/ScrollView.d.ts +183 -0
- package/build/utils/display/helpers/ScrollView.d.ts.map +1 -0
- package/build/utils/display/helpers/ScrollView.js +257 -0
- package/build/utils/display/helpers/ScrollView.js.map +1 -0
- package/build/utils/display/helpers/index.d.ts +11 -0
- package/build/utils/display/helpers/index.d.ts.map +1 -0
- package/build/utils/display/helpers/index.js +10 -0
- package/build/utils/display/helpers/index.js.map +1 -0
- package/build/utils/display/index.d.ts +174 -0
- package/build/utils/display/index.d.ts.map +1 -0
- package/build/utils/display/index.js +185 -0
- package/build/utils/display/index.js.map +1 -0
- package/build/utils/display/measurer/TextMeasurer.d.ts +160 -0
- package/build/utils/display/measurer/TextMeasurer.d.ts.map +1 -0
- package/build/utils/display/measurer/TextMeasurer.js +273 -0
- package/build/utils/display/measurer/TextMeasurer.js.map +1 -0
- package/build/utils/display/measurer/index.d.ts +10 -0
- package/build/utils/display/measurer/index.d.ts.map +1 -0
- package/build/utils/display/measurer/index.js +11 -0
- package/build/utils/display/measurer/index.js.map +1 -0
- package/build/utils/display/measurer/script-detection.d.ts +53 -0
- package/build/utils/display/measurer/script-detection.d.ts.map +1 -0
- package/build/utils/display/measurer/script-detection.js +184 -0
- package/build/utils/display/measurer/script-detection.js.map +1 -0
- package/build/utils/display/profiles/g1.d.ts +33 -0
- package/build/utils/display/profiles/g1.d.ts.map +1 -0
- package/build/utils/display/profiles/g1.js +213 -0
- package/build/utils/display/profiles/g1.js.map +1 -0
- package/build/utils/display/profiles/g2.d.ts +13 -0
- package/build/utils/display/profiles/g2.d.ts.map +1 -0
- package/build/utils/display/profiles/g2.js +34 -0
- package/build/utils/display/profiles/g2.js.map +1 -0
- package/build/utils/display/profiles/index.d.ts +12 -0
- package/build/utils/display/profiles/index.d.ts.map +1 -0
- package/build/utils/display/profiles/index.js +15 -0
- package/build/utils/display/profiles/index.js.map +1 -0
- package/build/utils/display/profiles/nex.d.ts +10 -0
- package/build/utils/display/profiles/nex.d.ts.map +1 -0
- package/build/utils/display/profiles/nex.js +150 -0
- package/build/utils/display/profiles/nex.js.map +1 -0
- package/build/utils/display/profiles/types.d.ts +103 -0
- package/build/utils/display/profiles/types.d.ts.map +1 -0
- package/build/utils/display/profiles/types.js +2 -0
- package/build/utils/display/profiles/types.js.map +1 -0
- package/build/utils/display/profiles/z100.d.ts +33 -0
- package/build/utils/display/profiles/z100.d.ts.map +1 -0
- package/build/utils/display/profiles/z100.js +182 -0
- package/build/utils/display/profiles/z100.js.map +1 -0
- package/build/utils/display/scene/degrade.d.ts +25 -0
- package/build/utils/display/scene/degrade.d.ts.map +1 -0
- package/build/utils/display/scene/degrade.js +64 -0
- package/build/utils/display/scene/degrade.js.map +1 -0
- package/build/utils/display/scene/differ.d.ts +38 -0
- package/build/utils/display/scene/differ.d.ts.map +1 -0
- package/build/utils/display/scene/differ.js +107 -0
- package/build/utils/display/scene/differ.js.map +1 -0
- package/build/utils/display/scene/index.d.ts +10 -0
- package/build/utils/display/scene/index.d.ts.map +1 -0
- package/build/utils/display/scene/index.js +6 -0
- package/build/utils/display/scene/index.js.map +1 -0
- package/build/utils/display/scene/process.d.ts +35 -0
- package/build/utils/display/scene/process.d.ts.map +1 -0
- package/build/utils/display/scene/process.js +187 -0
- package/build/utils/display/scene/process.js.map +1 -0
- package/build/utils/display/scene/store.d.ts +48 -0
- package/build/utils/display/scene/store.d.ts.map +1 -0
- package/build/utils/display/scene/store.js +0 -0
- package/build/utils/display/scene/store.js.map +1 -0
- package/build/utils/display/scene/types.d.ts +120 -0
- package/build/utils/display/scene/types.d.ts.map +1 -0
- package/build/utils/display/scene/types.js +0 -0
- package/build/utils/display/scene/types.js.map +1 -0
- package/build/utils/display/wrapper/TextWrapper.d.ts +102 -0
- package/build/utils/display/wrapper/TextWrapper.d.ts.map +1 -0
- package/build/utils/display/wrapper/TextWrapper.js +471 -0
- package/build/utils/display/wrapper/TextWrapper.js.map +1 -0
- package/build/utils/display/wrapper/index.d.ts +12 -0
- package/build/utils/display/wrapper/index.d.ts.map +1 -0
- package/build/utils/display/wrapper/index.js +12 -0
- package/build/utils/display/wrapper/index.js.map +1 -0
- package/build/utils/display/wrapper/types.d.ts +75 -0
- package/build/utils/display/wrapper/types.d.ts.map +1 -0
- package/build/utils/display/wrapper/types.js +11 -0
- package/build/utils/display/wrapper/types.js.map +1 -0
- package/build/utils/e2eMetrics.d.ts +6 -0
- package/build/utils/e2eMetrics.d.ts.map +1 -0
- package/build/utils/e2eMetrics.js +27 -0
- package/build/utils/e2eMetrics.js.map +1 -0
- package/build/utils/hardware/hardware.d.ts +42 -0
- package/build/utils/hardware/hardware.d.ts.map +1 -0
- package/build/utils/hardware/hardware.js +127 -0
- package/build/utils/hardware/hardware.js.map +1 -0
- package/build/utils/hardware/index.d.ts +2 -0
- package/build/utils/hardware/index.d.ts.map +1 -0
- package/build/utils/hardware/index.js +2 -0
- package/build/utils/hardware/index.js.map +1 -0
- package/build/utils/miniappGlobals.d.ts +60 -0
- package/build/utils/miniappGlobals.d.ts.map +1 -0
- package/build/utils/miniappGlobals.js +224 -0
- package/build/utils/miniappGlobals.js.map +1 -0
- package/build/utils/permissions/MediaLibraryPermissions.d.ts +45 -0
- package/build/utils/permissions/MediaLibraryPermissions.d.ts.map +1 -0
- package/build/utils/permissions/MediaLibraryPermissions.js +145 -0
- package/build/utils/permissions/MediaLibraryPermissions.js.map +1 -0
- package/build/utils/permissions/galleryDisplayName.d.ts +8 -0
- package/build/utils/permissions/galleryDisplayName.d.ts.map +1 -0
- package/build/utils/permissions/galleryDisplayName.js +25 -0
- package/build/utils/permissions/galleryDisplayName.js.map +1 -0
- package/build/utils/storage/index.d.ts +3 -0
- package/build/utils/storage/index.d.ts.map +1 -0
- package/build/utils/storage/index.js +3 -0
- package/build/utils/storage/index.js.map +1 -0
- package/build/utils/storage/storage.d.ts +24 -0
- package/build/utils/storage/storage.d.ts.map +1 -0
- package/build/utils/storage/storage.js +85 -0
- package/build/utils/storage/storage.js.map +1 -0
- package/build/utils/storage/zip.d.ts +3 -0
- package/build/utils/storage/zip.d.ts.map +1 -0
- package/build/utils/storage/zip.js +14 -0
- package/build/utils/storage/zip.js.map +1 -0
- package/build/utils/timers/index.d.ts +3 -0
- package/build/utils/timers/index.d.ts.map +1 -0
- package/build/utils/timers/index.js +3 -0
- package/build/utils/timers/index.js.map +1 -0
- package/build/utils/timers/timers.d.ts +9 -0
- package/build/utils/timers/timers.d.ts.map +1 -0
- package/build/utils/timers/timers.js +105 -0
- package/build/utils/timers/timers.js.map +1 -0
- package/package.json +120 -0
- package/src/devtools.ts +13 -0
- package/src/engine.ts +173 -0
- package/src/facades/dev.ts +198 -0
- package/src/facades/display.ts +17 -0
- package/src/facades/displayMirror.ts +33 -0
- package/src/facades/gallery.ts +69 -0
- package/src/facades/glasses.ts +206 -0
- package/src/facades/glassesSettings.ts +56 -0
- package/src/facades/glassesWifi.ts +68 -0
- package/src/facades/miniapps.ts +55 -0
- package/src/facades/notifications.ts +15 -0
- package/src/facades/ota.ts +174 -0
- package/src/facades/pairing.ts +329 -0
- package/src/facades/permissions.ts +165 -0
- package/src/facades/phoneNotifications.ts +50 -0
- package/src/facades/reports.ts +185 -0
- package/src/facades/session.ts +55 -0
- package/src/facades/settings.ts +57 -0
- package/src/facades/speech.ts +38 -0
- package/src/index.ts +191 -0
- package/src/internal.ts +159 -0
- package/src/runtime/bootstrap.ts +118 -0
- package/src/runtime/config.ts +147 -0
- package/src/runtime/streamConfig.ts +34 -0
- package/src/services/AppRegistry.ts +1190 -0
- package/src/services/AudioCloudUplink.ts +50 -0
- package/src/services/AudioPlaybackService.ts +813 -0
- package/src/services/AutomaticReportResult.ts +48 -0
- package/src/services/BlobStore.ts +746 -0
- package/src/services/CaptionsTesterReportService.ts +107 -0
- package/src/services/CloudAudioSubscriptionSync.ts +41 -0
- package/src/services/CloudClientService.ts +689 -0
- package/src/services/CloudTranscriptE2EMetrics.ts +27 -0
- package/src/services/ConnectionCoordinator.ts +65 -0
- package/src/services/DevServerBridge.ts +332 -0
- package/src/services/DeviceEventRouter.ts +238 -0
- package/src/services/DeviceStoreHydration.ts +130 -0
- package/src/services/DisplayProcessor.ts +775 -0
- package/src/services/GlassesReadiness.ts +103 -0
- package/src/services/GlassesSettingsSync.ts +134 -0
- package/src/services/GlassesStatusProjection.ts +73 -0
- package/src/services/HeadingService.ts +98 -0
- package/src/services/LocalDisplayManager.ts +703 -0
- package/src/services/LocalMiniappRuntime.ts +4213 -0
- package/src/services/LocalSttFallbackCoordinator.ts +147 -0
- package/src/services/MentraJSCrashController.ts +189 -0
- package/src/services/MentraJSCrashloopReportService.ts +66 -0
- package/src/services/MentraJSLogPipeline.ts +166 -0
- package/src/services/MentraJSRouter.ts +557 -0
- package/src/services/MentraUIRouter.ts +244 -0
- package/src/services/MicStateCoordinator.ts +94 -0
- package/src/services/MiniappEngine.ts +143 -0
- package/src/services/MiniappLauncher.ts +340 -0
- package/src/services/MiniappRunningRegistry.ts +57 -0
- package/src/services/NativeHttpResponse.ts +6 -0
- package/src/services/NavigationHandlers.ts +423 -0
- package/src/services/NavigationService.ts +731 -0
- package/src/services/NotificationsEmitter.ts +48 -0
- package/src/services/OfflineSpeechModelService.ts +168 -0
- package/src/services/OtaInstallCoordinator.ts +1205 -0
- package/src/services/OtaService.ts +83 -0
- package/src/services/OtaUpdateCheckService.ts +386 -0
- package/src/services/PairingIdentity.ts +154 -0
- package/src/services/PhoneCalendarHelpers.ts +212 -0
- package/src/services/PhoneCalendarService.ts +42 -0
- package/src/services/PhoneCameraFovCoordinator.ts +195 -0
- package/src/services/PhoneLocationService.ts +122 -0
- package/src/services/PhoneNotificationsSync.ts +44 -0
- package/src/services/PhonePhotoCoordinator.ts +409 -0
- package/src/services/PhoneStreamCoordinator.ts +777 -0
- package/src/services/PhoneVideoCoordinator.ts +189 -0
- package/src/services/STTModelManager.ts +360 -0
- package/src/services/SceneRenderer.ts +292 -0
- package/src/services/SentenceTtsPipeline.ts +106 -0
- package/src/services/StreamLifecycleController.ts +213 -0
- package/src/services/TTSModelManager.ts +466 -0
- package/src/services/TranscriptionRouting.ts +37 -0
- package/src/services/WebviewBridge.ts +50 -0
- package/src/services/asg/GalleryMediaIntegrityReportService.ts +70 -0
- package/src/services/asg/asgCameraApi.ts +1695 -0
- package/src/services/asg/cameraRollExportCoordinator.ts +627 -0
- package/src/services/asg/cameraRollExportLedger.ts +122 -0
- package/src/services/asg/galleryMediaValidation.ts +183 -0
- package/src/services/asg/galleryNotices.ts +61 -0
- package/src/services/asg/galleryPathMigration.ts +22 -0
- package/src/services/asg/gallerySettingsService.ts +68 -0
- package/src/services/asg/gallerySyncNotifications.ts +236 -0
- package/src/services/asg/gallerySyncService.ts +2269 -0
- package/src/services/asg/galleryTransferLedger.ts +312 -0
- package/src/services/asg/localNetworkTransport.ts +173 -0
- package/src/services/asg/localStorageService.ts +652 -0
- package/src/services/asg/mediaProcessingQueue.ts +518 -0
- package/src/services/asgOtaVersionUrl.ts +41 -0
- package/src/services/blobPaths.ts +86 -0
- package/src/services/cloudStreamApi.ts +154 -0
- package/src/services/gallerySyncClock.ts +39 -0
- package/src/services/glassesClockSync.ts +115 -0
- package/src/services/manifestVersionGate.ts +43 -0
- package/src/services/mentraUiShim.ts +366 -0
- package/src/services/navigation/roadNameResolver.ts +112 -0
- package/src/services/navigation/routesApiCodec.ts +69 -0
- package/src/services/otaDisplayState.ts +115 -0
- package/src/services/otaInstallPolicy.ts +106 -0
- package/src/services/otaLegacyMapping.ts +71 -0
- package/src/services/slimStreamStatus.ts +28 -0
- package/src/stores/apps.ts +614 -0
- package/src/stores/bluetoothSettingKeys.ts +36 -0
- package/src/stores/cloudClientStatus.ts +37 -0
- package/src/stores/connection.ts +69 -0
- package/src/stores/core.ts +32 -0
- package/src/stores/display.ts +121 -0
- package/src/stores/gallerySync.ts +380 -0
- package/src/stores/glasses.ts +309 -0
- package/src/stores/settings.ts +1001 -0
- package/src/types/applet.ts +112 -0
- package/src/types/asg.ts +58 -0
- package/src/types/capabilities/even-realities-g1.ts +67 -0
- package/src/types/capabilities/even-realities-g2.ts +88 -0
- package/src/types/capabilities/mentra-display.ts +75 -0
- package/src/types/capabilities/mentra-live.ts +103 -0
- package/src/types/capabilities/none.ts +76 -0
- package/src/types/capabilities/simulated-glasses.ts +76 -0
- package/src/types/capabilities/vuzix-z100.ts +64 -0
- package/src/types/enums.ts +43 -0
- package/src/types/hardware.ts +203 -0
- package/src/types/index.ts +37 -0
- package/src/utils/GlobalEventEmitter.ts +14 -0
- package/src/utils/cloudClient/RnUdpAdapter.ts +47 -0
- package/src/utils/cloudClient/cloudSecureStore.ts +28 -0
- package/src/utils/debouncedPatch.ts +28 -0
- package/src/utils/devLogging.ts +140 -0
- package/src/utils/devMiniappLaunch.ts +68 -0
- package/src/utils/diagnosticContext.ts +155 -0
- package/src/utils/display/composer/ColumnComposer.ts +285 -0
- package/src/utils/display/composer/index.ts +15 -0
- package/src/utils/display/helpers/DisplayHelpers.ts +413 -0
- package/src/utils/display/helpers/ScrollView.ts +337 -0
- package/src/utils/display/helpers/index.ts +14 -0
- package/src/utils/display/index.ts +273 -0
- package/src/utils/display/measurer/TextMeasurer.ts +346 -0
- package/src/utils/display/measurer/index.ts +21 -0
- package/src/utils/display/measurer/script-detection.ts +218 -0
- package/src/utils/display/profiles/g1.ts +236 -0
- package/src/utils/display/profiles/g2.ts +39 -0
- package/src/utils/display/profiles/index.ts +28 -0
- package/src/utils/display/profiles/nex.ts +166 -0
- package/src/utils/display/profiles/types.ts +132 -0
- package/src/utils/display/profiles/z100.ts +198 -0
- package/src/utils/display/scene/degrade.ts +80 -0
- package/src/utils/display/scene/differ.ts +128 -0
- package/src/utils/display/scene/index.ts +21 -0
- package/src/utils/display/scene/process.ts +214 -0
- package/src/utils/display/scene/store.ts +0 -0
- package/src/utils/display/scene/types.ts +0 -0
- package/src/utils/display/wrapper/TextWrapper.ts +546 -0
- package/src/utils/display/wrapper/index.ts +15 -0
- package/src/utils/display/wrapper/types.ts +102 -0
- package/src/utils/e2eMetrics.ts +30 -0
- package/src/utils/hardware/hardware.ts +166 -0
- package/src/utils/hardware/index.ts +1 -0
- package/src/utils/miniappGlobals.ts +260 -0
- package/src/utils/permissions/MediaLibraryPermissions.ts +161 -0
- package/src/utils/permissions/galleryDisplayName.ts +28 -0
- package/src/utils/storage/index.ts +2 -0
- package/src/utils/storage/storage.ts +101 -0
- package/src/utils/storage/zip.ts +13 -0
- package/src/utils/timers/index.ts +2 -0
- package/src/utils/timers/timers.ts +139 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* glasses facade — the core `engine.glasses.*` surface: connection actions (over
|
|
3
|
+
* the bluetooth-sdk passthrough), a curated status/info read-model (projected from
|
|
4
|
+
* the engine-owned glasses store), capabilities (from the model table), and the
|
|
5
|
+
* discrete input events. The `wifi` sub-facade is nested here.
|
|
6
|
+
*
|
|
7
|
+
* Read-models project the raw glasses store into the stable shape OEM UIs consume,
|
|
8
|
+
* so the device store's field layout doesn't leak into every screen.
|
|
9
|
+
*/
|
|
10
|
+
// Internal btsdk surface — connectSimulated/reconnect/controller live on the full
|
|
11
|
+
// surface, not the public entry. Relative path (the alias doesn't resolve in engine's
|
|
12
|
+
// standalone build); jest moduleNameMapper + tsconfig both resolve it.
|
|
13
|
+
import BluetoothSdk from "@mentra/bluetooth-sdk/internal"
|
|
14
|
+
import type {ButtonPressEvent, TouchEvent} from "@mentra/bluetooth-sdk/internal"
|
|
15
|
+
import {useGlassesStore} from "../stores/glasses"
|
|
16
|
+
import {useSettingsStore, SETTINGS} from "../stores/settings"
|
|
17
|
+
import {hasDefaultDevice} from "../services/DeviceStoreHydration"
|
|
18
|
+
import {projectPairingIdentity} from "../services/PairingIdentity"
|
|
19
|
+
import {isGlassesConnected, isGlassesReady} from "../services/GlassesReadiness"
|
|
20
|
+
import {pushAllBluetoothSettings} from "../services/GlassesSettingsSync"
|
|
21
|
+
import {getModelCapabilities, type DeviceTypes} from "../types"
|
|
22
|
+
import {glassesWifi} from "./glassesWifi"
|
|
23
|
+
import {glassesSettings} from "./glassesSettings"
|
|
24
|
+
|
|
25
|
+
function projectStatus() {
|
|
26
|
+
const s = useGlassesStore.getState()
|
|
27
|
+
return {
|
|
28
|
+
state: s.connection.state,
|
|
29
|
+
fullyBooted: isGlassesReady(s.connection),
|
|
30
|
+
battery: s.batteryLevel,
|
|
31
|
+
charging: s.charging,
|
|
32
|
+
case: {battery: s.caseBatteryLevel, charging: s.caseCharging, open: s.caseOpen, removed: s.caseRemoved},
|
|
33
|
+
signal: s.signalStrength,
|
|
34
|
+
micEnabled: s.micEnabled,
|
|
35
|
+
vadEnabled: s.voiceActivityDetectionEnabled,
|
|
36
|
+
btClassic: s.bluetoothClassicConnected,
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function projectControllerStatus() {
|
|
41
|
+
const s = useGlassesStore.getState()
|
|
42
|
+
return {
|
|
43
|
+
connected: s.controllerConnected,
|
|
44
|
+
fullyBooted: s.controllerFullyBooted,
|
|
45
|
+
battery: s.controllerBatteryLevel,
|
|
46
|
+
signal: s.controllerSignalStrength,
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function projectInfo() {
|
|
51
|
+
const s = useGlassesStore.getState()
|
|
52
|
+
return {
|
|
53
|
+
model: s.deviceModel,
|
|
54
|
+
style: s.style,
|
|
55
|
+
color: s.color,
|
|
56
|
+
bluetoothName: s.bluetoothName,
|
|
57
|
+
firmwareVersion: s.firmwareVersion,
|
|
58
|
+
mtkFirmware: s.mtkFirmwareVersion,
|
|
59
|
+
besFirmware: s.besFirmwareVersion,
|
|
60
|
+
appVersion: s.appVersion,
|
|
61
|
+
androidVersion: s.androidVersion,
|
|
62
|
+
serialNumber: s.serialNumber,
|
|
63
|
+
buildNumber: s.buildNumber,
|
|
64
|
+
btMac: s.bluetoothMacAddress,
|
|
65
|
+
leftMac: s.leftMacAddress,
|
|
66
|
+
rightMac: s.rightMacAddress,
|
|
67
|
+
// Copy: the snapshot must not hand callers a mutable reference into the store.
|
|
68
|
+
wifi: {...s.wifi},
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export type GlassesStatusSnapshot = ReturnType<typeof projectStatus>
|
|
73
|
+
export type ControllerStatusSnapshot = ReturnType<typeof projectControllerStatus>
|
|
74
|
+
export type GlassesInfoSnapshot = ReturnType<typeof projectInfo>
|
|
75
|
+
|
|
76
|
+
export const glasses = {
|
|
77
|
+
// --- connection (bluetooth-sdk passthrough) ---
|
|
78
|
+
/**
|
|
79
|
+
* Reconnect the default wearable. Seeds the phone's current device settings to
|
|
80
|
+
* native first, so they're primed before the connect handshake replays them to
|
|
81
|
+
* the glasses (this used to be a host-side step before `connectDefault`).
|
|
82
|
+
*/
|
|
83
|
+
connectDefault: async (): Promise<void> => {
|
|
84
|
+
await pushAllBluetoothSettings()
|
|
85
|
+
return BluetoothSdk.connectDefault()
|
|
86
|
+
},
|
|
87
|
+
disconnect: (): Promise<void> => BluetoothSdk.disconnect(),
|
|
88
|
+
forget: (): Promise<void> => BluetoothSdk.forget(),
|
|
89
|
+
/** Connect to a specific (discovered) device. */
|
|
90
|
+
connect: async (...args: Parameters<typeof BluetoothSdk.connect>): Promise<void> => {
|
|
91
|
+
await pushAllBluetoothSettings()
|
|
92
|
+
return BluetoothSdk.connect(...args)
|
|
93
|
+
},
|
|
94
|
+
/** Connect the built-in simulated glasses (dev/testing). */
|
|
95
|
+
connectSimulated: (): Promise<void> => BluetoothSdk.connectSimulated(),
|
|
96
|
+
/** Set a device as the `connectDefault()` target. */
|
|
97
|
+
setDefault: (...args: Parameters<typeof BluetoothSdk.setDefaultDevice>) => BluetoothSdk.setDefaultDevice(...args),
|
|
98
|
+
/**
|
|
99
|
+
* Reconnect to the saved default glasses. Resolves `false` when there's nothing to
|
|
100
|
+
* reconnect to (no default paired) or the connect attempt fails (e.g. BLE powered
|
|
101
|
+
* off), `true` when already connected or after kicking off the connect. Never
|
|
102
|
+
* rejects — the boolean contract holds. The host gates connectivity/permissions
|
|
103
|
+
* (its UI) before calling.
|
|
104
|
+
*/
|
|
105
|
+
reconnect: async (): Promise<boolean> => {
|
|
106
|
+
const defaultWearable = useSettingsStore.getState().getSetting(SETTINGS.default_wearable.key)
|
|
107
|
+
if (!defaultWearable) return false
|
|
108
|
+
if (isGlassesConnected(useGlassesStore.getState().connection)) return true
|
|
109
|
+
try {
|
|
110
|
+
await pushAllBluetoothSettings()
|
|
111
|
+
await BluetoothSdk.connectDefault()
|
|
112
|
+
} catch (error) {
|
|
113
|
+
console.warn("engine.glasses.reconnect failed:", error)
|
|
114
|
+
return false
|
|
115
|
+
}
|
|
116
|
+
return true
|
|
117
|
+
},
|
|
118
|
+
/** True when no glasses has ever been paired NOR selected (the pairing-identity
|
|
119
|
+
* lifecycle is in its `none` state) — e.g. to route a first-run host into the
|
|
120
|
+
* pairing/onboarding flow. A pending selection is not "first" — the host should
|
|
121
|
+
* offer finish-pairing (see `engine.pairing.identity()`). */
|
|
122
|
+
isFirstPairing: (): boolean => projectPairingIdentity().kind === "none",
|
|
123
|
+
/**
|
|
124
|
+
* True when the SDK has an actual default DEVICE to reconnect to. Distinct from
|
|
125
|
+
* `default_wearable` (a model string that a pending or orphaned selection can
|
|
126
|
+
* hold without any paired device): connectDefault() throws without a device, so
|
|
127
|
+
* hosts should route to the pairing flow when this is false.
|
|
128
|
+
*
|
|
129
|
+
* Hydration-aware: awaits the device-store seed internally, so a cold-start
|
|
130
|
+
* read can't see a false "absent" for genuinely-paired users. Rejects if
|
|
131
|
+
* hydration failed — callers guarding destructive or routing decisions must
|
|
132
|
+
* fail open (treat as "has a device").
|
|
133
|
+
*/
|
|
134
|
+
hasDefaultDevice: (): Promise<boolean> => hasDefaultDevice(),
|
|
135
|
+
|
|
136
|
+
// --- read-model (projected from the engine-owned glasses store) ---
|
|
137
|
+
status: (): GlassesStatusSnapshot => projectStatus(),
|
|
138
|
+
onStatus: (cb: (status: GlassesStatusSnapshot) => void): (() => void) => {
|
|
139
|
+
// Dedupe: the glasses store updates on many fields; only fire when the
|
|
140
|
+
// projected status snapshot actually changes.
|
|
141
|
+
let last = JSON.stringify(projectStatus())
|
|
142
|
+
return useGlassesStore.subscribe(() => {
|
|
143
|
+
const snap = projectStatus()
|
|
144
|
+
const key = JSON.stringify(snap)
|
|
145
|
+
if (key === last) return
|
|
146
|
+
last = key
|
|
147
|
+
cb(snap)
|
|
148
|
+
})
|
|
149
|
+
},
|
|
150
|
+
info: (): GlassesInfoSnapshot => projectInfo(),
|
|
151
|
+
onInfo: (cb: (info: GlassesInfoSnapshot) => void): (() => void) => {
|
|
152
|
+
let last = JSON.stringify(projectInfo())
|
|
153
|
+
return useGlassesStore.subscribe(() => {
|
|
154
|
+
const snap = projectInfo()
|
|
155
|
+
const key = JSON.stringify(snap)
|
|
156
|
+
if (key === last) return
|
|
157
|
+
last = key
|
|
158
|
+
cb(snap)
|
|
159
|
+
})
|
|
160
|
+
},
|
|
161
|
+
capabilities: () => getModelCapabilities(useGlassesStore.getState().deviceModel as DeviceTypes),
|
|
162
|
+
/** Ask the glasses to report fresh firmware/version info (updates the store). */
|
|
163
|
+
requestVersionInfo: () => BluetoothSdk.requestVersionInfo(),
|
|
164
|
+
|
|
165
|
+
// --- discrete input events (passthrough listeners) ---
|
|
166
|
+
onButtonPress: (cb: (event: ButtonPressEvent) => void): (() => void) => {
|
|
167
|
+
const sub = BluetoothSdk.addListener("button_press", cb)
|
|
168
|
+
return () => sub.remove()
|
|
169
|
+
},
|
|
170
|
+
onTouchGesture: (cb: (event: TouchEvent) => void): (() => void) => {
|
|
171
|
+
const sub = BluetoothSdk.addListener("touch_event", cb)
|
|
172
|
+
return () => sub.remove()
|
|
173
|
+
},
|
|
174
|
+
|
|
175
|
+
// --- ring controller (optional input device) ---
|
|
176
|
+
controller: {
|
|
177
|
+
connectDefault: (): Promise<void> => BluetoothSdk.connectDefaultController(),
|
|
178
|
+
disconnect: (): Promise<void> => BluetoothSdk.disconnectController(),
|
|
179
|
+
forget: (): Promise<void> => BluetoothSdk.forgetController(),
|
|
180
|
+
status: (): ControllerStatusSnapshot => projectControllerStatus(),
|
|
181
|
+
onStatus: (cb: (status: ControllerStatusSnapshot) => void): (() => void) => {
|
|
182
|
+
let last = JSON.stringify(projectControllerStatus())
|
|
183
|
+
return useGlassesStore.subscribe(() => {
|
|
184
|
+
const snap = projectControllerStatus()
|
|
185
|
+
const key = JSON.stringify(snap)
|
|
186
|
+
if (key === last) return
|
|
187
|
+
last = key
|
|
188
|
+
cb(snap)
|
|
189
|
+
})
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
|
|
193
|
+
// --- audio (glasses media-volume + own-app playback hint) ---
|
|
194
|
+
audio: {
|
|
195
|
+
/** Read the glasses' current media volume. */
|
|
196
|
+
getMediaVolume: () => BluetoothSdk.getGlassesMediaVolume(),
|
|
197
|
+
/** Set the glasses' media volume. */
|
|
198
|
+
setMediaVolume: (level: number) => BluetoothSdk.setGlassesMediaVolume(level),
|
|
199
|
+
/** Tell native whether THIS app is currently playing audio (for ducking). */
|
|
200
|
+
setOwnAppPlaying: (playing: boolean): Promise<void> => BluetoothSdk.setOwnAppAudioPlaying(playing),
|
|
201
|
+
},
|
|
202
|
+
|
|
203
|
+
// --- sub-facades ---
|
|
204
|
+
wifi: glassesWifi,
|
|
205
|
+
settings: glassesSettings,
|
|
206
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* glasses.settings facade — `engine.glasses.settings`: the keyed DEVICE-settings
|
|
3
|
+
* surface (brightness, head-up angle, dashboard, camera/button, sensing, …). These
|
|
4
|
+
* are the settings the engine store auto-syncs to the glasses over the bluetooth-sdk
|
|
5
|
+
* (`BLUETOOTH_SETTING_KEYS`), so `set()` both persists and pushes to the device.
|
|
6
|
+
*
|
|
7
|
+
* Distinct from `engine.settings` (user/app prefs): this is scoped to the
|
|
8
|
+
* hardware-facing keys, minus the internal sync keys (auth/token) that aren't
|
|
9
|
+
* user-tunable device settings.
|
|
10
|
+
*/
|
|
11
|
+
import {useSettingsStore, SETTINGS, BLUETOOTH_SETTING_KEYS} from "../stores/settings"
|
|
12
|
+
|
|
13
|
+
// Keys carried on BLUETOOTH_SETTING_KEYS for the device handshake that are NOT
|
|
14
|
+
// user-tunable settings — auth, device/controller IDENTITY (set by pairing), and
|
|
15
|
+
// internal RUNTIME flags. Kept out of the OEM-facing `available()` surface.
|
|
16
|
+
const INTERNAL_KEYS = new Set<string>([
|
|
17
|
+
// auth
|
|
18
|
+
SETTINGS.core_token.key,
|
|
19
|
+
SETTINGS.auth_email.key,
|
|
20
|
+
// glasses + controller identity (managed by pairing, not the user)
|
|
21
|
+
SETTINGS.pending_wearable.key,
|
|
22
|
+
SETTINGS.default_wearable.key,
|
|
23
|
+
SETTINGS.device_name.key,
|
|
24
|
+
SETTINGS.device_address.key,
|
|
25
|
+
SETTINGS.pending_controller.key,
|
|
26
|
+
SETTINGS.default_controller.key,
|
|
27
|
+
SETTINGS.controller_device_name.key,
|
|
28
|
+
SETTINGS.controller_address.key,
|
|
29
|
+
// internal runtime flags
|
|
30
|
+
SETTINGS.local_stt_fallback_active.key,
|
|
31
|
+
])
|
|
32
|
+
const DEVICE_KEYS = BLUETOOTH_SETTING_KEYS.filter((k) => !INTERNAL_KEYS.has(k))
|
|
33
|
+
|
|
34
|
+
// Copy: object/array-valued settings must not hand callers a mutable reference
|
|
35
|
+
// into the store (mutations would bypass persistence + Bluetooth sync).
|
|
36
|
+
function copySettingValue<T>(value: T): T {
|
|
37
|
+
if (Array.isArray(value)) return [...value] as T
|
|
38
|
+
if (value && typeof value === "object") return {...(value as object)} as T
|
|
39
|
+
return value
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export const glassesSettings = {
|
|
43
|
+
/** Read a device setting by key (object/array values are shallow copies). */
|
|
44
|
+
get: <T = unknown>(key: string): T | undefined =>
|
|
45
|
+
copySettingValue(useSettingsStore.getState().getSetting(key) as T | undefined),
|
|
46
|
+
/** Write a device setting — persists and auto-syncs to the connected glasses. */
|
|
47
|
+
set: <T = unknown>(key: string, value: T) => useSettingsStore.getState().setSetting(key, value),
|
|
48
|
+
/** Subscribe to changes for one device-setting key; returns an unsubscribe. */
|
|
49
|
+
onChanged: <T = unknown>(key: string, cb: (value: T | undefined) => void): (() => void) =>
|
|
50
|
+
useSettingsStore.subscribe((s) => s.getSetting(key) as T | undefined, cb),
|
|
51
|
+
/** The schema descriptor for a key (type, default, options…), or undefined. */
|
|
52
|
+
descriptor: (key: string) => SETTINGS[key],
|
|
53
|
+
/** The device-setting keys synced to the glasses (excludes internal sync keys). */
|
|
54
|
+
// Copy: callers must not be able to mutate the module-level key list.
|
|
55
|
+
available: (): string[] => [...DEVICE_KEYS],
|
|
56
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* glasses.wifi facade — the first typed engine facade over the bluetooth-sdk
|
|
3
|
+
* passthrough, and the reference pattern the rest of the (A) host API copies.
|
|
4
|
+
*
|
|
5
|
+
* A facade wraps the raw `@mentra/bluetooth-sdk` surface into a small, typed,
|
|
6
|
+
* device-agnostic API (the `doX()` action shape here; `getX()`/`onX()` read-models
|
|
7
|
+
* come with domains that own their state). The host UI calls `engine.glasses.wifi.*`
|
|
8
|
+
* instead of importing bluetooth-sdk directly — that's the native-import boundary
|
|
9
|
+
* the engine is built around.
|
|
10
|
+
*
|
|
11
|
+
* `connect()` propagates bluetooth-sdk's coded errors unchanged so callers keep
|
|
12
|
+
* their existing error mapping. The `status()`/`onStatus()` read-model reads the
|
|
13
|
+
* glasses-state store engine now owns (wifi status is derived there from the
|
|
14
|
+
* device's connection info).
|
|
15
|
+
*/
|
|
16
|
+
import BluetoothSdk from "@mentra/bluetooth-sdk"
|
|
17
|
+
import type {WifiSearchResult, WifiStatus} from "@mentra/bluetooth-sdk"
|
|
18
|
+
import {useGlassesStore} from "../stores/glasses"
|
|
19
|
+
|
|
20
|
+
export type {WifiSearchResult, WifiStatus}
|
|
21
|
+
|
|
22
|
+
export const glassesWifi = {
|
|
23
|
+
/** Scan for nearby wifi networks. Request/response — resolves with the results. */
|
|
24
|
+
scan(): Promise<WifiSearchResult[]> {
|
|
25
|
+
return BluetoothSdk.requestWifiScan()
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Subscribe to streamed scan results: the glasses report networks one by one
|
|
30
|
+
* while a scan runs, so callers can render them as they arrive instead of
|
|
31
|
+
* waiting for the final `scan()` result. Returns an unsubscribe.
|
|
32
|
+
*/
|
|
33
|
+
onScanResult(cb: (networks: WifiSearchResult[]) => void): () => void {
|
|
34
|
+
const sub = BluetoothSdk.addListener("wifi_scan_result", (event) => {
|
|
35
|
+
cb(event.networks)
|
|
36
|
+
})
|
|
37
|
+
return () => sub.remove()
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Send wifi credentials to the glasses. Resolves on success; rejects with the
|
|
42
|
+
* bluetooth-sdk coded error (`bluetooth_powered_off`, `request_timeout`, …) on
|
|
43
|
+
* failure, propagated unchanged for the caller to map.
|
|
44
|
+
*/
|
|
45
|
+
async connect(ssid: string, password: string): Promise<void> {
|
|
46
|
+
await BluetoothSdk.sendWifiCredentials(ssid, password)
|
|
47
|
+
},
|
|
48
|
+
|
|
49
|
+
/** Forget a saved network on the glasses. */
|
|
50
|
+
async forget(ssid: string): Promise<void> {
|
|
51
|
+
await BluetoothSdk.forgetWifiNetwork(ssid)
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
/** The glasses' current wifi connection status (snapshot). */
|
|
55
|
+
status(): WifiStatus {
|
|
56
|
+
// Copy: the snapshot must not hand callers a mutable reference into the store.
|
|
57
|
+
return {...useGlassesStore.getState().wifi}
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
/** Subscribe to wifi-status changes (current, previous); returns an unsubscribe. */
|
|
61
|
+
onStatus(cb: (status: WifiStatus, previous: WifiStatus) => void): () => void {
|
|
62
|
+
// Copy: like status(), never publish the store's live wifi objects to listeners.
|
|
63
|
+
return useGlassesStore.subscribe(
|
|
64
|
+
(s) => s.wifi,
|
|
65
|
+
(wifi, previous) => cb({...wifi}, {...previous}),
|
|
66
|
+
)
|
|
67
|
+
},
|
|
68
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* miniapps facade — `engine.miniapps`: miniapp lifecycle over the engine-owned
|
|
3
|
+
* apps store. Thin forwarding (args via Parameters<>), so the facade never drifts
|
|
4
|
+
* from the store's actions.
|
|
5
|
+
*
|
|
6
|
+
* The miniapp WebView is a HOST component (engine ships the bridge, not the view) —
|
|
7
|
+
* the bridge primitives (`buildMiniappGlobalsScript`, `buildMentraUiShim`, the
|
|
8
|
+
* MentraJS router) are exported from `@mentra/engine` directly; the host mounts a
|
|
9
|
+
* `<WebView>` wired to them. This facade is the lifecycle half.
|
|
10
|
+
*/
|
|
11
|
+
import {useAppStatusStore} from "../stores/apps"
|
|
12
|
+
import type {ClientApp} from "../types"
|
|
13
|
+
|
|
14
|
+
type AppsState = ReturnType<typeof useAppStatusStore.getState>
|
|
15
|
+
|
|
16
|
+
export const miniapps = {
|
|
17
|
+
/** All installed miniapps (snapshot). */
|
|
18
|
+
// Copy: the snapshot must not hand callers a mutable reference into the store.
|
|
19
|
+
list: (): ClientApp[] => [...useAppStatusStore.getState().apps],
|
|
20
|
+
/** Subscribe to the installed-app set; fires only when it changes. Returns an unsubscribe. */
|
|
21
|
+
onChanged: (cb: (apps: ClientApp[]) => void): (() => void) => {
|
|
22
|
+
let last = JSON.stringify(useAppStatusStore.getState().apps)
|
|
23
|
+
return useAppStatusStore.subscribe(() => {
|
|
24
|
+
const apps = useAppStatusStore.getState().apps
|
|
25
|
+
const key = JSON.stringify(apps)
|
|
26
|
+
if (key === last) return
|
|
27
|
+
last = key
|
|
28
|
+
cb(apps)
|
|
29
|
+
})
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
/** Re-fetch the installed-app list from the backend. */
|
|
33
|
+
refresh: () => useAppStatusStore.getState().refresh(),
|
|
34
|
+
/** Start (foreground) a miniapp. */
|
|
35
|
+
start: (...args: Parameters<AppsState["start"]>) => useAppStatusStore.getState().start(...args),
|
|
36
|
+
/** Stop a miniapp. */
|
|
37
|
+
stop: (...args: Parameters<AppsState["stop"]>) => useAppStatusStore.getState().stop(...args),
|
|
38
|
+
/** Bring a running miniapp to the foreground. */
|
|
39
|
+
setForeground: (...args: Parameters<AppsState["setForeground"]>) =>
|
|
40
|
+
useAppStatusStore.getState().setForeground(...args),
|
|
41
|
+
/** Clear the current foreground miniapp. */
|
|
42
|
+
clearForeground: () => useAppStatusStore.getState().clearForeground(),
|
|
43
|
+
/** Stop all running miniapps. */
|
|
44
|
+
stopAll: () => useAppStatusStore.getState().stopAll(),
|
|
45
|
+
/** Install a miniapp from a bundle URL. */
|
|
46
|
+
install: (...args: Parameters<AppsState["install"]>) => useAppStatusStore.getState().install(...args),
|
|
47
|
+
/** Uninstall a miniapp. */
|
|
48
|
+
uninstall: (...args: Parameters<AppsState["uninstall"]>) => useAppStatusStore.getState().uninstall(...args),
|
|
49
|
+
/** Persist a miniapp's captured screenshot (the switcher/card preview). */
|
|
50
|
+
saveScreenshot: (...args: Parameters<AppsState["saveScreenshot"]>) =>
|
|
51
|
+
useAppStatusStore.getState().saveScreenshot(...args),
|
|
52
|
+
/** Hide/show a miniapp on the home surfaces. */
|
|
53
|
+
setHiddenStatus: (...args: Parameters<AppsState["setHiddenStatus"]>) =>
|
|
54
|
+
useAppStatusStore.getState().setHiddenStatus(...args),
|
|
55
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* notifications facade — `engine.notifications`: inbound alerts engine→host. The
|
|
3
|
+
* OEM subscribes and renders them however it likes (modal, toast, banner). Today:
|
|
4
|
+
* miniapp crashloop; version-incompatible miniapp and persistent connection loss
|
|
5
|
+
* land as their detectors are wired into the emitter.
|
|
6
|
+
*/
|
|
7
|
+
import {islandNotifications, type IslandNotification} from "../services/NotificationsEmitter"
|
|
8
|
+
|
|
9
|
+
export type {IslandNotification, IslandNotificationKind} from "../services/NotificationsEmitter"
|
|
10
|
+
|
|
11
|
+
export const notifications = {
|
|
12
|
+
/** Subscribe to engine-raised notifications; returns an unsubscribe. */
|
|
13
|
+
onNotification: (cb: (notification: IslandNotification) => void): (() => void) =>
|
|
14
|
+
islandNotifications.subscribe(cb),
|
|
15
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ota facade — `engine.ota`: the OEM-facing OTA read/observe surface. Engine's
|
|
3
|
+
* OtaService projects the glasses' OTA BLE events into the engine store; this facade
|
|
4
|
+
* exposes the snapshot + change subscriptions the host renders its update prompt and
|
|
5
|
+
* progress UI from. No host-injected UI — the host owns all alerts/navigation/i18n.
|
|
6
|
+
*
|
|
7
|
+
* Availability checks live in engine. Install orchestration lives in engine too:
|
|
8
|
+
* `installSession` fronts the OtaInstallCoordinator state machine (WP 8B) — the host
|
|
9
|
+
* progress screen is a pure renderer over its snapshot + attach/detach/retry/finish.
|
|
10
|
+
*/
|
|
11
|
+
import BluetoothSdk from "@mentra/bluetooth-sdk/internal"
|
|
12
|
+
import type {OtaProgress, OtaProgressStatus, OtaStatus, OtaUpdateInfo} from "@mentra/bluetooth-sdk/internal"
|
|
13
|
+
import {isGlassesConnected, useGlassesStore} from "../stores/glasses"
|
|
14
|
+
import {getAsgOtaVersionUrl} from "../services/asgOtaVersionUrl"
|
|
15
|
+
import {otaInstallCoordinator, type OtaInstallSnapshot} from "../services/OtaInstallCoordinator"
|
|
16
|
+
import {
|
|
17
|
+
checkCurrentGlassesForUpdate,
|
|
18
|
+
type OtaCheckCurrentGlassesOptions,
|
|
19
|
+
type OtaCheckCurrentGlassesResult,
|
|
20
|
+
} from "../services/OtaUpdateCheckService"
|
|
21
|
+
|
|
22
|
+
function projectSnapshot() {
|
|
23
|
+
const s = useGlassesStore.getState()
|
|
24
|
+
return {
|
|
25
|
+
connected: isGlassesConnected(s.connection),
|
|
26
|
+
buildNumber: s.buildNumber || null,
|
|
27
|
+
mtkFirmwareVersion: s.mtkFirmwareVersion || null,
|
|
28
|
+
besFirmwareVersion: s.besFirmwareVersion || null,
|
|
29
|
+
wifiConnected: s.wifi.state === "connected",
|
|
30
|
+
wifiStatusKnown: s.wifiStatusKnown,
|
|
31
|
+
manifestUrl: getAsgOtaVersionUrl(s.otaVersionUrl, s.buildNumber),
|
|
32
|
+
updateAvailable: s.otaUpdateAvailable,
|
|
33
|
+
status: s.otaStatus,
|
|
34
|
+
legacyProgress: s.otaProgress,
|
|
35
|
+
inProgress: s.otaInProgress,
|
|
36
|
+
mtkUpdatedThisSession: s.mtkUpdatedThisSession,
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type OtaSnapshot = ReturnType<typeof projectSnapshot>
|
|
41
|
+
export type {
|
|
42
|
+
OtaProgress,
|
|
43
|
+
OtaProgressStatus,
|
|
44
|
+
OtaStatus,
|
|
45
|
+
OtaUpdateInfo,
|
|
46
|
+
OtaInstallSnapshot,
|
|
47
|
+
OtaCheckCurrentGlassesOptions,
|
|
48
|
+
OtaCheckCurrentGlassesResult,
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export const ota = {
|
|
52
|
+
// --- actions ---
|
|
53
|
+
/**
|
|
54
|
+
* Start the firmware install with the resolved OTA manifest URL. Progress lands on
|
|
55
|
+
* `status()`/`onStatus()`. (The host resolves the manifest URL — dev-override/env/prod
|
|
56
|
+
* resolution stays with the OTA config; the host-side stuck/retry watchdog is its own
|
|
57
|
+
* resilience layer on top of this command.)
|
|
58
|
+
*/
|
|
59
|
+
install: (...args: Parameters<typeof BluetoothSdk.startOtaUpdate>) => BluetoothSdk.startOtaUpdate(...args),
|
|
60
|
+
// Deferred: this facade entry was intended to become the engine-owned retry/check
|
|
61
|
+
// action, but BluetoothSdk.checkForOtaUpdate() only returns a boolean. Exposing it
|
|
62
|
+
// here would make callers think the rich otaUpdateAvailable read model is refreshed,
|
|
63
|
+
// while the original view still depends on the host-side manifest compare to build
|
|
64
|
+
// versionName/updates/totalSize. Keep that behavior unchanged until the whole rich
|
|
65
|
+
// availability check moves into engine.
|
|
66
|
+
// retry: () => BluetoothSdk.checkForOtaUpdate(),
|
|
67
|
+
/**
|
|
68
|
+
* Keep glasses awake while an OTA session is actively progressing.
|
|
69
|
+
* @deprecated Legacy progress route (build < 37) only — removed with WP 8D.
|
|
70
|
+
*/
|
|
71
|
+
ping: () => BluetoothSdk.ping(),
|
|
72
|
+
/** Resolve and compare the current glasses against the OTA manifest, then update the OTA snapshot. */
|
|
73
|
+
checkForUpdates: (options?: OtaCheckCurrentGlassesOptions) => checkCurrentGlassesForUpdate(options),
|
|
74
|
+
/** Clear the available-update prompt state. */
|
|
75
|
+
clearUpdateAvailable: () => useGlassesStore.getState().setOtaUpdateAvailable(null),
|
|
76
|
+
/** Clear active progress/status before entering a fresh install flow. */
|
|
77
|
+
clearProgress: () => {
|
|
78
|
+
const store = useGlassesStore.getState()
|
|
79
|
+
store.setOtaProgress(null)
|
|
80
|
+
store.setOtaStatus(null)
|
|
81
|
+
},
|
|
82
|
+
/**
|
|
83
|
+
* Replace the pending update sequence after an in-flow firmware revalidation.
|
|
84
|
+
* Kept as a named OTA policy operation so host screens do not mutate the raw
|
|
85
|
+
* glasses store.
|
|
86
|
+
* @deprecated Legacy progress route (build < 37) only — removed with WP 8D.
|
|
87
|
+
*/
|
|
88
|
+
replacePendingUpdateSequence: (updates: OtaUpdateInfo["updates"]): OtaUpdateInfo | null => {
|
|
89
|
+
const store = useGlassesStore.getState()
|
|
90
|
+
const current = store.otaUpdateAvailable
|
|
91
|
+
if (!current) return null
|
|
92
|
+
const next = {...current, updates}
|
|
93
|
+
store.setOtaUpdateAvailable(next)
|
|
94
|
+
return next
|
|
95
|
+
},
|
|
96
|
+
/**
|
|
97
|
+
* Clear stale build metadata before returning to the update-check screen.
|
|
98
|
+
* This forces the next version_info event through both the native observable
|
|
99
|
+
* store and the engine projection after an APK reboot.
|
|
100
|
+
* @deprecated Legacy progress route (build < 37) only — removed with WP 8D.
|
|
101
|
+
*/
|
|
102
|
+
clearBuildNumberForNextCheck: () => {
|
|
103
|
+
BluetoothSdk.updateGlasses({buildNumber: ""})
|
|
104
|
+
useGlassesStore.getState().setGlassesInfo({buildNumber: ""})
|
|
105
|
+
},
|
|
106
|
+
/**
|
|
107
|
+
* Mark MTK as already applied during this app session until the glasses reboot/disconnect.
|
|
108
|
+
* @deprecated Legacy progress route (build < 37) only — removed with WP 8D.
|
|
109
|
+
*/
|
|
110
|
+
markMtkUpdatedThisSession: (updated: boolean) => useGlassesStore.getState().setMtkUpdatedThisSession(updated),
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* The OTA install state machine (unified `ota_status` sessions, build >= 37).
|
|
114
|
+
* The host progress screen attaches on mount, detaches on unmount, and renders
|
|
115
|
+
* the snapshot; every watchdog/retry/reconnect rule lives in the coordinator.
|
|
116
|
+
*/
|
|
117
|
+
installSession: {
|
|
118
|
+
/** Bind the machine to the mounted progress screen. Idempotent per attach/detach cycle. */
|
|
119
|
+
attach: () => otaInstallCoordinator.attach(),
|
|
120
|
+
/** Unbind on unmount: clears all timers/listeners and resets session state. */
|
|
121
|
+
detach: () => otaInstallCoordinator.detach(),
|
|
122
|
+
/** Retry after a failure: clear state and re-send ota_start (if connected). */
|
|
123
|
+
retry: () => otaInstallCoordinator.retry(),
|
|
124
|
+
/** Terminal cleanup for Continue/Done (navigation stays in the screen). */
|
|
125
|
+
finish: () => otaInstallCoordinator.finish(),
|
|
126
|
+
/** Abandon an interrupted session (super-mode skip): finish() + drop the session's status/progress. */
|
|
127
|
+
discard: () => otaInstallCoordinator.discard(),
|
|
128
|
+
/** Current install read model (displayState/errorMsg/lockout + glasses OTA data). */
|
|
129
|
+
snapshot: (): OtaInstallSnapshot => otaInstallCoordinator.snapshot(),
|
|
130
|
+
/** Subscribe to install snapshot changes (deduped on projected JSON). Returns an unsubscribe. */
|
|
131
|
+
onSnapshot: (cb: (snapshot: OtaInstallSnapshot) => void): (() => void) => otaInstallCoordinator.onSnapshot(cb),
|
|
132
|
+
},
|
|
133
|
+
|
|
134
|
+
/** Current available-update info (versionName/updates/totalSize), or null. */
|
|
135
|
+
updateAvailable: (): OtaUpdateInfo | null => useGlassesStore.getState().otaUpdateAvailable,
|
|
136
|
+
/** Current OTA install status (stepType/phase/percent/status/error), or null. */
|
|
137
|
+
status: (): OtaStatus | null => useGlassesStore.getState().otaStatus,
|
|
138
|
+
/** Current OTA read model for update prompt/progress screens. */
|
|
139
|
+
snapshot: (): OtaSnapshot => projectSnapshot(),
|
|
140
|
+
|
|
141
|
+
/** Subscribe to OTA availability changes (info or null when cleared). Returns an unsubscribe. */
|
|
142
|
+
onUpdateAvailable: (cb: (info: OtaUpdateInfo | null) => void): (() => void) => {
|
|
143
|
+
let last = useGlassesStore.getState().otaUpdateAvailable
|
|
144
|
+
return useGlassesStore.subscribe(() => {
|
|
145
|
+
const info = useGlassesStore.getState().otaUpdateAvailable
|
|
146
|
+
if (info === last) return
|
|
147
|
+
last = info
|
|
148
|
+
cb(info)
|
|
149
|
+
})
|
|
150
|
+
},
|
|
151
|
+
|
|
152
|
+
/** Subscribe to OTA install status changes. Returns an unsubscribe. */
|
|
153
|
+
onStatus: (cb: (status: OtaStatus | null) => void): (() => void) => {
|
|
154
|
+
let last = useGlassesStore.getState().otaStatus
|
|
155
|
+
return useGlassesStore.subscribe(() => {
|
|
156
|
+
const status = useGlassesStore.getState().otaStatus
|
|
157
|
+
if (status === last) return
|
|
158
|
+
last = status
|
|
159
|
+
cb(status)
|
|
160
|
+
})
|
|
161
|
+
},
|
|
162
|
+
|
|
163
|
+
/** Subscribe to OTA snapshot changes. Returns an unsubscribe. */
|
|
164
|
+
onSnapshot: (cb: (snapshot: OtaSnapshot) => void): (() => void) => {
|
|
165
|
+
let last = JSON.stringify(projectSnapshot())
|
|
166
|
+
return useGlassesStore.subscribe(() => {
|
|
167
|
+
const snap = projectSnapshot()
|
|
168
|
+
const key = JSON.stringify(snap)
|
|
169
|
+
if (key === last) return
|
|
170
|
+
last = key
|
|
171
|
+
cb(snap)
|
|
172
|
+
})
|
|
173
|
+
},
|
|
174
|
+
}
|