@glassly/engine 0.1.0-dev.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 +96 -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 +336 -0
- package/build/engine.d.ts.map +1 -0
- package/build/engine.js +198 -0
- package/build/engine.js.map +1 -0
- package/build/facades/dev.d.ts +69 -0
- package/build/facades/dev.d.ts.map +1 -0
- package/build/facades/dev.js +204 -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 +142 -0
- package/build/facades/glasses.d.ts.map +1 -0
- package/build/facades/glasses.js +214 -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 +55 -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/maps.d.ts +18 -0
- package/build/facades/maps.d.ts.map +1 -0
- package/build/facades/maps.js +13 -0
- package/build/facades/maps.js.map +1 -0
- package/build/facades/memory.d.ts +38 -0
- package/build/facades/memory.d.ts.map +1 -0
- package/build/facades/memory.js +33 -0
- package/build/facades/memory.js.map +1 -0
- package/build/facades/miniapps.d.ts +47 -0
- package/build/facades/miniapps.d.ts.map +1 -0
- package/build/facades/miniapps.js +54 -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 +106 -0
- package/build/facades/ota.d.ts.map +1 -0
- package/build/facades/ota.js +159 -0
- package/build/facades/ota.js.map +1 -0
- package/build/facades/pairing.d.ts +115 -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 +17 -0
- package/build/facades/phoneNotifications.d.ts.map +1 -0
- package/build/facades/phoneNotifications.js +41 -0
- package/build/facades/phoneNotifications.js.map +1 -0
- package/build/facades/providerKeys.d.ts +26 -0
- package/build/facades/providerKeys.d.ts.map +1 -0
- package/build/facades/providerKeys.js +26 -0
- package/build/facades/providerKeys.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/speakers.d.ts +41 -0
- package/build/facades/speakers.d.ts.map +1 -0
- package/build/facades/speakers.js +139 -0
- package/build/facades/speakers.js.map +1 -0
- package/build/facades/speech.d.ts +44 -0
- package/build/facades/speech.d.ts.map +1 -0
- package/build/facades/speech.js +46 -0
- package/build/facades/speech.js.map +1 -0
- package/build/index.d.ts +48 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +49 -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 +115 -0
- package/build/runtime/bootstrap.d.ts.map +1 -0
- package/build/runtime/bootstrap.js +73 -0
- package/build/runtime/bootstrap.js.map +1 -0
- package/build/runtime/config.d.ts +152 -0
- package/build/runtime/config.d.ts.map +1 -0
- package/build/runtime/config.js +19 -0
- package/build/runtime/config.js.map +1 -0
- package/build/runtime/scanQrSeam.d.ts +7 -0
- package/build/runtime/scanQrSeam.d.ts.map +1 -0
- package/build/runtime/scanQrSeam.js +16 -0
- package/build/runtime/scanQrSeam.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/AiTierResolution.d.ts +61 -0
- package/build/services/AiTierResolution.d.ts.map +1 -0
- package/build/services/AiTierResolution.js +83 -0
- package/build/services/AiTierResolution.js.map +1 -0
- package/build/services/AppRegistry.d.ts +303 -0
- package/build/services/AppRegistry.d.ts.map +1 -0
- package/build/services/AppRegistry.js +1108 -0
- package/build/services/AppRegistry.js.map +1 -0
- package/build/services/AudioCloudUplink.d.ts +15 -0
- package/build/services/AudioCloudUplink.d.ts.map +1 -0
- package/build/services/AudioCloudUplink.js +54 -0
- package/build/services/AudioCloudUplink.js.map +1 -0
- package/build/services/AudioPlaybackService.d.ts +183 -0
- package/build/services/AudioPlaybackService.d.ts.map +1 -0
- package/build/services/AudioPlaybackService.js +750 -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 +106 -0
- package/build/services/BlobStore.d.ts.map +1 -0
- package/build/services/BlobStore.js +741 -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 +51 -0
- package/build/services/CloudAudioSubscriptionSync.js.map +1 -0
- package/build/services/CloudClientService.d.ts +293 -0
- package/build/services/CloudClientService.d.ts.map +1 -0
- package/build/services/CloudClientService.js +965 -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 +296 -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 +214 -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/ForegroundLocationPermission.d.ts +13 -0
- package/build/services/ForegroundLocationPermission.d.ts.map +1 -0
- package/build/services/ForegroundLocationPermission.js +12 -0
- package/build/services/ForegroundLocationPermission.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 +127 -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 +33 -0
- package/build/services/HeadingService.d.ts.map +1 -0
- package/build/services/HeadingService.js +123 -0
- package/build/services/HeadingService.js.map +1 -0
- package/build/services/HotspotOtaTransport.d.ts +29 -0
- package/build/services/HotspotOtaTransport.d.ts.map +1 -0
- package/build/services/HotspotOtaTransport.js +146 -0
- package/build/services/HotspotOtaTransport.js.map +1 -0
- package/build/services/HotspotShutdown.d.ts +17 -0
- package/build/services/HotspotShutdown.d.ts.map +1 -0
- package/build/services/HotspotShutdown.js +29 -0
- package/build/services/HotspotShutdown.js.map +1 -0
- package/build/services/JSCrashController.d.ts +97 -0
- package/build/services/JSCrashController.d.ts.map +1 -0
- package/build/services/JSCrashController.js +138 -0
- package/build/services/JSCrashController.js.map +1 -0
- package/build/services/JSCrashloopReportService.d.ts +9 -0
- package/build/services/JSCrashloopReportService.d.ts.map +1 -0
- package/build/services/JSCrashloopReportService.js +54 -0
- package/build/services/JSCrashloopReportService.js.map +1 -0
- package/build/services/JSLogPipeline.d.ts +87 -0
- package/build/services/JSLogPipeline.d.ts.map +1 -0
- package/build/services/JSLogPipeline.js +137 -0
- package/build/services/JSLogPipeline.js.map +1 -0
- package/build/services/JSRouter.d.ts +203 -0
- package/build/services/JSRouter.d.ts.map +1 -0
- package/build/services/JSRouter.js +482 -0
- package/build/services/JSRouter.js.map +1 -0
- package/build/services/LocalDisplayManager.d.ts +162 -0
- package/build/services/LocalDisplayManager.d.ts.map +1 -0
- package/build/services/LocalDisplayManager.js +687 -0
- package/build/services/LocalDisplayManager.js.map +1 -0
- package/build/services/LocalMiniappDataMigration.d.ts +46 -0
- package/build/services/LocalMiniappDataMigration.d.ts.map +1 -0
- package/build/services/LocalMiniappDataMigration.js +78 -0
- package/build/services/LocalMiniappDataMigration.js.map +1 -0
- package/build/services/LocalMiniappRuntime.d.ts +677 -0
- package/build/services/LocalMiniappRuntime.d.ts.map +1 -0
- package/build/services/LocalMiniappRuntime.js +5068 -0
- package/build/services/LocalMiniappRuntime.js.map +1 -0
- package/build/services/LocalMiniappStorage.d.ts +32 -0
- package/build/services/LocalMiniappStorage.d.ts.map +1 -0
- package/build/services/LocalMiniappStorage.js +66 -0
- package/build/services/LocalMiniappStorage.js.map +1 -0
- package/build/services/LocalMiniappUserIdentity.d.ts +41 -0
- package/build/services/LocalMiniappUserIdentity.d.ts.map +1 -0
- package/build/services/LocalMiniappUserIdentity.js +73 -0
- package/build/services/LocalMiniappUserIdentity.js.map +1 -0
- package/build/services/LocalSttFallbackCoordinator.d.ts +101 -0
- package/build/services/LocalSttFallbackCoordinator.d.ts.map +1 -0
- package/build/services/LocalSttFallbackCoordinator.js +210 -0
- package/build/services/LocalSttFallbackCoordinator.js.map +1 -0
- package/build/services/MapboxTokenService.d.ts +33 -0
- package/build/services/MapboxTokenService.d.ts.map +1 -0
- package/build/services/MapboxTokenService.js +115 -0
- package/build/services/MapboxTokenService.js.map +1 -0
- package/build/services/MemoryCapture.d.ts +40 -0
- package/build/services/MemoryCapture.d.ts.map +1 -0
- package/build/services/MemoryCapture.js +42 -0
- package/build/services/MemoryCapture.js.map +1 -0
- package/build/services/MemoryStore.d.ts +184 -0
- package/build/services/MemoryStore.d.ts.map +1 -0
- package/build/services/MemoryStore.js +541 -0
- package/build/services/MemoryStore.js.map +1 -0
- package/build/services/MicStateCoordinator.d.ts +78 -0
- package/build/services/MicStateCoordinator.d.ts.map +1 -0
- package/build/services/MicStateCoordinator.js +219 -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 +127 -0
- package/build/services/MiniappLauncher.d.ts.map +1 -0
- package/build/services/MiniappLauncher.js +309 -0
- package/build/services/MiniappLauncher.js.map +1 -0
- package/build/services/MiniappLiveness.d.ts +12 -0
- package/build/services/MiniappLiveness.d.ts.map +1 -0
- package/build/services/MiniappLiveness.js +16 -0
- package/build/services/MiniappLiveness.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/NativeNavigationService.d.ts +51 -0
- package/build/services/NativeNavigationService.d.ts.map +1 -0
- package/build/services/NativeNavigationService.js +154 -0
- package/build/services/NativeNavigationService.js.map +1 -0
- package/build/services/NavigationHandlers.d.ts +107 -0
- package/build/services/NavigationHandlers.d.ts.map +1 -0
- package/build/services/NavigationHandlers.js +479 -0
- package/build/services/NavigationHandlers.js.map +1 -0
- package/build/services/NavigationService.d.ts +283 -0
- package/build/services/NavigationService.d.ts.map +1 -0
- package/build/services/NavigationService.js +696 -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/OtaArtifactDownloader.d.ts +65 -0
- package/build/services/OtaArtifactDownloader.d.ts.map +1 -0
- package/build/services/OtaArtifactDownloader.js +226 -0
- package/build/services/OtaArtifactDownloader.js.map +1 -0
- package/build/services/OtaInstallCoordinator.d.ts +275 -0
- package/build/services/OtaInstallCoordinator.d.ts.map +1 -0
- package/build/services/OtaInstallCoordinator.js +1491 -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 +72 -0
- package/build/services/OtaService.js.map +1 -0
- package/build/services/OtaUpdateCheckService.d.ts +100 -0
- package/build/services/OtaUpdateCheckService.d.ts.map +1 -0
- package/build/services/OtaUpdateCheckService.js +380 -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 +45 -0
- package/build/services/PhoneCalendarService.js.map +1 -0
- package/build/services/PhoneCameraFovCoordinator.d.ts +30 -0
- package/build/services/PhoneCameraFovCoordinator.d.ts.map +1 -0
- package/build/services/PhoneCameraFovCoordinator.js +194 -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 +37 -0
- package/build/services/PhoneNotificationsSync.js.map +1 -0
- package/build/services/PhonePhotoCoordinator.d.ts +110 -0
- package/build/services/PhonePhotoCoordinator.d.ts.map +1 -0
- package/build/services/PhonePhotoCoordinator.js +344 -0
- package/build/services/PhonePhotoCoordinator.js.map +1 -0
- package/build/services/PhoneStreamCoordinator.d.ts +175 -0
- package/build/services/PhoneStreamCoordinator.d.ts.map +1 -0
- package/build/services/PhoneStreamCoordinator.js +740 -0
- package/build/services/PhoneStreamCoordinator.js.map +1 -0
- package/build/services/PhoneVideoCoordinator.d.ts +52 -0
- package/build/services/PhoneVideoCoordinator.d.ts.map +1 -0
- package/build/services/PhoneVideoCoordinator.js +157 -0
- package/build/services/PhoneVideoCoordinator.js.map +1 -0
- package/build/services/ProviderKeyValidation.d.ts +27 -0
- package/build/services/ProviderKeyValidation.d.ts.map +1 -0
- package/build/services/ProviderKeyValidation.js +42 -0
- package/build/services/ProviderKeyValidation.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 +366 -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 +274 -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/SpeakerIdModelManager.d.ts +36 -0
- package/build/services/SpeakerIdModelManager.d.ts.map +1 -0
- package/build/services/SpeakerIdModelManager.js +132 -0
- package/build/services/SpeakerIdModelManager.js.map +1 -0
- package/build/services/SpeakerIdSync.d.ts +14 -0
- package/build/services/SpeakerIdSync.d.ts.map +1 -0
- package/build/services/SpeakerIdSync.js +62 -0
- package/build/services/SpeakerIdSync.js.map +1 -0
- package/build/services/SpeakerLabelResolver.d.ts +80 -0
- package/build/services/SpeakerLabelResolver.d.ts.map +1 -0
- package/build/services/SpeakerLabelResolver.js +108 -0
- package/build/services/SpeakerLabelResolver.js.map +1 -0
- package/build/services/SpeakerProfileStore.d.ts +90 -0
- package/build/services/SpeakerProfileStore.d.ts.map +1 -0
- package/build/services/SpeakerProfileStore.js +213 -0
- package/build/services/SpeakerProfileStore.js.map +1 -0
- package/build/services/SpeakerSegmentResolver.d.ts +87 -0
- package/build/services/SpeakerSegmentResolver.d.ts.map +1 -0
- package/build/services/SpeakerSegmentResolver.js +137 -0
- package/build/services/SpeakerSegmentResolver.js.map +1 -0
- package/build/services/StreamLifecycleController.d.ts +63 -0
- package/build/services/StreamLifecycleController.d.ts.map +1 -0
- package/build/services/StreamLifecycleController.js +148 -0
- package/build/services/StreamLifecycleController.js.map +1 -0
- package/build/services/SupportProfileSync.d.ts +22 -0
- package/build/services/SupportProfileSync.d.ts.map +1 -0
- package/build/services/SupportProfileSync.js +213 -0
- package/build/services/SupportProfileSync.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 +22 -0
- package/build/services/TranscriptionRouting.d.ts.map +1 -0
- package/build/services/TranscriptionRouting.js +34 -0
- package/build/services/TranscriptionRouting.js.map +1 -0
- package/build/services/TtsTextSanitizer.d.ts +5 -0
- package/build/services/TtsTextSanitizer.d.ts.map +1 -0
- package/build/services/TtsTextSanitizer.js +61 -0
- package/build/services/TtsTextSanitizer.js.map +1 -0
- package/build/services/UIRouter.d.ts +137 -0
- package/build/services/UIRouter.d.ts.map +1 -0
- package/build/services/UIRouter.js +210 -0
- package/build/services/UIRouter.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/WifiAdbRequest.d.ts +17 -0
- package/build/services/WifiAdbRequest.d.ts.map +1 -0
- package/build/services/WifiAdbRequest.js +35 -0
- package/build/services/WifiAdbRequest.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 +208 -0
- package/build/services/asg/asgCameraApi.d.ts.map +1 -0
- package/build/services/asg/asgCameraApi.js +1480 -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 +1945 -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/audioPlaybackAssets.d.ts +8 -0
- package/build/services/audioPlaybackAssets.d.ts.map +1 -0
- package/build/services/audioPlaybackAssets.js +7 -0
- package/build/services/audioPlaybackAssets.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/effectiveCapabilities.d.ts +8 -0
- package/build/services/effectiveCapabilities.d.ts.map +1 -0
- package/build/services/effectiveCapabilities.js +23 -0
- package/build/services/effectiveCapabilities.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/manifestActions.d.ts +31 -0
- package/build/services/manifestActions.d.ts.map +1 -0
- package/build/services/manifestActions.js +54 -0
- package/build/services/manifestActions.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/memoryStoreInstance.d.ts +19 -0
- package/build/services/memoryStoreInstance.d.ts.map +1 -0
- package/build/services/memoryStoreInstance.js +65 -0
- package/build/services/memoryStoreInstance.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 +87 -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 +53 -0
- package/build/services/otaDisplayState.d.ts.map +1 -0
- package/build/services/otaDisplayState.js +114 -0
- package/build/services/otaDisplayState.js.map +1 -0
- package/build/services/otaInstallPolicy.d.ts +93 -0
- package/build/services/otaInstallPolicy.d.ts.map +1 -0
- package/build/services/otaInstallPolicy.js +117 -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/otaManifestUrl.d.ts +2 -0
- package/build/services/otaManifestUrl.d.ts.map +1 -0
- package/build/services/otaManifestUrl.js +46 -0
- package/build/services/otaManifestUrl.js.map +1 -0
- package/build/services/slimStreamStatus.d.ts +18 -0
- package/build/services/slimStreamStatus.d.ts.map +1 -0
- package/build/services/slimStreamStatus.js +36 -0
- package/build/services/slimStreamStatus.js.map +1 -0
- package/build/services/soniox/SonioxDirectService.d.ts +109 -0
- package/build/services/soniox/SonioxDirectService.d.ts.map +1 -0
- package/build/services/soniox/SonioxDirectService.js +449 -0
- package/build/services/soniox/SonioxDirectService.js.map +1 -0
- package/build/services/soniox/SonioxRealtimeClient.d.ts +121 -0
- package/build/services/soniox/SonioxRealtimeClient.d.ts.map +1 -0
- package/build/services/soniox/SonioxRealtimeClient.js +301 -0
- package/build/services/soniox/SonioxRealtimeClient.js.map +1 -0
- package/build/services/soniox/SonioxTokenAssembler.d.ts +98 -0
- package/build/services/soniox/SonioxTokenAssembler.d.ts.map +1 -0
- package/build/services/soniox/SonioxTokenAssembler.js +394 -0
- package/build/services/soniox/SonioxTokenAssembler.js.map +1 -0
- package/build/services/speakerProfileStoreInstance.d.ts +8 -0
- package/build/services/speakerProfileStoreInstance.d.ts.map +1 -0
- package/build/services/speakerProfileStoreInstance.js +24 -0
- package/build/services/speakerProfileStoreInstance.js.map +1 -0
- package/build/services/uiShim.d.ts +38 -0
- package/build/services/uiShim.d.ts.map +1 -0
- package/build/services/uiShim.js +369 -0
- package/build/services/uiShim.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 +503 -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 +33 -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 +103 -0
- package/build/stores/gallerySync.d.ts.map +1 -0
- package/build/stores/gallerySync.js +219 -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 +208 -0
- package/build/stores/glasses.js.map +1 -0
- package/build/stores/settings.d.ts +54 -0
- package/build/stores/settings.d.ts.map +1 -0
- package/build/stores/settings.js +1200 -0
- package/build/stores/settings.js.map +1 -0
- package/build/stores/transcriptionDebug.d.ts +25 -0
- package/build/stores/transcriptionDebug.d.ts.map +1 -0
- package/build/stores/transcriptionDebug.js +0 -0
- package/build/stores/transcriptionDebug.js.map +1 -0
- package/build/types/applet.d.ts +101 -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 +57 -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 +83 -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 +65 -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 +94 -0
- package/build/types/capabilities/mentra-live.js.map +1 -0
- package/build/types/capabilities/nimo.d.ts +13 -0
- package/build/types/capabilities/nimo.d.ts.map +1 -0
- package/build/types/capabilities/nimo.js +72 -0
- package/build/types/capabilities/nimo.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 +67 -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 +82 -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 +54 -0
- package/build/types/capabilities/vuzix-z100.js.map +1 -0
- package/build/types/enums.d.ts +22 -0
- package/build/types/enums.d.ts.map +1 -0
- package/build/types/enums.js +27 -0
- package/build/types/enums.js.map +1 -0
- package/build/types/hardware.d.ts +155 -0
- package/build/types/hardware.d.ts.map +1 -0
- package/build/types/hardware.js +52 -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 +11 -0
- package/build/utils/GlobalEventEmitter.d.ts.map +1 -0
- package/build/utils/GlobalEventEmitter.js +14 -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/configuredDevHost.d.ts +6 -0
- package/build/utils/configuredDevHost.d.ts.map +1 -0
- package/build/utils/configuredDevHost.js +19 -0
- package/build/utils/configuredDevHost.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 +55 -0
- package/build/utils/devMiniappLaunch.d.ts.map +1 -0
- package/build/utils/devMiniappLaunch.js +175 -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 +122 -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 +188 -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/anchor.d.ts +17 -0
- package/build/utils/display/scene/anchor.d.ts.map +1 -0
- package/build/utils/display/scene/anchor.js +33 -0
- package/build/utils/display/scene/anchor.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 +11 -0
- package/build/utils/display/scene/index.d.ts.map +1 -0
- package/build/utils/display/scene/index.js +7 -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 +201 -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 +139 -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 +131 -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/memory/search.d.ts +72 -0
- package/build/utils/memory/search.d.ts.map +1 -0
- package/build/utils/memory/search.js +178 -0
- package/build/utils/memory/search.js.map +1 -0
- package/build/utils/miniappDiagnostics.d.ts +64 -0
- package/build/utils/miniappDiagnostics.d.ts.map +1 -0
- package/build/utils/miniappDiagnostics.js +173 -0
- package/build/utils/miniappDiagnostics.js.map +1 -0
- package/build/utils/miniappGlobals.d.ts +59 -0
- package/build/utils/miniappGlobals.d.ts.map +1 -0
- package/build/utils/miniappGlobals.js +223 -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/speakerEmbedding.d.ts +8 -0
- package/build/utils/speakerEmbedding.d.ts.map +1 -0
- package/build/utils/speakerEmbedding.js +63 -0
- package/build/utils/speakerEmbedding.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 +142 -0
- package/build/utils/timers/timers.js.map +1 -0
- package/package.json +122 -0
- package/src/assets/silence.wav +0 -0
- package/src/devtools.ts +13 -0
- package/src/engine.ts +198 -0
- package/src/facades/dev.ts +213 -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 +219 -0
- package/src/facades/glassesSettings.ts +57 -0
- package/src/facades/glassesWifi.ts +68 -0
- package/src/facades/maps.ts +13 -0
- package/src/facades/memory.ts +46 -0
- package/src/facades/miniapps.ts +62 -0
- package/src/facades/notifications.ts +14 -0
- package/src/facades/ota.ts +177 -0
- package/src/facades/pairing.ts +329 -0
- package/src/facades/permissions.ts +165 -0
- package/src/facades/phoneNotifications.ts +41 -0
- package/src/facades/providerKeys.ts +31 -0
- package/src/facades/reports.ts +180 -0
- package/src/facades/session.ts +54 -0
- package/src/facades/settings.ts +57 -0
- package/src/facades/speakers.ts +152 -0
- package/src/facades/speech.ts +49 -0
- package/src/index.ts +214 -0
- package/src/internal.ts +155 -0
- package/src/runtime/bootstrap.ts +159 -0
- package/src/runtime/config.ts +155 -0
- package/src/runtime/scanQrSeam.ts +20 -0
- package/src/runtime/streamConfig.ts +34 -0
- package/src/services/AiTierResolution.ts +106 -0
- package/src/services/AppRegistry.ts +1245 -0
- package/src/services/AudioCloudUplink.ts +56 -0
- package/src/services/AudioPlaybackService.ts +873 -0
- package/src/services/AutomaticReportResult.ts +50 -0
- package/src/services/BlobStore.ts +823 -0
- package/src/services/CaptionsTesterReportService.ts +107 -0
- package/src/services/CloudAudioSubscriptionSync.ts +53 -0
- package/src/services/CloudClientService.ts +1031 -0
- package/src/services/CloudTranscriptE2EMetrics.ts +27 -0
- package/src/services/ConnectionCoordinator.ts +65 -0
- package/src/services/DevServerBridge.ts +334 -0
- package/src/services/DeviceEventRouter.ts +266 -0
- package/src/services/DeviceStoreHydration.ts +130 -0
- package/src/services/DisplayProcessor.ts +775 -0
- package/src/services/ForegroundLocationPermission.ts +24 -0
- package/src/services/GlassesReadiness.ts +103 -0
- package/src/services/GlassesSettingsSync.ts +140 -0
- package/src/services/GlassesStatusProjection.ts +73 -0
- package/src/services/HeadingService.ts +122 -0
- package/src/services/HotspotOtaTransport.ts +184 -0
- package/src/services/HotspotShutdown.ts +41 -0
- package/src/services/JSCrashController.ts +189 -0
- package/src/services/JSCrashloopReportService.ts +66 -0
- package/src/services/JSLogPipeline.ts +166 -0
- package/src/services/JSRouter.ts +555 -0
- package/src/services/LocalDisplayManager.ts +815 -0
- package/src/services/LocalMiniappDataMigration.ts +102 -0
- package/src/services/LocalMiniappRuntime.ts +5747 -0
- package/src/services/LocalMiniappStorage.ts +82 -0
- package/src/services/LocalMiniappUserIdentity.ts +79 -0
- package/src/services/LocalSttFallbackCoordinator.ts +247 -0
- package/src/services/MapboxTokenService.ts +118 -0
- package/src/services/MemoryCapture.ts +61 -0
- package/src/services/MemoryStore.ts +633 -0
- package/src/services/MicStateCoordinator.ts +259 -0
- package/src/services/MiniappEngine.ts +143 -0
- package/src/services/MiniappLauncher.ts +365 -0
- package/src/services/MiniappLiveness.ts +24 -0
- package/src/services/MiniappRunningRegistry.ts +57 -0
- package/src/services/NativeHttpResponse.ts +6 -0
- package/src/services/NativeNavigationService.ts +176 -0
- package/src/services/NavigationHandlers.ts +527 -0
- package/src/services/NavigationService.ts +926 -0
- package/src/services/NotificationsEmitter.ts +49 -0
- package/src/services/OfflineSpeechModelService.ts +168 -0
- package/src/services/OtaArtifactDownloader.ts +312 -0
- package/src/services/OtaInstallCoordinator.ts +1707 -0
- package/src/services/OtaService.ts +89 -0
- package/src/services/OtaUpdateCheckService.ts +550 -0
- package/src/services/PairingIdentity.ts +154 -0
- package/src/services/PhoneCalendarHelpers.ts +212 -0
- package/src/services/PhoneCalendarService.ts +61 -0
- package/src/services/PhoneCameraFovCoordinator.ts +210 -0
- package/src/services/PhoneLocationService.ts +120 -0
- package/src/services/PhoneNotificationsSync.ts +46 -0
- package/src/services/PhonePhotoCoordinator.ts +435 -0
- package/src/services/PhoneStreamCoordinator.ts +874 -0
- package/src/services/PhoneVideoCoordinator.ts +203 -0
- package/src/services/ProviderKeyValidation.ts +57 -0
- package/src/services/STTModelManager.ts +434 -0
- package/src/services/SceneRenderer.ts +320 -0
- package/src/services/SentenceTtsPipeline.ts +106 -0
- package/src/services/SpeakerIdModelManager.ts +151 -0
- package/src/services/SpeakerIdSync.ts +79 -0
- package/src/services/SpeakerLabelResolver.ts +140 -0
- package/src/services/SpeakerProfileStore.ts +265 -0
- package/src/services/SpeakerSegmentResolver.ts +194 -0
- package/src/services/StreamLifecycleController.ts +203 -0
- package/src/services/SupportProfileSync.ts +218 -0
- package/src/services/TTSModelManager.ts +466 -0
- package/src/services/TranscriptionRouting.ts +47 -0
- package/src/services/TtsTextSanitizer.ts +66 -0
- package/src/services/UIRouter.ts +250 -0
- package/src/services/WebviewBridge.ts +50 -0
- package/src/services/WifiAdbRequest.ts +53 -0
- package/src/services/asg/GalleryMediaIntegrityReportService.ts +72 -0
- package/src/services/asg/asgCameraApi.ts +1786 -0
- package/src/services/asg/cameraRollExportCoordinator.ts +627 -0
- package/src/services/asg/cameraRollExportLedger.ts +122 -0
- package/src/services/asg/galleryMediaValidation.ts +185 -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 +235 -0
- package/src/services/asg/gallerySyncService.ts +2278 -0
- package/src/services/asg/galleryTransferLedger.ts +312 -0
- package/src/services/asg/localNetworkTransport.ts +169 -0
- package/src/services/asg/localStorageService.ts +652 -0
- package/src/services/asg/mediaProcessingQueue.ts +518 -0
- package/src/services/audioPlaybackAssets.ts +8 -0
- package/src/services/blobPaths.ts +86 -0
- package/src/services/cloudStreamApi.ts +142 -0
- package/src/services/effectiveCapabilities.ts +27 -0
- package/src/services/gallerySyncClock.ts +39 -0
- package/src/services/glassesClockSync.ts +115 -0
- package/src/services/manifestActions.ts +80 -0
- package/src/services/manifestVersionGate.ts +43 -0
- package/src/services/memoryStoreInstance.ts +70 -0
- package/src/services/navigation/roadNameResolver.ts +103 -0
- package/src/services/navigation/routesApiCodec.ts +69 -0
- package/src/services/otaDisplayState.ts +156 -0
- package/src/services/otaInstallPolicy.ts +132 -0
- package/src/services/otaLegacyMapping.ts +71 -0
- package/src/services/otaManifestUrl.ts +53 -0
- package/src/services/slimStreamStatus.ts +39 -0
- package/src/services/soniox/SonioxDirectService.ts +517 -0
- package/src/services/soniox/SonioxRealtimeClient.ts +349 -0
- package/src/services/soniox/SonioxTokenAssembler.ts +451 -0
- package/src/services/speakerProfileStoreInstance.ts +25 -0
- package/src/services/uiShim.ts +375 -0
- package/src/stores/apps.ts +626 -0
- package/src/stores/bluetoothSettingKeys.ts +35 -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 +384 -0
- package/src/stores/glasses.ts +314 -0
- package/src/stores/settings.ts +1299 -0
- package/src/stores/transcriptionDebug.ts +0 -0
- package/src/types/applet.ts +121 -0
- package/src/types/asg.ts +58 -0
- package/src/types/capabilities/even-realities-g1.ts +70 -0
- package/src/types/capabilities/even-realities-g2.ts +98 -0
- package/src/types/capabilities/mentra-display.ts +78 -0
- package/src/types/capabilities/mentra-live.ts +106 -0
- package/src/types/capabilities/nimo.ts +84 -0
- package/src/types/capabilities/none.ts +79 -0
- package/src/types/capabilities/simulated-glasses.ts +95 -0
- package/src/types/capabilities/vuzix-z100.ts +67 -0
- package/src/types/enums.ts +27 -0
- package/src/types/hardware.ts +220 -0
- package/src/types/index.ts +38 -0
- package/src/utils/GlobalEventEmitter.ts +15 -0
- package/src/utils/cloudClient/RnUdpAdapter.ts +47 -0
- package/src/utils/cloudClient/cloudSecureStore.ts +28 -0
- package/src/utils/configuredDevHost.ts +17 -0
- package/src/utils/debouncedPatch.ts +28 -0
- package/src/utils/devLogging.ts +140 -0
- package/src/utils/devMiniappLaunch.ts +196 -0
- package/src/utils/diagnosticContext.ts +159 -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 +409 -0
- package/src/utils/display/helpers/ScrollView.ts +326 -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/anchor.ts +39 -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 +24 -0
- package/src/utils/display/scene/process.ts +228 -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 +171 -0
- package/src/utils/hardware/index.ts +1 -0
- package/src/utils/memory/search.ts +204 -0
- package/src/utils/miniappDiagnostics.ts +226 -0
- package/src/utils/miniappGlobals.ts +259 -0
- package/src/utils/permissions/MediaLibraryPermissions.ts +161 -0
- package/src/utils/permissions/galleryDisplayName.ts +28 -0
- package/src/utils/speakerEmbedding.ts +58 -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 +175 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* maps facade — `engine.maps.mapbox`: the user-supplied Mapbox access token
|
|
3
|
+
* (Settings > Keys). Thin passthrough over MapboxTokenService, same shape as
|
|
4
|
+
* `engine.speech.sonioxDirect` so the Keys screen treats providers uniformly.
|
|
5
|
+
*/
|
|
6
|
+
import {validateMapboxApiKey} from "../services/MapboxTokenService"
|
|
7
|
+
|
|
8
|
+
export const maps = {
|
|
9
|
+
mapbox: {
|
|
10
|
+
/** Probe a token against the Mapbox Tokens API without saving it. */
|
|
11
|
+
validateKey: (...args: Parameters<typeof validateMapboxApiKey>) => validateMapboxApiKey(...args),
|
|
12
|
+
},
|
|
13
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* memory facade — `engine.memory`: the user's shared phone-local memory
|
|
3
|
+
* timeline (Settings > Memory). Host UI manages the note entries and can
|
|
4
|
+
* purge everything; the full timeline surface (lines, sessions, summaries)
|
|
5
|
+
* is what miniapps reach through session.memory with the MEMORY permission.
|
|
6
|
+
*/
|
|
7
|
+
import type {MemoryEntry, MemorySession} from "@glassly/miniapp"
|
|
8
|
+
|
|
9
|
+
import type {MemoryStats} from "../services/MemoryStore"
|
|
10
|
+
import {EXTENDED_RETENTION, STANDARD_RETENTION} from "../services/MemoryStore"
|
|
11
|
+
import {isMemoryRetentionExtended, memoryStore, setMemoryRetentionExtended} from "../services/memoryStoreInstance"
|
|
12
|
+
|
|
13
|
+
export const memory = {
|
|
14
|
+
/** All note entries, newest first. */
|
|
15
|
+
notes: (): Promise<MemoryEntry[]> => memoryStore.notes(),
|
|
16
|
+
/**
|
|
17
|
+
* Add a manual note ("ui" source). Pass `at` inside a past hour to append
|
|
18
|
+
* to that session. Resolves null on duplicate/empty.
|
|
19
|
+
*/
|
|
20
|
+
addNote: (text: string, at?: number): Promise<MemoryEntry | null> =>
|
|
21
|
+
memoryStore.addNote(text, "ui", at ?? Date.now()),
|
|
22
|
+
/** Rewrite a note's text. Resolves false when the id isn't a note. */
|
|
23
|
+
updateNote: (id: string, text: string): Promise<boolean> => memoryStore.updateNote(id, text),
|
|
24
|
+
/** Delete one entry (note or line) by id. */
|
|
25
|
+
removeEntry: (id: string): Promise<boolean> => memoryStore.removeEntry(id),
|
|
26
|
+
/** All sessions (hours with entries + summary), newest first (history browser). */
|
|
27
|
+
sessions: (): Promise<MemorySession[]> => memoryStore.sessionList(),
|
|
28
|
+
/** Delete every entry (and summary) in an hour, or a whole day of hours. */
|
|
29
|
+
removeScope: (scope: "session" | "day", at: number): Promise<void> => memoryStore.removeScope(scope, at),
|
|
30
|
+
/** Counts for the Settings screen (entries, lines, notes, summaries). */
|
|
31
|
+
stats: (): Promise<MemoryStats> => memoryStore.stats(),
|
|
32
|
+
/** Drop the entire timeline: every entry and every summary. */
|
|
33
|
+
clearAll: (): Promise<void> => memoryStore.clear(),
|
|
34
|
+
/** Subscribe to store mutations (from miniapps or Settings). */
|
|
35
|
+
onChanged: (listener: () => void): (() => void) => memoryStore.onChanged(listener),
|
|
36
|
+
/** Whether the extended (Plus/Pro) retention window is active. */
|
|
37
|
+
retentionExtended: (): boolean => isMemoryRetentionExtended(),
|
|
38
|
+
/** Retention window in days for the given (or current) tier, for UI copy. */
|
|
39
|
+
retentionDays: (extended?: boolean): number =>
|
|
40
|
+
Math.round(
|
|
41
|
+
((extended ?? isMemoryRetentionExtended()) ? EXTENDED_RETENTION : STANDARD_RETENTION).maxAgeMs /
|
|
42
|
+
(24 * 60 * 60 * 1000),
|
|
43
|
+
),
|
|
44
|
+
/** Flip retention on subscription change. Host app (RevenueCat sync) only. */
|
|
45
|
+
setRetentionExtended: (extended: boolean): void => setMemoryRetentionExtended(extended),
|
|
46
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* miniapps facade — `engine.miniapps`: miniapp lifecycle over the engine-owned
|
|
3
|
+
* apps store. Thin forwarding (args via Parameters<>), so the facade never drifts
|
|
4
|
+
* from the store's actions.
|
|
5
|
+
*
|
|
6
|
+
* The miniapp WebView is a HOST component (engine ships the bridge, not the view) —
|
|
7
|
+
* the bridge primitives (`buildMiniappGlobalsScript`, `buildUiShim`, the
|
|
8
|
+
* GlasslyJS router) are exported from `@glassly/engine` directly; the host mounts a
|
|
9
|
+
* `<WebView>` wired to them. This facade is the lifecycle half.
|
|
10
|
+
*/
|
|
11
|
+
import {useAppStatusStore} from "../stores/apps"
|
|
12
|
+
import localMiniappRuntime from "../services/LocalMiniappRuntime"
|
|
13
|
+
import type {ClientApp} from "../types"
|
|
14
|
+
|
|
15
|
+
type AppsState = ReturnType<typeof useAppStatusStore.getState>
|
|
16
|
+
|
|
17
|
+
export const miniapps = {
|
|
18
|
+
/** All installed miniapps (snapshot). */
|
|
19
|
+
// Copy: the snapshot must not hand callers a mutable reference into the store.
|
|
20
|
+
list: (): ClientApp[] => [...useAppStatusStore.getState().apps],
|
|
21
|
+
/** Subscribe to the installed-app set; fires only when it changes. Returns an unsubscribe. */
|
|
22
|
+
onChanged: (cb: (apps: ClientApp[]) => void): (() => void) => {
|
|
23
|
+
let last = JSON.stringify(useAppStatusStore.getState().apps)
|
|
24
|
+
return useAppStatusStore.subscribe(() => {
|
|
25
|
+
const apps = useAppStatusStore.getState().apps
|
|
26
|
+
const key = JSON.stringify(apps)
|
|
27
|
+
if (key === last) return
|
|
28
|
+
last = key
|
|
29
|
+
cb(apps)
|
|
30
|
+
})
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
/** Miniapps actively subscribed to Mentra Live hardware-button events. */
|
|
34
|
+
buttonPressSubscribers: (): string[] => localMiniappRuntime.getButtonPressSubscribers(),
|
|
35
|
+
/** Observe the active Mentra Live hardware-button subscriber set. */
|
|
36
|
+
onButtonPressSubscribersChanged: (cb: (packageNames: string[]) => void): (() => void) =>
|
|
37
|
+
localMiniappRuntime.onButtonPressSubscribersChanged(cb),
|
|
38
|
+
|
|
39
|
+
/** Re-fetch the installed-app list from the backend. */
|
|
40
|
+
refresh: () => useAppStatusStore.getState().refresh(),
|
|
41
|
+
/** Start (foreground) a miniapp. */
|
|
42
|
+
start: (...args: Parameters<AppsState["start"]>) => useAppStatusStore.getState().start(...args),
|
|
43
|
+
/** Stop a miniapp. */
|
|
44
|
+
stop: (...args: Parameters<AppsState["stop"]>) => useAppStatusStore.getState().stop(...args),
|
|
45
|
+
/** Bring a running miniapp to the foreground. */
|
|
46
|
+
setForeground: (...args: Parameters<AppsState["setForeground"]>) =>
|
|
47
|
+
useAppStatusStore.getState().setForeground(...args),
|
|
48
|
+
/** Clear the current foreground miniapp. */
|
|
49
|
+
clearForeground: () => useAppStatusStore.getState().clearForeground(),
|
|
50
|
+
/** Stop all running miniapps. */
|
|
51
|
+
stopAll: () => useAppStatusStore.getState().stopAll(),
|
|
52
|
+
/** Install a miniapp from a bundle URL. */
|
|
53
|
+
install: (...args: Parameters<AppsState["install"]>) => useAppStatusStore.getState().install(...args),
|
|
54
|
+
/** Uninstall a miniapp. */
|
|
55
|
+
uninstall: (...args: Parameters<AppsState["uninstall"]>) => useAppStatusStore.getState().uninstall(...args),
|
|
56
|
+
/** Persist a miniapp's captured screenshot (the switcher/card preview). */
|
|
57
|
+
saveScreenshot: (...args: Parameters<AppsState["saveScreenshot"]>) =>
|
|
58
|
+
useAppStatusStore.getState().saveScreenshot(...args),
|
|
59
|
+
/** Hide/show a miniapp on the home surfaces. */
|
|
60
|
+
setHiddenStatus: (...args: Parameters<AppsState["setHiddenStatus"]>) =>
|
|
61
|
+
useAppStatusStore.getState().setHiddenStatus(...args),
|
|
62
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* notifications facade — `engine.notifications`: inbound alerts engine→host. The
|
|
3
|
+
* OEM subscribes and renders them however it likes (modal, toast, banner). Today:
|
|
4
|
+
* miniapp crashloop; version-incompatible miniapp and persistent connection loss
|
|
5
|
+
* land as their detectors are wired into the emitter.
|
|
6
|
+
*/
|
|
7
|
+
import {islandNotifications, type IslandNotification} from "../services/NotificationsEmitter"
|
|
8
|
+
|
|
9
|
+
export type {IslandNotification, IslandNotificationKind} from "../services/NotificationsEmitter"
|
|
10
|
+
|
|
11
|
+
export const notifications = {
|
|
12
|
+
/** Subscribe to engine-raised notifications; returns an unsubscribe. */
|
|
13
|
+
onNotification: (cb: (notification: IslandNotification) => void): (() => void) => islandNotifications.subscribe(cb),
|
|
14
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ota facade — `engine.ota`: the OEM-facing OTA read/observe surface. Engine's
|
|
3
|
+
* OtaService projects the glasses' OTA BLE events into the engine store; this facade
|
|
4
|
+
* exposes the snapshot + change subscriptions the host renders its update prompt and
|
|
5
|
+
* progress UI from. No host-injected UI — the host owns all alerts/navigation/i18n.
|
|
6
|
+
*
|
|
7
|
+
* Availability checks live in engine. Install orchestration lives in engine too:
|
|
8
|
+
* `installSession` fronts the OtaInstallCoordinator state machine (WP 8B) — the host
|
|
9
|
+
* progress screen is a pure renderer over its snapshot + attach/detach/retry/finish.
|
|
10
|
+
*/
|
|
11
|
+
import BluetoothSdk from "@glassly/bluetooth-sdk/internal"
|
|
12
|
+
import type {OtaProgress, OtaProgressStatus, OtaStatus, OtaUpdateInfo} from "@glassly/bluetooth-sdk/internal"
|
|
13
|
+
import {isGlassesConnected, useGlassesStore} from "../stores/glasses"
|
|
14
|
+
import {resolveOtaManifestUrl} from "../services/otaManifestUrl"
|
|
15
|
+
import {otaInstallCoordinator, type OtaInstallSnapshot} from "../services/OtaInstallCoordinator"
|
|
16
|
+
import {
|
|
17
|
+
checkCurrentGlassesForUpdate,
|
|
18
|
+
type OtaCheckCurrentGlassesOptions,
|
|
19
|
+
type OtaCheckCurrentGlassesResult,
|
|
20
|
+
} from "../services/OtaUpdateCheckService"
|
|
21
|
+
|
|
22
|
+
function projectSnapshot() {
|
|
23
|
+
const s = useGlassesStore.getState()
|
|
24
|
+
return {
|
|
25
|
+
connected: isGlassesConnected(s.connection),
|
|
26
|
+
buildNumber: s.buildNumber || null,
|
|
27
|
+
mtkFirmwareVersion: s.mtkFirmwareVersion || null,
|
|
28
|
+
besFirmwareVersion: s.besFirmwareVersion || null,
|
|
29
|
+
hotspotOtaVersion: s.hotspotOtaVersion ?? 0,
|
|
30
|
+
wifiConnected: s.wifi.state === "connected",
|
|
31
|
+
wifiStatusKnown: s.wifiStatusKnown,
|
|
32
|
+
manifestUrl: resolveOtaManifestUrl(s.otaVersionUrl, s.buildNumber),
|
|
33
|
+
updateAvailable: s.otaUpdateAvailable,
|
|
34
|
+
status: s.otaStatus,
|
|
35
|
+
legacyProgress: s.otaProgress,
|
|
36
|
+
inProgress: s.otaInProgress,
|
|
37
|
+
mtkUpdatedThisSession: s.mtkUpdatedThisSession,
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export type OtaSnapshot = ReturnType<typeof projectSnapshot>
|
|
42
|
+
export type {
|
|
43
|
+
OtaProgress,
|
|
44
|
+
OtaProgressStatus,
|
|
45
|
+
OtaStatus,
|
|
46
|
+
OtaUpdateInfo,
|
|
47
|
+
OtaInstallSnapshot,
|
|
48
|
+
OtaCheckCurrentGlassesOptions,
|
|
49
|
+
OtaCheckCurrentGlassesResult,
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export const ota = {
|
|
53
|
+
// --- actions ---
|
|
54
|
+
/**
|
|
55
|
+
* Start the firmware install with the resolved OTA manifest URL. Progress lands on
|
|
56
|
+
* `status()`/`onStatus()`. (The host resolves the manifest URL — dev-override/env/prod
|
|
57
|
+
* resolution stays with the OTA config; the host-side stuck/retry watchdog is its own
|
|
58
|
+
* resilience layer on top of this command.)
|
|
59
|
+
*/
|
|
60
|
+
install: (...args: Parameters<typeof BluetoothSdk.startOtaUpdate>) => BluetoothSdk.startOtaUpdate(...args),
|
|
61
|
+
// Deferred: this facade entry was intended to become the engine-owned retry/check
|
|
62
|
+
// action, but BluetoothSdk.checkForOtaUpdate() only returns a boolean. Exposing it
|
|
63
|
+
// here would make callers think the rich otaUpdateAvailable read model is refreshed,
|
|
64
|
+
// while the original view still depends on the host-side manifest compare to build
|
|
65
|
+
// versionName/updates/totalSize. Keep that behavior unchanged until the whole rich
|
|
66
|
+
// availability check moves into engine.
|
|
67
|
+
// retry: () => BluetoothSdk.checkForOtaUpdate(),
|
|
68
|
+
/**
|
|
69
|
+
* Keep glasses awake while an OTA session is actively progressing.
|
|
70
|
+
* @deprecated Legacy progress route (build < 37) only — removed with WP 8D.
|
|
71
|
+
*/
|
|
72
|
+
ping: () => BluetoothSdk.ping(),
|
|
73
|
+
/** Resolve and compare the current glasses against the OTA manifest, then update the OTA snapshot. */
|
|
74
|
+
checkForUpdates: (options?: OtaCheckCurrentGlassesOptions) => checkCurrentGlassesForUpdate(options),
|
|
75
|
+
/** Clear the available-update prompt state. */
|
|
76
|
+
clearUpdateAvailable: () => useGlassesStore.getState().setOtaUpdateAvailable(null),
|
|
77
|
+
/** Clear active progress/status before entering a fresh install flow. */
|
|
78
|
+
clearProgress: () => {
|
|
79
|
+
const store = useGlassesStore.getState()
|
|
80
|
+
store.setOtaProgress(null)
|
|
81
|
+
store.setOtaStatus(null)
|
|
82
|
+
},
|
|
83
|
+
/**
|
|
84
|
+
* Replace the pending update sequence after an in-flow firmware revalidation.
|
|
85
|
+
* Kept as a named OTA policy operation so host screens do not mutate the raw
|
|
86
|
+
* glasses store.
|
|
87
|
+
* @deprecated Legacy progress route (build < 37) only — removed with WP 8D.
|
|
88
|
+
*/
|
|
89
|
+
replacePendingUpdateSequence: (updates: OtaUpdateInfo["updates"]): OtaUpdateInfo | null => {
|
|
90
|
+
const store = useGlassesStore.getState()
|
|
91
|
+
const current = store.otaUpdateAvailable
|
|
92
|
+
if (!current) return null
|
|
93
|
+
const next = {...current, updates}
|
|
94
|
+
store.setOtaUpdateAvailable(next)
|
|
95
|
+
return next
|
|
96
|
+
},
|
|
97
|
+
/**
|
|
98
|
+
* Clear stale build metadata before returning to the update-check screen.
|
|
99
|
+
* This forces the next version_info event through both the native observable
|
|
100
|
+
* store and the engine projection after an APK reboot.
|
|
101
|
+
* @deprecated Legacy progress route (build < 37) only — removed with WP 8D.
|
|
102
|
+
*/
|
|
103
|
+
clearBuildNumberForNextCheck: () => {
|
|
104
|
+
BluetoothSdk.updateGlasses({buildNumber: ""})
|
|
105
|
+
useGlassesStore.getState().setGlassesInfo({buildNumber: ""})
|
|
106
|
+
},
|
|
107
|
+
/**
|
|
108
|
+
* Mark MTK as already applied during this app session until the glasses reboot/disconnect.
|
|
109
|
+
* @deprecated Legacy progress route (build < 37) only — removed with WP 8D.
|
|
110
|
+
*/
|
|
111
|
+
markMtkUpdatedThisSession: (updated: boolean) => useGlassesStore.getState().setMtkUpdatedThisSession(updated),
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* The OTA install state machine (unified `ota_status` sessions, build >= 37).
|
|
115
|
+
* The host progress screen attaches on mount, detaches on unmount, and renders
|
|
116
|
+
* the snapshot; every watchdog/retry/reconnect rule lives in the coordinator.
|
|
117
|
+
*/
|
|
118
|
+
installSession: {
|
|
119
|
+
/** Select Wi-Fi or capability-gated hotspot transport for this checked manifest. */
|
|
120
|
+
prepare: (result: OtaCheckCurrentGlassesResult) => otaInstallCoordinator.prepare(result),
|
|
121
|
+
/** Bind the machine to the mounted progress screen. Idempotent per attach/detach cycle. */
|
|
122
|
+
attach: () => otaInstallCoordinator.attach(),
|
|
123
|
+
/** Unbind on unmount: clears all timers/listeners and resets session state. */
|
|
124
|
+
detach: () => otaInstallCoordinator.detach(),
|
|
125
|
+
/** Retry after a failure: clear state and re-send ota_start (if connected). */
|
|
126
|
+
retry: () => otaInstallCoordinator.retry(),
|
|
127
|
+
/** Terminal cleanup for Continue/Done (navigation stays in the screen). */
|
|
128
|
+
finish: () => otaInstallCoordinator.finish(),
|
|
129
|
+
/** Abandon an interrupted session (super-mode skip): finish() + drop the session's status/progress. */
|
|
130
|
+
discard: () => otaInstallCoordinator.discard(),
|
|
131
|
+
/** Current install read model (displayState/errorMsg/lockout + glasses OTA data). */
|
|
132
|
+
snapshot: (): OtaInstallSnapshot => otaInstallCoordinator.snapshot(),
|
|
133
|
+
/** Subscribe to install snapshot changes (deduped on projected JSON). Returns an unsubscribe. */
|
|
134
|
+
onSnapshot: (cb: (snapshot: OtaInstallSnapshot) => void): (() => void) => otaInstallCoordinator.onSnapshot(cb),
|
|
135
|
+
},
|
|
136
|
+
|
|
137
|
+
/** Current available-update info (versionName/updates/totalSize), or null. */
|
|
138
|
+
updateAvailable: (): OtaUpdateInfo | null => useGlassesStore.getState().otaUpdateAvailable,
|
|
139
|
+
/** Current OTA install status (stepType/phase/percent/status/error), or null. */
|
|
140
|
+
status: (): OtaStatus | null => useGlassesStore.getState().otaStatus,
|
|
141
|
+
/** Current OTA read model for update prompt/progress screens. */
|
|
142
|
+
snapshot: (): OtaSnapshot => projectSnapshot(),
|
|
143
|
+
|
|
144
|
+
/** Subscribe to OTA availability changes (info or null when cleared). Returns an unsubscribe. */
|
|
145
|
+
onUpdateAvailable: (cb: (info: OtaUpdateInfo | null) => void): (() => void) => {
|
|
146
|
+
let last = useGlassesStore.getState().otaUpdateAvailable
|
|
147
|
+
return useGlassesStore.subscribe(() => {
|
|
148
|
+
const info = useGlassesStore.getState().otaUpdateAvailable
|
|
149
|
+
if (info === last) return
|
|
150
|
+
last = info
|
|
151
|
+
cb(info)
|
|
152
|
+
})
|
|
153
|
+
},
|
|
154
|
+
|
|
155
|
+
/** Subscribe to OTA install status changes. Returns an unsubscribe. */
|
|
156
|
+
onStatus: (cb: (status: OtaStatus | null) => void): (() => void) => {
|
|
157
|
+
let last = useGlassesStore.getState().otaStatus
|
|
158
|
+
return useGlassesStore.subscribe(() => {
|
|
159
|
+
const status = useGlassesStore.getState().otaStatus
|
|
160
|
+
if (status === last) return
|
|
161
|
+
last = status
|
|
162
|
+
cb(status)
|
|
163
|
+
})
|
|
164
|
+
},
|
|
165
|
+
|
|
166
|
+
/** Subscribe to OTA snapshot changes. Returns an unsubscribe. */
|
|
167
|
+
onSnapshot: (cb: (snapshot: OtaSnapshot) => void): (() => void) => {
|
|
168
|
+
let last = JSON.stringify(projectSnapshot())
|
|
169
|
+
return useGlassesStore.subscribe(() => {
|
|
170
|
+
const snap = projectSnapshot()
|
|
171
|
+
const key = JSON.stringify(snap)
|
|
172
|
+
if (key === last) return
|
|
173
|
+
last = key
|
|
174
|
+
cb(snap)
|
|
175
|
+
})
|
|
176
|
+
},
|
|
177
|
+
}
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pairing facade — `engine.pairing`: scan for nearby glasses + pair. Scan state
|
|
3
|
+
* (searching + results) comes from the engine core store; scan/connect go over the
|
|
4
|
+
* bluetooth-sdk; pair-failure / not-ready are the bluetooth-sdk events.
|
|
5
|
+
*
|
|
6
|
+
* (Connect-the-already-paired-default is `engine.glasses.connectDefault()`; this
|
|
7
|
+
* facade is the first-time discovery + pair flow.)
|
|
8
|
+
*/
|
|
9
|
+
// Internal btsdk surface — updateBluetoothSettings (the Bluetooth Classic
|
|
10
|
+
// target hint) lives on the full surface, not the public entry (same reason
|
|
11
|
+
// the glasses facade imports internal).
|
|
12
|
+
import BluetoothSdk from "@glassly/bluetooth-sdk/internal"
|
|
13
|
+
import type {ConnectOptions, Device, PairFailureEvent, GlassesNotReadyEvent} from "@glassly/bluetooth-sdk"
|
|
14
|
+
import {useCoreStore} from "../stores/core"
|
|
15
|
+
import {useGlassesStore} from "../stores/glasses"
|
|
16
|
+
import {hasDefaultDevice} from "../services/DeviceStoreHydration"
|
|
17
|
+
import {
|
|
18
|
+
markPendingSelection,
|
|
19
|
+
projectPairingIdentity,
|
|
20
|
+
subscribePairingIdentity,
|
|
21
|
+
type IdentitySnapshot,
|
|
22
|
+
} from "../services/PairingIdentity"
|
|
23
|
+
import {
|
|
24
|
+
isGlassesConnected,
|
|
25
|
+
isGlassesLinkLayerBusy,
|
|
26
|
+
isGlassesReady,
|
|
27
|
+
waitForGlassesReady,
|
|
28
|
+
} from "../services/GlassesReadiness"
|
|
29
|
+
import {
|
|
30
|
+
logAutomaticReportSubmissionStatus,
|
|
31
|
+
toAutomaticReportSubmissionStatus,
|
|
32
|
+
type AutomaticReportSubmissionStatus,
|
|
33
|
+
} from "../services/AutomaticReportResult"
|
|
34
|
+
import {pushAllBluetoothSettings} from "../services/GlassesSettingsSync"
|
|
35
|
+
import {submitAutomaticReport} from "./reports"
|
|
36
|
+
|
|
37
|
+
export type {IdentitySnapshot} from "../services/PairingIdentity"
|
|
38
|
+
|
|
39
|
+
export interface PairingReadyWaitOptions {
|
|
40
|
+
deviceModel?: string
|
|
41
|
+
deviceName?: string
|
|
42
|
+
timeoutMs?: number
|
|
43
|
+
route?: string
|
|
44
|
+
signal?: AbortSignal
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const DEFAULT_PAIRING_BOOT_TIMEOUT_MS = 35_000
|
|
48
|
+
const DEFAULT_BT_CLASSIC_TIMEOUT_MS = 1_000
|
|
49
|
+
const DEFAULT_PAIRING_ROUTE = "/pairing/loading"
|
|
50
|
+
const LOG_TAG = "PairingTimeoutReport"
|
|
51
|
+
|
|
52
|
+
function projectReadiness() {
|
|
53
|
+
const s = useGlassesStore.getState()
|
|
54
|
+
return {
|
|
55
|
+
state: s.connection.state,
|
|
56
|
+
connected: s.connection.state === "connected",
|
|
57
|
+
fullyBooted: isGlassesReady(s.connection),
|
|
58
|
+
bluetoothClassicConnected: s.bluetoothClassicConnected,
|
|
59
|
+
nativeLinkBusy: isGlassesLinkLayerBusy(s.connection),
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export type PairingReadinessSnapshot = ReturnType<typeof projectReadiness>
|
|
64
|
+
|
|
65
|
+
export async function submitPairingBootTimeoutReport(params: {
|
|
66
|
+
deviceModel?: string
|
|
67
|
+
deviceName?: string
|
|
68
|
+
showGlassesBooting: boolean
|
|
69
|
+
elapsedMs: number
|
|
70
|
+
route?: string
|
|
71
|
+
}): Promise<AutomaticReportSubmissionStatus> {
|
|
72
|
+
const {deviceModel, deviceName, showGlassesBooting, elapsedMs, route = DEFAULT_PAIRING_ROUTE} = params
|
|
73
|
+
const result = await submitAutomaticReport({
|
|
74
|
+
kind: "automatic",
|
|
75
|
+
trigger: {
|
|
76
|
+
type: "automatic",
|
|
77
|
+
source: "pairing_loading",
|
|
78
|
+
reason: "glasses_connect_timeout",
|
|
79
|
+
},
|
|
80
|
+
report: {
|
|
81
|
+
expectedBehavior: `Glasses should connect successfully within ${Math.round(elapsedMs / 1000)} seconds.`,
|
|
82
|
+
actualBehavior: JSON.stringify(
|
|
83
|
+
{
|
|
84
|
+
deviceModel,
|
|
85
|
+
deviceName,
|
|
86
|
+
showGlassesBooting,
|
|
87
|
+
elapsedMs,
|
|
88
|
+
route,
|
|
89
|
+
},
|
|
90
|
+
null,
|
|
91
|
+
2,
|
|
92
|
+
),
|
|
93
|
+
systemPriority: "medium",
|
|
94
|
+
},
|
|
95
|
+
throttleKey: `pairing_timeout|${deviceModel || "unknown"}|${deviceName || "unknown"}`,
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
const status = toAutomaticReportSubmissionStatus(result)
|
|
99
|
+
logAutomaticReportSubmissionStatus(LOG_TAG, status, deviceModel, deviceName)
|
|
100
|
+
return status
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
async function waitForReadyDuringPairing(options: PairingReadyWaitOptions = {}): Promise<boolean> {
|
|
104
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_PAIRING_BOOT_TIMEOUT_MS
|
|
105
|
+
let showGlassesBooting = false
|
|
106
|
+
const notReadySub = BluetoothSdk.addListener("glasses_not_ready", () => {
|
|
107
|
+
showGlassesBooting = true
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
try {
|
|
111
|
+
const ready = await waitForGlassesReady({
|
|
112
|
+
getConnection: () => useGlassesStore.getState().connection,
|
|
113
|
+
subscribe: (listener) => useGlassesStore.subscribe((state) => state.connection, listener),
|
|
114
|
+
timeoutMs,
|
|
115
|
+
signal: options.signal,
|
|
116
|
+
})
|
|
117
|
+
|
|
118
|
+
if (!ready && !options.signal?.aborted) {
|
|
119
|
+
void submitPairingBootTimeoutReport({
|
|
120
|
+
deviceModel: options.deviceModel,
|
|
121
|
+
deviceName: options.deviceName,
|
|
122
|
+
showGlassesBooting,
|
|
123
|
+
elapsedMs: timeoutMs,
|
|
124
|
+
route: options.route,
|
|
125
|
+
}).catch((error) => {
|
|
126
|
+
console.error(`[${LOG_TAG}] Unexpected error:`, error)
|
|
127
|
+
})
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return ready
|
|
131
|
+
} finally {
|
|
132
|
+
notReadySub.remove()
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
async function waitForBluetoothClassic(
|
|
137
|
+
options: Pick<PairingReadyWaitOptions, "timeoutMs" | "signal"> = {},
|
|
138
|
+
): Promise<boolean> {
|
|
139
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_BT_CLASSIC_TIMEOUT_MS
|
|
140
|
+
return new Promise((resolve) => {
|
|
141
|
+
if (options.signal?.aborted) {
|
|
142
|
+
resolve(false)
|
|
143
|
+
return
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const initial = useGlassesStore.getState().bluetoothClassicConnected
|
|
147
|
+
if (initial) {
|
|
148
|
+
resolve(true)
|
|
149
|
+
return
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
let settled = false
|
|
153
|
+
let timeout: ReturnType<typeof setTimeout> | null = null
|
|
154
|
+
let unsubscribe: (() => void) | null = null
|
|
155
|
+
let onAbort: (() => void) | null = null
|
|
156
|
+
|
|
157
|
+
const finish = (value: boolean) => {
|
|
158
|
+
if (settled) return
|
|
159
|
+
settled = true
|
|
160
|
+
if (timeout) clearTimeout(timeout)
|
|
161
|
+
if (unsubscribe) unsubscribe()
|
|
162
|
+
if (onAbort && options.signal) options.signal.removeEventListener("abort", onAbort)
|
|
163
|
+
resolve(value)
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (options.signal) {
|
|
167
|
+
onAbort = () => finish(false)
|
|
168
|
+
options.signal.addEventListener("abort", onAbort)
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
unsubscribe = useGlassesStore.subscribe(
|
|
172
|
+
(s) => s.bluetoothClassicConnected,
|
|
173
|
+
(connected) => {
|
|
174
|
+
if (connected) finish(true)
|
|
175
|
+
},
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
timeout = setTimeout(() => {
|
|
179
|
+
finish(useGlassesStore.getState().bluetoothClassicConnected)
|
|
180
|
+
}, timeoutMs)
|
|
181
|
+
})
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export const pairing = {
|
|
185
|
+
readiness: (): PairingReadinessSnapshot => projectReadiness(),
|
|
186
|
+
onReadiness: (cb: (readiness: PairingReadinessSnapshot) => void): (() => void) => {
|
|
187
|
+
let last = JSON.stringify(projectReadiness())
|
|
188
|
+
return useGlassesStore.subscribe(() => {
|
|
189
|
+
const snap = projectReadiness()
|
|
190
|
+
const key = JSON.stringify(snap)
|
|
191
|
+
if (key === last) return
|
|
192
|
+
last = key
|
|
193
|
+
cb(snap)
|
|
194
|
+
})
|
|
195
|
+
},
|
|
196
|
+
|
|
197
|
+
// --- pairing-identity lifecycle (the PairingIdentity read-model + the JS-owned
|
|
198
|
+
// identity writes; promotion to `paired` only ever happens natively) ---
|
|
199
|
+
/** The identity lifecycle snapshot: none | pending (chosen, never paired) | paired. */
|
|
200
|
+
identity: (): IdentitySnapshot => projectPairingIdentity(),
|
|
201
|
+
/** Subscribe to identity changes; fires only when the projected snapshot changes.
|
|
202
|
+
* Returns an unsubscribe. */
|
|
203
|
+
onIdentity: (cb: (identity: IdentitySnapshot) => void): (() => void) => subscribePairingIdentity(cb),
|
|
204
|
+
/** Mark the chosen model as the pending selection (the scan-entry write); the
|
|
205
|
+
* host renders it as a finish-pairing affordance until pairing succeeds. */
|
|
206
|
+
markPendingSelection: (model: string) => markPendingSelection(model),
|
|
207
|
+
|
|
208
|
+
/** Start scanning for nearby glasses. Results land on `searchResults()`/`onFound()`. */
|
|
209
|
+
scan: (...args: Parameters<typeof BluetoothSdk.startScan>) => BluetoothSdk.startScan(...args),
|
|
210
|
+
/** Whether a scan is currently in progress. */
|
|
211
|
+
scanning: (): boolean => useCoreStore.getState().searching,
|
|
212
|
+
/** Subscribe to scan-in-progress changes; fires only when it changes. Returns an unsubscribe. */
|
|
213
|
+
onScanning: (cb: (scanning: boolean) => void): (() => void) => useCoreStore.subscribe((s) => s.searching, cb),
|
|
214
|
+
/** Whether a controller scan is currently in progress. */
|
|
215
|
+
scanningController: (): boolean => useCoreStore.getState().searchingController,
|
|
216
|
+
/** Subscribe to controller-scan-in-progress changes; fires only when it changes. Returns an unsubscribe. */
|
|
217
|
+
onScanningController: (cb: (scanning: boolean) => void): (() => void) =>
|
|
218
|
+
useCoreStore.subscribe((s) => s.searchingController, cb),
|
|
219
|
+
/** Whether the phone has another Bluetooth (audio) device connected — the BT Classic pairing hint. */
|
|
220
|
+
otherBtConnected: (): boolean => useCoreStore.getState().otherBtConnected,
|
|
221
|
+
/** Subscribe to other-Bluetooth-device-connected changes; fires only when it changes. Returns an unsubscribe. */
|
|
222
|
+
onOtherBtConnected: (cb: (connected: boolean) => void): (() => void) =>
|
|
223
|
+
useCoreStore.subscribe((s) => s.otherBtConnected, cb),
|
|
224
|
+
/** The current scan results (snapshot). */
|
|
225
|
+
// Copy the array AND each entry: neither the list nor the Device objects may
|
|
226
|
+
// leak as mutable references into the store.
|
|
227
|
+
searchResults: () => useCoreStore.getState().searchResults.map((result) => ({...result})),
|
|
228
|
+
/** Subscribe to scan-result changes; fires only when they change. Returns an unsubscribe. */
|
|
229
|
+
onFound: (cb: (results: ReturnType<typeof useCoreStore.getState>["searchResults"]) => void): (() => void) => {
|
|
230
|
+
let last = JSON.stringify(useCoreStore.getState().searchResults)
|
|
231
|
+
return useCoreStore.subscribe(() => {
|
|
232
|
+
const results = useCoreStore.getState().searchResults
|
|
233
|
+
const key = JSON.stringify(results)
|
|
234
|
+
if (key === last) return
|
|
235
|
+
last = key
|
|
236
|
+
// Copy like searchResults(): listeners must not mutate shared scan state.
|
|
237
|
+
cb(results.map((result) => ({...result})))
|
|
238
|
+
})
|
|
239
|
+
},
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Pair with (connect to) a discovered device. Two-phase identity: the connect
|
|
243
|
+
* attempt only marks the device as pending (`saveAsDefault: false` — no eager
|
|
244
|
+
* default-device write); the native layer promotes it to the default wearable
|
|
245
|
+
* when pairing actually succeeds (handleDeviceReady), so an abandoned or
|
|
246
|
+
* failed attempt can't leave a default identity with no paired device behind.
|
|
247
|
+
*/
|
|
248
|
+
pair: async (device: Device, options?: ConnectOptions): Promise<void> => {
|
|
249
|
+
await pushAllBluetoothSettings()
|
|
250
|
+
return BluetoothSdk.connect(device, {...options, saveAsDefault: false})
|
|
251
|
+
},
|
|
252
|
+
/** Set a device as the default for subsequent `glasses.connectDefault()`. */
|
|
253
|
+
setDefault: (...args: Parameters<typeof BluetoothSdk.setDefaultDevice>) => BluetoothSdk.setDefaultDevice(...args),
|
|
254
|
+
/**
|
|
255
|
+
* Prime the native Bluetooth Classic audio watcher with the picked device.
|
|
256
|
+
* The iOS Mentra Live flow pairs Classic audio BEFORE any BLE connect
|
|
257
|
+
* exists, and native detects the pairing by matching the connected audio
|
|
258
|
+
* route against its device_name — which two-phase identity no longer sets
|
|
259
|
+
* at selection time. This is native-only routing state (device_name has no
|
|
260
|
+
* native→JS echo): the phone's persisted identity is untouched, and
|
|
261
|
+
* promotion still happens only at pairing success.
|
|
262
|
+
*/
|
|
263
|
+
setBluetoothClassicTarget: (device: Device): Promise<void> =>
|
|
264
|
+
BluetoothSdk.updateBluetoothSettings({device_name: device.name}),
|
|
265
|
+
/**
|
|
266
|
+
* Abandon an in-flight pairing attempt (back-out, failure retry, conflict
|
|
267
|
+
* retry) without destroying an existing pairing. The decision comes from the
|
|
268
|
+
* LIVE hydrated default-device read — never from flow-entry state, because a
|
|
269
|
+
* pairing can PROMOTE while the flow is open (the glasses finish pairing
|
|
270
|
+
* even as the user backs out of the UI), and an entry snapshot would forget
|
|
271
|
+
* that brand-new pairing:
|
|
272
|
+
* - Default device exists and glasses are connected (nothing in flight — an
|
|
273
|
+
* attempt drops the link first): stop the scan, touch nothing else.
|
|
274
|
+
* - Default device exists with an attempt in flight: cancel it, then re-seed
|
|
275
|
+
* the native identity from the phone's persisted settings — the attempt's
|
|
276
|
+
* connect-by-name overwrote the native device_name, so a later
|
|
277
|
+
* connectDefault() would otherwise target the abandoned device.
|
|
278
|
+
* - No default device (genuinely unpaired attempt): also forget, clearing
|
|
279
|
+
* the partial native pairing state.
|
|
280
|
+
* The read fails OPEN to "preserve" — a transient failure must never wipe a
|
|
281
|
+
* real pairing. The `pending_wearable` marker is deliberately left alone —
|
|
282
|
+
* the host renders it as a finish-pairing affordance.
|
|
283
|
+
*/
|
|
284
|
+
abandonAttempt: async (): Promise<void> => {
|
|
285
|
+
const nativeHasDefault = await hasDefaultDevice().catch(() => true)
|
|
286
|
+
if (nativeHasDefault && isGlassesConnected(useGlassesStore.getState().connection)) {
|
|
287
|
+
// Still connected means no connect attempt is in flight (an attempt drops
|
|
288
|
+
// the existing link first): the user browsed the scan and backed out.
|
|
289
|
+
// Stop the scan and leave the live pairing untouched.
|
|
290
|
+
console.log("PairingIdentity: abandonAttempt — pairing intact and connected; stopping scan only")
|
|
291
|
+
await BluetoothSdk.stopScan()
|
|
292
|
+
return
|
|
293
|
+
}
|
|
294
|
+
await BluetoothSdk.disconnect()
|
|
295
|
+
if (projectPairingIdentity().kind === "paired") {
|
|
296
|
+
// The persisted settings describe a COMPLETE pairing: restore it to
|
|
297
|
+
// native (the attempt's connect-by-name overwrote the native
|
|
298
|
+
// device_name; and if native somehow lost its default entirely, this
|
|
299
|
+
// repairs the divergence instead of forgetting a real pairing).
|
|
300
|
+
console.log("PairingIdentity: abandonAttempt — preserving pairing; attempt cancelled, native identity re-seeded")
|
|
301
|
+
await pushAllBluetoothSettings()
|
|
302
|
+
} else if (nativeHasDefault) {
|
|
303
|
+
// Mid-relay: native promoted and its echoes are still landing — the
|
|
304
|
+
// incomplete JS snapshot must not be pushed over the fresher native
|
|
305
|
+
// identity (the on-connect replay's race). Native holds the truth.
|
|
306
|
+
console.log("PairingIdentity: abandonAttempt — preserving pairing; JS identity mid-relay, native kept as-is")
|
|
307
|
+
} else {
|
|
308
|
+
// Forgetting requires CONSENSUS: no native default AND no complete
|
|
309
|
+
// persisted pairing — a genuinely partial attempt.
|
|
310
|
+
console.log("PairingIdentity: abandonAttempt — no pairing on either layer; forgetting the partial attempt")
|
|
311
|
+
await BluetoothSdk.forget()
|
|
312
|
+
}
|
|
313
|
+
},
|
|
314
|
+
|
|
315
|
+
/** Subscribe to pairing failures; returns an unsubscribe. */
|
|
316
|
+
onPairFailure: (cb: (event: PairFailureEvent) => void): (() => void) => {
|
|
317
|
+
const sub = BluetoothSdk.addListener("pair_failure", cb)
|
|
318
|
+
return () => sub.remove()
|
|
319
|
+
},
|
|
320
|
+
/** Subscribe to glasses-not-ready events during pairing; returns an unsubscribe. */
|
|
321
|
+
onGlassesNotReady: (cb: (event: GlassesNotReadyEvent) => void): (() => void) => {
|
|
322
|
+
const sub = BluetoothSdk.addListener("glasses_not_ready", cb)
|
|
323
|
+
return () => sub.remove()
|
|
324
|
+
},
|
|
325
|
+
/** Wait for paired glasses to finish booting; engine files the timeout diagnostic. */
|
|
326
|
+
waitForReady: waitForReadyDuringPairing,
|
|
327
|
+
/** Wait briefly for Bluetooth Classic to come up after BLE pairing. */
|
|
328
|
+
waitForBluetoothClassic,
|
|
329
|
+
}
|