@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,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MentraUIRouter — bidirectional bus between a per-miniapp UI WebView
|
|
3
|
+
* and its bound background JSContext.
|
|
4
|
+
*
|
|
5
|
+
* The flow:
|
|
6
|
+
*
|
|
7
|
+
* WebView (mentra.send/on) Background (session.ui.send/on)
|
|
8
|
+
* │ │
|
|
9
|
+
* │ window.ReactNativeWebView │
|
|
10
|
+
* │ .postMessage(jsonEnvelope) │ session.sendOneShot({
|
|
11
|
+
* │ │ type: "UI_SEND", channel, payload, seq
|
|
12
|
+
* │ │ })
|
|
13
|
+
* │ │
|
|
14
|
+
* ▼ ▼
|
|
15
|
+
* MiniappHost.onMessage MentraJSRouter (recognises payload.type==="UI_SEND")
|
|
16
|
+
* │ │
|
|
17
|
+
* ▼ ▼
|
|
18
|
+
* ──── MentraUIRouter.routeFromWebView ──── MentraUIRouter.routeFromBackground
|
|
19
|
+
* ──► Crust.mentraJsDispatchToJs ──► webView.injectJavaScript("window.__mentra.recv(...)")
|
|
20
|
+
* {kind:"bridge", raw: JSON({
|
|
21
|
+
* payload:{
|
|
22
|
+
* type:"EVENT", streamType:"_ui",
|
|
23
|
+
* data:{type:"UI_MESSAGE", channel, payload, seq}
|
|
24
|
+
* }})}
|
|
25
|
+
*
|
|
26
|
+
* The router is a singleton — one instance for the whole host process —
|
|
27
|
+
* because only one WebView is allowed open at a time per spec. The
|
|
28
|
+
* binding map is therefore N entries (one per "currently has a UI
|
|
29
|
+
* WebView mounted" miniapp), but in practice it's 0 or 1.
|
|
30
|
+
*
|
|
31
|
+
* UI_OPEN / UI_CLOSE lifecycle envelopes are pushed by the WebView's
|
|
32
|
+
* `mentra.ready()` and the host's WebView teardown handler; the router
|
|
33
|
+
* forwards them to background via the same EVENT/_ui envelope shape.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
interface MentraUIInjectFn {
|
|
37
|
+
(jsSource: string): void
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Subset of the Crust native module that MentraUIRouter touches.
|
|
42
|
+
* Loose binding keeps tests free of Expo imports.
|
|
43
|
+
*/
|
|
44
|
+
export interface MentraUICrustBinding {
|
|
45
|
+
mentraJsDispatchToJs(packageName: string, envelope: Record<string, unknown>): Promise<void> | void
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
interface BoundWebView {
|
|
49
|
+
inject: MentraUIInjectFn
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* NOTE: the WebView ↔ host heartbeat was removed when the lifecycle
|
|
54
|
+
* inversion landed. The current model is **at most one WebView at a
|
|
55
|
+
* time, foreground UI with an always-on background JSContext** (same
|
|
56
|
+
* shape as the cloud-WebView miniapps). User navigation closes it
|
|
57
|
+
* explicitly and `onContentProcessDidTerminate` catches OS-level
|
|
58
|
+
* crashes, but the host may still re-announce UI_OPEN for an already
|
|
59
|
+
* mounted WebView after app resume/dev respawn so the background can
|
|
60
|
+
* push a fresh authoritative snapshot.
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
export class MentraUIRouter {
|
|
64
|
+
private readonly bindings: Map<string, BoundWebView> = new Map()
|
|
65
|
+
private readonly crust: MentraUICrustBinding
|
|
66
|
+
|
|
67
|
+
constructor(crust: MentraUICrustBinding) {
|
|
68
|
+
this.crust = crust
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Called when a UI WebView mounts. `injectFn` wraps
|
|
73
|
+
* `webView.injectJavaScript` — the router calls it with prebuilt
|
|
74
|
+
* `window.__mentra.recv(...)` strings to deliver background-side
|
|
75
|
+
* frames into the WebView's mentra global.
|
|
76
|
+
*
|
|
77
|
+
* The router also pushes a UI_OPEN envelope to the background side
|
|
78
|
+
* once the WebView signals ready (see {@link routeFromWebView}).
|
|
79
|
+
* Calling bindWebView on a packageName that already has a binding
|
|
80
|
+
* replaces the previous one (defensive — should not happen in
|
|
81
|
+
* practice because only one WebView is open at a time).
|
|
82
|
+
*/
|
|
83
|
+
bindWebView(packageName: string, injectFn: MentraUIInjectFn): void {
|
|
84
|
+
this.bindings.set(packageName, {inject: injectFn})
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Called when the WebView unmounts (user navigated away or the host
|
|
89
|
+
* tore it down on heartbeat timeout). Pushes UI_CLOSE to background
|
|
90
|
+
* so handlers can flush state, then drops the binding.
|
|
91
|
+
*/
|
|
92
|
+
unbindWebView(packageName: string): void {
|
|
93
|
+
if (!this.bindings.has(packageName)) return
|
|
94
|
+
this.bindings.delete(packageName)
|
|
95
|
+
this.deliverToBackground(packageName, {type: "UI_CLOSE"})
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/** True iff a WebView is currently bound to the named package. */
|
|
99
|
+
isBound(packageName: string): boolean {
|
|
100
|
+
return this.bindings.has(packageName)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Re-announce the already-mounted WebView to the background JSContext.
|
|
105
|
+
* This covers dev background hot-reload, app resume, and thawed WebViews
|
|
106
|
+
* whose injected UI_SEND frames may have been missed while the host was
|
|
107
|
+
* suspended. Re-emitting UI_OPEN flips `ui.bound` back to true if needed
|
|
108
|
+
* and lets background code push a fresh snapshot via session.ui.onOpen.
|
|
109
|
+
*
|
|
110
|
+
* No-op if no WebView is currently bound for the package.
|
|
111
|
+
*/
|
|
112
|
+
notifyReopen(packageName: string): void {
|
|
113
|
+
if (!this.bindings.has(packageName)) return
|
|
114
|
+
this.deliverToBackground(packageName, {type: "UI_OPEN"})
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Forward a WebView-originated postMessage envelope to the JSContext.
|
|
119
|
+
* `rawJson` is the raw string from `event.nativeEvent.data` — the
|
|
120
|
+
* caller hasn't parsed it yet so the router controls the wire format
|
|
121
|
+
* end-to-end.
|
|
122
|
+
*
|
|
123
|
+
* Recognised envelope types from the WebView shim:
|
|
124
|
+
* - {type: "ready"} → fire UI_OPEN
|
|
125
|
+
* - {type: "msg", seq, channel, payload} → fire UI_MESSAGE
|
|
126
|
+
* - {type: "heartbeat", seq} → silently ack
|
|
127
|
+
*/
|
|
128
|
+
routeFromWebView(packageName: string, rawJson: string): void {
|
|
129
|
+
let env: {
|
|
130
|
+
type?: string
|
|
131
|
+
seq?: number
|
|
132
|
+
channel?: string
|
|
133
|
+
payload?: unknown
|
|
134
|
+
requestId?: string
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
env = JSON.parse(rawJson)
|
|
138
|
+
} catch {
|
|
139
|
+
return
|
|
140
|
+
}
|
|
141
|
+
if (typeof env.type !== "string") return
|
|
142
|
+
|
|
143
|
+
if (env.type === "ready") {
|
|
144
|
+
this.deliverToBackground(packageName, {type: "UI_OPEN"})
|
|
145
|
+
return
|
|
146
|
+
}
|
|
147
|
+
if (env.type === "msg" && typeof env.channel === "string") {
|
|
148
|
+
const out: Record<string, unknown> = {
|
|
149
|
+
type: "UI_MESSAGE",
|
|
150
|
+
channel: env.channel,
|
|
151
|
+
payload: env.payload,
|
|
152
|
+
seq: env.seq,
|
|
153
|
+
}
|
|
154
|
+
if (typeof env.requestId === "string") out.requestId = env.requestId
|
|
155
|
+
this.deliverToBackground(packageName, out)
|
|
156
|
+
return
|
|
157
|
+
}
|
|
158
|
+
if (env.type === "cancel" && typeof env.requestId === "string") {
|
|
159
|
+
this.deliverToBackground(packageName, {type: "UI_CANCEL", requestId: env.requestId})
|
|
160
|
+
return
|
|
161
|
+
}
|
|
162
|
+
// NOTE: console.* logs do NOT come through this router. The
|
|
163
|
+
// miniappGlobals console-tap shim posts {payload:{type:"dev_log"}}
|
|
164
|
+
// envelopes which LocalMiniappRuntime handles and forwards to the
|
|
165
|
+
// dev sidecar tagged source:"ui". Keeping that path one-way means
|
|
166
|
+
// we don't have two console-capture pipelines competing.
|
|
167
|
+
//
|
|
168
|
+
// Unknown envelope — drop silently.
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Called by MentraJSRouter when it sees a `__bridge.send` outbound
|
|
173
|
+
* frame whose parsed payload is a UI_SEND envelope. The router
|
|
174
|
+
* forwards it as a `msg` frame to the bound WebView (or drops if no
|
|
175
|
+
* WebView is currently mounted).
|
|
176
|
+
*
|
|
177
|
+
* `uiSendPayload` is the raw `{type:"UI_SEND", channel, payload, seq}`
|
|
178
|
+
* shape produced by `session.ui.send` on the background side.
|
|
179
|
+
*/
|
|
180
|
+
routeFromBackground(
|
|
181
|
+
packageName: string,
|
|
182
|
+
uiSendPayload: {
|
|
183
|
+
type: string
|
|
184
|
+
channel?: string
|
|
185
|
+
payload?: unknown
|
|
186
|
+
seq?: number
|
|
187
|
+
requestId?: string
|
|
188
|
+
},
|
|
189
|
+
): void {
|
|
190
|
+
const binding = this.bindings.get(packageName)
|
|
191
|
+
if (!binding) return
|
|
192
|
+
if (uiSendPayload.type === "UI_CANCEL" && typeof uiSendPayload.requestId === "string") {
|
|
193
|
+
const cancel = {type: "cancel", requestId: uiSendPayload.requestId}
|
|
194
|
+
const literal = JSON.stringify(cancel)
|
|
195
|
+
const escaped = JSON.stringify(literal)
|
|
196
|
+
binding.inject(`if (window.__mentra && window.__mentra.recv) window.__mentra.recv(JSON.parse(${escaped})); true;`)
|
|
197
|
+
return
|
|
198
|
+
}
|
|
199
|
+
const outbound: Record<string, unknown> = {
|
|
200
|
+
type: "msg",
|
|
201
|
+
seq: uiSendPayload.seq ?? 0,
|
|
202
|
+
channel: uiSendPayload.channel,
|
|
203
|
+
payload: uiSendPayload.payload,
|
|
204
|
+
}
|
|
205
|
+
if (typeof uiSendPayload.requestId === "string") outbound.requestId = uiSendPayload.requestId
|
|
206
|
+
const literal = JSON.stringify(outbound)
|
|
207
|
+
const escaped = JSON.stringify(literal)
|
|
208
|
+
binding.inject(`if (window.__mentra && window.__mentra.recv) window.__mentra.recv(JSON.parse(${escaped})); true;`)
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Send a synthetic frame to the WebView. Used for host-initiated
|
|
213
|
+
* lifecycle events (`open`, `close`, `ack`). The wire shape is the
|
|
214
|
+
* same as the WebView shim's recv handler expects.
|
|
215
|
+
*/
|
|
216
|
+
pushLifecycleFrame(packageName: string, frame: {type: "open" | "close" | "ack"; seq?: number}): void {
|
|
217
|
+
const binding = this.bindings.get(packageName)
|
|
218
|
+
if (!binding) return
|
|
219
|
+
const literal = JSON.stringify(frame)
|
|
220
|
+
const escaped = JSON.stringify(literal)
|
|
221
|
+
binding.inject(`if (window.__mentra && window.__mentra.recv) window.__mentra.recv(JSON.parse(${escaped})); true;`)
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Wrap an EVENT envelope and push it to background via the bridge.
|
|
226
|
+
* Background's UIModule listens for stream `_ui`. The `type` is the
|
|
227
|
+
* wire value `miniapp_event` — must match `MiniappResponseType.EVENT`
|
|
228
|
+
* exactly, otherwise the SDK's session switch falls through and the
|
|
229
|
+
* `_ui` fan-out never fires (bound stays false; `ui.send` drops).
|
|
230
|
+
*/
|
|
231
|
+
private deliverToBackground(packageName: string, data: Record<string, unknown>): void {
|
|
232
|
+
const innerEnvelope = {
|
|
233
|
+
payload: {
|
|
234
|
+
type: "miniapp_event",
|
|
235
|
+
streamType: "_ui",
|
|
236
|
+
data,
|
|
237
|
+
},
|
|
238
|
+
}
|
|
239
|
+
void this.crust.mentraJsDispatchToJs(packageName, {
|
|
240
|
+
kind: "bridge",
|
|
241
|
+
raw: JSON.stringify(innerEnvelope),
|
|
242
|
+
})
|
|
243
|
+
}
|
|
244
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MicStateCoordinator
|
|
3
|
+
*
|
|
4
|
+
* Owns local-miniapp-driven microphone requirements.
|
|
5
|
+
*
|
|
6
|
+
* Local miniapps subscribe to audio_chunk / transcription streams.
|
|
7
|
+
* This coordinator pushes the aggregate local requirement set to BluetoothSdk
|
|
8
|
+
* so the mic runs whenever at least one local consumer needs it.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import BluetoothSdk from "@mentra/bluetooth-sdk/internal"
|
|
12
|
+
|
|
13
|
+
import {createDebouncedPatchFlusher} from "../utils/debouncedPatch"
|
|
14
|
+
|
|
15
|
+
const LOG_TAG = "MIC_COORDINATOR"
|
|
16
|
+
|
|
17
|
+
/** Mic-requirement flips are debounced (300ms) and merged into one BLE write
|
|
18
|
+
* (wire v2 keeps BLE JSON small and infrequent). */
|
|
19
|
+
const flushMicRequirementsPatch = createDebouncedPatchFlusher<Record<string, unknown>>((patch) => {
|
|
20
|
+
try {
|
|
21
|
+
void Promise.resolve(BluetoothSdk.updateBluetoothSettings(patch)).catch((err) => {
|
|
22
|
+
console.error(`${LOG_TAG}: failed to apply mic requirements:`, err)
|
|
23
|
+
})
|
|
24
|
+
} catch (err) {
|
|
25
|
+
console.error(`${LOG_TAG}: failed to apply mic requirements:`, err)
|
|
26
|
+
}
|
|
27
|
+
}, 300)
|
|
28
|
+
|
|
29
|
+
class MicStateCoordinator {
|
|
30
|
+
private static instance: MicStateCoordinator | null = null
|
|
31
|
+
|
|
32
|
+
// Local miniapp requirements (set when miniapps subscribe to audio streams)
|
|
33
|
+
private localWantsPcm = false
|
|
34
|
+
private localWantsLc3 = false
|
|
35
|
+
|
|
36
|
+
private constructor() {}
|
|
37
|
+
|
|
38
|
+
public static getInstance(): MicStateCoordinator {
|
|
39
|
+
if (!MicStateCoordinator.instance) {
|
|
40
|
+
MicStateCoordinator.instance = new MicStateCoordinator()
|
|
41
|
+
}
|
|
42
|
+
return MicStateCoordinator.instance
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Update local miniapp requirements. Called by LocalMiniappRuntime when
|
|
47
|
+
* the aggregated set of local subscriptions changes.
|
|
48
|
+
*/
|
|
49
|
+
public setLocalRequirements(req: {pcm: boolean; lc3: boolean}): void {
|
|
50
|
+
this.localWantsPcm = req.pcm
|
|
51
|
+
this.localWantsLc3 = req.lc3
|
|
52
|
+
console.log(`${LOG_TAG}: local requirements updated — pcm=${req.pcm} lc3=${req.lc3}`)
|
|
53
|
+
this.applyUnion()
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Push local requirements to BluetoothSdk. `should_send_pcm` is strictly for
|
|
58
|
+
* on-device PCM consumers; cloud audio uses LC3 through AudioCloudUplink.
|
|
59
|
+
*/
|
|
60
|
+
private applyUnion(): void {
|
|
61
|
+
const shouldSendPcm = this.localWantsPcm
|
|
62
|
+
const shouldSendLc3 = this.localWantsLc3
|
|
63
|
+
|
|
64
|
+
// console.log(
|
|
65
|
+
// `${LOG_TAG}: applying requirements — pcm=${shouldSendPcm} lc3=${shouldSendLc3}`,
|
|
66
|
+
// )
|
|
67
|
+
|
|
68
|
+
// The mic control plane is a direct btsdk call now (was a host setMicRequirements
|
|
69
|
+
// hook) so a bare OEM streams audio without wiring it.
|
|
70
|
+
flushMicRequirementsPatch({
|
|
71
|
+
should_send_pcm: shouldSendPcm,
|
|
72
|
+
should_send_lc3: shouldSendLc3,
|
|
73
|
+
should_send_transcript: false,
|
|
74
|
+
})
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Reset all requirements to off. Called during cleanup.
|
|
79
|
+
*/
|
|
80
|
+
public reset(): void {
|
|
81
|
+
this.localWantsPcm = false
|
|
82
|
+
this.localWantsLc3 = false
|
|
83
|
+
this.applyUnion()
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
public cleanup(): void {
|
|
87
|
+
console.log(`${LOG_TAG}: cleanup()`)
|
|
88
|
+
this.reset()
|
|
89
|
+
MicStateCoordinator.instance = null
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const micStateCoordinator = MicStateCoordinator.getInstance()
|
|
94
|
+
export default micStateCoordinator
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MiniappEngine — constructs the MentraJS router singletons (crash controller,
|
|
3
|
+
* UI router, JS router), binds them to the native Crust module + the launcher,
|
|
4
|
+
* wires the dev-server background-respawn signal, and starts the message pump.
|
|
5
|
+
*
|
|
6
|
+
* Engine owns this so a bare OEM's `engine.start()` brings up the local-miniapp
|
|
7
|
+
* engine with no host construction step. Host-only concerns that remain outside
|
|
8
|
+
* engine, such as Mentra-app crashloop telemetry, are attached by the host after
|
|
9
|
+
* this returns via `router.onCrashloop` / `router.onRestartToast`.
|
|
10
|
+
*
|
|
11
|
+
* Idempotent — `ensureMiniappEngine()` returns the same singletons on every call,
|
|
12
|
+
* so it's safe to call from both `engine.start()` and the host bootstrap.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import CrustModule from "@mentra/crust"
|
|
16
|
+
|
|
17
|
+
import devServerBridge from "./DevServerBridge"
|
|
18
|
+
import localMiniappRuntime from "./LocalMiniappRuntime"
|
|
19
|
+
import {miniappLauncher} from "./MiniappLauncher"
|
|
20
|
+
import {MentraJSCrashController} from "./MentraJSCrashController"
|
|
21
|
+
import {MentraJSRouter, type MentraJSCrustBinding} from "./MentraJSRouter"
|
|
22
|
+
import {MentraUIRouter} from "./MentraUIRouter"
|
|
23
|
+
|
|
24
|
+
export interface MiniappEngine {
|
|
25
|
+
router: MentraJSRouter
|
|
26
|
+
uiRouter: MentraUIRouter
|
|
27
|
+
crashController: MentraJSCrashController
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
let engine: MiniappEngine | null = null
|
|
31
|
+
|
|
32
|
+
function wireDevServerRespawnBackground(router: MentraJSRouter, uiRouter: MentraUIRouter): void {
|
|
33
|
+
devServerBridge.onRespawnBackground(async (packageName) => {
|
|
34
|
+
try {
|
|
35
|
+
// Re-resolve the freshly built bundle (dev: HTTP off the dev server;
|
|
36
|
+
// released: file:// snapshot) via the launcher's shared recipe. Carries
|
|
37
|
+
// the declared permissions + manifest across the respawn — omitting them
|
|
38
|
+
// would respawn the JSContext with no permissions, so SUBSCRIBE gates and
|
|
39
|
+
// per-call dispatch checks would start rejecting after a background
|
|
40
|
+
// hot-reload.
|
|
41
|
+
const resolved = await miniappLauncher.resolveBundle(packageName)
|
|
42
|
+
if (!resolved) {
|
|
43
|
+
console.warn(`MentraJS: respawn-bg could not resolve bundle for ${packageName}`)
|
|
44
|
+
return
|
|
45
|
+
}
|
|
46
|
+
// Force a respawn (kill + spawn) rather than launcher.ensureRunning,
|
|
47
|
+
// which is idempotent and would no-op an already-registered context.
|
|
48
|
+
await router.unregister(packageName)
|
|
49
|
+
const ok = await router.spawnAndRegister(packageName, resolved.bgSource, {
|
|
50
|
+
permissions: resolved.declaredPermissions,
|
|
51
|
+
installedManifest: resolved.installedManifest,
|
|
52
|
+
})
|
|
53
|
+
if (!ok) {
|
|
54
|
+
console.warn(`MentraJS: respawn-bg failed for ${packageName}`)
|
|
55
|
+
return
|
|
56
|
+
}
|
|
57
|
+
// The respawned JSContext is a fresh MiniappSession with ui.bound false.
|
|
58
|
+
// The mounted WebView won't re-fire mentra.ready() (it's latched), so
|
|
59
|
+
// re-announce it so RPC replies (mentra.request) reach the UI again
|
|
60
|
+
// instead of being dropped while unbound.
|
|
61
|
+
uiRouter.notifyReopen(packageName)
|
|
62
|
+
} catch (e) {
|
|
63
|
+
console.warn(`MentraJS: respawn-bg threw for ${packageName}:`, e)
|
|
64
|
+
}
|
|
65
|
+
})
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Construct (once) and return the MentraJS engine singletons. Starts the router's
|
|
70
|
+
* message pump on first call. Subsequent calls return the same instances.
|
|
71
|
+
*/
|
|
72
|
+
export function ensureMiniappEngine(): MiniappEngine {
|
|
73
|
+
if (engine) {
|
|
74
|
+
wireDevServerRespawnBackground(engine.router, engine.uiRouter)
|
|
75
|
+
engine.router.start()
|
|
76
|
+
return engine
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// The Crust native module's published TS typing doesn't include the new
|
|
80
|
+
// mentraJs* functions until expo prebuild regenerates it; cast to the binding
|
|
81
|
+
// shapes the routers expect.
|
|
82
|
+
const crust = CrustModule as unknown as MentraJSCrustBinding
|
|
83
|
+
|
|
84
|
+
const crashController = new MentraJSCrashController({
|
|
85
|
+
maxRetries: 3,
|
|
86
|
+
})
|
|
87
|
+
const uiRouter = new MentraUIRouter({
|
|
88
|
+
mentraJsDispatchToJs: (packageName: string, envelope: Record<string, unknown>) =>
|
|
89
|
+
(
|
|
90
|
+
CrustModule as unknown as {
|
|
91
|
+
mentraJsDispatchToJs: (p: string, e: Record<string, unknown>) => Promise<void>
|
|
92
|
+
}
|
|
93
|
+
).mentraJsDispatchToJs(packageName, envelope),
|
|
94
|
+
})
|
|
95
|
+
const router = new MentraJSRouter(localMiniappRuntime, crust)
|
|
96
|
+
router.crashController = crashController
|
|
97
|
+
router.uiRouter = uiRouter
|
|
98
|
+
|
|
99
|
+
// Hand the router to the engine MiniappLauncher so headless launch/teardown
|
|
100
|
+
// (apps.ts start/stop, the action broker, the WebView mount path) all spawn
|
|
101
|
+
// through one place.
|
|
102
|
+
miniappLauncher.configure({router})
|
|
103
|
+
|
|
104
|
+
// Wire up the dev server's "respawn-bg" signal so a touch under
|
|
105
|
+
// src/background/ kills + re-spawns the JSContext with the latest bundle.
|
|
106
|
+
// The WebView reload path stays separate (devServerBridge.onReload).
|
|
107
|
+
wireDevServerRespawnBackground(router, uiRouter)
|
|
108
|
+
|
|
109
|
+
router.start()
|
|
110
|
+
|
|
111
|
+
engine = {router, uiRouter, crashController}
|
|
112
|
+
return engine
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/** Stop the MentraJS message pump and tear down router-managed JSContexts. */
|
|
116
|
+
export async function stopMiniappEngine(): Promise<void> {
|
|
117
|
+
const current = engine
|
|
118
|
+
if (!current) return
|
|
119
|
+
// Null the singleton BEFORE the async teardown below: a concurrent
|
|
120
|
+
// ensureMiniappEngine() must construct fresh instead of re-starting (and
|
|
121
|
+
// re-subscribing) the router that is mid-teardown, which would leak a zombie
|
|
122
|
+
// Crust subscription once this function finishes.
|
|
123
|
+
engine = null
|
|
124
|
+
|
|
125
|
+
devServerBridge.clearRespawnBackgroundHandler()
|
|
126
|
+
current.router.stop()
|
|
127
|
+
|
|
128
|
+
const packages = current.router.registeredPackages()
|
|
129
|
+
await Promise.all(
|
|
130
|
+
packages.map(async (packageName) => {
|
|
131
|
+
try {
|
|
132
|
+
await current.router.unregister(packageName)
|
|
133
|
+
} catch (err) {
|
|
134
|
+
console.warn(`MentraJS: failed to unregister ${packageName} during stop:`, err)
|
|
135
|
+
}
|
|
136
|
+
}),
|
|
137
|
+
)
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/** Returns the engine singletons if already constructed, else null. */
|
|
141
|
+
export function getMiniappEngine(): MiniappEngine | null {
|
|
142
|
+
return engine
|
|
143
|
+
}
|