@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
package/package.json
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mentra/engine",
|
|
3
|
+
"version": "0.1.0-beta.0",
|
|
4
|
+
"description": "Mentra Engine — miniapp registry, WebView bridge, and miniapp store",
|
|
5
|
+
"main": "build/index.js",
|
|
6
|
+
"react-native": "src/index.ts",
|
|
7
|
+
"types": "build/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./build/index.d.ts",
|
|
11
|
+
"react-native": "./src/index.ts",
|
|
12
|
+
"default": "./build/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./internal": {
|
|
15
|
+
"types": "./build/internal.d.ts",
|
|
16
|
+
"react-native": "./src/internal.ts",
|
|
17
|
+
"default": "./build/internal.js"
|
|
18
|
+
},
|
|
19
|
+
"./devtools": {
|
|
20
|
+
"types": "./build/devtools.d.ts",
|
|
21
|
+
"react-native": "./src/devtools.ts",
|
|
22
|
+
"default": "./build/devtools.js"
|
|
23
|
+
},
|
|
24
|
+
"./build/*": null,
|
|
25
|
+
"./src/*": null,
|
|
26
|
+
"./package.json": "./package.json"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"build",
|
|
30
|
+
"README.md",
|
|
31
|
+
"src",
|
|
32
|
+
"!src/**/__tests__",
|
|
33
|
+
"!src/**/*.test.ts"
|
|
34
|
+
],
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "expo-module build",
|
|
37
|
+
"clean": "expo-module clean",
|
|
38
|
+
"lint": "expo-module lint",
|
|
39
|
+
"test": "bun test src",
|
|
40
|
+
"build:module": "expo-module prepare",
|
|
41
|
+
"prepublishOnly": "expo-module prepublishOnly",
|
|
42
|
+
"expo-module": "expo-module"
|
|
43
|
+
},
|
|
44
|
+
"keywords": [
|
|
45
|
+
"react-native",
|
|
46
|
+
"expo",
|
|
47
|
+
"engine",
|
|
48
|
+
"Engine",
|
|
49
|
+
"miniapp"
|
|
50
|
+
],
|
|
51
|
+
"repository": {
|
|
52
|
+
"type": "git",
|
|
53
|
+
"url": "git+https://github.com/Mentra-Community/MentraOS.git",
|
|
54
|
+
"directory": "mobile/modules/engine"
|
|
55
|
+
},
|
|
56
|
+
"bugs": {
|
|
57
|
+
"url": "https://github.com/Mentra-Community/MentraOS/issues"
|
|
58
|
+
},
|
|
59
|
+
"author": "Mentra Community",
|
|
60
|
+
"license": "MIT",
|
|
61
|
+
"homepage": "https://github.com/Mentra-Community/MentraOS/tree/dev/mobile/modules/engine#readme",
|
|
62
|
+
"publishConfig": {
|
|
63
|
+
"access": "public",
|
|
64
|
+
"registry": "https://registry.npmjs.org/"
|
|
65
|
+
},
|
|
66
|
+
"dependencies": {
|
|
67
|
+
"buffer": "^6.0.3",
|
|
68
|
+
"events": "^3.3.0",
|
|
69
|
+
"semver": "^7.7.4",
|
|
70
|
+
"typesafe-ts": "^1.7.1"
|
|
71
|
+
},
|
|
72
|
+
"devDependencies": {
|
|
73
|
+
"@mentra/bluetooth-sdk": "workspace:*",
|
|
74
|
+
"@mentra/cloud-client": "workspace:*",
|
|
75
|
+
"@mentra/cloud-protocol": "workspace:*",
|
|
76
|
+
"@mentra/miniapp": "workspace:*",
|
|
77
|
+
"@types/semver": "^7.7.1",
|
|
78
|
+
"expo-module-scripts": "^55.0.2",
|
|
79
|
+
"expo-modules-core": "55.0.25",
|
|
80
|
+
"react-native-nitro-modules": "^0.31.10",
|
|
81
|
+
"typescript": "~5.9.2"
|
|
82
|
+
},
|
|
83
|
+
"peerDependencies": {
|
|
84
|
+
"expo": "*",
|
|
85
|
+
"expo-modules-core": "*",
|
|
86
|
+
"react": "*",
|
|
87
|
+
"react-native": "*",
|
|
88
|
+
"react-native-udp": "*",
|
|
89
|
+
"@types/react": "*",
|
|
90
|
+
"react-native-mmkv": "*",
|
|
91
|
+
"react-native-nitro-bg-timer": "*",
|
|
92
|
+
"react-native-nitro-modules": "*",
|
|
93
|
+
"react-native-reanimated": "*",
|
|
94
|
+
"expo-file-system": "*",
|
|
95
|
+
"react-native-zip-archive": "*",
|
|
96
|
+
"zustand": "*",
|
|
97
|
+
"expo-battery": "*",
|
|
98
|
+
"expo-audio": "*",
|
|
99
|
+
"expo-clipboard": "*",
|
|
100
|
+
"expo-calendar": "*",
|
|
101
|
+
"expo-constants": "*",
|
|
102
|
+
"expo-location": "*",
|
|
103
|
+
"expo-task-manager": "*",
|
|
104
|
+
"expo-notifications": "*",
|
|
105
|
+
"react-native-share": "*",
|
|
106
|
+
"react-native-localize": "*",
|
|
107
|
+
"react-native-ble-manager": "*",
|
|
108
|
+
"react-native-permissions": "*",
|
|
109
|
+
"react-native-wifi-reborn": "*",
|
|
110
|
+
"@react-native-community/netinfo": "*",
|
|
111
|
+
"@dr.pogodin/react-native-fs": "*",
|
|
112
|
+
"@craftzdog/react-native-buffer": "*",
|
|
113
|
+
"axios": "*",
|
|
114
|
+
"@mentra/bluetooth-sdk": "*",
|
|
115
|
+
"@mentra/crust": "^0.1.0-beta.0",
|
|
116
|
+
"@mentra/cloud-client": "^0.1.0-beta.0",
|
|
117
|
+
"@mentra/miniapp": "^0.3.0-beta.0",
|
|
118
|
+
"@mentra/cloud-protocol": "^0.1.0-beta.0"
|
|
119
|
+
}
|
|
120
|
+
}
|
package/src/devtools.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@mentra/engine/devtools` — the devtools-only surface.
|
|
3
|
+
*
|
|
4
|
+
* Debug/diagnostic singletons consumed by the Mentra app's internal dev
|
|
5
|
+
* screens (stress test, miniapp dev-server tooling). Never import this from
|
|
6
|
+
* product UI or host services; every `/devtools` import in mobile/src is
|
|
7
|
+
* counted (report-only) by scripts/check-mobile-runtime-boundary.sh.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
// Which miniapps the local runtime currently has running (stress-test screen).
|
|
11
|
+
export {miniappRunningRegistry} from "./services/MiniappRunningRegistry"
|
|
12
|
+
// Dev-server connection bridge for live-reloading local miniapps.
|
|
13
|
+
export {default as devServerBridge} from "./services/DevServerBridge"
|
package/src/engine.ts
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `engine` — the namespaced OEM-facing engine API (the "(A) host API" from the
|
|
3
|
+
* Phase-1 contract). Host UI calls `engine.<domain>.<method>()`; each domain is a
|
|
4
|
+
* typed facade over the runtime. (Exported from the `@mentra/engine` module, whose
|
|
5
|
+
* name stays `engine` in code; the public API surface is `engine`.)
|
|
6
|
+
*
|
|
7
|
+
* It grows one facade at a time. The migration-era flat store/service exports
|
|
8
|
+
* live on the `@mentra/engine/internal` entry (and the debug singletons on
|
|
9
|
+
* `@mentra/engine/devtools`); they shrink as screens move onto `engine.*`.
|
|
10
|
+
*/
|
|
11
|
+
import {configure, start as bootstrapStart, stop as bootstrapStop} from "./runtime/bootstrap"
|
|
12
|
+
import {cloudClientService} from "./services/CloudClientService"
|
|
13
|
+
import {hydrateDeviceStore, demoteOrphanedDefaultWearable} from "./services/DeviceStoreHydration"
|
|
14
|
+
import {startGlassesSettingsSync, stopGlassesSettingsSync} from "./services/GlassesSettingsSync"
|
|
15
|
+
import {startGlassesStatusProjection, stopGlassesStatusProjection} from "./services/GlassesStatusProjection"
|
|
16
|
+
import {startOtaService, stopOtaService} from "./services/OtaService"
|
|
17
|
+
import {startAudioCloudUplink, stopAudioCloudUplink} from "./services/AudioCloudUplink"
|
|
18
|
+
import {startDeviceEventRouter, stopDeviceEventRouter} from "./services/DeviceEventRouter"
|
|
19
|
+
import {startPhoneNotificationsSync, stopPhoneNotificationsSync} from "./services/PhoneNotificationsSync"
|
|
20
|
+
import {startCaptionsTesterReportService, stopCaptionsTesterReportService} from "./services/CaptionsTesterReportService"
|
|
21
|
+
import {
|
|
22
|
+
startMentraJSCrashloopReportService,
|
|
23
|
+
stopMentraJSCrashloopReportService,
|
|
24
|
+
} from "./services/MentraJSCrashloopReportService"
|
|
25
|
+
import {ensureMiniappEngine, stopMiniappEngine} from "./services/MiniappEngine"
|
|
26
|
+
import localMiniappRuntime from "./services/LocalMiniappRuntime"
|
|
27
|
+
import displayProcessor from "./services/DisplayProcessor"
|
|
28
|
+
import {gallerySyncService} from "./services/asg/gallerySyncService"
|
|
29
|
+
import {glasses} from "./facades/glasses"
|
|
30
|
+
import {display} from "./facades/display"
|
|
31
|
+
import {speech} from "./facades/speech"
|
|
32
|
+
import {session} from "./facades/session"
|
|
33
|
+
import {settings} from "./facades/settings"
|
|
34
|
+
import {dev} from "./facades/dev"
|
|
35
|
+
import {reports} from "./facades/reports"
|
|
36
|
+
import {ota} from "./facades/ota"
|
|
37
|
+
import {gallery} from "./facades/gallery"
|
|
38
|
+
import {miniapps} from "./facades/miniapps"
|
|
39
|
+
import {pairing} from "./facades/pairing"
|
|
40
|
+
import {phoneNotifications} from "./facades/phoneNotifications"
|
|
41
|
+
import {permissions} from "./facades/permissions"
|
|
42
|
+
import {notifications} from "./facades/notifications"
|
|
43
|
+
import {logBuffer} from "./utils/devLogging"
|
|
44
|
+
|
|
45
|
+
export const engine = {
|
|
46
|
+
/** Front door — hand engine auth + config, then start/stop the runtime. */
|
|
47
|
+
configure,
|
|
48
|
+
/** Start the runtime: mark started + construct/connect the cloud client + begin
|
|
49
|
+
* syncing device settings to the glasses. */
|
|
50
|
+
async start() {
|
|
51
|
+
// Reports attach recent phone logs, so engine owns console interception for
|
|
52
|
+
// OEM hosts too. Idempotent; the Mentra host may start it earlier.
|
|
53
|
+
logBuffer.startConsoleInterception()
|
|
54
|
+
await bootstrapStart()
|
|
55
|
+
// Construct + connect the cloud client so the documented configure()+start()
|
|
56
|
+
// lifecycle yields a live engine.session for OEMs. Idempotent for repeated
|
|
57
|
+
// start() calls.
|
|
58
|
+
cloudClientService.init()
|
|
59
|
+
// Project native device status -> the engine stores (the inbound feed the rest
|
|
60
|
+
// of the runtime reads). Established first so the stores are live before the
|
|
61
|
+
// syncs below react to them.
|
|
62
|
+
startGlassesStatusProjection()
|
|
63
|
+
// Route the rest of the inbound device events (wifi/hotspot/gallery -> stores+bus,
|
|
64
|
+
// photo/stream -> coordinators, button/touch/accel/head -> miniapps, save_setting ->
|
|
65
|
+
// store, miniapp_selected -> launcher) so a bare OEM gets device data, not just the
|
|
66
|
+
// Mentra app's MantleManager.
|
|
67
|
+
startDeviceEventRouter()
|
|
68
|
+
// Hydration contract: the native DeviceStore is in-memory and starts empty
|
|
69
|
+
// every launch; seed it from the persisted settings BEFORE start() resolves
|
|
70
|
+
// so every post-start getDefaultDevice() read is a trustworthy two-state
|
|
71
|
+
// answer (no false "absent" for genuinely-paired users at cold start).
|
|
72
|
+
// Ordered before startGlassesSettingsSync so the settings load can't
|
|
73
|
+
// double-push through the change subscription. A failed hydration must not
|
|
74
|
+
// brick the runtime: start() continues, and the guards that consume
|
|
75
|
+
// hasDefaultDevice() see the rejection and fail open.
|
|
76
|
+
try {
|
|
77
|
+
await hydrateDeviceStore()
|
|
78
|
+
// Boot repair: a persisted default_wearable without a native default
|
|
79
|
+
// device (identity abandoned mid-pairing, or resurrected from the server
|
|
80
|
+
// before identity stopped syncing) demotes to pending_wearable so hosts
|
|
81
|
+
// render finish-pairing instead of a connect that would throw.
|
|
82
|
+
await demoteOrphanedDefaultWearable()
|
|
83
|
+
} catch (error) {
|
|
84
|
+
console.warn("engine.start: device-store hydration failed:", error instanceof Error ? error.message : error)
|
|
85
|
+
}
|
|
86
|
+
// Project the glasses' OTA events into the store for the engine.ota read surface.
|
|
87
|
+
startOtaService()
|
|
88
|
+
// Forward glasses mic_lc3 frames to the v2 cloud session so cloud transcription
|
|
89
|
+
// works for any host (not just the Mentra app's host-side MantleManager fork).
|
|
90
|
+
startAudioCloudUplink()
|
|
91
|
+
try {
|
|
92
|
+
await cloudClientService.syncCoreTokenToBluetooth()
|
|
93
|
+
} catch (error) {
|
|
94
|
+
console.warn(
|
|
95
|
+
"engine.start: initial Cloud V2 core token sync failed:",
|
|
96
|
+
error instanceof Error ? error.message : error,
|
|
97
|
+
)
|
|
98
|
+
}
|
|
99
|
+
// Push device-setting changes to the glasses for ANY host, so
|
|
100
|
+
// engine.glasses.settings.set() reaches the device (not just the Mentra app).
|
|
101
|
+
startGlassesSettingsSync()
|
|
102
|
+
// Same for phone-notification config -> the native listener (Android).
|
|
103
|
+
startPhoneNotificationsSync()
|
|
104
|
+
// Android internal/e2e: laptop captions tester can broadcast a failure intent;
|
|
105
|
+
// engine owns turning that into a Cloud V2 report.
|
|
106
|
+
startCaptionsTesterReportService()
|
|
107
|
+
// MentraJS crashloop-disabled is runtime state; engine owns filing the
|
|
108
|
+
// automatic report while hosts only render alert/telemetry side effects.
|
|
109
|
+
startMentraJSCrashloopReportService()
|
|
110
|
+
// Bring up the local-miniapp engine so a bare OEM can run MentraJS miniapps:
|
|
111
|
+
// the LocalMiniappRuntime (registry + WebView bridge), the MentraJS router
|
|
112
|
+
// (crust-bound spawn/dispatch pump + launcher wiring), the DisplayProcessor
|
|
113
|
+
// (layout arbitration over the engine stores), and the gallery-sync service.
|
|
114
|
+
// All idempotent — when the Mentra app's host bootstrap also calls these, the
|
|
115
|
+
// second call is a no-op. Host-only crashloop telemetry is attached
|
|
116
|
+
// separately by the Mentra app.
|
|
117
|
+
localMiniappRuntime.initialize()
|
|
118
|
+
ensureMiniappEngine()
|
|
119
|
+
displayProcessor.attachToRuntime()
|
|
120
|
+
gallerySyncService.initialize()
|
|
121
|
+
},
|
|
122
|
+
/** Stop the runtime: tear down the settings sync + cloud client + mark stopped.
|
|
123
|
+
* Each step is guarded so one failing teardown can't skip the rest and leak
|
|
124
|
+
* the remaining runtime services. */
|
|
125
|
+
async stop() {
|
|
126
|
+
const safely = async (label: string, step: () => unknown): Promise<void> => {
|
|
127
|
+
try {
|
|
128
|
+
await step()
|
|
129
|
+
} catch (error) {
|
|
130
|
+
console.warn(`engine.stop: ${label} failed:`, error)
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
await safely("glasses settings sync", stopGlassesSettingsSync)
|
|
134
|
+
await safely("glasses status projection", stopGlassesStatusProjection)
|
|
135
|
+
await safely("device event router", stopDeviceEventRouter)
|
|
136
|
+
await safely("ota service", stopOtaService)
|
|
137
|
+
await safely("audio cloud uplink", stopAudioCloudUplink)
|
|
138
|
+
await safely("phone notifications sync", stopPhoneNotificationsSync)
|
|
139
|
+
await safely("captions tester report service", stopCaptionsTesterReportService)
|
|
140
|
+
await safely("mentrajs crashloop report service", stopMentraJSCrashloopReportService)
|
|
141
|
+
await safely("miniapp engine", stopMiniappEngine)
|
|
142
|
+
await safely("local miniapp runtime", () => localMiniappRuntime.cleanup())
|
|
143
|
+
await safely("display processor", () => displayProcessor.detachFromRuntime())
|
|
144
|
+
await safely("gallery sync service", () => gallerySyncService.cleanup())
|
|
145
|
+
await safely("cloud client", () => cloudClientService.stop())
|
|
146
|
+
await safely("bootstrap", bootstrapStop)
|
|
147
|
+
},
|
|
148
|
+
glasses,
|
|
149
|
+
speech,
|
|
150
|
+
/** Cloud (cloud-v2) live-session status + account ops — engine owns the client. */
|
|
151
|
+
session,
|
|
152
|
+
/** Typed keyed user settings over the engine-owned settings store. */
|
|
153
|
+
settings,
|
|
154
|
+
/** Developer/debug surface (backend+cloud URL overrides, reconnect, min version). */
|
|
155
|
+
dev,
|
|
156
|
+
/** Bug-report, automatic runtime report, and feedback submission. */
|
|
157
|
+
reports,
|
|
158
|
+
/** Firmware OTA read/observe surface (updateAvailable/status + on* subscriptions). */
|
|
159
|
+
ota,
|
|
160
|
+
/** Gallery sync: status/onStatus · onNotice (host renders) · sync/cancel. */
|
|
161
|
+
gallery,
|
|
162
|
+
/** Miniapp lifecycle (the WebView bridge primitives are exported separately). */
|
|
163
|
+
miniapps,
|
|
164
|
+
/** First-time glasses discovery + pairing. */
|
|
165
|
+
pairing,
|
|
166
|
+
/** Phone→glasses notification forwarding (Android). */
|
|
167
|
+
phoneNotifications,
|
|
168
|
+
/** OS permissions (check/request/openSettings + per-miniapp requirements). */
|
|
169
|
+
permissions,
|
|
170
|
+
/** Inbound alerts engine→host (crashloop, version-incompatible, connection loss). */
|
|
171
|
+
notifications,
|
|
172
|
+
display,
|
|
173
|
+
}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dev facade — `engine.dev`: developer/debug surface over engine-owned state.
|
|
3
|
+
* Backend/cloud URL overrides read+write the engine settings store; the cloud
|
|
4
|
+
* URL setters reconnect the engine-owned cloud client onto the new endpoints;
|
|
5
|
+
*
|
|
6
|
+
* NOTE: the dev-time endpoint *resolution* (Metro-host auto-detect, env defaults)
|
|
7
|
+
* still lives host-side in `@/services/cloudClient` during the migration; this
|
|
8
|
+
* facade manages the explicit overrides + reconnect.
|
|
9
|
+
*/
|
|
10
|
+
import BluetoothSdk from "@mentra/bluetooth-sdk/internal"
|
|
11
|
+
import {isGlassesReady} from "../services/GlassesReadiness"
|
|
12
|
+
import {useCloudClientStatusStore} from "../stores/cloudClientStatus"
|
|
13
|
+
import {useConnectionStore} from "../stores/connection"
|
|
14
|
+
import {useCoreStore} from "../stores/core"
|
|
15
|
+
import {useGlassesStore} from "../stores/glasses"
|
|
16
|
+
import {useSettingsStore, SETTINGS} from "../stores/settings"
|
|
17
|
+
import {cloudClientService} from "../services/CloudClientService"
|
|
18
|
+
import {getConfigValues} from "../runtime/bootstrap"
|
|
19
|
+
import {decideDevLaunchRoute} from "../utils/devMiniappLaunch"
|
|
20
|
+
import {registerDevApp, DEV_APP_PACKAGE_NAME, type DevAppRecord} from "../services/AppRegistry"
|
|
21
|
+
import {useAppStatusStore} from "../stores/apps"
|
|
22
|
+
|
|
23
|
+
type CloudUrlOverrides = {core?: string; runtime?: string}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Reconnect the cloud client onto the current cloud-URL overrides. Explicit
|
|
27
|
+
* partial overrides merge over the boot-resolved config (which carries the
|
|
28
|
+
* host's Metro/env URL resolution); both empty clears the live override.
|
|
29
|
+
*/
|
|
30
|
+
function applyCloudUrlReconnect(urls: CloudUrlOverrides = currentCloudUrlOverrides()): void {
|
|
31
|
+
const resolved = resolveCloudUrlReconnectTarget(urls)
|
|
32
|
+
if (resolved === undefined) {
|
|
33
|
+
cloudClientService.reconnect(null)
|
|
34
|
+
} else if (resolved) {
|
|
35
|
+
cloudClientService.reconnect(resolved)
|
|
36
|
+
} else {
|
|
37
|
+
console.warn("engine.dev.setCloudUrls: partial cloud override missing boot-resolved sibling endpoint")
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function currentCloudUrlOverrides(): CloudUrlOverrides {
|
|
42
|
+
const s = useSettingsStore.getState()
|
|
43
|
+
return {
|
|
44
|
+
core: trimSetting(s.getSetting(SETTINGS.cloud_core_url.key)),
|
|
45
|
+
runtime: trimSetting(s.getSetting(SETTINGS.cloud_runtime_url.key)),
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function resolveCloudUrlReconnectTarget(urls: CloudUrlOverrides): {core: string; runtime: string} | null | undefined {
|
|
50
|
+
const core = trimSetting(urls.core)
|
|
51
|
+
const runtime = trimSetting(urls.runtime)
|
|
52
|
+
if (!core && !runtime) return undefined
|
|
53
|
+
|
|
54
|
+
const config = getConfigValues()
|
|
55
|
+
const resolvedCore = core || config.coreUrl?.trim()
|
|
56
|
+
const resolvedRuntime = runtime || config.runtimeUrl?.trim()
|
|
57
|
+
return resolvedCore && resolvedRuntime ? {core: resolvedCore, runtime: resolvedRuntime} : null
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function trimSetting(value: unknown): string | undefined {
|
|
61
|
+
return typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function projectRuntimeStatus() {
|
|
65
|
+
const core = useCoreStore.getState()
|
|
66
|
+
const glasses = useGlassesStore.getState()
|
|
67
|
+
const connection = useConnectionStore.getState()
|
|
68
|
+
const cloudClient = useCloudClientStatusStore.getState()
|
|
69
|
+
return {
|
|
70
|
+
searching: core.searching,
|
|
71
|
+
// Copy: the snapshot must not hand callers a mutable reference into the store.
|
|
72
|
+
micRanking: [...core.micRanking],
|
|
73
|
+
currentMic: core.currentMic,
|
|
74
|
+
systemMicUnavailable: core.systemMicUnavailable,
|
|
75
|
+
glassesConnected: glasses.connection.state === "connected",
|
|
76
|
+
glassesFullyBooted: isGlassesReady(glasses.connection),
|
|
77
|
+
bluetoothClassicConnected: glasses.bluetoothClassicConnected,
|
|
78
|
+
coreStatus: connection.status,
|
|
79
|
+
cloudClientStatus: cloudClient.status,
|
|
80
|
+
cloudClientAudioTransport: cloudClient.audioTransport,
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export type DevRuntimeStatusSnapshot = ReturnType<typeof projectRuntimeStatus>
|
|
85
|
+
|
|
86
|
+
export const dev = {
|
|
87
|
+
/** The cloud-v2 core/runtime URL overrides. */
|
|
88
|
+
cloudUrls: (): {core?: string; runtime?: string} => {
|
|
89
|
+
const s = useSettingsStore.getState()
|
|
90
|
+
return {core: s.getSetting(SETTINGS.cloud_core_url.key), runtime: s.getSetting(SETTINGS.cloud_runtime_url.key)}
|
|
91
|
+
},
|
|
92
|
+
/** Override the cloud-v2 URLs and reconnect the live client onto them. */
|
|
93
|
+
setCloudUrls: (urls: {core?: string; runtime?: string}) => {
|
|
94
|
+
const next = {...currentCloudUrlOverrides(), ...urls}
|
|
95
|
+
const resolved = resolveCloudUrlReconnectTarget(next)
|
|
96
|
+
if (resolved === null) {
|
|
97
|
+
console.warn("engine.dev.setCloudUrls: ignoring partial cloud override without a resolvable sibling endpoint")
|
|
98
|
+
return
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const s = useSettingsStore.getState()
|
|
102
|
+
if (urls.core !== undefined) s.setSetting(SETTINGS.cloud_core_url.key, urls.core)
|
|
103
|
+
if (urls.runtime !== undefined) s.setSetting(SETTINGS.cloud_runtime_url.key, urls.runtime)
|
|
104
|
+
if (resolved === undefined) {
|
|
105
|
+
cloudClientService.reconnect(null)
|
|
106
|
+
} else {
|
|
107
|
+
cloudClientService.reconnect(resolved)
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
|
|
111
|
+
/** Tear down + rebuild the live cloud client (the dev "reconnect" button). */
|
|
112
|
+
reconnectCloud: (): void => applyCloudUrlReconnect(),
|
|
113
|
+
|
|
114
|
+
/** Current native (BLE-process) memory usage in MB — a dev/diagnostics gauge. */
|
|
115
|
+
getMemoryMB: (): number => BluetoothSdk.getMemoryMB(),
|
|
116
|
+
/**
|
|
117
|
+
* Phone-side bluetooth runtime snapshot (the core store read-model: scan/mic/
|
|
118
|
+
* search state) — the diagnostics/data-export surface. Shallow copy.
|
|
119
|
+
*/
|
|
120
|
+
bluetoothStatus: (): Record<string, unknown> => {
|
|
121
|
+
const {setCoreInfo: _setCoreInfo, reset: _reset, ...state} = useCoreStore.getState()
|
|
122
|
+
return {...state}
|
|
123
|
+
},
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Side-load a miniapp being served from a dev machine (the `mentra dev` / CLI
|
|
127
|
+
* flow) by its URL: probes `<url>/miniapp.json`, and on a reachable manifest
|
|
128
|
+
* registers it under its manifest package so it appears in `engine.miniapps`
|
|
129
|
+
* and can coexist with other dev miniapps. This is the OEM-host equivalent
|
|
130
|
+
* of the first-party
|
|
131
|
+
* developer-URL screen — the registration itself is engine-internal, so a
|
|
132
|
+
* host reaches it here rather than the internal registry. Rendering still
|
|
133
|
+
* flows through the normal display path once the miniapp is started.
|
|
134
|
+
*/
|
|
135
|
+
loadDevMiniapp: async (
|
|
136
|
+
url: string,
|
|
137
|
+
name?: string,
|
|
138
|
+
): Promise<{ok: true; packageName: string; name: string} | {ok: false; error: string}> => {
|
|
139
|
+
const devUrl = url.trim().replace(/\/+$/, "")
|
|
140
|
+
if (!devUrl) return {ok: false, error: "empty url"}
|
|
141
|
+
const result = await decideDevLaunchRoute("", devUrl)
|
|
142
|
+
if (result.decision !== "live") {
|
|
143
|
+
return {ok: false, error: "dev server unreachable, or no miniapp.json served there"}
|
|
144
|
+
}
|
|
145
|
+
const manifest = result.manifest
|
|
146
|
+
// The `mentra-miniapp dev` server puts the hot-reload/log sidecar on the
|
|
147
|
+
// user port PLUS ONE — same convention as the first-party developer-URL
|
|
148
|
+
// screen's deriveDevPort.
|
|
149
|
+
let devPort: number | undefined
|
|
150
|
+
try {
|
|
151
|
+
const parsed = Number(new URL(devUrl).port)
|
|
152
|
+
devPort = Number.isFinite(parsed) && parsed > 0 ? parsed + 1 : undefined
|
|
153
|
+
} catch {
|
|
154
|
+
devPort = undefined
|
|
155
|
+
}
|
|
156
|
+
const appName = name ?? manifest.name ?? "Dev Miniapp"
|
|
157
|
+
const packageName = (manifest.packageName as string | undefined) ?? DEV_APP_PACKAGE_NAME
|
|
158
|
+
const existing = useAppStatusStore.getState().apps.find((app) => app.packageName === packageName)
|
|
159
|
+
if (existing?.running) await useAppStatusStore.getState().stop(packageName)
|
|
160
|
+
await registerDevApp({
|
|
161
|
+
packageName,
|
|
162
|
+
name: appName,
|
|
163
|
+
iconUrl: manifest.icon ? new URL(manifest.icon, `${devUrl}/`).toString() : `${devUrl}/icon.png`,
|
|
164
|
+
devUrl,
|
|
165
|
+
devPort,
|
|
166
|
+
type: manifest.type as DevAppRecord["type"],
|
|
167
|
+
permissions: manifest.permissions as DevAppRecord["permissions"],
|
|
168
|
+
hardwareRequirements: manifest.hardwareRequirements as DevAppRecord["hardwareRequirements"],
|
|
169
|
+
actions: manifest.actions as DevAppRecord["actions"],
|
|
170
|
+
})
|
|
171
|
+
await useAppStatusStore.getState().refresh()
|
|
172
|
+
return {ok: true, packageName, name: appName}
|
|
173
|
+
},
|
|
174
|
+
|
|
175
|
+
/** Current engine runtime status for engine-owned debug surfaces. */
|
|
176
|
+
runtimeStatus: (): DevRuntimeStatusSnapshot => projectRuntimeStatus(),
|
|
177
|
+
|
|
178
|
+
/** Subscribe to the projected engine runtime status; returns an unsubscribe. */
|
|
179
|
+
onRuntimeStatus: (cb: (status: DevRuntimeStatusSnapshot) => void): (() => void) => {
|
|
180
|
+
let last = JSON.stringify(projectRuntimeStatus())
|
|
181
|
+
const notify = () => {
|
|
182
|
+
const snap = projectRuntimeStatus()
|
|
183
|
+
const key = JSON.stringify(snap)
|
|
184
|
+
if (key === last) return
|
|
185
|
+
last = key
|
|
186
|
+
cb(snap)
|
|
187
|
+
}
|
|
188
|
+
const unsubscribers = [
|
|
189
|
+
useCoreStore.subscribe(notify),
|
|
190
|
+
useGlassesStore.subscribe(notify),
|
|
191
|
+
useConnectionStore.subscribe(notify),
|
|
192
|
+
useCloudClientStatusStore.subscribe(notify),
|
|
193
|
+
]
|
|
194
|
+
return () => {
|
|
195
|
+
unsubscribers.forEach((unsubscribe) => unsubscribe())
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* display facade — `engine.display`: the host/OEM display surface. `mirror`
|
|
3
|
+
* exposes the mirrored-view read-model; `text`/`clear` are raw passthroughs to the
|
|
4
|
+
* glasses display for dev tools and escape-hatch use (normal rendering goes through
|
|
5
|
+
* the engine DisplayProcessor / layout system, not these).
|
|
6
|
+
*/
|
|
7
|
+
import BluetoothSdk from "@mentra/bluetooth-sdk/internal"
|
|
8
|
+
import {displayMirror} from "./displayMirror"
|
|
9
|
+
|
|
10
|
+
export const display = {
|
|
11
|
+
/** Mirrored-view read-model (current/onMirror/view/setView). */
|
|
12
|
+
mirror: displayMirror,
|
|
13
|
+
/** Write raw text to the glasses display at (x, y) with a font size. */
|
|
14
|
+
text: (...args: Parameters<typeof BluetoothSdk.displayText>) => BluetoothSdk.displayText(...args),
|
|
15
|
+
/** Clear the glasses display. */
|
|
16
|
+
clear: (): Promise<void> => BluetoothSdk.clearDisplay(),
|
|
17
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* glasses display mirror — the typed read facade over the (now engine-owned)
|
|
3
|
+
* display store, for a phone-side preview of the glasses screen
|
|
4
|
+
* (`engine.display.mirror`). The store is fed by the display paths
|
|
5
|
+
* (LocalDisplayManager + the cloud path) via `setDisplayEvent`; this facade is the
|
|
6
|
+
* read side: `current()` (snapshot) + `onMirror(cb)` (subscribe). The raw store is
|
|
7
|
+
* also exposed as `engine.displayStore` (the Mentra-app escape hatch).
|
|
8
|
+
*/
|
|
9
|
+
import {useDisplayStore} from "../stores/display"
|
|
10
|
+
|
|
11
|
+
export type DisplayMirrorEvent = Record<string, unknown> & {view?: string; layout?: any}
|
|
12
|
+
|
|
13
|
+
export const displayMirror = {
|
|
14
|
+
/** The display event currently shown on the previewed view (snapshot). */
|
|
15
|
+
current(): DisplayMirrorEvent {
|
|
16
|
+
// Copy: the snapshot must not hand callers a mutable reference into the store.
|
|
17
|
+
return {...useDisplayStore.getState().currentEvent}
|
|
18
|
+
},
|
|
19
|
+
|
|
20
|
+
/** Subscribe to changes of the previewed display event; returns an unsubscribe. */
|
|
21
|
+
onMirror(cb: (event: DisplayMirrorEvent) => void): () => void {
|
|
22
|
+
return useDisplayStore.subscribe((s) => s.currentEvent, cb)
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
/** Which view is previewed — the main screen or the dashboard. */
|
|
26
|
+
view(): string {
|
|
27
|
+
return useDisplayStore.getState().view
|
|
28
|
+
},
|
|
29
|
+
/** Switch the previewed view between `"main"` and `"dashboard"`. */
|
|
30
|
+
setView(view: "main" | "dashboard"): void {
|
|
31
|
+
useDisplayStore.getState().setView(view)
|
|
32
|
+
},
|
|
33
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* gallery facade — `engine.gallery`: the OEM-facing gallery-sync surface. Engine's
|
|
3
|
+
* gallerySyncService orchestrates the sync (hotspot → wifi → HTTP fetch → process →
|
|
4
|
+
* store); this facade exposes the projected status + the structured notices the host
|
|
5
|
+
* renders its own UI from, plus the sync/cancel actions. No host-injected UI — the host
|
|
6
|
+
* owns all alerts/navigation/i18n (it renders them off `onNotice`).
|
|
7
|
+
*/
|
|
8
|
+
import {
|
|
9
|
+
useGallerySyncStore,
|
|
10
|
+
selectSyncProgress,
|
|
11
|
+
selectIssyncing,
|
|
12
|
+
selectGlassesGalleryStatus,
|
|
13
|
+
} from "../stores/gallerySync"
|
|
14
|
+
import {gallerySyncService} from "../services/asg/gallerySyncService"
|
|
15
|
+
import {onGalleryNotice, type GalleryNotice} from "../services/asg/galleryNotices"
|
|
16
|
+
|
|
17
|
+
function projectStatus() {
|
|
18
|
+
const s = useGallerySyncStore.getState()
|
|
19
|
+
const progress = selectSyncProgress(s)
|
|
20
|
+
return {
|
|
21
|
+
...progress,
|
|
22
|
+
processingFiles: Array.from(progress.processingFiles),
|
|
23
|
+
processedFiles: s.processedFiles,
|
|
24
|
+
isSyncing: selectIssyncing(s),
|
|
25
|
+
isStarting: gallerySyncService.isSyncStarting(),
|
|
26
|
+
glassesGallery: selectGlassesGalleryStatus(s),
|
|
27
|
+
// Copy: the snapshot must not hand callers a mutable reference into the store
|
|
28
|
+
// (each queue item is copied too — callers must not mutate them in place).
|
|
29
|
+
queue: s.queue.map((item) => ({...item})),
|
|
30
|
+
queueLength: s.queue.length,
|
|
31
|
+
queueIndex: s.queueIndex,
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export type GallerySyncStatus = ReturnType<typeof projectStatus>
|
|
36
|
+
|
|
37
|
+
export const gallery = {
|
|
38
|
+
/** Snapshot of the current sync state + progress. */
|
|
39
|
+
status: (): GallerySyncStatus => projectStatus(),
|
|
40
|
+
/** Subscribe to sync-state changes; returns an unsubscribe. Deduped on the projected
|
|
41
|
+
* status (the gallerySync store mutates many unrelated fields during a sync), so the
|
|
42
|
+
* host only re-renders when the projection actually changes — matches the other
|
|
43
|
+
* read-model facades. */
|
|
44
|
+
onStatus: (cb: (status: GallerySyncStatus) => void): (() => void) => {
|
|
45
|
+
let last = JSON.stringify(projectStatus())
|
|
46
|
+
return useGallerySyncStore.subscribe(() => {
|
|
47
|
+
const status = projectStatus()
|
|
48
|
+
const serialized = JSON.stringify(status)
|
|
49
|
+
if (serialized === last) return
|
|
50
|
+
last = serialized
|
|
51
|
+
cb(status)
|
|
52
|
+
})
|
|
53
|
+
},
|
|
54
|
+
/** Subscribe to user-actionable notices (host renders alerts / settings deep-links). */
|
|
55
|
+
onNotice: (cb: (notice: GalleryNotice) => void): (() => void) => onGalleryNotice(cb),
|
|
56
|
+
|
|
57
|
+
/** Start a gallery sync (the host gates connectivity/permissions first). */
|
|
58
|
+
sync: (): Promise<void> => gallerySyncService.startSync(),
|
|
59
|
+
/** Cancel an in-progress sync. */
|
|
60
|
+
cancel: (): Promise<void> => gallerySyncService.cancelSync(),
|
|
61
|
+
/** Ask glasses to refresh their gallery summary counts. */
|
|
62
|
+
refreshStatus: (): Promise<void> => gallerySyncService.queryGlassesGalleryStatus(),
|
|
63
|
+
/** Remove local files from the current gallery queue after host-owned deletion UI completes. */
|
|
64
|
+
removeFilesFromQueue: (fileNames: string[]): void => useGallerySyncStore.getState().removeFilesFromQueue(fileNames),
|
|
65
|
+
/** Clear the current gallery sync queue after host-owned bulk deletion completes. */
|
|
66
|
+
clearQueue: (): void => useGallerySyncStore.getState().clearQueue(),
|
|
67
|
+
/** Clear the cached glasses gallery summary when product UI observes disconnect. */
|
|
68
|
+
clearGlassesGalleryStatus: (): void => useGallerySyncStore.getState().clearGlassesGalleryStatus(),
|
|
69
|
+
}
|