@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,365 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MiniappLauncher — headless launch/teardown of a local miniapp's background
|
|
3
|
+
* JS context.
|
|
4
|
+
*
|
|
5
|
+
* This is the one piece of "run a miniapp" that used to live inside the
|
|
6
|
+
* `LocalMiniappView` React component (resolve the bundle → read the manifest →
|
|
7
|
+
* `spawnAndRegister`), triggered only when the Compositor mounted that
|
|
8
|
+
* component on foreground. Pulling it into the runtime means:
|
|
9
|
+
*
|
|
10
|
+
* - `start()` can actually spawn an app even when nothing foregrounds it
|
|
11
|
+
* (e.g. a system app launching another miniapp via `session.miniapps`).
|
|
12
|
+
* - the action broker can wake a stopped target headlessly — no UI at all.
|
|
13
|
+
* - the dev hot-reload respawn path and the WebView mount path share one
|
|
14
|
+
* resolve+spawn recipe instead of three copies.
|
|
15
|
+
*
|
|
16
|
+
* The launcher is **headless**: no React, no RN components. The engine-owned
|
|
17
|
+
* MiniappEngine hands it the {@link JSRouter} instance once during
|
|
18
|
+
* engine construction. OEMs embedding the runtime drive miniapp lifecycle
|
|
19
|
+
* through the engine facade and stores, not a separate launcher configure API.
|
|
20
|
+
*
|
|
21
|
+
* Boundary: the launcher owns the **background** context. WebView *rendering*
|
|
22
|
+
* (the UI layer) stays with the host — the launcher just hands back the
|
|
23
|
+
* resolved UI entry so the host can mount its `<WebView>`.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import {File} from "expo-file-system"
|
|
27
|
+
|
|
28
|
+
import {decideDevLaunchRoute} from "../utils/devMiniappLaunch"
|
|
29
|
+
import {storage} from "../utils/storage/storage"
|
|
30
|
+
import appRegistry, {getLocalAppRunningState, saveLocalAppRunningState} from "./AppRegistry"
|
|
31
|
+
import devServerBridge from "./DevServerBridge"
|
|
32
|
+
import localMiniappRuntime, {type InstalledMiniappManifest} from "./LocalMiniappRuntime"
|
|
33
|
+
import type {JSRouter} from "./JSRouter"
|
|
34
|
+
|
|
35
|
+
interface LauncherDeps {
|
|
36
|
+
/** The host-constructed router (needs the native Crust binding). */
|
|
37
|
+
router: JSRouter
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** Hints the host may pass from a view's props to avoid re-deriving them. */
|
|
41
|
+
export interface LaunchHints {
|
|
42
|
+
devUrl?: string
|
|
43
|
+
version?: string
|
|
44
|
+
devPort?: string
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** Everything the launcher resolved for a package — bg source + UI entry. */
|
|
48
|
+
export interface ResolvedBundle {
|
|
49
|
+
bgSource: string
|
|
50
|
+
uiUri: string | null
|
|
51
|
+
uiBaseDir: string | null
|
|
52
|
+
declaredPermissions: string[]
|
|
53
|
+
installedManifest?: InstalledMiniappManifest
|
|
54
|
+
/** Set for dev miniapps (HTTP off the dev server); null for released. */
|
|
55
|
+
devUrl: string | null
|
|
56
|
+
devPort: number | null
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** What the host needs back to render the UI layer. */
|
|
60
|
+
export interface LaunchResult {
|
|
61
|
+
uiUri: string | null
|
|
62
|
+
uiBaseDir: string | null
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
class MiniappLauncher {
|
|
66
|
+
private deps: LauncherDeps | null = null
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* In-flight launches keyed by packageName. Both apps.ts start() and the
|
|
70
|
+
* WebView mount call ensureRunning() before the first spawnAndRegister
|
|
71
|
+
* resolves — without this, neither sees the package in registeredPackages()
|
|
72
|
+
* yet and both spawn the same context (a clobber/double-spawn). Concurrent
|
|
73
|
+
* callers share the same promise.
|
|
74
|
+
*/
|
|
75
|
+
private readonly inFlight = new Map<string, Promise<LaunchResult>>()
|
|
76
|
+
|
|
77
|
+
/** Wire the router in. Called once from MiniappEngine construction. */
|
|
78
|
+
configure(deps: LauncherDeps): void {
|
|
79
|
+
this.deps = deps
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
private requireRouter(): JSRouter {
|
|
83
|
+
if (!this.deps) {
|
|
84
|
+
throw new Error("MiniappLauncher not configured — ensureMiniappEngine() has not run")
|
|
85
|
+
}
|
|
86
|
+
return this.deps.router
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** True iff the package's background JS context is currently spawned. */
|
|
90
|
+
isRunning(packageName: string): boolean {
|
|
91
|
+
return this.deps?.router.registeredPackages().includes(packageName) ?? false
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Resolve the background JS source + UI entry + declared permissions for a
|
|
96
|
+
* package. Handles both dev (HTTP off the running dev server) and released
|
|
97
|
+
* (file:// from the installed snapshot). Reads disk/network/storage; does
|
|
98
|
+
* NOT spawn. Returns null when the bundle can't be resolved (dev server
|
|
99
|
+
* unreachable, missing entry, no installed version).
|
|
100
|
+
*/
|
|
101
|
+
async resolveBundle(packageName: string, hints?: LaunchHints): Promise<ResolvedBundle | null> {
|
|
102
|
+
const devUrl = hints?.devUrl ?? this.storedDevUrl(packageName)
|
|
103
|
+
|
|
104
|
+
// --- Dev: load directly off the local dev server over HTTP. ---
|
|
105
|
+
if (devUrl) {
|
|
106
|
+
const route = await decideDevLaunchRoute(packageName, devUrl)
|
|
107
|
+
if (route.decision === "offline" || !route.manifest) return null
|
|
108
|
+
const manifest = route.manifest
|
|
109
|
+
const entry = manifest.entry as {background?: string; ui?: string} | undefined
|
|
110
|
+
if (!entry?.background) return null
|
|
111
|
+
|
|
112
|
+
// Use the host that actually answered — may differ from the stored IP
|
|
113
|
+
// after a laptop Wi-Fi change (mDNS / Metro failover inside decideDevLaunchRoute).
|
|
114
|
+
const base = route.resolvedUrl.replace(/\/$/, "")
|
|
115
|
+
// entry.* are bundle-root paths (dist/ stripped); the dev server serves
|
|
116
|
+
// files relative to cwd, so prepend dist/.
|
|
117
|
+
const bgUrl = `${base}/dist/${entry.background.replace(/^\.?\/+/, "")}`
|
|
118
|
+
const uiUri = entry.ui ? `${base}/dist/${entry.ui.replace(/^\.?\/+/, "")}` : null
|
|
119
|
+
|
|
120
|
+
const perms = manifest.permissions as Array<{type?: string} | string> | undefined
|
|
121
|
+
const declaredPermissions = (perms ?? [])
|
|
122
|
+
.map((p) => (typeof p === "string" ? p : p?.type))
|
|
123
|
+
.filter((t): t is string => typeof t === "string")
|
|
124
|
+
const installedManifest: InstalledMiniappManifest = {
|
|
125
|
+
packageName: typeof manifest.packageName === "string" ? manifest.packageName : packageName,
|
|
126
|
+
name: manifest.name,
|
|
127
|
+
version: typeof manifest.version === "string" ? manifest.version : undefined,
|
|
128
|
+
sdkVersion: typeof manifest.sdkVersion === "string" ? manifest.sdkVersion : undefined,
|
|
129
|
+
minHostVersion: typeof manifest.minHostVersion === "string" ? manifest.minHostVersion : undefined,
|
|
130
|
+
type: typeof manifest.type === "string" ? manifest.type : undefined,
|
|
131
|
+
entry: manifest.entry as InstalledMiniappManifest["entry"],
|
|
132
|
+
permissions: manifest.permissions as InstalledMiniappManifest["permissions"],
|
|
133
|
+
hardwareRequirements: manifest.hardwareRequirements as InstalledMiniappManifest["hardwareRequirements"],
|
|
134
|
+
actions: manifest.actions as InstalledMiniappManifest["actions"],
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
let bgSource: string
|
|
138
|
+
try {
|
|
139
|
+
const res = await fetch(bgUrl)
|
|
140
|
+
if (!res.ok) return null
|
|
141
|
+
bgSource = await res.text()
|
|
142
|
+
} catch {
|
|
143
|
+
return null
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return {
|
|
147
|
+
bgSource,
|
|
148
|
+
uiUri,
|
|
149
|
+
uiBaseDir: uiUri ? uiUri.replace(/\/[^/]+$/, "/") : null,
|
|
150
|
+
declaredPermissions,
|
|
151
|
+
installedManifest,
|
|
152
|
+
devUrl: route.resolvedUrl,
|
|
153
|
+
devPort: this.resolveDevPort(hints?.devPort, packageName),
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// --- Released: resolve from the installed file:// snapshot. ---
|
|
158
|
+
const version = hints?.version ?? (await appRegistry.getActiveVersion(packageName))
|
|
159
|
+
if (!version) return null
|
|
160
|
+
const entryPaths = appRegistry.getMiniappEntryPaths(packageName, version)
|
|
161
|
+
if (!entryPaths?.background) return null
|
|
162
|
+
|
|
163
|
+
const manifest = appRegistry.getMiniappManifest(packageName, version) as {
|
|
164
|
+
packageName?: string
|
|
165
|
+
name?: string
|
|
166
|
+
version?: string
|
|
167
|
+
sdkVersion?: string
|
|
168
|
+
minHostVersion?: string
|
|
169
|
+
type?: string
|
|
170
|
+
entry?: {background?: string; ui?: string}
|
|
171
|
+
permissions?: Array<{type: string; required?: boolean; description?: string}>
|
|
172
|
+
hardwareRequirements?: Array<{type: string; level: string; description?: string}>
|
|
173
|
+
actions?: Array<{id?: unknown; description?: unknown; parameters?: unknown; outputSchema?: unknown}>
|
|
174
|
+
} | null
|
|
175
|
+
const declaredPermissions = (manifest?.permissions ?? [])
|
|
176
|
+
.map((p) => p.type)
|
|
177
|
+
.filter((t): t is string => typeof t === "string")
|
|
178
|
+
const installedManifest: InstalledMiniappManifest | undefined = manifest
|
|
179
|
+
? {
|
|
180
|
+
packageName: manifest.packageName ?? packageName,
|
|
181
|
+
name: manifest.name,
|
|
182
|
+
version: manifest.version ?? version,
|
|
183
|
+
sdkVersion: manifest.sdkVersion,
|
|
184
|
+
minHostVersion: manifest.minHostVersion,
|
|
185
|
+
type: manifest.type,
|
|
186
|
+
entry: manifest.entry,
|
|
187
|
+
permissions: manifest.permissions,
|
|
188
|
+
hardwareRequirements: manifest.hardwareRequirements,
|
|
189
|
+
actions: manifest.actions,
|
|
190
|
+
}
|
|
191
|
+
: undefined
|
|
192
|
+
|
|
193
|
+
let bgSource: string
|
|
194
|
+
try {
|
|
195
|
+
bgSource = new File(entryPaths.background).textSync()
|
|
196
|
+
} catch {
|
|
197
|
+
return null
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
return {
|
|
201
|
+
bgSource,
|
|
202
|
+
uiUri: entryPaths.ui ?? null,
|
|
203
|
+
uiBaseDir: entryPaths.ui ? entryPaths.ui.replace(/\/[^/]+$/, "/") : null,
|
|
204
|
+
declaredPermissions,
|
|
205
|
+
installedManifest,
|
|
206
|
+
devUrl: null,
|
|
207
|
+
devPort: null,
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Ensure a miniapp's background JS context is spawned. Idempotent — if the
|
|
213
|
+
* context is already alive this is a no-op spawn-wise (it still resolves the
|
|
214
|
+
* UI entry so a re-mounting host gets its `<WebView>` source back).
|
|
215
|
+
*
|
|
216
|
+
* Resolves once the context is SPAWNED. It does NOT block on the context's
|
|
217
|
+
* CONNECT handshake — the host's WebView mount shouldn't wait on background
|
|
218
|
+
* JS. Callers that need the context to be connected and ready to receive
|
|
219
|
+
* messages (the action broker) follow up with
|
|
220
|
+
* {@link LocalMiniappRuntime.waitForConnect}.
|
|
221
|
+
*/
|
|
222
|
+
async ensureRunning(packageName: string, hints?: LaunchHints): Promise<LaunchResult> {
|
|
223
|
+
const router = this.requireRouter()
|
|
224
|
+
|
|
225
|
+
// Already spawned: best-effort resolve for the UI entry, never throw —
|
|
226
|
+
// a headless caller that doesn't need UI gets {null, null} fast even if
|
|
227
|
+
// the dev server has since dropped.
|
|
228
|
+
if (router.registeredPackages().includes(packageName)) {
|
|
229
|
+
const existing = await this.resolveBundle(packageName, hints).catch(() => null)
|
|
230
|
+
return {uiUri: existing?.uiUri ?? null, uiBaseDir: existing?.uiBaseDir ?? null}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// Coalesce concurrent launches of the same package onto one promise.
|
|
234
|
+
const pending = this.inFlight.get(packageName)
|
|
235
|
+
if (pending) return pending
|
|
236
|
+
|
|
237
|
+
const launch = this.spawn(packageName, hints)
|
|
238
|
+
this.inFlight.set(packageName, launch)
|
|
239
|
+
try {
|
|
240
|
+
return await launch
|
|
241
|
+
} finally {
|
|
242
|
+
this.inFlight.delete(packageName)
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/** Resolve the bundle and spawn the context. Serialized via {@link inFlight}. */
|
|
247
|
+
private async spawn(packageName: string, hints?: LaunchHints): Promise<LaunchResult> {
|
|
248
|
+
const router = this.requireRouter()
|
|
249
|
+
const resolved = await this.resolveBundle(packageName, hints)
|
|
250
|
+
if (!resolved) {
|
|
251
|
+
throw new Error(`MiniappLauncher: cannot resolve bundle for ${packageName}`)
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// Re-check after the async resolve: a different path may have spawned it
|
|
255
|
+
// while we were fetching/reading the bundle.
|
|
256
|
+
if (!router.registeredPackages().includes(packageName)) {
|
|
257
|
+
const ok = await router.spawnAndRegister(packageName, resolved.bgSource, {
|
|
258
|
+
permissions: resolved.declaredPermissions,
|
|
259
|
+
installedManifest: resolved.installedManifest,
|
|
260
|
+
})
|
|
261
|
+
if (!ok) {
|
|
262
|
+
throw new Error(`MiniappLauncher: spawn failed for ${packageName}`)
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Dev: wire the hot-reload + log-forwarding sidecar. No-op in prod
|
|
266
|
+
// (devServerBridge silently drops when no sidecar is up).
|
|
267
|
+
if (resolved.devUrl && resolved.devPort != null) {
|
|
268
|
+
devServerBridge.connect(packageName, resolved.devUrl, resolved.devPort)
|
|
269
|
+
} else if (resolved.devUrl) {
|
|
270
|
+
// Dev miniapp with no resolvable port — it still launches, but hot
|
|
271
|
+
// reload + log forwarding won't connect. Surface it instead of failing
|
|
272
|
+
// silently (the old inline path hard-failed with "no dev port").
|
|
273
|
+
console.warn(`MiniappLauncher: ${packageName} has no dev port — hot reload + log forwarding disabled`)
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
return {uiUri: resolved.uiUri, uiBaseDir: resolved.uiBaseDir}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Re-spawn local miniapps that were running when the app was last killed.
|
|
282
|
+
*
|
|
283
|
+
* Miniapps run in the phone's own JS engine, so a host-process kill tears
|
|
284
|
+
* down their JSContext with nothing to resurrect them. Without this they
|
|
285
|
+
* would silently stay stopped on the next launch even though the user left
|
|
286
|
+
* them running.
|
|
287
|
+
*
|
|
288
|
+
* Each local miniapp persists its running flag to disk on start/stop
|
|
289
|
+
* (`saveLocalAppRunningState`, via the applet's `onStart`/`onStop`). We read
|
|
290
|
+
* those flags back and re-spawn the background context headlessly (no
|
|
291
|
+
* foreground, no navigation) — the spawn registers the package so the home
|
|
292
|
+
* tray/switcher project it as running, exactly as a normal start would. The
|
|
293
|
+
* WebView, if any, re-attaches lazily when the user opens the app.
|
|
294
|
+
*
|
|
295
|
+
* Idempotent and best-effort: skips already-spawned contexts, and clears the
|
|
296
|
+
* persisted flag for any app whose bundle can no longer be resolved
|
|
297
|
+
* (uninstalled, or dev server gone) so a dead entry doesn't retry every boot.
|
|
298
|
+
* Not compatibility-gated: a previously-running background app shouldn't be
|
|
299
|
+
* dropped just because glasses are momentarily disconnected at boot — it
|
|
300
|
+
* resumes when they reconnect, same as mid-session.
|
|
301
|
+
*/
|
|
302
|
+
async autostartLocalMiniapps(): Promise<void> {
|
|
303
|
+
const apps = await appRegistry.getInstalledMiniapps()
|
|
304
|
+
for (const app of apps) {
|
|
305
|
+
// Only phone-hosted miniapps have a JSContext to re-spawn. Offline
|
|
306
|
+
// built-ins (`local:false, offline:true`) restore their native running
|
|
307
|
+
// state elsewhere and have no bundle to launch.
|
|
308
|
+
if (!app.local) continue
|
|
309
|
+
if (!getLocalAppRunningState(app.packageName)) continue
|
|
310
|
+
if (this.isRunning(app.packageName)) continue
|
|
311
|
+
try {
|
|
312
|
+
await this.ensureRunning(app.packageName)
|
|
313
|
+
} catch (e) {
|
|
314
|
+
console.warn(`MiniappLauncher: autostart failed for ${app.packageName} — clearing stale running flag`, e)
|
|
315
|
+
saveLocalAppRunningState(app.packageName, false)
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Ensure the context is running AND has completed its CONNECT handshake.
|
|
322
|
+
* Used by the action broker, which must not deliver to a context that hasn't
|
|
323
|
+
* come up yet. Throws on spawn failure or connect timeout.
|
|
324
|
+
*/
|
|
325
|
+
async ensureConnected(packageName: string, connectTimeoutMs = 10_000, hints?: LaunchHints): Promise<void> {
|
|
326
|
+
await this.ensureRunning(packageName, hints)
|
|
327
|
+
await localMiniappRuntime.waitForConnect(packageName, connectTimeoutMs)
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/** Tear down a miniapp's background JS context. */
|
|
331
|
+
async stop(packageName: string): Promise<void> {
|
|
332
|
+
// If a launch is in flight, let it finish first. Otherwise unregister()
|
|
333
|
+
// no-ops on the not-yet-registered package and the pending spawn then
|
|
334
|
+
// re-registers the context — leaving it running despite the stop.
|
|
335
|
+
const pending = this.inFlight.get(packageName)
|
|
336
|
+
if (pending) {
|
|
337
|
+
try {
|
|
338
|
+
await pending
|
|
339
|
+
} catch {
|
|
340
|
+
// Launch failed — nothing got registered, so nothing to tear down.
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
await this.deps?.router.unregister(packageName)
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// --- internals -----------------------------------------------------------
|
|
347
|
+
|
|
348
|
+
private storedDevUrl(packageName: string): string | undefined {
|
|
349
|
+
const r = storage.load<string>(`${packageName}_dev_url`)
|
|
350
|
+
return r.is_ok() ? r.value : undefined
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
/** resolveDevPort — moved verbatim from the old LocalMiniappView helper. */
|
|
354
|
+
private resolveDevPort(searchParam: string | undefined, packageName: string): number | null {
|
|
355
|
+
if (searchParam) {
|
|
356
|
+
const n = parseInt(searchParam, 10)
|
|
357
|
+
if (Number.isFinite(n)) return n
|
|
358
|
+
}
|
|
359
|
+
const stored = storage.load<number>(`${packageName}_dev_port`)
|
|
360
|
+
if (stored.is_ok()) return stored.value
|
|
361
|
+
return null
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
export const miniappLauncher = new MiniappLauncher()
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface MiniappPingLivenessDecision {
|
|
2
|
+
shouldUnregister: boolean
|
|
3
|
+
unansweredPingRounds: number
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Advance liveness by one scheduled ping round.
|
|
8
|
+
*
|
|
9
|
+
* Counting actual rounds avoids treating time while React Native's scheduler
|
|
10
|
+
* was paused in the background as pings the miniapp failed to answer.
|
|
11
|
+
*/
|
|
12
|
+
export function advanceMiniappPingLiveness(
|
|
13
|
+
unansweredPingRounds: number,
|
|
14
|
+
timeoutThreshold: number,
|
|
15
|
+
): MiniappPingLivenessDecision {
|
|
16
|
+
if (unansweredPingRounds >= timeoutThreshold) {
|
|
17
|
+
return {shouldUnregister: true, unansweredPingRounds}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
shouldUnregister: false,
|
|
22
|
+
unansweredPingRounds: unansweredPingRounds + 1,
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MiniappRunningRegistry — module-level set of currently-running miniapp
|
|
3
|
+
* packageNames.
|
|
4
|
+
*
|
|
5
|
+
* "Running" means the miniapp's **background JSContext is alive** in the
|
|
6
|
+
* host process. The UI WebView open/close state is separate — that's
|
|
7
|
+
* tracked by UIRouter.isBound(). A miniapp can be "running"
|
|
8
|
+
* (JSContext alive, processing glasses events) without any WebView
|
|
9
|
+
* mounted, which is the steady-state.
|
|
10
|
+
*
|
|
11
|
+
* JSRouter is the single writer: `spawnAndRegister` adds,
|
|
12
|
+
* `unregister` removes. Home tile / tray reads from here to project the
|
|
13
|
+
* `running` field on local applets.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
type Listener = () => void
|
|
17
|
+
|
|
18
|
+
const running = new Set<string>()
|
|
19
|
+
const listeners = new Set<Listener>()
|
|
20
|
+
|
|
21
|
+
function notify(): void {
|
|
22
|
+
for (const fn of listeners) {
|
|
23
|
+
try {
|
|
24
|
+
fn()
|
|
25
|
+
} catch (e) {
|
|
26
|
+
console.warn("MiniappRunningRegistry: listener threw", e)
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export const miniappRunningRegistry = {
|
|
32
|
+
add(packageName: string): void {
|
|
33
|
+
if (running.has(packageName)) return
|
|
34
|
+
running.add(packageName)
|
|
35
|
+
notify()
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
remove(packageName: string): void {
|
|
39
|
+
if (!running.delete(packageName)) return
|
|
40
|
+
notify()
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
has(packageName: string): boolean {
|
|
44
|
+
return running.has(packageName)
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
getAll(): string[] {
|
|
48
|
+
return Array.from(running)
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
subscribe(fn: Listener): () => void {
|
|
52
|
+
listeners.add(fn)
|
|
53
|
+
return () => {
|
|
54
|
+
listeners.delete(fn)
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
const BODY_FORBIDDEN_STATUSES = new Set([204, 205, 304])
|
|
2
|
+
|
|
3
|
+
/** Fetch forbids a non-null Response body for these HTTP statuses. */
|
|
4
|
+
export function nativeHttpResponseBody(status: number, body: string): string | null {
|
|
5
|
+
return BODY_FORBIDDEN_STATUSES.has(status) ? null : body
|
|
6
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NativeNavigationService — trip-scoped bridge to glasses with a
|
|
3
|
+
* firmware-rendered nav UI (`hasNativeNavigation`; G2 service 0x08 today).
|
|
4
|
+
* NavigationHandlers drives enter/exit at trip boundaries; miniapp NATIVE_NAV
|
|
5
|
+
* payloads (card fields, map bitmaps) are forwarded to the bluetooth-sdk.
|
|
6
|
+
* While active, the glasses magnetometer feeds HeadingService so
|
|
7
|
+
* session.heading serves the glasses compass instead of the phone's.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import BluetoothSdk from "@glassly/bluetooth-sdk/internal"
|
|
11
|
+
|
|
12
|
+
import {ISLAND_SETTINGS_KEYS} from "../runtime/config"
|
|
13
|
+
import {useSettingsStore} from "../stores/settings"
|
|
14
|
+
import {DeviceTypes, getModelCapabilities} from "../types"
|
|
15
|
+
import headingService from "./HeadingService"
|
|
16
|
+
|
|
17
|
+
const LOG_TAG = "NATIVE_NAV_SERVICE"
|
|
18
|
+
|
|
19
|
+
export interface NativeNavInfoPayload {
|
|
20
|
+
directionIcon: number
|
|
21
|
+
distance: string
|
|
22
|
+
roadName: string
|
|
23
|
+
spendTime: string
|
|
24
|
+
remainDistance: string
|
|
25
|
+
etaTime: string
|
|
26
|
+
speed: string
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
class NativeNavigationService {
|
|
30
|
+
private static instance: NativeNavigationService | null = null
|
|
31
|
+
|
|
32
|
+
private active = false
|
|
33
|
+
private compassSub: {remove: () => void} | null = null
|
|
34
|
+
private modeSub: {remove: () => void} | null = null
|
|
35
|
+
/** Registered by NavigationHandlers; fires when the WEARER exits nav mode on the glasses. */
|
|
36
|
+
private onGlassesExitCb: (() => void) | null = null
|
|
37
|
+
|
|
38
|
+
private constructor() {}
|
|
39
|
+
|
|
40
|
+
public setOnGlassesExit(cb: (() => void) | null): void {
|
|
41
|
+
this.onGlassesExitCb = cb
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public static getInstance(): NativeNavigationService {
|
|
45
|
+
if (!NativeNavigationService.instance) {
|
|
46
|
+
NativeNavigationService.instance = new NativeNavigationService()
|
|
47
|
+
}
|
|
48
|
+
return NativeNavigationService.instance
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** True while the glasses' native nav UI owns the display. */
|
|
52
|
+
public get isActive(): boolean {
|
|
53
|
+
return this.active
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* True when the paired glasses render their own nav UI AND this native
|
|
58
|
+
* build exposes the nav-mode functions (both platforms since the G2.kt
|
|
59
|
+
* port — the typeof guard keeps older builds safe).
|
|
60
|
+
*/
|
|
61
|
+
public isSupported(): boolean {
|
|
62
|
+
const defaultWearable = useSettingsStore.getState().getSetting(ISLAND_SETTINGS_KEYS.defaultWearable) as
|
|
63
|
+
| DeviceTypes
|
|
64
|
+
| undefined
|
|
65
|
+
const capabilities = getModelCapabilities(defaultWearable || DeviceTypes.NONE)
|
|
66
|
+
return (
|
|
67
|
+
capabilities.hasNativeNavigation === true &&
|
|
68
|
+
typeof (BluetoothSdk as {navigationModeStart?: unknown}).navigationModeStart === "function"
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** A trip started (NavigationHandlers.handleStart succeeded). */
|
|
73
|
+
public onTripStart(packageName: string): void {
|
|
74
|
+
if (!this.isSupported() || this.active) return
|
|
75
|
+
console.log(`${LOG_TAG}: entering native nav mode for ${packageName}`)
|
|
76
|
+
this.active = true
|
|
77
|
+
this.attachListeners()
|
|
78
|
+
void Promise.resolve(BluetoothSdk.navigationModeStart()).catch((err) => {
|
|
79
|
+
console.error(`${LOG_TAG}: navigationModeStart failed:`, err)
|
|
80
|
+
})
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** The trip ended (arrived / stopped / errored). Safe to call when inactive. */
|
|
84
|
+
public onTripEnd(arrived: boolean): void {
|
|
85
|
+
if (!this.active) return
|
|
86
|
+
console.log(`${LOG_TAG}: exiting native nav mode (arrived=${arrived})`)
|
|
87
|
+
this.teardown()
|
|
88
|
+
void Promise.resolve(BluetoothSdk.navigationModeStop(arrived)).catch((err) => {
|
|
89
|
+
console.error(`${LOG_TAG}: navigationModeStop failed:`, err)
|
|
90
|
+
})
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Forward a miniapp NATIVE_NAV payload to the glasses. Returns false when
|
|
95
|
+
* native nav isn't active/supported (the SDK reports "unsupported" so the
|
|
96
|
+
* miniapp can skip re-encoding bitmaps it doesn't need).
|
|
97
|
+
*/
|
|
98
|
+
public handleMiniappRequest(payload: Record<string, unknown>): boolean {
|
|
99
|
+
if (!this.active || !this.isSupported()) return false
|
|
100
|
+
const action = payload.action
|
|
101
|
+
try {
|
|
102
|
+
switch (action) {
|
|
103
|
+
case "info": {
|
|
104
|
+
const info = (payload.info ?? {}) as Partial<NativeNavInfoPayload>
|
|
105
|
+
void BluetoothSdk.navigationUpdateInfo({
|
|
106
|
+
directionIcon: Number(info.directionIcon) || 0,
|
|
107
|
+
distance: String(info.distance ?? ""),
|
|
108
|
+
roadName: String(info.roadName ?? ""),
|
|
109
|
+
spendTime: String(info.spendTime ?? ""),
|
|
110
|
+
remainDistance: String(info.remainDistance ?? ""),
|
|
111
|
+
etaTime: String(info.etaTime ?? ""),
|
|
112
|
+
speed: String(info.speed ?? ""),
|
|
113
|
+
})
|
|
114
|
+
return true
|
|
115
|
+
}
|
|
116
|
+
case "mini_map": {
|
|
117
|
+
const map = (payload.map ?? {}) as {data?: unknown; rotationDeg?: unknown; border?: unknown}
|
|
118
|
+
if (typeof map.data !== "string" || map.data.length === 0) return false
|
|
119
|
+
void BluetoothSdk.navigationMiniMap({
|
|
120
|
+
data: map.data,
|
|
121
|
+
rotationDeg: Number(map.rotationDeg) || 0,
|
|
122
|
+
border: map.border !== false,
|
|
123
|
+
})
|
|
124
|
+
return true
|
|
125
|
+
}
|
|
126
|
+
case "overview_map": {
|
|
127
|
+
const map = (payload.map ?? {}) as {data?: unknown}
|
|
128
|
+
if (typeof map.data !== "string" || map.data.length === 0) return false
|
|
129
|
+
void BluetoothSdk.navigationOverviewMap({data: map.data})
|
|
130
|
+
return true
|
|
131
|
+
}
|
|
132
|
+
default:
|
|
133
|
+
console.warn(`${LOG_TAG}: unknown native nav action:`, action)
|
|
134
|
+
return false
|
|
135
|
+
}
|
|
136
|
+
} catch (err) {
|
|
137
|
+
console.error(`${LOG_TAG}: native nav forward failed:`, err)
|
|
138
|
+
return false
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
private attachListeners(): void {
|
|
143
|
+
// Glasses magnetometer → session.heading for the duration of the trip.
|
|
144
|
+
headingService.setExternalSourceActive(true)
|
|
145
|
+
this.compassSub?.remove()
|
|
146
|
+
this.compassSub = BluetoothSdk.addListener("compass_heading", (event) => {
|
|
147
|
+
const deg = Number(event.heading)
|
|
148
|
+
if (!Number.isFinite(deg)) return
|
|
149
|
+
headingService.pushExternalHeading(((deg % 360) + 360) % 360)
|
|
150
|
+
})
|
|
151
|
+
|
|
152
|
+
// Glasses-side exit ends the whole trip: release the compass override and
|
|
153
|
+
// let NavigationHandlers stop navigation + notify the miniapp ("cancelled").
|
|
154
|
+
// Phone-initiated exits (trip already ending) just tear down.
|
|
155
|
+
this.modeSub?.remove()
|
|
156
|
+
this.modeSub = BluetoothSdk.addListener("navigation_mode_change", (event) => {
|
|
157
|
+
if (event.status === "exited" && this.active) {
|
|
158
|
+
console.log(`${LOG_TAG}: nav mode exited natively (source=${event.source ?? "phone"})`)
|
|
159
|
+
this.teardown()
|
|
160
|
+
if (event.source === "glasses") this.onGlassesExitCb?.()
|
|
161
|
+
}
|
|
162
|
+
})
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
private teardown(): void {
|
|
166
|
+
this.active = false
|
|
167
|
+
this.compassSub?.remove()
|
|
168
|
+
this.compassSub = null
|
|
169
|
+
this.modeSub?.remove()
|
|
170
|
+
this.modeSub = null
|
|
171
|
+
headingService.setExternalSourceActive(false)
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const nativeNavigationService = NativeNavigationService.getInstance()
|
|
176
|
+
export default nativeNavigationService
|