@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,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Managed-stream provisioning over the cloud-v2 runtime (cloud-client REST):
|
|
3
|
+
*
|
|
4
|
+
* POST /api/camera/stream -> provision (Cloudflare live input)
|
|
5
|
+
* GET /api/camera/stream/:id -> provider's ingest status
|
|
6
|
+
* DELETE /api/camera/stream/:id -> teardown
|
|
7
|
+
*
|
|
8
|
+
* Drop-in replacement for the legacy `v2StreamApi` (which hit the v1 cloud's
|
|
9
|
+
* /api/v2/client/streams/managed on backend_url): same exported shapes, so
|
|
10
|
+
* PhoneStreamCoordinator is unchanged apart from the import. Local miniapps
|
|
11
|
+
* use ONLY this path — no legacy V1 transport.
|
|
12
|
+
*
|
|
13
|
+
* Errors are tagged with stage "provision"/"status"/"teardown" and transport
|
|
14
|
+
* "cloud-rest" so a miniapp sees exactly where and on which leg it broke.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import {cloudClientService as cloudClient} from "./CloudClientService"
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Restream destination. The full stream key is part of the URL — Cloudflare
|
|
21
|
+
* appends nothing on the publish side. `name` is a human label that surfaces
|
|
22
|
+
* in Cloudflare's dashboard but doesn't affect routing.
|
|
23
|
+
*/
|
|
24
|
+
export interface RestreamDestination {
|
|
25
|
+
url: string
|
|
26
|
+
name?: string
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** Caller-facing shape: either a bare URL string or the full object. */
|
|
30
|
+
export type RestreamDestinationInput = string | RestreamDestination
|
|
31
|
+
|
|
32
|
+
export interface ProvisionResult {
|
|
33
|
+
liveInputId: string
|
|
34
|
+
rtmpUrl: string
|
|
35
|
+
srtUrl?: string
|
|
36
|
+
hlsUrl: string
|
|
37
|
+
dashUrl: string
|
|
38
|
+
webrtcUrl?: string
|
|
39
|
+
webrtcPublishUrl?: string
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface CloudflareStatus {
|
|
43
|
+
isConnected: boolean
|
|
44
|
+
state?: string | null
|
|
45
|
+
connectedAt?: string
|
|
46
|
+
lastSeenAt?: string
|
|
47
|
+
reason?: string
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export type StreamApiStage = "provision" | "status" | "teardown"
|
|
51
|
+
|
|
52
|
+
export class StreamApiError extends Error {
|
|
53
|
+
readonly transport = "cloud-rest" as const
|
|
54
|
+
constructor(
|
|
55
|
+
public readonly code: string,
|
|
56
|
+
message: string,
|
|
57
|
+
public readonly stage: StreamApiStage,
|
|
58
|
+
) {
|
|
59
|
+
super(message)
|
|
60
|
+
this.name = "StreamApiError"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** The cloud-v2 runtime's ManagedStream wire shape (open records, see protocol). */
|
|
65
|
+
interface ManagedStreamWire {
|
|
66
|
+
streamId: string
|
|
67
|
+
ingest: {
|
|
68
|
+
url?: string
|
|
69
|
+
streamKey?: string
|
|
70
|
+
rtmpUrl?: string
|
|
71
|
+
srtUrl?: string
|
|
72
|
+
webrtcPublishUrl?: string
|
|
73
|
+
}
|
|
74
|
+
playback: {
|
|
75
|
+
hls?: string
|
|
76
|
+
dash?: string
|
|
77
|
+
webrtc?: string
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Provision a managed stream on the cloud-v2 runtime. Returns ready-to-publish
|
|
83
|
+
* ingest URLs (credentials embedded) plus the playback URLs.
|
|
84
|
+
*/
|
|
85
|
+
export async function provisionManagedStream(
|
|
86
|
+
restreamDestinations?: RestreamDestinationInput[],
|
|
87
|
+
): Promise<ProvisionResult> {
|
|
88
|
+
let wire: ManagedStreamWire
|
|
89
|
+
try {
|
|
90
|
+
wire = (await cloudClient.startManagedStream(
|
|
91
|
+
restreamDestinations && restreamDestinations.length > 0 ? {restreamDestinations} : {},
|
|
92
|
+
)) as ManagedStreamWire
|
|
93
|
+
} catch (err) {
|
|
94
|
+
throw new StreamApiError("STREAM_PROVISION_FAILED", err instanceof Error ? err.message : String(err), "provision")
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const ingest = wire.ingest ?? {}
|
|
98
|
+
const playback = wire.playback ?? {}
|
|
99
|
+
const rtmpUrl = ingest.rtmpUrl ?? (ingest.url && ingest.streamKey ? `${ingest.url}${ingest.streamKey}` : "")
|
|
100
|
+
if (!playback.hls || !playback.dash) {
|
|
101
|
+
throw new StreamApiError(
|
|
102
|
+
"STREAM_PROVISION_INCOMPLETE",
|
|
103
|
+
`runtime returned no playback URLs for stream ${wire.streamId}`,
|
|
104
|
+
"provision",
|
|
105
|
+
)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return {
|
|
109
|
+
liveInputId: wire.streamId,
|
|
110
|
+
rtmpUrl,
|
|
111
|
+
srtUrl: ingest.srtUrl,
|
|
112
|
+
hlsUrl: playback.hls,
|
|
113
|
+
dashUrl: playback.dash,
|
|
114
|
+
webrtcUrl: playback.webrtc,
|
|
115
|
+
webrtcPublishUrl: ingest.webrtcPublishUrl,
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** The provider's view of the ingest: is the device's push arriving? */
|
|
120
|
+
export async function getManagedStreamStatus(liveInputId: string): Promise<CloudflareStatus> {
|
|
121
|
+
try {
|
|
122
|
+
const s = await cloudClient.getManagedStreamStatus(liveInputId)
|
|
123
|
+
return {
|
|
124
|
+
isConnected: s.isConnected,
|
|
125
|
+
state: s.state,
|
|
126
|
+
connectedAt: s.connectedAt,
|
|
127
|
+
lastSeenAt: s.lastSeenAt,
|
|
128
|
+
reason: s.reason,
|
|
129
|
+
}
|
|
130
|
+
} catch (err) {
|
|
131
|
+
throw new StreamApiError("STREAM_STATUS_FAILED", err instanceof Error ? err.message : String(err), "status")
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** Tear down the provider stream. */
|
|
136
|
+
export async function teardownManagedStream(liveInputId: string): Promise<void> {
|
|
137
|
+
try {
|
|
138
|
+
await cloudClient.stopManagedStream(liveInputId)
|
|
139
|
+
} catch (err) {
|
|
140
|
+
throw new StreamApiError("STREAM_TEARDOWN_FAILED", err instanceof Error ? err.message : String(err), "teardown")
|
|
141
|
+
}
|
|
142
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effective device capabilities — the static model profile plus what the
|
|
3
|
+
* connected firmware reports at runtime. Today the only runtime override is
|
|
4
|
+
* the scene canvas: Glassly CFW on the G2 rasterizes scenes phone-side
|
|
5
|
+
* straight into the 640×480 panel, so the drawable canvas grows past stock's
|
|
6
|
+
* 576×288. Native publishes the canvas into the glasses status (0 = none).
|
|
7
|
+
*/
|
|
8
|
+
import {useGlassesStore} from "../stores/glasses"
|
|
9
|
+
import {getModelCapabilities, type Capabilities, type DeviceTypes} from "../types"
|
|
10
|
+
|
|
11
|
+
export interface SceneCanvasSize {
|
|
12
|
+
width: number
|
|
13
|
+
height: number
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function runtimeSceneCanvas(): SceneCanvasSize | null {
|
|
17
|
+
const {sceneCanvasWidth, sceneCanvasHeight} = useGlassesStore.getState()
|
|
18
|
+
if (!sceneCanvasWidth || !sceneCanvasHeight || sceneCanvasWidth <= 0 || sceneCanvasHeight <= 0) return null
|
|
19
|
+
return {width: sceneCanvasWidth, height: sceneCanvasHeight}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function getEffectiveCapabilities(model: DeviceTypes): Capabilities {
|
|
23
|
+
const base = getModelCapabilities(model)
|
|
24
|
+
const canvas = runtimeSceneCanvas()
|
|
25
|
+
if (!base.display || !canvas) return base
|
|
26
|
+
return {...base, display: {...base.display, width: canvas.width, height: canvas.height}}
|
|
27
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clock skew detection for gallery sync (phone vs glasses).
|
|
3
|
+
* Phone pushes time to glasses only when skew is detected during sync.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export const CLOCK_SKEW_TOLERANCE_MS = 60_000
|
|
7
|
+
|
|
8
|
+
export type ClockSkewReason = "watermark_ahead_of_glasses" | "wall_clock_drift" | ""
|
|
9
|
+
|
|
10
|
+
export interface ClockSkewResult {
|
|
11
|
+
skewed: boolean
|
|
12
|
+
reason: ClockSkewReason
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function detectClockSkew(
|
|
16
|
+
phoneNow: number,
|
|
17
|
+
glassesServerTime: number,
|
|
18
|
+
lastSyncTime: number,
|
|
19
|
+
toleranceMs: number = CLOCK_SKEW_TOLERANCE_MS,
|
|
20
|
+
): ClockSkewResult {
|
|
21
|
+
if (lastSyncTime > glassesServerTime + toleranceMs) {
|
|
22
|
+
return {skewed: true, reason: "watermark_ahead_of_glasses"}
|
|
23
|
+
}
|
|
24
|
+
if (Math.abs(phoneNow - glassesServerTime) > toleranceMs) {
|
|
25
|
+
return {skewed: true, reason: "wall_clock_drift"}
|
|
26
|
+
}
|
|
27
|
+
return {skewed: false, reason: ""}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function isSyncManifestEmpty(syncData: {
|
|
31
|
+
api_version?: number
|
|
32
|
+
captures?: unknown[]
|
|
33
|
+
changed_files?: unknown[]
|
|
34
|
+
}): boolean {
|
|
35
|
+
if ((syncData.api_version || 0) >= 2 && syncData.captures && syncData.captures.length > 0) {
|
|
36
|
+
return false
|
|
37
|
+
}
|
|
38
|
+
return !syncData.changed_files || syncData.changed_files.length === 0
|
|
39
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Push phone time to glasses only when clock skew is detected (gallery sync, OTA, etc.).
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import BluetoothSdk from "@glassly/bluetooth-sdk/internal"
|
|
6
|
+
import {BgTimer} from "../utils/timers"
|
|
7
|
+
import {useGlassesStore} from "../stores/glasses"
|
|
8
|
+
|
|
9
|
+
import {resolveOtaManifestUrl} from "./otaManifestUrl"
|
|
10
|
+
import {detectClockSkew} from "./gallerySyncClock"
|
|
11
|
+
|
|
12
|
+
export const CLOCK_SETTLE_MS = 500
|
|
13
|
+
|
|
14
|
+
const OTA_CLOCK_FIX_COOLDOWN_MS = 30_000
|
|
15
|
+
let lastOtaClockFixAt = 0
|
|
16
|
+
// Coalesce concurrent OTA clock-fix attempts. Glasses can emit two clock_skew events
|
|
17
|
+
// back-to-back during BLE handshake; without this guard both would await the BLE fix
|
|
18
|
+
// + retry pair before either updated `lastOtaClockFixAt`.
|
|
19
|
+
let inflightOtaClockFix: Promise<boolean> | null = null
|
|
20
|
+
|
|
21
|
+
/** @internal test-only */
|
|
22
|
+
export function resetOtaClockFixCooldownForTests(): void {
|
|
23
|
+
lastOtaClockFixAt = 0
|
|
24
|
+
inflightOtaClockFix = null
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function delay(ms: number): Promise<void> {
|
|
28
|
+
return new Promise((resolve) => BgTimer.setTimeout(resolve, ms))
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Set glasses system clock from phone when skew is detected.
|
|
33
|
+
*/
|
|
34
|
+
export async function fixGlassesClockIfSkewed(glassesServerTime: number, lastSyncTime = 0): Promise<boolean> {
|
|
35
|
+
const {skewed, reason} = detectClockSkew(Date.now(), glassesServerTime, lastSyncTime)
|
|
36
|
+
if (!skewed) {
|
|
37
|
+
return false
|
|
38
|
+
}
|
|
39
|
+
console.log(`[GlassesClockSync] ⏰ Clock skew detected (${reason}) — setting glasses time from phone`)
|
|
40
|
+
await BluetoothSdk.setSystemTime(Date.now())
|
|
41
|
+
await delay(CLOCK_SETTLE_MS)
|
|
42
|
+
return true
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* After glasses report OTA failure due to clock skew, fix time and restart
|
|
47
|
+
* through the normal phone-driven ota_start path.
|
|
48
|
+
*/
|
|
49
|
+
export async function handleOtaClockSkewFromGlasses(
|
|
50
|
+
errorCode: string | undefined,
|
|
51
|
+
glassesTimeMs?: number,
|
|
52
|
+
): Promise<boolean> {
|
|
53
|
+
if (Date.now() - lastOtaClockFixAt < OTA_CLOCK_FIX_COOLDOWN_MS) {
|
|
54
|
+
return false
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const hasGlassesTime = typeof glassesTimeMs === "number" && Number.isFinite(glassesTimeMs) && glassesTimeMs > 0
|
|
58
|
+
|
|
59
|
+
if (errorCode === "ssl_error") {
|
|
60
|
+
if (!hasGlassesTime) {
|
|
61
|
+
return false
|
|
62
|
+
}
|
|
63
|
+
const {skewed} = detectClockSkew(Date.now(), glassesTimeMs, 0)
|
|
64
|
+
if (!skewed) {
|
|
65
|
+
return false
|
|
66
|
+
}
|
|
67
|
+
console.log("[GlassesClockSync] ⏰ OTA ssl_error with wall-clock drift — treating as clock skew")
|
|
68
|
+
} else if (errorCode !== "clock_skew") {
|
|
69
|
+
return false
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Coalesce concurrent attempts: if a fix is already in flight, await its result instead
|
|
73
|
+
// of racing it through the cooldown guard.
|
|
74
|
+
if (inflightOtaClockFix) {
|
|
75
|
+
return inflightOtaClockFix
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const glassesTime = hasGlassesTime ? glassesTimeMs : Date.now() - 86_400_000
|
|
79
|
+
|
|
80
|
+
inflightOtaClockFix = (async () => {
|
|
81
|
+
try {
|
|
82
|
+
const fixed = await fixGlassesClockIfSkewed(glassesTime, 0)
|
|
83
|
+
if (!fixed) {
|
|
84
|
+
return false
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
lastOtaClockFixAt = Date.now()
|
|
88
|
+
const {buildNumber, otaVersionUrl} = useGlassesStore.getState()
|
|
89
|
+
const manifestUrl = resolveOtaManifestUrl(otaVersionUrl, buildNumber)
|
|
90
|
+
console.log("[GlassesClockSync] ⏰ Restarting OTA with ota_start after clock fix")
|
|
91
|
+
await BluetoothSdk.startOtaUpdate(manifestUrl)
|
|
92
|
+
return true
|
|
93
|
+
} finally {
|
|
94
|
+
inflightOtaClockFix = null
|
|
95
|
+
}
|
|
96
|
+
})()
|
|
97
|
+
|
|
98
|
+
return inflightOtaClockFix
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Proactive fix when version_info includes glasses system_time_ms before OTA manifest checks.
|
|
103
|
+
*/
|
|
104
|
+
export async function maybeFixGlassesClockFromVersionInfo(systemTimeMs: number | undefined): Promise<boolean> {
|
|
105
|
+
if (typeof systemTimeMs !== "number" || systemTimeMs <= 0) {
|
|
106
|
+
return false
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const fixed = await fixGlassesClockIfSkewed(systemTimeMs, 0)
|
|
110
|
+
if (!fixed) {
|
|
111
|
+
return false
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return true
|
|
115
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type {DeclaredAction} from "../types/applet"
|
|
2
|
+
|
|
3
|
+
/** The subset of ClientApp that action-listing needs (structural, no cycle on applet types). */
|
|
4
|
+
export interface ActionListApp {
|
|
5
|
+
packageName: string
|
|
6
|
+
name: string
|
|
7
|
+
actions?: DeclaredAction[]
|
|
8
|
+
compatibility?: {isCompatible: boolean}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/** One row of `session.actions.list` — a flat, MCP-tool-shaped descriptor. */
|
|
12
|
+
export interface ActionListRow {
|
|
13
|
+
packageName: string
|
|
14
|
+
appName: string
|
|
15
|
+
id: string
|
|
16
|
+
description: string
|
|
17
|
+
parameters?: Record<string, unknown>
|
|
18
|
+
outputSchema?: Record<string, unknown>
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Project the installed-app set into the caller's invokable-action rows:
|
|
23
|
+
* excludes the caller's own actions, incompatible apps, and placeholder
|
|
24
|
+
* packages; `visibility: "system"` actions only surface for system callers.
|
|
25
|
+
*/
|
|
26
|
+
export function visibleActionRows(
|
|
27
|
+
apps: ActionListApp[],
|
|
28
|
+
callerPackageName: string,
|
|
29
|
+
callerIsSystem: boolean,
|
|
30
|
+
): ActionListRow[] {
|
|
31
|
+
const rows: ActionListRow[] = []
|
|
32
|
+
for (const app of apps) {
|
|
33
|
+
if (!app.packageName || app.packageName === callerPackageName || app.packageName.includes("@empty")) continue
|
|
34
|
+
if (app.compatibility?.isCompatible === false) continue
|
|
35
|
+
for (const action of app.actions ?? []) {
|
|
36
|
+
if (action.visibility === "system" && !callerIsSystem) continue
|
|
37
|
+
rows.push({
|
|
38
|
+
packageName: app.packageName,
|
|
39
|
+
appName: app.name,
|
|
40
|
+
id: action.id,
|
|
41
|
+
description: action.description,
|
|
42
|
+
...(action.parameters ? {parameters: action.parameters} : {}),
|
|
43
|
+
...(action.outputSchema ? {outputSchema: action.outputSchema} : {}),
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return rows
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Normalize manifest actions defensively for installed and dev-sideloaded
|
|
52
|
+
* bundles. Input and output schemas are passed through as opaque JSON Schema.
|
|
53
|
+
*/
|
|
54
|
+
export function normalizeManifestActions(raw: unknown): DeclaredAction[] {
|
|
55
|
+
if (!Array.isArray(raw)) return []
|
|
56
|
+
const out: DeclaredAction[] = []
|
|
57
|
+
for (const a of raw as Array<{
|
|
58
|
+
id?: unknown
|
|
59
|
+
description?: unknown
|
|
60
|
+
parameters?: unknown
|
|
61
|
+
outputSchema?: unknown
|
|
62
|
+
visibility?: unknown
|
|
63
|
+
}>) {
|
|
64
|
+
if (a && typeof a.id === "string" && typeof a.description === "string") {
|
|
65
|
+
out.push({
|
|
66
|
+
id: a.id,
|
|
67
|
+
description: a.description,
|
|
68
|
+
...(a.parameters && typeof a.parameters === "object" && !Array.isArray(a.parameters)
|
|
69
|
+
? {parameters: a.parameters as Record<string, unknown>}
|
|
70
|
+
: {}),
|
|
71
|
+
...(a.outputSchema && typeof a.outputSchema === "object" && !Array.isArray(a.outputSchema)
|
|
72
|
+
? {outputSchema: a.outputSchema as Record<string, unknown>}
|
|
73
|
+
: {}),
|
|
74
|
+
// Unknown/absent values fall back to the default ("public") by omission.
|
|
75
|
+
...(a.visibility === "system" || a.visibility === "public" ? {visibility: a.visibility} : {}),
|
|
76
|
+
})
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return out
|
|
80
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import semver from "semver"
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Pure helper extracted from `AppRegistry.checkManifestVersions` so it
|
|
5
|
+
* can be unit-tested without dragging in the `expo-file-system`
|
|
6
|
+
* transitively-React-Native dependency tree.
|
|
7
|
+
*
|
|
8
|
+
* Returns `{ok: true}` when the manifest is compatible with the host,
|
|
9
|
+
* or `{ok: false, reason}` with a user-facing string. Manifests missing
|
|
10
|
+
* either field pass through (legacy single-bundle bundles).
|
|
11
|
+
*
|
|
12
|
+
* `sdkVersion` is the SDK ABI the bundle targets; `minHostVersion` is
|
|
13
|
+
* the host floor the miniapp requires. Both must satisfy semver-coerce.
|
|
14
|
+
* Strings that don't coerce are treated as "unspecified" — the
|
|
15
|
+
* CLI's validateManifest catches malformed inputs at install time so
|
|
16
|
+
* this helper stays permissive at the policy layer.
|
|
17
|
+
*/
|
|
18
|
+
export function checkManifestVersions(
|
|
19
|
+
manifest: {sdkVersion?: string; minHostVersion?: string} | null,
|
|
20
|
+
options: {hostVersion: string; supportedSdkRange: string},
|
|
21
|
+
): {ok: true} | {ok: false; reason: string} {
|
|
22
|
+
if (!manifest) return {ok: true}
|
|
23
|
+
if (manifest.minHostVersion) {
|
|
24
|
+
const cleanHost = semver.valid(semver.coerce(options.hostVersion) ?? options.hostVersion)
|
|
25
|
+
const cleanMin = semver.valid(semver.coerce(manifest.minHostVersion) ?? manifest.minHostVersion)
|
|
26
|
+
if (cleanHost && cleanMin && semver.lt(cleanHost, cleanMin)) {
|
|
27
|
+
return {
|
|
28
|
+
ok: false,
|
|
29
|
+
reason: `Requires Glassly ${manifest.minHostVersion}+; this host is ${options.hostVersion}.`,
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (manifest.sdkVersion) {
|
|
34
|
+
const cleanSdk = semver.valid(semver.coerce(manifest.sdkVersion) ?? manifest.sdkVersion)
|
|
35
|
+
if (cleanSdk && !semver.satisfies(cleanSdk, options.supportedSdkRange)) {
|
|
36
|
+
return {
|
|
37
|
+
ok: false,
|
|
38
|
+
reason: `Built for SDK ${manifest.sdkVersion}; host supports ${options.supportedSdkRange}.`,
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return {ok: true}
|
|
43
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The engine's singleton MemoryStore — the shared user-scoped memory timeline
|
|
3
|
+
* behind LocalMiniappRuntime's MEMORY_* bridge handlers and engine.memory.
|
|
4
|
+
* Lives in its own module (not MemoryStore.ts) so the store class stays
|
|
5
|
+
* dependency-free for tests.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import {AppState} from "react-native"
|
|
9
|
+
|
|
10
|
+
import {storage as mmkvStorage} from "../utils/storage/storage"
|
|
11
|
+
import {cloudClientService} from "./CloudClientService"
|
|
12
|
+
import {EXTENDED_RETENTION, MemoryStore, STANDARD_RETENTION} from "./MemoryStore"
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Persisted "Plus/Pro memory retention" flag. Cached in MMKV so a paying user
|
|
16
|
+
* who relaunches offline keeps their full read window; only a DEFINITIVE
|
|
17
|
+
* subscription answer may change it (the RevenueCatSetup effect passes
|
|
18
|
+
* nothing on unknown/null customer info).
|
|
19
|
+
*/
|
|
20
|
+
const RETENTION_EXTENDED_KEY = "memory_retention_extended"
|
|
21
|
+
|
|
22
|
+
let retentionExtended = ((): boolean => {
|
|
23
|
+
const result = mmkvStorage.load<boolean>(RETENTION_EXTENDED_KEY)
|
|
24
|
+
return result.is_ok() && result.value === true
|
|
25
|
+
})()
|
|
26
|
+
|
|
27
|
+
/** Whether the extended (Plus/Pro) retention window is active right now. */
|
|
28
|
+
export function isMemoryRetentionExtended(): boolean {
|
|
29
|
+
return retentionExtended
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Flip the visible retention window. Called by the host app when the
|
|
34
|
+
* subscription state resolves or changes. Downgrading freezes reads to the
|
|
35
|
+
* standard window but deletes nothing — the older timeline stays stored and
|
|
36
|
+
* reappears on re-upgrade (MemoryStore prunes at the extended bound for
|
|
37
|
+
* every tier).
|
|
38
|
+
*/
|
|
39
|
+
export function setMemoryRetentionExtended(extended: boolean): void {
|
|
40
|
+
if (retentionExtended === extended) return
|
|
41
|
+
retentionExtended = extended
|
|
42
|
+
mmkvStorage.save(RETENTION_EXTENDED_KEY, extended)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export const memoryStore = new MemoryStore({
|
|
46
|
+
getUserId: () => cloudClientService.resolveGlasslyUserId(),
|
|
47
|
+
getRetention: () => (retentionExtended ? EXTENDED_RETENTION : STANDARD_RETENTION),
|
|
48
|
+
backend: {
|
|
49
|
+
get(key: string): unknown | null {
|
|
50
|
+
const result = mmkvStorage.load<unknown>(key)
|
|
51
|
+
return result.is_ok() ? result.value : null
|
|
52
|
+
},
|
|
53
|
+
set(key: string, value: unknown): void {
|
|
54
|
+
mmkvStorage.save(key, value)
|
|
55
|
+
},
|
|
56
|
+
remove(key: string): void {
|
|
57
|
+
mmkvStorage.remove(key)
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
// Transcript writes are debounced (see MemoryStore.schedulePersistLog), so the
|
|
63
|
+
// tail of a conversation can be in-memory only when the user leaves the app.
|
|
64
|
+
// Losing it to a background kill would be silent data loss — flush on the way out.
|
|
65
|
+
AppState.addEventListener("change", (state) => {
|
|
66
|
+
if (state === "active") return
|
|
67
|
+
void memoryStore.flush().catch((err) => {
|
|
68
|
+
console.warn("MemoryStore: flush on background failed:", err instanceof Error ? err.message : err)
|
|
69
|
+
})
|
|
70
|
+
})
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hybrid road-name resolver for Routes-API steps. Used to fill
|
|
3
|
+
* `ComputedRouteStep.road` so miniapps don't have to parse instruction
|
|
4
|
+
* prose or geocode themselves — every miniapp talking to the SDK sees
|
|
5
|
+
* the same accurate names for preview AND live trip.
|
|
6
|
+
*
|
|
7
|
+
* Strategy per step:
|
|
8
|
+
* 1. Parse "onto X" from the Routes-API instruction when present
|
|
9
|
+
* (the API literally tells us the road; no second-guessing).
|
|
10
|
+
* 2. Fall back to reverse-geocoding the step MIDPOINT when the
|
|
11
|
+
* instruction has no road name ("Slight right", "Turn left toward
|
|
12
|
+
* …", "Destination will be on the right", bare depart steps).
|
|
13
|
+
*
|
|
14
|
+
* Endpoints get rejected as fallback probe points: they sit on
|
|
15
|
+
* junctions and snap to whichever cross-street has higher weight;
|
|
16
|
+
* the midpoint sits on the step's own road.
|
|
17
|
+
*
|
|
18
|
+
* This is a direct port of the resolver that used to live in the Nav
|
|
19
|
+
* miniapp's NavigationPage.tsx. Lives on the host so all miniapps
|
|
20
|
+
* benefit and so preview + live can share a single implementation.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
type StepLike = {
|
|
24
|
+
lat: number
|
|
25
|
+
lng: number
|
|
26
|
+
endLat: number
|
|
27
|
+
endLng: number
|
|
28
|
+
instruction?: string
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
type ReverseGeocode = (coord: {lat: number; lng: number}) => Promise<{
|
|
32
|
+
ok: boolean
|
|
33
|
+
road?: string | null
|
|
34
|
+
error?: string
|
|
35
|
+
}>
|
|
36
|
+
|
|
37
|
+
const DIRECTION_WORDS = new Set(["right", "left", "the right", "the left", "north", "south", "east", "west"])
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Pull a short road name out of a Routes-API instruction. Instructions
|
|
41
|
+
* look like:
|
|
42
|
+
* "Turn left onto Octavia Blvd"
|
|
43
|
+
* "Head northeast on Market St toward Octavia St"
|
|
44
|
+
* "Turn right onto Haight St\nDestination will be on the right"
|
|
45
|
+
*
|
|
46
|
+
* Pitfalls this guards against (seen in real data):
|
|
47
|
+
* - Multi-line: API appends "Destination will be on the right" etc.
|
|
48
|
+
* Only the first line is parsed, otherwise the greedy "on" match
|
|
49
|
+
* grabs "on the right" → "the right".
|
|
50
|
+
* - Trailing clauses ("… toward Octavia St", "… and continue"):
|
|
51
|
+
* cut at the first such keyword.
|
|
52
|
+
* - Unit suffixes: "Hayes St #116" → "Hayes St".
|
|
53
|
+
* - Bare direction words slipping through: rejected so the resolver
|
|
54
|
+
* falls back to geocoding instead of labeling a step "left".
|
|
55
|
+
*/
|
|
56
|
+
export function roadNameFromInstruction(instruction?: string): string | null {
|
|
57
|
+
if (!instruction) return null
|
|
58
|
+
const firstLine = instruction.split("\n")[0] ?? ""
|
|
59
|
+
// Prefer "onto" (always immediately precedes the road); fall back to
|
|
60
|
+
// "on" for depart steps ("Head north on Market St").
|
|
61
|
+
const m = firstLine.match(/\bonto\s+(.+)$/i) ?? firstLine.match(/\bon\s+(.+)$/i)
|
|
62
|
+
let raw = (m ? m[1] : "").trim()
|
|
63
|
+
if (!raw) return null
|
|
64
|
+
// Cut trailing direction/continuation clauses the API appends.
|
|
65
|
+
raw = raw.split(/\s+(?:toward|towards|to|and|then|for)\b/i)[0]?.trim() ?? ""
|
|
66
|
+
// Strip a unit/suite suffix.
|
|
67
|
+
raw = raw.replace(/\s+#.*$/, "").trim()
|
|
68
|
+
if (!raw) return null
|
|
69
|
+
if (DIRECTION_WORDS.has(raw.toLowerCase())) return null
|
|
70
|
+
return raw
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Resolve `road` for every step in a Routes-API step list. The
|
|
75
|
+
* `reverseGeocode` callback is injected so this module stays free of
|
|
76
|
+
* the host's network plumbing (and is unit-testable).
|
|
77
|
+
*
|
|
78
|
+
* Steps are resolved in parallel: parsed names land synchronously,
|
|
79
|
+
* geocoded fallbacks fire concurrently. Order is preserved.
|
|
80
|
+
*/
|
|
81
|
+
export async function resolveStepRoads<S extends StepLike>(
|
|
82
|
+
steps: S[],
|
|
83
|
+
reverseGeocode: ReverseGeocode,
|
|
84
|
+
): Promise<Array<S & {road: string | null}>> {
|
|
85
|
+
const probes = steps.map<Promise<string | null>>((s) => {
|
|
86
|
+
const parsed = roadNameFromInstruction(s.instruction)
|
|
87
|
+
if (parsed) return Promise.resolve(parsed)
|
|
88
|
+
if (
|
|
89
|
+
!Number.isFinite(s.lat) ||
|
|
90
|
+
!Number.isFinite(s.lng) ||
|
|
91
|
+
!Number.isFinite(s.endLat) ||
|
|
92
|
+
!Number.isFinite(s.endLng)
|
|
93
|
+
) {
|
|
94
|
+
return Promise.resolve(null)
|
|
95
|
+
}
|
|
96
|
+
const mid = {lat: (s.lat + s.endLat) / 2, lng: (s.lng + s.endLng) / 2}
|
|
97
|
+
return reverseGeocode(mid)
|
|
98
|
+
.then((r) => (r.ok ? (r.road ?? null) : null))
|
|
99
|
+
.catch(() => null)
|
|
100
|
+
})
|
|
101
|
+
const roads = await Promise.all(probes)
|
|
102
|
+
return steps.map((s, i) => ({...s, road: roads[i]}))
|
|
103
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure decoders used by `NavigationService.computeRoute` when talking to
|
|
3
|
+
* Mapbox's Directions API directly (no native dependency).
|
|
4
|
+
*
|
|
5
|
+
* Kept in their own module so unit tests don't have to bring up the
|
|
6
|
+
* `crust` native module to exercise them. The algorithms are unit
|
|
7
|
+
* testable; the surrounding service is not.
|
|
8
|
+
*
|
|
9
|
+
* Migrated from Google Routes API: Mapbox returns numeric `distance`
|
|
10
|
+
* (meters) / `duration` (seconds) rather than Google's `"123s"` protobuf
|
|
11
|
+
* strings, and `polyline6` (precision-6) geometry rather than Google's
|
|
12
|
+
* precision-5 encoded polyline. `parseDurationSeconds` is retained for
|
|
13
|
+
* back-compat but Mapbox callers pass the numeric value through directly.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
export type LatLng = {lat: number; lng: number}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Back-compat: Google Routes API encoded durations as protobuf strings
|
|
20
|
+
* ("123s"). Mapbox returns a number, so new callers should not need this.
|
|
21
|
+
* Accepts a number (passed through) or a "123s" string.
|
|
22
|
+
*/
|
|
23
|
+
export function parseDurationSeconds(s: string | number): number {
|
|
24
|
+
if (typeof s === "number") return Number.isFinite(s) ? Math.round(s) : 0
|
|
25
|
+
const match = s.match(/^(\d+)/)
|
|
26
|
+
return match ? Number(match[1]) : 0
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Decode an encoded polyline. The standard Google/Mapbox polyline
|
|
31
|
+
* algorithm, parameterized by coordinate precision:
|
|
32
|
+
* - precision 5 (Google Routes, Mapbox `polyline`): factor 1e5
|
|
33
|
+
* - precision 6 (Mapbox `polyline6`): factor 1e6
|
|
34
|
+
*
|
|
35
|
+
* We request `geometries=polyline6` from Mapbox Directions for the extra
|
|
36
|
+
* precision (tighter road-centerline tracing keeps the turn-pivot dots on
|
|
37
|
+
* the visible road), so the default precision here is 6.
|
|
38
|
+
*
|
|
39
|
+
* Reference: https://docs.mapbox.com/api/navigation/directions/#route-object
|
|
40
|
+
*/
|
|
41
|
+
export function decodePolyline(encoded: string, precision: number = 6): LatLng[] {
|
|
42
|
+
if (!encoded) return []
|
|
43
|
+
const factor = Math.pow(10, precision)
|
|
44
|
+
const points: LatLng[] = []
|
|
45
|
+
let index = 0
|
|
46
|
+
let lat = 0
|
|
47
|
+
let lng = 0
|
|
48
|
+
while (index < encoded.length) {
|
|
49
|
+
let result = 0
|
|
50
|
+
let shift = 0
|
|
51
|
+
let b: number
|
|
52
|
+
do {
|
|
53
|
+
b = encoded.charCodeAt(index++) - 63
|
|
54
|
+
result |= (b & 0x1f) << shift
|
|
55
|
+
shift += 5
|
|
56
|
+
} while (b >= 0x20)
|
|
57
|
+
lat += result & 1 ? ~(result >> 1) : result >> 1
|
|
58
|
+
result = 0
|
|
59
|
+
shift = 0
|
|
60
|
+
do {
|
|
61
|
+
b = encoded.charCodeAt(index++) - 63
|
|
62
|
+
result |= (b & 0x1f) << shift
|
|
63
|
+
shift += 5
|
|
64
|
+
} while (b >= 0x20)
|
|
65
|
+
lng += result & 1 ? ~(result >> 1) : result >> 1
|
|
66
|
+
points.push({lat: lat / factor, lng: lng / factor})
|
|
67
|
+
}
|
|
68
|
+
return points
|
|
69
|
+
}
|