@mentra/engine 0.1.0-beta.0 → 0.1.0-dev.1
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 +42 -1
- package/build/engine.d.ts +11 -3
- package/build/engine.d.ts.map +1 -1
- package/build/engine.js +7 -2
- package/build/engine.js.map +1 -1
- package/build/facades/dev.d.ts.map +1 -1
- package/build/facades/dev.js +9 -5
- package/build/facades/dev.js.map +1 -1
- package/build/facades/gallery.js +1 -1
- package/build/facades/gallery.js.map +1 -1
- package/build/facades/glasses.d.ts +1 -0
- package/build/facades/glasses.d.ts.map +1 -1
- package/build/facades/glasses.js +19 -4
- package/build/facades/glasses.js.map +1 -1
- package/build/facades/glassesSettings.d.ts.map +1 -1
- package/build/facades/glassesSettings.js +1 -0
- package/build/facades/glassesSettings.js.map +1 -1
- package/build/facades/miniapps.d.ts +4 -0
- package/build/facades/miniapps.d.ts.map +1 -1
- package/build/facades/miniapps.js +5 -0
- package/build/facades/miniapps.js.map +1 -1
- package/build/facades/ota.d.ts +11 -2
- package/build/facades/ota.d.ts.map +1 -1
- package/build/facades/ota.js +19 -4
- package/build/facades/ota.js.map +1 -1
- package/build/facades/pairing.d.ts +4 -0
- package/build/facades/pairing.d.ts.map +1 -1
- package/build/facades/pairing.js +10 -8
- package/build/facades/pairing.js.map +1 -1
- package/build/facades/phoneNotifications.d.ts +0 -4
- package/build/facades/phoneNotifications.d.ts.map +1 -1
- package/build/facades/phoneNotifications.js +4 -14
- package/build/facades/phoneNotifications.js.map +1 -1
- package/build/index.d.ts +6 -3
- package/build/index.d.ts.map +1 -1
- package/build/index.js +4 -2
- package/build/index.js.map +1 -1
- package/build/internal.d.ts +2 -2
- package/build/internal.d.ts.map +1 -1
- package/build/internal.js +1 -1
- package/build/internal.js.map +1 -1
- package/build/react/MentraLiveOtaFlow.d.ts +38 -0
- package/build/react/MentraLiveOtaFlow.d.ts.map +1 -0
- package/build/react/MentraLiveOtaFlow.js +528 -0
- package/build/react/MentraLiveOtaFlow.js.map +1 -0
- package/build/react/index.d.ts +2 -0
- package/build/react/index.d.ts.map +1 -0
- package/build/react/index.js +2 -0
- package/build/react/index.js.map +1 -0
- package/build/react/useEngineSnapshot.d.ts +2 -0
- package/build/react/useEngineSnapshot.d.ts.map +1 -0
- package/build/react/useEngineSnapshot.js +14 -0
- package/build/react/useEngineSnapshot.js.map +1 -0
- package/build/runtime/bootstrap.d.ts +24 -1
- package/build/runtime/bootstrap.d.ts.map +1 -1
- package/build/runtime/bootstrap.js +17 -0
- package/build/runtime/bootstrap.js.map +1 -1
- 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/services/AppRegistry.d.ts +18 -8
- package/build/services/AppRegistry.d.ts.map +1 -1
- package/build/services/AppRegistry.js +44 -45
- package/build/services/AppRegistry.js.map +1 -1
- package/build/services/AudioCloudUplink.d.ts +9 -3
- package/build/services/AudioCloudUplink.d.ts.map +1 -1
- package/build/services/AudioCloudUplink.js +9 -3
- package/build/services/AudioCloudUplink.js.map +1 -1
- package/build/services/AudioPlaybackService.d.ts +9 -1
- package/build/services/AudioPlaybackService.d.ts.map +1 -1
- package/build/services/AudioPlaybackService.js +77 -32
- package/build/services/AudioPlaybackService.js.map +1 -1
- package/build/services/BlobStore.d.ts +2 -1
- package/build/services/BlobStore.d.ts.map +1 -1
- package/build/services/BlobStore.js +17 -9
- package/build/services/BlobStore.js.map +1 -1
- package/build/services/CloudAudioSubscriptionSync.d.ts.map +1 -1
- package/build/services/CloudAudioSubscriptionSync.js +13 -1
- package/build/services/CloudAudioSubscriptionSync.js.map +1 -1
- package/build/services/CloudClientService.d.ts +15 -0
- package/build/services/CloudClientService.d.ts.map +1 -1
- package/build/services/CloudClientService.js +75 -0
- package/build/services/CloudClientService.js.map +1 -1
- 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/GlassesSettingsSync.d.ts.map +1 -1
- package/build/services/GlassesSettingsSync.js +9 -3
- package/build/services/GlassesSettingsSync.js.map +1 -1
- package/build/services/GlassesStatusProjection.d.ts +2 -1
- package/build/services/GlassesStatusProjection.d.ts.map +1 -1
- package/build/services/GlassesStatusProjection.js +15 -8
- package/build/services/GlassesStatusProjection.js.map +1 -1
- 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/LocalDisplayManager.d.ts +15 -0
- package/build/services/LocalDisplayManager.d.ts.map +1 -1
- package/build/services/LocalDisplayManager.js +106 -20
- package/build/services/LocalDisplayManager.js.map +1 -1
- package/build/services/LocalMiniappRuntime.d.ts +67 -1
- package/build/services/LocalMiniappRuntime.d.ts.map +1 -1
- package/build/services/LocalMiniappRuntime.js +486 -126
- package/build/services/LocalMiniappRuntime.js.map +1 -1
- 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 +20 -0
- package/build/services/LocalMiniappUserIdentity.d.ts.map +1 -0
- package/build/services/LocalMiniappUserIdentity.js +43 -0
- package/build/services/LocalMiniappUserIdentity.js.map +1 -0
- package/build/services/MicStateCoordinator.d.ts +42 -1
- package/build/services/MicStateCoordinator.d.ts.map +1 -1
- package/build/services/MicStateCoordinator.js +141 -3
- package/build/services/MicStateCoordinator.js.map +1 -1
- package/build/services/MiniappLauncher.d.ts.map +1 -1
- package/build/services/MiniappLauncher.js +23 -3
- package/build/services/MiniappLauncher.js.map +1 -1
- 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/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/OtaAutoChain.d.ts +34 -0
- package/build/services/OtaAutoChain.d.ts.map +1 -0
- package/build/services/OtaAutoChain.js +83 -0
- package/build/services/OtaAutoChain.js.map +1 -0
- package/build/services/OtaErrorMapping.d.ts +18 -0
- package/build/services/OtaErrorMapping.d.ts.map +1 -0
- package/build/services/OtaErrorMapping.js +63 -0
- package/build/services/OtaErrorMapping.js.map +1 -0
- package/build/services/OtaInstallCoordinator.d.ts +94 -14
- package/build/services/OtaInstallCoordinator.d.ts.map +1 -1
- package/build/services/OtaInstallCoordinator.js +574 -130
- package/build/services/OtaInstallCoordinator.js.map +1 -1
- package/build/services/OtaService.d.ts.map +1 -1
- package/build/services/OtaService.js +8 -1
- package/build/services/OtaService.js.map +1 -1
- package/build/services/OtaUpdateCheckService.d.ts +38 -3
- package/build/services/OtaUpdateCheckService.d.ts.map +1 -1
- package/build/services/OtaUpdateCheckService.js +142 -22
- package/build/services/OtaUpdateCheckService.js.map +1 -1
- package/build/services/PhoneCalendarService.d.ts.map +1 -1
- package/build/services/PhoneCalendarService.js +22 -1
- package/build/services/PhoneCalendarService.js.map +1 -1
- package/build/services/PhoneCameraFovCoordinator.d.ts +2 -0
- package/build/services/PhoneCameraFovCoordinator.d.ts.map +1 -1
- package/build/services/PhoneCameraFovCoordinator.js +14 -0
- package/build/services/PhoneCameraFovCoordinator.js.map +1 -1
- package/build/services/PhoneNotificationsSync.d.ts.map +1 -1
- package/build/services/PhoneNotificationsSync.js +12 -10
- package/build/services/PhoneNotificationsSync.js.map +1 -1
- package/build/services/PhonePhotoCoordinator.d.ts +10 -3
- package/build/services/PhonePhotoCoordinator.d.ts.map +1 -1
- package/build/services/PhonePhotoCoordinator.js +21 -3
- package/build/services/PhonePhotoCoordinator.js.map +1 -1
- package/build/services/PhoneStreamCoordinator.d.ts +8 -1
- package/build/services/PhoneStreamCoordinator.d.ts.map +1 -1
- package/build/services/PhoneStreamCoordinator.js +125 -13
- package/build/services/PhoneStreamCoordinator.js.map +1 -1
- package/build/services/PhoneVideoCoordinator.d.ts +2 -0
- package/build/services/PhoneVideoCoordinator.d.ts.map +1 -1
- package/build/services/PhoneVideoCoordinator.js +10 -0
- package/build/services/PhoneVideoCoordinator.js.map +1 -1
- package/build/services/SceneRenderer.d.ts.map +1 -1
- package/build/services/SceneRenderer.js +15 -0
- package/build/services/SceneRenderer.js.map +1 -1
- 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/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/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/asgCameraApi.d.ts +3 -0
- package/build/services/asg/asgCameraApi.d.ts.map +1 -1
- package/build/services/asg/asgCameraApi.js +72 -2
- package/build/services/asg/asgCameraApi.js.map +1 -1
- package/build/services/asg/gallerySyncService.d.ts.map +1 -1
- package/build/services/asg/gallerySyncService.js +26 -14
- package/build/services/asg/gallerySyncService.js.map +1 -1
- package/build/services/asg/localNetworkTransport.d.ts +2 -2
- package/build/services/asg/localNetworkTransport.d.ts.map +1 -1
- package/build/services/asg/localNetworkTransport.js +6 -6
- package/build/services/asg/localNetworkTransport.js.map +1 -1
- 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/glassesClockSync.js +2 -2
- package/build/services/glassesClockSync.js.map +1 -1
- package/build/services/manifestActions.d.ts +7 -0
- package/build/services/manifestActions.d.ts.map +1 -0
- package/build/services/manifestActions.js +25 -0
- package/build/services/manifestActions.js.map +1 -0
- package/build/services/otaDisplayState.d.ts +22 -11
- package/build/services/otaDisplayState.d.ts.map +1 -1
- package/build/services/otaDisplayState.js +36 -14
- package/build/services/otaDisplayState.js.map +1 -1
- package/build/services/otaInstallPolicy.d.ts +15 -3
- package/build/services/otaInstallPolicy.d.ts.map +1 -1
- package/build/services/otaInstallPolicy.js +24 -3
- package/build/services/otaInstallPolicy.js.map +1 -1
- package/build/services/otaManifestUrl.d.ts +2 -0
- package/build/services/otaManifestUrl.d.ts.map +1 -0
- package/build/services/{asgOtaVersionUrl.js → otaManifestUrl.js} +15 -5
- package/build/services/otaManifestUrl.js.map +1 -0
- package/build/services/slimStreamStatus.d.ts +11 -0
- package/build/services/slimStreamStatus.d.ts.map +1 -1
- package/build/services/slimStreamStatus.js +14 -4
- package/build/services/slimStreamStatus.js.map +1 -1
- package/build/stores/apps.d.ts.map +1 -1
- package/build/stores/apps.js +11 -0
- package/build/stores/apps.js.map +1 -1
- package/build/stores/bluetoothSettingKeys.d.ts.map +1 -1
- package/build/stores/bluetoothSettingKeys.js +2 -0
- package/build/stores/bluetoothSettingKeys.js.map +1 -1
- package/build/stores/gallerySync.d.ts +2 -0
- package/build/stores/gallerySync.d.ts.map +1 -1
- package/build/stores/gallerySync.js +2 -0
- package/build/stores/gallerySync.js.map +1 -1
- package/build/stores/glasses.d.ts.map +1 -1
- package/build/stores/glasses.js +3 -0
- package/build/stores/glasses.js.map +1 -1
- package/build/stores/settings.d.ts +17 -0
- package/build/stores/settings.d.ts.map +1 -1
- package/build/stores/settings.js +152 -19
- package/build/stores/settings.js.map +1 -1
- package/build/types/applet.d.ts +2 -0
- package/build/types/applet.d.ts.map +1 -1
- package/build/types/applet.js.map +1 -1
- package/build/types/enums.d.ts +1 -0
- package/build/types/enums.d.ts.map +1 -1
- package/build/types/enums.js +1 -0
- package/build/types/enums.js.map +1 -1
- package/build/types/hardware.d.ts +1 -0
- package/build/types/hardware.d.ts.map +1 -1
- package/build/types/hardware.js +14 -0
- package/build/types/hardware.js.map +1 -1
- 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/devMiniappLaunch.d.ts +19 -8
- package/build/utils/devMiniappLaunch.d.ts.map +1 -1
- package/build/utils/devMiniappLaunch.js +144 -21
- package/build/utils/devMiniappLaunch.js.map +1 -1
- package/build/utils/diagnosticContext.d.ts.map +1 -1
- package/build/utils/diagnosticContext.js +15 -17
- package/build/utils/diagnosticContext.js.map +1 -1
- package/build/utils/hardware/hardware.d.ts.map +1 -1
- package/build/utils/hardware/hardware.js +7 -3
- package/build/utils/hardware/hardware.js.map +1 -1
- 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/timers/timers.d.ts.map +1 -1
- package/build/utils/timers/timers.js +55 -18
- package/build/utils/timers/timers.js.map +1 -1
- package/package.json +27 -18
- package/src/assets/silence.wav +0 -0
- package/src/engine.ts +7 -2
- package/src/facades/dev.ts +9 -5
- package/src/facades/gallery.ts +1 -1
- package/src/facades/glasses.ts +17 -4
- package/src/facades/glassesSettings.ts +5 -0
- package/src/facades/miniapps.ts +7 -0
- package/src/facades/ota.ts +19 -4
- package/src/facades/pairing.ts +11 -7
- package/src/facades/phoneNotifications.ts +4 -13
- package/src/index.ts +26 -2
- package/src/internal.ts +2 -1
- package/src/react/MentraLiveOtaFlow.tsx +856 -0
- package/src/react/index.ts +7 -0
- package/src/react/useEngineSnapshot.ts +16 -0
- package/src/runtime/bootstrap.ts +33 -1
- package/src/runtime/scanQrSeam.ts +20 -0
- package/src/services/AppRegistry.ts +72 -48
- package/src/services/AudioCloudUplink.ts +9 -3
- package/src/services/AudioPlaybackService.ts +94 -34
- package/src/services/BlobStore.ts +22 -9
- package/src/services/CloudAudioSubscriptionSync.ts +13 -1
- package/src/services/CloudClientService.ts +74 -0
- package/src/services/ForegroundLocationPermission.ts +24 -0
- package/src/services/GlassesSettingsSync.ts +9 -3
- package/src/services/GlassesStatusProjection.ts +16 -8
- package/src/services/HotspotOtaTransport.ts +184 -0
- package/src/services/HotspotShutdown.ts +41 -0
- package/src/services/LocalDisplayManager.ts +112 -21
- package/src/services/LocalMiniappRuntime.ts +576 -130
- package/src/services/LocalMiniappStorage.ts +82 -0
- package/src/services/LocalMiniappUserIdentity.ts +46 -0
- package/src/services/MicStateCoordinator.ts +169 -4
- package/src/services/MiniappLauncher.ts +30 -3
- package/src/services/MiniappLiveness.ts +24 -0
- package/src/services/OtaArtifactDownloader.ts +312 -0
- package/src/services/OtaAutoChain.ts +106 -0
- package/src/services/OtaErrorMapping.ts +80 -0
- package/src/services/OtaInstallCoordinator.ts +645 -143
- package/src/services/OtaService.ts +11 -5
- package/src/services/OtaUpdateCheckService.ts +180 -20
- package/src/services/PhoneCalendarService.ts +27 -4
- package/src/services/PhoneCameraFovCoordinator.ts +15 -0
- package/src/services/PhoneNotificationsSync.ts +12 -10
- package/src/services/PhonePhotoCoordinator.ts +33 -7
- package/src/services/PhoneStreamCoordinator.ts +139 -25
- package/src/services/PhoneVideoCoordinator.ts +11 -0
- package/src/services/SceneRenderer.ts +16 -0
- package/src/services/SupportProfileSync.ts +218 -0
- package/src/services/TtsTextSanitizer.ts +66 -0
- package/src/services/WifiAdbRequest.ts +53 -0
- package/src/services/asg/asgCameraApi.ts +99 -8
- package/src/services/asg/gallerySyncService.ts +28 -19
- package/src/services/asg/localNetworkTransport.ts +7 -11
- package/src/services/audioPlaybackAssets.ts +8 -0
- package/src/services/glassesClockSync.ts +2 -2
- package/src/services/manifestActions.ts +30 -0
- package/src/services/otaDisplayState.ts +57 -16
- package/src/services/otaInstallPolicy.ts +29 -3
- package/src/services/{asgOtaVersionUrl.ts → otaManifestUrl.ts} +16 -4
- package/src/services/slimStreamStatus.ts +16 -5
- package/src/stores/apps.ts +12 -0
- package/src/stores/bluetoothSettingKeys.ts +2 -0
- package/src/stores/gallerySync.ts +4 -0
- package/src/stores/glasses.ts +3 -0
- package/src/stores/settings.ts +174 -21
- package/src/types/applet.ts +2 -0
- package/src/types/enums.ts +2 -1
- package/src/types/hardware.ts +17 -0
- package/src/utils/configuredDevHost.ts +17 -0
- package/src/utils/devMiniappLaunch.ts +151 -23
- package/src/utils/diagnosticContext.ts +17 -17
- package/src/utils/hardware/hardware.ts +7 -9
- package/src/utils/miniappDiagnostics.ts +226 -0
- package/src/utils/timers/timers.ts +57 -21
- package/build/services/asgOtaVersionUrl.d.ts +0 -2
- package/build/services/asgOtaVersionUrl.d.ts.map +0 -1
- package/build/services/asgOtaVersionUrl.js.map +0 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { OtaProgress, OtaStatus } from "../facades/ota";
|
|
2
|
+
export declare const BES_INSTALL_RESTART_MESSAGE = "Restart your glasses to safely exit firmware update mode before trying again";
|
|
3
|
+
/**
|
|
4
|
+
* Offer Change WiFi whenever the OTA flow failed while the glasses were in the
|
|
5
|
+
* download step (any download failure — network, SSL, size cap, verify, etc.).
|
|
6
|
+
*
|
|
7
|
+
* Also covers phone-side watchdog failures that fire while the store still shows
|
|
8
|
+
* an active download phase (stall / global timeout mid-download).
|
|
9
|
+
*/
|
|
10
|
+
export declare function shouldShowChangeWifiForOtaDownloadFailure(otaStatus: OtaStatus | null | undefined, otaProgress: OtaProgress | null | undefined, localErrorMessage: string): boolean;
|
|
11
|
+
export declare function getOtaErrorMessage(error?: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Once a BES install has started, any failure conservatively requires a glasses restart. This
|
|
14
|
+
* avoids adding a BES-specific error code to the wire protocol and, more importantly, never offers
|
|
15
|
+
* an unsafe retry when a generic failure or silence may mean BES entered its raw OTA parser.
|
|
16
|
+
*/
|
|
17
|
+
export declare function shouldRequireGlassesRebootForBesFailure(otaStatus: OtaStatus | null | undefined, _otaProgress: OtaProgress | null | undefined, localErrorMessage: string): boolean;
|
|
18
|
+
//# sourceMappingURL=OtaErrorMapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OtaErrorMapping.d.ts","sourceRoot":"","sources":["../../src/services/OtaErrorMapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAA;AAE1D,eAAO,MAAM,2BAA2B,iFACwC,CAAA;AAehF;;;;;;GAMG;AACH,wBAAgB,yCAAyC,CACvD,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,EACvC,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,EAC3C,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAWT;AAED,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBzD;AAED;;;;GAIG;AACH,wBAAgB,uCAAuC,CACrD,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,EACvC,YAAY,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,EAC5C,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAKT"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export const BES_INSTALL_RESTART_MESSAGE = "Restart your glasses to safely exit firmware update mode before trying again";
|
|
2
|
+
function isDownloadPhaseSnapshot(otaStatus, otaProgress) {
|
|
3
|
+
if (otaStatus?.phase === "download") {
|
|
4
|
+
return true;
|
|
5
|
+
}
|
|
6
|
+
if (otaProgress?.stage === "download") {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Offer Change WiFi whenever the OTA flow failed while the glasses were in the
|
|
13
|
+
* download step (any download failure — network, SSL, size cap, verify, etc.).
|
|
14
|
+
*
|
|
15
|
+
* Also covers phone-side watchdog failures that fire while the store still shows
|
|
16
|
+
* an active download phase (stall / global timeout mid-download).
|
|
17
|
+
*/
|
|
18
|
+
export function shouldShowChangeWifiForOtaDownloadFailure(otaStatus, otaProgress, localErrorMessage) {
|
|
19
|
+
if (otaStatus?.status === "failed" && otaStatus.phase === "download") {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
if (otaProgress?.status === "FAILED" && otaProgress.stage === "download") {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
if (localErrorMessage && isDownloadPhaseSnapshot(otaStatus, otaProgress)) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
export function getOtaErrorMessage(error) {
|
|
31
|
+
switch (error) {
|
|
32
|
+
case "no_internet":
|
|
33
|
+
return "Glasses WiFi has no internet connection";
|
|
34
|
+
case "clock_skew":
|
|
35
|
+
return "Glasses clock is wrong — syncing time from your phone, then retrying update check";
|
|
36
|
+
case "ssl_error":
|
|
37
|
+
return "Secure connection failed — try a different WiFi network";
|
|
38
|
+
case "download_failed":
|
|
39
|
+
return "Download failed — check glasses WiFi connection";
|
|
40
|
+
case "firmware_too_large":
|
|
41
|
+
return "Firmware file is unexpectedly large — please contact support";
|
|
42
|
+
case "firmware_verify_failed":
|
|
43
|
+
return "Firmware verification failed — please try again or contact support";
|
|
44
|
+
case "apk_verify_failed":
|
|
45
|
+
return "Update verification failed — please try again or contact support";
|
|
46
|
+
case "install_failed":
|
|
47
|
+
return "Install failed — please try again";
|
|
48
|
+
default:
|
|
49
|
+
return error || "Update failed";
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Once a BES install has started, any failure conservatively requires a glasses restart. This
|
|
54
|
+
* avoids adding a BES-specific error code to the wire protocol and, more importantly, never offers
|
|
55
|
+
* an unsafe retry when a generic failure or silence may mean BES entered its raw OTA parser.
|
|
56
|
+
*/
|
|
57
|
+
export function shouldRequireGlassesRebootForBesFailure(otaStatus, _otaProgress, localErrorMessage) {
|
|
58
|
+
if (otaStatus?.stepType !== "bes" || otaStatus.phase !== "install") {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
return otaStatus.status === "failed" || Boolean(localErrorMessage);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=OtaErrorMapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OtaErrorMapping.js","sourceRoot":"","sources":["../../src/services/OtaErrorMapping.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,2BAA2B,GACtC,8EAA8E,CAAA;AAEhF,SAAS,uBAAuB,CAC9B,SAAuC,EACvC,WAA2C;IAE3C,IAAI,SAAS,EAAE,KAAK,KAAK,UAAU,EAAE,CAAC;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,WAAW,EAAE,KAAK,KAAK,UAAU,EAAE,CAAC;QACtC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yCAAyC,CACvD,SAAuC,EACvC,WAA2C,EAC3C,iBAAyB;IAEzB,IAAI,SAAS,EAAE,MAAM,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACrE,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,WAAW,EAAE,MAAM,KAAK,QAAQ,IAAI,WAAW,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACzE,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,iBAAiB,IAAI,uBAAuB,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;QACzE,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,aAAa;YAChB,OAAO,yCAAyC,CAAA;QAClD,KAAK,YAAY;YACf,OAAO,mFAAmF,CAAA;QAC5F,KAAK,WAAW;YACd,OAAO,yDAAyD,CAAA;QAClE,KAAK,iBAAiB;YACpB,OAAO,iDAAiD,CAAA;QAC1D,KAAK,oBAAoB;YACvB,OAAO,8DAA8D,CAAA;QACvE,KAAK,wBAAwB;YAC3B,OAAO,oEAAoE,CAAA;QAC7E,KAAK,mBAAmB;YACtB,OAAO,kEAAkE,CAAA;QAC3E,KAAK,gBAAgB;YACnB,OAAO,mCAAmC,CAAA;QAC5C;YACE,OAAO,KAAK,IAAI,eAAe,CAAA;IACnC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uCAAuC,CACrD,SAAuC,EACvC,YAA4C,EAC5C,iBAAyB;IAEzB,IAAI,SAAS,EAAE,QAAQ,KAAK,KAAK,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACnE,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAA;AACpE,CAAC","sourcesContent":["import type {OtaProgress, OtaStatus} from \"../facades/ota\"\n\nexport const BES_INSTALL_RESTART_MESSAGE =\n \"Restart your glasses to safely exit firmware update mode before trying again\"\n\nfunction isDownloadPhaseSnapshot(\n otaStatus: OtaStatus | null | undefined,\n otaProgress: OtaProgress | null | undefined,\n): boolean {\n if (otaStatus?.phase === \"download\") {\n return true\n }\n if (otaProgress?.stage === \"download\") {\n return true\n }\n return false\n}\n\n/**\n * Offer Change WiFi whenever the OTA flow failed while the glasses were in the\n * download step (any download failure — network, SSL, size cap, verify, etc.).\n *\n * Also covers phone-side watchdog failures that fire while the store still shows\n * an active download phase (stall / global timeout mid-download).\n */\nexport function shouldShowChangeWifiForOtaDownloadFailure(\n otaStatus: OtaStatus | null | undefined,\n otaProgress: OtaProgress | null | undefined,\n localErrorMessage: string,\n): boolean {\n if (otaStatus?.status === \"failed\" && otaStatus.phase === \"download\") {\n return true\n }\n if (otaProgress?.status === \"FAILED\" && otaProgress.stage === \"download\") {\n return true\n }\n if (localErrorMessage && isDownloadPhaseSnapshot(otaStatus, otaProgress)) {\n return true\n }\n return false\n}\n\nexport function getOtaErrorMessage(error?: string): string {\n switch (error) {\n case \"no_internet\":\n return \"Glasses WiFi has no internet connection\"\n case \"clock_skew\":\n return \"Glasses clock is wrong — syncing time from your phone, then retrying update check\"\n case \"ssl_error\":\n return \"Secure connection failed — try a different WiFi network\"\n case \"download_failed\":\n return \"Download failed — check glasses WiFi connection\"\n case \"firmware_too_large\":\n return \"Firmware file is unexpectedly large — please contact support\"\n case \"firmware_verify_failed\":\n return \"Firmware verification failed — please try again or contact support\"\n case \"apk_verify_failed\":\n return \"Update verification failed — please try again or contact support\"\n case \"install_failed\":\n return \"Install failed — please try again\"\n default:\n return error || \"Update failed\"\n }\n}\n\n/**\n * Once a BES install has started, any failure conservatively requires a glasses restart. This\n * avoids adding a BES-specific error code to the wire protocol and, more importantly, never offers\n * an unsafe retry when a generic failure or silence may mean BES entered its raw OTA parser.\n */\nexport function shouldRequireGlassesRebootForBesFailure(\n otaStatus: OtaStatus | null | undefined,\n _otaProgress: OtaProgress | null | undefined,\n localErrorMessage: string,\n): boolean {\n if (otaStatus?.stepType !== \"bes\" || otaStatus.phase !== \"install\") {\n return false\n }\n return otaStatus.status === \"failed\" || Boolean(localErrorMessage)\n}\n"]}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { OtaProgress, OtaStatus } from "@mentra/bluetooth-sdk/internal";
|
|
2
|
+
import { type HotspotOtaPhase } from "./HotspotOtaTransport";
|
|
3
|
+
import type { OtaCheckCurrentGlassesResult } from "./OtaUpdateCheckService";
|
|
2
4
|
import { type DisplayState } from "./otaDisplayState";
|
|
3
5
|
/** Read model the host progress screen renders from. */
|
|
4
6
|
export interface OtaInstallSnapshot {
|
|
@@ -14,9 +16,28 @@ export interface OtaInstallSnapshot {
|
|
|
14
16
|
* +1% ticks up to 60% purely to reassure the user. Render max(real, simulated).
|
|
15
17
|
*/
|
|
16
18
|
mtkInstallStallSimulatedPercent: number | null;
|
|
19
|
+
/** True for a downgrade (version-change) session — the UI narrates it differently. */
|
|
20
|
+
isVersionChange: boolean;
|
|
21
|
+
/** True once the glasses reported the exact pinned target (the downgrade truly completed). */
|
|
22
|
+
versionChangeConverged: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Sub-phase of the downgrade detour for the progress narrative, or null when not
|
|
25
|
+
* in one: "installing" before the handoff, "restarting" while the glasses are dark
|
|
26
|
+
* (uninstall / factory flicker / target install), "verifying" once reconnected and
|
|
27
|
+
* checking the version. Completion is the "complete" displayState.
|
|
28
|
+
*/
|
|
29
|
+
versionChangePhase: "installing" | "restarting" | "verifying" | null;
|
|
30
|
+
/** Pre-ota_start phone staging/join state for a hotspot attempt. */
|
|
31
|
+
hotspotPhase: HotspotOtaPhase;
|
|
32
|
+
hotspotArtifactPercent: number | null;
|
|
17
33
|
}
|
|
18
34
|
declare class OtaInstallCoordinator {
|
|
19
35
|
private attached;
|
|
36
|
+
private preparedCheckResult;
|
|
37
|
+
private selectedTransport;
|
|
38
|
+
private hotspotManifestUrl;
|
|
39
|
+
private hotspotPhase;
|
|
40
|
+
private hotspotArtifactPercent;
|
|
20
41
|
private errorMsg;
|
|
21
42
|
private sawReconnectEdge;
|
|
22
43
|
private continueButtonDisabled;
|
|
@@ -25,6 +46,14 @@ declare class OtaInstallCoordinator {
|
|
|
25
46
|
private initialBuildNumber;
|
|
26
47
|
private apkExpectedInSession;
|
|
27
48
|
private apkCompletedViaBuildIncrease;
|
|
49
|
+
private protocolProfile;
|
|
50
|
+
private besRestartExpected;
|
|
51
|
+
private besRestartDisconnectObserved;
|
|
52
|
+
private besRestartRecovery;
|
|
53
|
+
private versionChangeSession;
|
|
54
|
+
private versionChangeTarget;
|
|
55
|
+
private versionChangeInstallStarted;
|
|
56
|
+
private versionChangeConverged;
|
|
28
57
|
private legacyApkSettleHold;
|
|
29
58
|
private mtkSimulatedPercent;
|
|
30
59
|
private lastRealMtkProgress;
|
|
@@ -33,14 +62,14 @@ declare class OtaInstallCoordinator {
|
|
|
33
62
|
private retryTimeout;
|
|
34
63
|
private stuckTimeout;
|
|
35
64
|
private progressTimeout;
|
|
36
|
-
private postApkDelay;
|
|
37
65
|
private pingInterval;
|
|
38
66
|
private queryReplyTimeout;
|
|
39
67
|
private continueLockoutTimer;
|
|
40
68
|
private legacyApkSettleTimer;
|
|
41
69
|
private mtkStallDetectTimer;
|
|
42
70
|
private mtkSimTickTimer;
|
|
43
|
-
private
|
|
71
|
+
private apkInstallPollInFlight;
|
|
72
|
+
private otaStartOwnership;
|
|
44
73
|
private hasFirstActivity;
|
|
45
74
|
private hasFirstNonZeroProgress;
|
|
46
75
|
private retryCount;
|
|
@@ -55,6 +84,8 @@ declare class OtaInstallCoordinator {
|
|
|
55
84
|
private reactQueued;
|
|
56
85
|
private storeUnsubscribe;
|
|
57
86
|
private snapshotCheckers;
|
|
87
|
+
/** Select the transport at the existing install entry point before the progress route attaches. */
|
|
88
|
+
prepare(checkResult: OtaCheckCurrentGlassesResult): "wifi" | "hotspot";
|
|
58
89
|
/**
|
|
59
90
|
* Bind the state machine to a mounted progress screen. Idempotent per
|
|
60
91
|
* attach/detach cycle. Runs the initial-mount arbitration (send ota_start
|
|
@@ -84,6 +115,16 @@ declare class OtaInstallCoordinator {
|
|
|
84
115
|
*/
|
|
85
116
|
discard(): void;
|
|
86
117
|
snapshot(): OtaInstallSnapshot;
|
|
118
|
+
/**
|
|
119
|
+
* True while the recovery worker owns the downgrade transaction (after the apk install
|
|
120
|
+
* started, before convergence). During this window ASG is being uninstalled/reinstalled and
|
|
121
|
+
* cannot answer the phone, so the coordinator must not ping, poll ota_query_status, or arm the
|
|
122
|
+
* progress-stall watchdog — doing so drives the passive factory build and fails the session
|
|
123
|
+
* before the target reconnects. Completion is exact-version convergence, detected separately.
|
|
124
|
+
*/
|
|
125
|
+
private isInVersionChangeDetour;
|
|
126
|
+
/** Downgrade-detour sub-phase for the progress narrative (see OtaInstallSnapshot). */
|
|
127
|
+
private deriveVersionChangePhase;
|
|
87
128
|
/**
|
|
88
129
|
* Subscribe to install snapshot changes, deduped on the projected JSON.
|
|
89
130
|
* Fires on glasses-store changes AND coordinator-internal state changes
|
|
@@ -91,6 +132,10 @@ declare class OtaInstallCoordinator {
|
|
|
91
132
|
*/
|
|
92
133
|
onSnapshot(cb: (snapshot: OtaInstallSnapshot) => void): () => void;
|
|
93
134
|
private resetSessionState;
|
|
135
|
+
/** Begin a genuinely new command attempt only after native ownership has settled. */
|
|
136
|
+
private prepareFreshOtaStartAttempt;
|
|
137
|
+
/** Reset only the reboot lifecycle that belongs to one install attempt. */
|
|
138
|
+
private resetBesRestartAttempt;
|
|
94
139
|
/** Notify snapshot subscribers of a coordinator-internal state change. */
|
|
95
140
|
private emitInternalChange;
|
|
96
141
|
private setErrorMsg;
|
|
@@ -100,11 +145,7 @@ declare class OtaInstallCoordinator {
|
|
|
100
145
|
private setLegacyApkSettleHold;
|
|
101
146
|
/** Display-only (WP 8C-e): notifies snapshot subscribers but never queues a reaction pass. */
|
|
102
147
|
private setMtkSimulatedPercent;
|
|
103
|
-
/**
|
|
104
|
-
* Legacy-session shape (WP 8C): event shape wins once events exist; before any event
|
|
105
|
-
* only the session-start build number can tell (falls back to the live build number
|
|
106
|
-
* until it is captured). Old builds get the LEGACY_* padded policy durations.
|
|
107
|
-
*/
|
|
148
|
+
/** Legacy/unified policy is selected once, matching the old sticky route choice. */
|
|
108
149
|
private isLegacySessionShapeNow;
|
|
109
150
|
private react;
|
|
110
151
|
/**
|
|
@@ -112,8 +153,22 @@ declare class OtaInstallCoordinator {
|
|
|
112
153
|
* component, in the old declaration order.
|
|
113
154
|
*/
|
|
114
155
|
private runPass;
|
|
156
|
+
/**
|
|
157
|
+
* Reconnect arbitration shared by the physical BLE connect edge and the
|
|
158
|
+
* glasses_session_changed signal. The latter exists because the BES keeps the BLE
|
|
159
|
+
* link alive across asg_client restarts (APK OTA): no physical edge ever fires, so
|
|
160
|
+
* the changed process session id is the only reconnect signal the coordinator gets
|
|
161
|
+
* (incident rep_01KY6BJ0B7A4RBMQ7VN39KAE5E). Always returns true (the caller's
|
|
162
|
+
* edge handling is complete).
|
|
163
|
+
*/
|
|
164
|
+
private runReconnectArbitration;
|
|
115
165
|
private runConnectEdge;
|
|
116
166
|
private readonly handleAck;
|
|
167
|
+
/**
|
|
168
|
+
* The asg process restarted while the BES kept the BLE link up (sid change observed
|
|
169
|
+
* by the bridge): treat it exactly like a physical reconnect edge.
|
|
170
|
+
*/
|
|
171
|
+
private readonly handleGlassesSessionChanged;
|
|
117
172
|
private readonly handleMtkComplete;
|
|
118
173
|
/**
|
|
119
174
|
* Reacts to a NEW legacy-shaped install-phase "complete" (an old build's
|
|
@@ -126,6 +181,9 @@ declare class OtaInstallCoordinator {
|
|
|
126
181
|
* starting/failed (post-reboot explicit signal) completion is immediate.
|
|
127
182
|
*/
|
|
128
183
|
private handleLegacyInstallCompleteEdge;
|
|
184
|
+
private isBesRestartExpected;
|
|
185
|
+
/** Complete only after a protocol-authorized BES restart traverses disconnect -> reconnect. */
|
|
186
|
+
private completeBesRestartRecovery;
|
|
129
187
|
/**
|
|
130
188
|
* Legacy MTK install stall simulation (WP 8C-e), ported verbatim: the MTK system
|
|
131
189
|
* install typically stalls around 49-50%. Every real event restarts stall detection;
|
|
@@ -141,7 +199,25 @@ declare class OtaInstallCoordinator {
|
|
|
141
199
|
*/
|
|
142
200
|
private computeDisplayStateNow;
|
|
143
201
|
/**
|
|
144
|
-
*
|
|
202
|
+
* During an APK install the package installer kills and restarts the glasses
|
|
203
|
+
* process, and the new process's completion push can lose its startup race
|
|
204
|
+
* against the UART transport (incident rep_01KY31HEMTSBSMK8DVMNXJ5XGG: the
|
|
205
|
+
* phone sat on a stale "install in_progress 0%" until the stall watchdog
|
|
206
|
+
* failed a successful update). The persisted session on the glasses always
|
|
207
|
+
* knows the truth, so poll ota_query_status on the keepalive tick while an
|
|
208
|
+
* apk step sits in its install phase — the reply either confirms progress or
|
|
209
|
+
* delivers the missed completion. Gated to the apk install phase so a stray
|
|
210
|
+
* idle reply can't disturb an active download; legacy (< 37) builds ignore
|
|
211
|
+
* the query, which is harmless.
|
|
212
|
+
*
|
|
213
|
+
* The native query pends up to 15s and rejects a concurrent call with
|
|
214
|
+
* request_in_flight — longer than the 10s tick — so exactly one poll is kept
|
|
215
|
+
* in flight (the glasses being slow to answer IS the silent-restart window
|
|
216
|
+
* this poll exists for) and rejections are swallowed: the next tick retries.
|
|
217
|
+
*/
|
|
218
|
+
private maybePollApkInstallStatus;
|
|
219
|
+
/**
|
|
220
|
+
* "Glasses are talking to us" — suppresses retry if the native request later rejects.
|
|
145
221
|
* Important: this does NOT clear the stuck-at-zero watchdog; that one fires
|
|
146
222
|
* on real progress > 0% (see {@link onFirstNonZeroProgress}).
|
|
147
223
|
*/
|
|
@@ -155,14 +231,19 @@ declare class OtaInstallCoordinator {
|
|
|
155
231
|
*/
|
|
156
232
|
private onFirstNonZeroProgress;
|
|
157
233
|
private maybeStartGlobalTimeout;
|
|
158
|
-
private
|
|
234
|
+
private armStuckWatchdogOnly;
|
|
235
|
+
/** Arm the 0%-stuck watchdog only when this logical session has none. */
|
|
236
|
+
private maybeArmStuckWatchdog;
|
|
159
237
|
private sendOtaStartWithWatchdogs;
|
|
238
|
+
private performOtaStart;
|
|
239
|
+
private teardownHotspotTransport;
|
|
160
240
|
/**
|
|
161
241
|
* After sending ota_query_status, wait QUERY_REPLY_TIMEOUT_MS for the glasses
|
|
162
|
-
* to reply with a useful ota_status.
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
*
|
|
242
|
+
* to reply with a useful ota_status. A unified session may start again only
|
|
243
|
+
* after an explicit "idle" reply, or after a locally rejected ota_start has
|
|
244
|
+
* produced no activity and no authoritative reply across reconnect. Legacy
|
|
245
|
+
* builds ignore ota_query_status, so their established timeout fallback
|
|
246
|
+
* remains the compatibility path.
|
|
166
247
|
*
|
|
167
248
|
* Cleared as soon as a non-idle otaStatus or any otaProgress lands in the
|
|
168
249
|
* store (see the reaction block above). An idle reply intentionally does NOT
|
|
@@ -173,7 +254,6 @@ declare class OtaInstallCoordinator {
|
|
|
173
254
|
private clearRetryTimeout;
|
|
174
255
|
private clearStuckTimeout;
|
|
175
256
|
private clearGlobalTimeout;
|
|
176
|
-
private clearPostApkDelay;
|
|
177
257
|
private clearPingInterval;
|
|
178
258
|
private clearQueryReplyTimeout;
|
|
179
259
|
private clearContinueLockoutTimer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OtaInstallCoordinator.d.ts","sourceRoot":"","sources":["../../src/services/OtaInstallCoordinator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OtaInstallCoordinator.d.ts","sourceRoot":"","sources":["../../src/services/OtaInstallCoordinator.ts"],"names":[],"mappings":"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"}
|