@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,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phone location service — engine-owned. Owns the background phone-GPS task: the
|
|
3
|
+
* accuracy-tier control (`setLocationTier`), the accuracy mapping, and the
|
|
4
|
+
* `expo-task-manager` background task that fans each fix to the v2 cloud
|
|
5
|
+
* local miniapps (`location_update`). Cloud upload was V1 (removed).
|
|
6
|
+
*
|
|
7
|
+
* This used to be the host-injected `locationTier` runtime hook + a MantleManager
|
|
8
|
+
* `TaskManager.defineTask`. It's device/OS plumbing (no UI), so it moved into engine:
|
|
9
|
+
* the runtime drives `setLocationTier` directly off miniapp demand, and any host —
|
|
10
|
+
* including a bare OEM — gets phone location without wiring a hook. The host keeps the
|
|
11
|
+
* permission *UI* (it gates `setLocationTier` on the OS permission before calling).
|
|
12
|
+
*
|
|
13
|
+
* The task is registered at module load (the export from `index.ts` evaluates this
|
|
14
|
+
* file as soon as `@glassly/engine` is imported), matching the old MantleManager
|
|
15
|
+
* top-level `defineTask` timing — including on a headless background relaunch.
|
|
16
|
+
*/
|
|
17
|
+
import * as Location from "expo-location"
|
|
18
|
+
import * as TaskManager from "expo-task-manager"
|
|
19
|
+
|
|
20
|
+
import localMiniappRuntime from "./LocalMiniappRuntime"
|
|
21
|
+
|
|
22
|
+
export const LOCATION_TASK_NAME = "handleLocationUpdates"
|
|
23
|
+
|
|
24
|
+
// Background location task — forwards each fix to local miniapps. (The cloud
|
|
25
|
+
// upload leg was removed with the V1 ripout; see the note at forwardEvent below.)
|
|
26
|
+
TaskManager.defineTask<{locations?: Location.LocationObject[]}>(LOCATION_TASK_NAME, async ({data, error}) => {
|
|
27
|
+
if (error) {
|
|
28
|
+
// OS-level failure (permission revoked, GPS unavailable, …) — log it so
|
|
29
|
+
// background location dropouts are diagnosable.
|
|
30
|
+
console.warn("ISLAND: LOCATION: background task error:", error)
|
|
31
|
+
return
|
|
32
|
+
}
|
|
33
|
+
const locs = data?.locations ?? []
|
|
34
|
+
if (locs.length === 0) {
|
|
35
|
+
console.log("ISLAND: LOCATION: No locations received")
|
|
36
|
+
return
|
|
37
|
+
}
|
|
38
|
+
const first = locs[0]!
|
|
39
|
+
// Cloud path (relayMessageToApps) never reaches __phone__, so local miniapps rely
|
|
40
|
+
// on this direct push.
|
|
41
|
+
// Local miniapps get the update directly (the cloud relay never reaches
|
|
42
|
+
// __phone__). The Cloud V1 upload that used to run here was removed with the
|
|
43
|
+
// V1 ripout (issue #3392); a V2 location channel is separate product work.
|
|
44
|
+
localMiniappRuntime.forwardEvent("location_update", {
|
|
45
|
+
lat: first.coords.latitude,
|
|
46
|
+
lng: first.coords.longitude,
|
|
47
|
+
accuracy: first.coords.accuracy ?? undefined,
|
|
48
|
+
timestamp: first.timestamp,
|
|
49
|
+
})
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
/** Map a Glassly location tier/accuracy string to an expo-location accuracy. */
|
|
53
|
+
export function getLocationAccuracy(accuracy: string | undefined): Location.LocationAccuracy {
|
|
54
|
+
switch (accuracy) {
|
|
55
|
+
// Aggregate miniapp tiers (LocalMiniappRuntime.recomputeLocation → "passive" |
|
|
56
|
+
// "low" | "high" | "realtime"). Previously only "realtime" mapped; "passive"/"low"/
|
|
57
|
+
// "high" fell through to Lowest, so a miniapp asking for high-rate GPS got the
|
|
58
|
+
// coarsest accuracy.
|
|
59
|
+
case "realtime":
|
|
60
|
+
return Location.LocationAccuracy.BestForNavigation
|
|
61
|
+
case "high":
|
|
62
|
+
return Location.LocationAccuracy.High
|
|
63
|
+
case "low":
|
|
64
|
+
return Location.LocationAccuracy.Low
|
|
65
|
+
case "passive":
|
|
66
|
+
return Location.LocationAccuracy.Lowest
|
|
67
|
+
// Accuracy-string vocabulary (persisted location_tier setting / boot path).
|
|
68
|
+
case "tenMeters":
|
|
69
|
+
return Location.LocationAccuracy.High
|
|
70
|
+
case "hundredMeters":
|
|
71
|
+
return Location.LocationAccuracy.Balanced
|
|
72
|
+
case "kilometer":
|
|
73
|
+
return Location.LocationAccuracy.Low
|
|
74
|
+
case "threeKilometers":
|
|
75
|
+
return Location.LocationAccuracy.Lowest
|
|
76
|
+
case "reduced":
|
|
77
|
+
return Location.LocationAccuracy.Lowest
|
|
78
|
+
default:
|
|
79
|
+
return Location.LocationAccuracy.Lowest
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Apply a location tier (the aggregate of what miniapps request). "off" means no app
|
|
85
|
+
* is asking — stop the task so the OS can power GPS down; anything else (re)starts the
|
|
86
|
+
* background task at the matching accuracy. Callers gate this on the OS location
|
|
87
|
+
* permission (host UI concern).
|
|
88
|
+
*/
|
|
89
|
+
export async function setLocationTier(tier: "off" | "passive" | "low" | "high" | "realtime" | string): Promise<void> {
|
|
90
|
+
console.log("ISLAND: setLocationTier()", tier)
|
|
91
|
+
try {
|
|
92
|
+
const isRegistered = await Location.hasStartedLocationUpdatesAsync(LOCATION_TASK_NAME).catch(() => false)
|
|
93
|
+
if (isRegistered) {
|
|
94
|
+
await Location.stopLocationUpdatesAsync(LOCATION_TASK_NAME)
|
|
95
|
+
}
|
|
96
|
+
if (tier === "off") {
|
|
97
|
+
console.log("ISLAND: setLocationTier() stopped — no active subscribers")
|
|
98
|
+
return
|
|
99
|
+
}
|
|
100
|
+
await Location.startLocationUpdatesAsync(LOCATION_TASK_NAME, {
|
|
101
|
+
accuracy: getLocationAccuracy(tier),
|
|
102
|
+
pausesUpdatesAutomatically: false,
|
|
103
|
+
})
|
|
104
|
+
console.log("ISLAND: setLocationTier() success —", tier)
|
|
105
|
+
} catch (error) {
|
|
106
|
+
console.log("ISLAND: Error setting location tier", error)
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** Stop the background location task (host cleanup). */
|
|
111
|
+
export function stopPhoneLocation(): void {
|
|
112
|
+
Location.stopLocationUpdatesAsync(LOCATION_TASK_NAME).catch(() => {})
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export const phoneLocationService = {
|
|
116
|
+
LOCATION_TASK_NAME,
|
|
117
|
+
getLocationAccuracy,
|
|
118
|
+
setLocationTier,
|
|
119
|
+
stopPhoneLocation,
|
|
120
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phone-notifications sync — engine-owned. Pushes the notification-forwarding
|
|
3
|
+
* operational kill switch + config (`android_notification_listener_enabled`
|
|
4
|
+
* and `notifications_blocklist`) to the native
|
|
5
|
+
* NotificationListener via `CrustModule.setNotificationConfig`, so
|
|
6
|
+
* the blocklist reaches the listener for ANY host — not just the Glassly App,
|
|
7
|
+
* where this used to live in MantleManager. The Android service is desired by
|
|
8
|
+
* default now that its cold start is isolated from React Native. Native code
|
|
9
|
+
* keeps the component discoverable in Android's notification-access Settings,
|
|
10
|
+
* but only binds the service after access is granted. The debug setting remains
|
|
11
|
+
* a hidden emergency kill switch; Notify's running state gates presentation,
|
|
12
|
+
* not capture. Android-only; a no-op elsewhere. Started by `engine.start()`.
|
|
13
|
+
*/
|
|
14
|
+
import {shallow} from "zustand/shallow"
|
|
15
|
+
import CrustModule from "@glassly/crust"
|
|
16
|
+
|
|
17
|
+
import {useSettingsStore, SETTINGS} from "../stores/settings"
|
|
18
|
+
|
|
19
|
+
let unsubscribe: (() => void) | null = null
|
|
20
|
+
|
|
21
|
+
function pushConfig(): void {
|
|
22
|
+
const s = useSettingsStore.getState()
|
|
23
|
+
const listenerEnabled = Boolean(s.getSetting(SETTINGS.android_notification_listener_enabled.key))
|
|
24
|
+
const blocklist = s.getSetting(SETTINGS.notifications_blocklist.key)
|
|
25
|
+
CrustModule.setNotificationConfig(listenerEnabled, Array.isArray(blocklist) ? blocklist : []).catch((err: unknown) =>
|
|
26
|
+
console.warn(`PhoneNotificationsSync: setNotificationConfig failed: ${(err as Error)?.message ?? err}`),
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function startPhoneNotificationsSync(): void {
|
|
31
|
+
if (unsubscribe) return
|
|
32
|
+
pushConfig() // initial sync so the listener has the current config
|
|
33
|
+
unsubscribe = useSettingsStore.subscribe(
|
|
34
|
+
(state) => ({
|
|
35
|
+
listenerEnabled: state.getSetting(SETTINGS.android_notification_listener_enabled.key),
|
|
36
|
+
blocklist: state.getSetting(SETTINGS.notifications_blocklist.key),
|
|
37
|
+
}),
|
|
38
|
+
() => pushConfig(),
|
|
39
|
+
{equalityFn: shallow},
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function stopPhoneNotificationsSync(): void {
|
|
44
|
+
unsubscribe?.()
|
|
45
|
+
unsubscribe = null
|
|
46
|
+
}
|
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PhonePhotoCoordinator — owns local-miniapp takePhoto() end-to-end.
|
|
3
|
+
*
|
|
4
|
+
* Architecture:
|
|
5
|
+
* miniapp → SDK → LocalMiniappRuntime → photo runtime hook
|
|
6
|
+
* → coordinator.takePhoto(packageName, opts)
|
|
7
|
+
* ├── (precheck) glasses connected + hasCamera
|
|
8
|
+
* ├── cloudClientService.startManagedPhoto → {requestId, uploadUrl, readUrl} (cloud-v2 runtime presign)
|
|
9
|
+
* ├── BluetoothSdk.requestPhoto(requestId, size, uploadUrl, compress, sound)
|
|
10
|
+
* └── race:
|
|
11
|
+
* - cloudClientService.awaitManagedPhotoReady(requestId) resolves on photo.ready push
|
|
12
|
+
* - BluetoothSdk.requestPhoto rejects if terminal photo_response is an error
|
|
13
|
+
* - handlePhotoError(requestId, code, message) rejects if MantleManager observes
|
|
14
|
+
* the same BLE photo_response error before the native promise crosses the bridge
|
|
15
|
+
*
|
|
16
|
+
* `activeRequests` lets MantleManager's gated `photo_response` listener
|
|
17
|
+
* short-circuit our long-poll with a typed error (CAMERA_BUSY, BATTERY_LOW,
|
|
18
|
+
* etc.) instead of waiting 30s for cloud's timeout.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import BluetoothSdk from "@glassly/bluetooth-sdk/internal"
|
|
22
|
+
import type {PhotoSize, PhotoTransferMethod} from "@glassly/bluetooth-sdk/internal"
|
|
23
|
+
import {cloudClientService} from "./CloudClientService"
|
|
24
|
+
import {isGlassesConnected} from "./GlassesReadiness"
|
|
25
|
+
import {useGlassesStore} from "../stores/glasses"
|
|
26
|
+
|
|
27
|
+
interface PhotoResult {
|
|
28
|
+
photoUrl: string
|
|
29
|
+
mimeType: string
|
|
30
|
+
size: number
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Map legacy/cloud size names onto the native take_photo enum. */
|
|
34
|
+
function normalizePhotoSize(value: unknown): PhotoSize {
|
|
35
|
+
if (typeof value !== "string") return "medium"
|
|
36
|
+
switch (value) {
|
|
37
|
+
case "small":
|
|
38
|
+
return "low"
|
|
39
|
+
case "large":
|
|
40
|
+
return "high"
|
|
41
|
+
case "full":
|
|
42
|
+
return "max"
|
|
43
|
+
default:
|
|
44
|
+
return (["low", "medium", "high", "max"] as const).includes(value as PhotoSize) ? (value as PhotoSize) : "medium"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface PhotoOpts {
|
|
49
|
+
/** Legacy cloud size names are normalized before the native take_photo command. */
|
|
50
|
+
size?: "low" | "medium" | "high" | "max" | "small" | "large" | "full"
|
|
51
|
+
mode?: "photo" | "text"
|
|
52
|
+
/** Select direct-only, phone-relayed BLE, or the default Wi-Fi/BLE fallback policy. */
|
|
53
|
+
transferMethod?: PhotoTransferMethod
|
|
54
|
+
compress?: "none" | "low" | "medium" | "high"
|
|
55
|
+
sound?: boolean
|
|
56
|
+
saveToGallery?: boolean
|
|
57
|
+
exposureTimeNs?: number
|
|
58
|
+
iso?: number | null
|
|
59
|
+
aeExposureDivisor?: number
|
|
60
|
+
isoCap?: number
|
|
61
|
+
noiseReduction?: boolean
|
|
62
|
+
edgeEnhancement?: boolean
|
|
63
|
+
/** ZSL preview buffering. */
|
|
64
|
+
zsl?: boolean
|
|
65
|
+
/** MFNR still capture. */
|
|
66
|
+
mfnr?: boolean
|
|
67
|
+
ispDigitalGain?: number
|
|
68
|
+
ispAnalogGain?: string
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface PhotoTaken {
|
|
72
|
+
photoUrl: string
|
|
73
|
+
mimeType: string
|
|
74
|
+
size: number
|
|
75
|
+
requestId: string
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** Pipeline stage a photo request failed at — surfaced to the miniapp so a dev
|
|
79
|
+
* sees exactly where it broke, not just a flattened message. */
|
|
80
|
+
export type PhotoStage = "presign" | "command" | "capture" | "upload" | "push"
|
|
81
|
+
/** Transport in play at the point of failure. */
|
|
82
|
+
export type PhotoTransport = "cloud-rest" | "ble" | "wifi" | "ws"
|
|
83
|
+
|
|
84
|
+
export class PhotoError extends Error {
|
|
85
|
+
constructor(
|
|
86
|
+
public readonly code: string,
|
|
87
|
+
message: string,
|
|
88
|
+
public readonly stage?: PhotoStage,
|
|
89
|
+
public readonly transport?: PhotoTransport,
|
|
90
|
+
) {
|
|
91
|
+
super(message)
|
|
92
|
+
this.name = "PhotoError"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function parsePhotoTransferMethod(value: unknown): PhotoTransferMethod | undefined {
|
|
97
|
+
if (value === undefined) return undefined
|
|
98
|
+
if (value === "auto" || value === "direct" || value === "ble") return value
|
|
99
|
+
throw new PhotoError(
|
|
100
|
+
"INVALID_ARGUMENT",
|
|
101
|
+
`Invalid transferMethod ${JSON.stringify(value)}. Expected "auto", "direct", or "ble".`,
|
|
102
|
+
)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
interface ActiveRequest {
|
|
106
|
+
packageName: string
|
|
107
|
+
abort: AbortController
|
|
108
|
+
resolve: (r: PhotoResult) => void
|
|
109
|
+
reject: (err: Error) => void
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Last-resort ceiling for the complete capture + encode + transfer + upload
|
|
114
|
+
* pipeline. This must exceed the managed-photo service's 30s ready-push
|
|
115
|
+
* timeout so the cloud can return its more specific failure first.
|
|
116
|
+
*
|
|
117
|
+
* Text mode commonly spends several seconds detecting/cropping the region and
|
|
118
|
+
* can take another 10s+ to transfer over BLE. A 15s ceiling incorrectly
|
|
119
|
+
* rejected successful captures while their upload was still in progress.
|
|
120
|
+
*/
|
|
121
|
+
export const CAPTURE_PIPELINE_TIMEOUT_MS = 45_000
|
|
122
|
+
export const CAMERA_WARM_UP_DEFAULT_DURATION_MS = 15_000
|
|
123
|
+
export const CAMERA_WARM_UP_MAX_DURATION_MS = 60_000
|
|
124
|
+
|
|
125
|
+
let bleRequestCounter = 0
|
|
126
|
+
|
|
127
|
+
/** Short 4-hex-char correlation id sent over BLE instead of the full cloud
|
|
128
|
+
* requestId UUID (wire v2 keeps BLE JSON small). */
|
|
129
|
+
function mintBleRequestId(): string {
|
|
130
|
+
bleRequestCounter = (bleRequestCounter + 1) & 0xffff
|
|
131
|
+
return bleRequestCounter.toString(16).padStart(4, "0")
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function toNativeCompression(compress: PhotoOpts["compress"]): "none" | "medium" | "heavy" {
|
|
135
|
+
if (compress === "high") return "heavy"
|
|
136
|
+
if (compress === "low" || compress === "medium") return "medium"
|
|
137
|
+
return "none"
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export class PhonePhotoCoordinator {
|
|
141
|
+
// Cloud requestId → in-flight slot. The gated photo_response listener
|
|
142
|
+
// (DeviceEventRouter) resolves short BLE ids via bleIdToCloud before calling
|
|
143
|
+
// owns() / handlePhotoError().
|
|
144
|
+
private readonly activeRequests = new Map<string, ActiveRequest>()
|
|
145
|
+
/** Short BLE correlation id (4-char hex) → full cloud requestId. */
|
|
146
|
+
private readonly bleIdToCloud = new Map<string, string>()
|
|
147
|
+
private readonly activeWarmUps = new Map<
|
|
148
|
+
string,
|
|
149
|
+
{requestId: string; durationMs: number; expiryTimer?: ReturnType<typeof setTimeout>}
|
|
150
|
+
>()
|
|
151
|
+
|
|
152
|
+
/** Report-safe camera ownership snapshot for incident diagnostics. */
|
|
153
|
+
getDiagnosticSnapshot(): Record<string, unknown> {
|
|
154
|
+
return {
|
|
155
|
+
captureOwners: [...new Set([...this.activeRequests.values()].map((request) => request.packageName))].sort(),
|
|
156
|
+
warmUpOwners: [...this.activeWarmUps.keys()].sort(),
|
|
157
|
+
activeCaptureCount: this.activeRequests.size,
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
async takePhoto(packageName: string, opts: PhotoOpts): Promise<PhotoTaken> {
|
|
162
|
+
const transferMethod = parsePhotoTransferMethod(opts.transferMethod)
|
|
163
|
+
|
|
164
|
+
// Pre-check: if glasses aren't even connected, the BLE photo command
|
|
165
|
+
// would be sent into the void and we'd wait 30s for the cloud long-poll
|
|
166
|
+
// to time out. Fail fast with a typed error.
|
|
167
|
+
//
|
|
168
|
+
// We DON'T pre-check `hasCamera` here — the canonical capability data
|
|
169
|
+
// lives in `getModelCapabilities(deviceModel)` in the engine types and
|
|
170
|
+
// pulling that into this file would add a cross-package import. If a
|
|
171
|
+
// cameraless device receives the BLE photo command, the glasses-side
|
|
172
|
+
// handler will return a photo_response error within ~1s and the gated
|
|
173
|
+
// photo_response listener in MantleManager will short-circuit our
|
|
174
|
+
// long-poll. Slower but correct.
|
|
175
|
+
if (!isGlassesConnected(useGlassesStore.getState().connection)) {
|
|
176
|
+
throw new PhotoError("GLASSES_NOT_CONNECTED", "Glasses are not connected", "command", "ble")
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Text-mode sensor resolution is owned by ASG constants; keep cloud metadata on a stable
|
|
180
|
+
// high-capacity tier and let the glasses ignore the public size when mode=text.
|
|
181
|
+
const captureSize = opts.size ?? "medium"
|
|
182
|
+
|
|
183
|
+
// 1) Presign via the cloud-v2 managed-photo service. Local miniapps use
|
|
184
|
+
// ONLY the cloud-v2 path: the runtime presigns upload+read URLs and the
|
|
185
|
+
// phone (as the device controller) delivers the bytes; the legacy
|
|
186
|
+
// backend_url mint is gone from this flow.
|
|
187
|
+
let requestId: string
|
|
188
|
+
let uploadUrl: string
|
|
189
|
+
let readUrl: string
|
|
190
|
+
const flowStarted = performance.now()
|
|
191
|
+
try {
|
|
192
|
+
const presignStarted = performance.now()
|
|
193
|
+
const r = await cloudClientService.startManagedPhoto({
|
|
194
|
+
size: opts.mode === "text" ? "max" : captureSize,
|
|
195
|
+
})
|
|
196
|
+
const presignMs = Math.round(performance.now() - presignStarted)
|
|
197
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
198
|
+
console.debug(
|
|
199
|
+
`[PhonePhotoCoordinator] presign ${presignMs}ms size=${opts.mode === "text" ? "max" : captureSize} mode=${
|
|
200
|
+
opts.mode ?? "photo"
|
|
201
|
+
}`,
|
|
202
|
+
)
|
|
203
|
+
}
|
|
204
|
+
requestId = r.requestId
|
|
205
|
+
uploadUrl = r.uploadUrl
|
|
206
|
+
readUrl = r.readUrl
|
|
207
|
+
} catch (err) {
|
|
208
|
+
throw this.toPhotoError(err, "PHOTO_REQUEST_FAILED", "presign", "cloud-rest")
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// 2) Build the outcome Promise FIRST so both resolve+reject handles
|
|
212
|
+
// are wired into activeRequests BEFORE any code path can produce
|
|
213
|
+
// an error. Without this, a fast BLE photo_response (BATTERY_LOW
|
|
214
|
+
// etc.) racing with the Promise constructor could fire
|
|
215
|
+
// handlePhotoError() against a no-op rejectFn and silently drop
|
|
216
|
+
// the error.
|
|
217
|
+
// When the managed-photo upload URL is loopback (the local storage provider
|
|
218
|
+
// reached over `adb reverse`), the glasses cannot reach it over WiFi —
|
|
219
|
+
// localhost on the glasses is the glasses. Force BLE transfer so the phone
|
|
220
|
+
// (which CAN reach the reversed runtime) relays the bytes; a public r2/s3
|
|
221
|
+
// presigned URL stays on "auto".
|
|
222
|
+
const isLoopbackUpload = /^https?:\/\/(localhost|127\.0\.0\.1|10\.0\.2\.2)\b/.test(uploadUrl)
|
|
223
|
+
|
|
224
|
+
const abort = new AbortController()
|
|
225
|
+
const bleRequestId = mintBleRequestId()
|
|
226
|
+
this.bleIdToCloud.set(bleRequestId, requestId)
|
|
227
|
+
|
|
228
|
+
const outcome = new Promise<PhotoResult>((resolve, reject) => {
|
|
229
|
+
this.activeRequests.set(requestId, {packageName, abort, resolve, reject})
|
|
230
|
+
})
|
|
231
|
+
|
|
232
|
+
// Last-resort watchdog for a wedged pipeline. The managed-photo ready push
|
|
233
|
+
// normally resolves or rejects first; this only prevents an indefinite hang
|
|
234
|
+
// if both the native terminal response and cloud push disappear.
|
|
235
|
+
const captureWatchdog = setTimeout(() => {
|
|
236
|
+
const e = this.activeRequests.get(requestId)
|
|
237
|
+
if (!e) return
|
|
238
|
+
e.abort.abort()
|
|
239
|
+
e.reject(
|
|
240
|
+
new PhotoError(
|
|
241
|
+
"CAPTURE_TIMEOUT",
|
|
242
|
+
"Photo capture did not complete. The take_photo command, media processing, transfer, or upload may have stalled.",
|
|
243
|
+
"capture",
|
|
244
|
+
isLoopbackUpload ? "ble" : "wifi",
|
|
245
|
+
),
|
|
246
|
+
)
|
|
247
|
+
}, CAPTURE_PIPELINE_TIMEOUT_MS)
|
|
248
|
+
// Clear the watchdog on BOTH arms. Not `.finally()`: that would mint a new
|
|
249
|
+
// promise that re-rejects unobserved whenever the photo fails (the caller
|
|
250
|
+
// only awaits `outcome` itself), i.e. an unhandled rejection per failure.
|
|
251
|
+
const clearWatchdog = () => clearTimeout(captureWatchdog)
|
|
252
|
+
void outcome.then(clearWatchdog, clearWatchdog)
|
|
253
|
+
|
|
254
|
+
// 3) Drive glasses over BLE. requestPhoto now resolves at terminal
|
|
255
|
+
// photo_response success, so run it beside the cloud poll instead of
|
|
256
|
+
// awaiting it before polling. Native defaults transferMethod to "auto"
|
|
257
|
+
// (Wi-Fi direct with BLE fallback) unless the miniapp forces BLE.
|
|
258
|
+
try {
|
|
259
|
+
void BluetoothSdk.requestPhoto({
|
|
260
|
+
requestId: bleRequestId,
|
|
261
|
+
appId: packageName,
|
|
262
|
+
size: normalizePhotoSize(captureSize),
|
|
263
|
+
mode: opts.mode ?? "photo",
|
|
264
|
+
webhookUrl: uploadUrl,
|
|
265
|
+
authToken: null,
|
|
266
|
+
...(isLoopbackUpload ? {transferMethod: "ble" as const} : transferMethod ? {transferMethod} : {}),
|
|
267
|
+
compress: toNativeCompression(opts.compress),
|
|
268
|
+
save: opts.saveToGallery ?? false,
|
|
269
|
+
sound: opts.sound ?? true,
|
|
270
|
+
exposureTimeNs: opts.exposureTimeNs ?? null,
|
|
271
|
+
iso: opts.iso,
|
|
272
|
+
aeExposureDivisor: opts.aeExposureDivisor,
|
|
273
|
+
isoCap: opts.isoCap,
|
|
274
|
+
noiseReduction: opts.noiseReduction,
|
|
275
|
+
edgeEnhancement: opts.edgeEnhancement,
|
|
276
|
+
...(opts.zsl != null ? {zsl: opts.zsl} : {}),
|
|
277
|
+
...(opts.mfnr != null ? {mfnr: opts.mfnr} : {}),
|
|
278
|
+
ispDigitalGain: opts.ispDigitalGain,
|
|
279
|
+
ispAnalogGain: opts.ispAnalogGain,
|
|
280
|
+
}).catch((err) => {
|
|
281
|
+
const e = this.activeRequests.get(requestId)
|
|
282
|
+
if (!e) return
|
|
283
|
+
e.abort.abort()
|
|
284
|
+
e.reject(this.toPhotoError(err, "BLE_SEND_FAILED", "command", "ble"))
|
|
285
|
+
})
|
|
286
|
+
} catch (err) {
|
|
287
|
+
this.activeRequests.delete(requestId)
|
|
288
|
+
this.bleIdToCloud.delete(bleRequestId)
|
|
289
|
+
throw this.toPhotoError(err, "BLE_SEND_FAILED", "command", "ble")
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// 4) Await the runtime's photo.ready push (replaces the legacy long-poll).
|
|
293
|
+
// handlePhotoError races against it and uses the same entry to reject
|
|
294
|
+
// first.
|
|
295
|
+
cloudClientService
|
|
296
|
+
.awaitManagedPhotoReady(requestId)
|
|
297
|
+
.then((res) => {
|
|
298
|
+
const e = this.activeRequests.get(requestId)
|
|
299
|
+
if (!e) return // already settled by handlePhotoError
|
|
300
|
+
e.resolve({photoUrl: res.readUrl ?? readUrl, mimeType: "image/jpeg", size: -1})
|
|
301
|
+
})
|
|
302
|
+
.catch((err) => {
|
|
303
|
+
const e = this.activeRequests.get(requestId)
|
|
304
|
+
if (e) e.reject(this.toPhotoError(err, "POLL_FAILED", "push", "ws"))
|
|
305
|
+
})
|
|
306
|
+
|
|
307
|
+
try {
|
|
308
|
+
const result = await outcome
|
|
309
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
310
|
+
console.debug(
|
|
311
|
+
`[PhonePhotoCoordinator] takePhoto complete ${Math.round(
|
|
312
|
+
performance.now() - flowStarted,
|
|
313
|
+
)}ms requestId=${requestId}`,
|
|
314
|
+
)
|
|
315
|
+
}
|
|
316
|
+
return {
|
|
317
|
+
photoUrl: result.photoUrl,
|
|
318
|
+
mimeType: result.mimeType,
|
|
319
|
+
size: result.size,
|
|
320
|
+
requestId,
|
|
321
|
+
}
|
|
322
|
+
} finally {
|
|
323
|
+
this.activeRequests.delete(requestId)
|
|
324
|
+
this.bleIdToCloud.delete(bleRequestId)
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/** Map a short BLE requestId from photo_response back to the cloud requestId. */
|
|
329
|
+
resolveCloudRequestId(bleOrCloudId: string): string {
|
|
330
|
+
return this.bleIdToCloud.get(bleOrCloudId) ?? bleOrCloudId
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Pre-warm the glasses camera so the next takePhoto() is near-instant.
|
|
335
|
+
*
|
|
336
|
+
* Pure BLE — NO cloud presign, NO upload, NO long-poll. The phone mints and owns
|
|
337
|
+
* the requestId, sends the warm-up command, and resolves when the camera reports
|
|
338
|
+
* ready (the native promise resolves on the ready status event).
|
|
339
|
+
*/
|
|
340
|
+
async warmUpCamera(
|
|
341
|
+
packageName: string,
|
|
342
|
+
opts: {
|
|
343
|
+
size?: "low" | "medium" | "high" | "max"
|
|
344
|
+
mode?: "photo" | "text"
|
|
345
|
+
exposureTimeNs?: number
|
|
346
|
+
durationMs?: number
|
|
347
|
+
zsl?: boolean
|
|
348
|
+
mfnr?: boolean
|
|
349
|
+
},
|
|
350
|
+
): Promise<void> {
|
|
351
|
+
// Pre-check: if glasses aren't connected, the BLE warm-up command would be
|
|
352
|
+
// sent into the void. Fail fast with a typed error.
|
|
353
|
+
if (!isGlassesConnected(useGlassesStore.getState().connection)) {
|
|
354
|
+
throw new PhotoError("GLASSES_NOT_CONNECTED", "Glasses are not connected", "command", "ble")
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
let lease: {requestId: string; durationMs: number; expiryTimer?: ReturnType<typeof setTimeout>} | undefined
|
|
358
|
+
try {
|
|
359
|
+
await this.stopWarmUpForApp(packageName)
|
|
360
|
+
const requestId = mintBleRequestId()
|
|
361
|
+
const requestedDuration =
|
|
362
|
+
typeof opts.durationMs === "number" && Number.isFinite(opts.durationMs) && opts.durationMs > 0
|
|
363
|
+
? Math.round(opts.durationMs)
|
|
364
|
+
: CAMERA_WARM_UP_DEFAULT_DURATION_MS
|
|
365
|
+
const durationMs = Math.min(requestedDuration, CAMERA_WARM_UP_MAX_DURATION_MS)
|
|
366
|
+
lease = {requestId, durationMs}
|
|
367
|
+
this.activeWarmUps.set(packageName, lease)
|
|
368
|
+
await BluetoothSdk.warmUpCamera({
|
|
369
|
+
requestId,
|
|
370
|
+
size: normalizePhotoSize(opts.size ?? "medium"),
|
|
371
|
+
mode: opts.mode ?? "photo",
|
|
372
|
+
exposureTimeNs: opts.exposureTimeNs ?? null,
|
|
373
|
+
durationMs,
|
|
374
|
+
...(opts.zsl != null ? {zsl: opts.zsl} : {}),
|
|
375
|
+
...(opts.mfnr != null ? {mfnr: opts.mfnr} : {}),
|
|
376
|
+
})
|
|
377
|
+
if (this.activeWarmUps.get(packageName) === lease) {
|
|
378
|
+
lease.expiryTimer = setTimeout(() => {
|
|
379
|
+
if (this.activeWarmUps.get(packageName) === lease) {
|
|
380
|
+
this.activeWarmUps.delete(packageName)
|
|
381
|
+
}
|
|
382
|
+
}, durationMs)
|
|
383
|
+
}
|
|
384
|
+
} catch (err) {
|
|
385
|
+
if (lease && this.activeWarmUps.get(packageName) === lease) {
|
|
386
|
+
if (lease.expiryTimer) clearTimeout(lease.expiryTimer)
|
|
387
|
+
this.activeWarmUps.delete(packageName)
|
|
388
|
+
}
|
|
389
|
+
throw this.toPhotoError(err, "WARM_UP_FAILED", "command", "ble")
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/** Release a miniapp's warm-up even if its original warmUpCamera promise is still opening. */
|
|
394
|
+
async stopWarmUpForApp(packageName: string): Promise<void> {
|
|
395
|
+
const active = this.activeWarmUps.get(packageName)
|
|
396
|
+
if (!active) return
|
|
397
|
+
await BluetoothSdk.stopCameraWarmUp(active.requestId)
|
|
398
|
+
if (this.activeWarmUps.get(packageName) === active) {
|
|
399
|
+
this.activeWarmUps.delete(packageName)
|
|
400
|
+
if (active.expiryTimer) clearTimeout(active.expiryTimer)
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
/** True iff this requestId (short BLE id or cloud id) is one we're currently waiting on. */
|
|
405
|
+
owns(requestId: string): boolean {
|
|
406
|
+
const cloudId = this.resolveCloudRequestId(requestId)
|
|
407
|
+
return this.activeRequests.has(cloudId)
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Called by MantleManager's gated photo_response listener when glasses
|
|
412
|
+
* report an error (BATTERY_LOW, CAMERA_BUSY, etc.) for a phone-owned
|
|
413
|
+
* requestId. Rejects the in-flight takePhoto Promise immediately.
|
|
414
|
+
*/
|
|
415
|
+
handlePhotoError(requestId: string, errorCode: string, errorMessage: string): void {
|
|
416
|
+
const cloudId = this.resolveCloudRequestId(requestId)
|
|
417
|
+
const entry = this.activeRequests.get(cloudId)
|
|
418
|
+
if (!entry) return
|
|
419
|
+
this.bleIdToCloud.delete(requestId)
|
|
420
|
+
// Abort the in-flight long-poll first so we don't double-resolve.
|
|
421
|
+
entry.abort.abort()
|
|
422
|
+
entry.reject(new PhotoError(errorCode || "GLASSES_ERROR", errorMessage || "Glasses error", "capture", "ble"))
|
|
423
|
+
// cloud-v2 pending photo requests TTL out on their own; nothing to free.
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
private toPhotoError(err: unknown, fallbackCode: string, stage?: PhotoStage, transport?: PhotoTransport): PhotoError {
|
|
427
|
+
if (err instanceof PhotoError) return err
|
|
428
|
+
const code = (err as {code?: string})?.code
|
|
429
|
+
const message = err instanceof Error ? err.message : String(err)
|
|
430
|
+
return new PhotoError(code || fallbackCode, message, stage, transport)
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
// Singleton — coordinator state is process-wide (mirrors phoneStreamCoordinator).
|
|
435
|
+
export const phonePhotoCoordinator = new PhonePhotoCoordinator()
|