@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 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/stores/settings.ts"],"names":[],"mappings":"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","sourcesContent":["import {getTimeZone} from \"react-native-localize\"\nimport {AsyncResult, result as Res, Result} from \"typesafe-ts\"\nimport {create} from \"zustand\"\nimport {subscribeWithSelector} from \"zustand/middleware\"\n\nimport {storage} from \"../utils/storage\"\nimport {getBluetoothSettingKeysForDevice} from \"./bluetoothSettingKeys\"\nimport {useGlassesStore} from \"./glasses\"\n\nexport {MENTRA_LIVE_SETTING_KEYS, getBluetoothSettingKeysForDevice} from \"./bluetoothSettingKeys\"\n\nexport interface Setting {\n key: string\n defaultValue: () => any\n writable: boolean\n saveOnServer: boolean\n // change the key to a different key based on the indexer\n // NEVER do any network calls in the indexer (or performance will suffer greatly\n indexer?: (key: string) => string\n // optionally override the value of the setting when it's accessed\n override?: () => any\n // onWrite?: () => void\n persist: boolean\n // Pairing-identity keys are NATIVE-authoritative: the native layer writes\n // them on pairing success (handleDeviceReady) / forget and echoes them down\n // via save_setting; JS鈫抧ative they travel only in the explicit SEEDS\n // (hydration, pre-connect, post-demotion, abandon re-seed) — never the\n // change-push and never the on-connect replay, whose mid-relay snapshot can\n // overwrite a just-promoted identity. PAIRING_IDENTITY_KEYS is derived from\n // this flag so the sync exclusions can't drift from the descriptors.\n nativeAuthoritative?: true\n /**\n * Clear this setting when the build's environment changes.\n *\n * A persisted override normally outranks both the build's env and the\n * compiled default, which is right within one environment: a developer's\n * METRO_AUTO pin should survive a rebuild. It is wrong across environments,\n * where an override pinned under a dev build would silently follow the\n * install onto a store build pointed at production.\n *\n * Note this keys off the build's environment label, so it does NOT fire on a\n * TestFlight to App Store promotion: that ships the same binary with the same\n * label. Promotion is safe because the publishing lane bakes prod URLs, not\n * because this reset runs. See the resolution block in loadSettings.\n *\n * Absent means the value is never invalidated automatically.\n */\n resetOnBuildEnvChange?: true\n}\n\nexport const SETTINGS: Record<string, Setting> = {\n // feature flags / mantle settings:\n dev_mode: {key: \"dev_mode\", defaultValue: () => __DEV__, writable: true, saveOnServer: true, persist: true}, // deprecated\n debug_mode: {key: \"debug_mode\", defaultValue: () => __DEV__, writable: true, saveOnServer: true, persist: true},\n android_notification_listener_enabled: {\n key: \"android_notification_listener_enabled\",\n // Operational kill switch. The listener now runs in a guarded lightweight\n // process, so normal installs can safely capture notifications by default.\n defaultValue: () => true,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n super_mode: {key: \"super_mode\", defaultValue: () => false, writable: true, saveOnServer: true, persist: true},\n app_boot_extra_info: {\n key: \"app_boot_extra_info\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n miniapp_dev_mode: {\n key: \"miniapp_dev_mode\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n enable_squircles: {\n key: \"enable_squircles\",\n defaultValue: () => true,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n android_blur: {\n key: \"android_blur\",\n defaultValue: () => {\n return false\n },\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n android_inner_shadow: {\n key: \"android_inner_shadow\",\n defaultValue: () => {\n return false\n },\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n ios_glass_effect: {\n key: \"ios_glass_effect\",\n defaultValue: () => true,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n ios_app_switcher_bottom_swipe: {\n key: \"ios_app_switcher_bottom_swipe\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n debug_console: {\n key: \"debug_console\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n // Show the glasses display mirror on the home screen even when a real\n // (non-simulated) pair of glasses is paired. Toggled from the glasses card's\n // long-press menu.\n home_mirror: {\n key: \"home_mirror\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n debug_navigation_history: {\n key: \"debug_navigation_history\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n debug_core_status_bar: {\n key: \"debug_core_status_bar\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n // Mentra Nex feature flags (off by default; toggled from Nex Developer Settings).\n // When on, the Nex display skips ASCII-only text sanitization so CJK/Chinese\n // captions render on glasses. Synced to the Bluetooth SDK via BLUETOOTH_SETTING_KEYS.\n nex_chinese_captions: {\n key: \"nex_chinese_captions\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n // When on, LC3 audio received from Nex glasses is played back (Android only).\n // Local-only dev toggle: defaults off and never synced to the cloud account\n // (saveOnServer: false); persists locally so it survives app restarts.\n // Key renamed from the legacy `nex_audio_playback` so stale server/local\n // values (saved back when this was saveOnServer:true) can't re-enable it.\n nex_lc3_audio_playback: {\n key: \"nex_lc3_audio_playback\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n // Passive conversation memory: when on, the runtime persists every FINAL\n // transcript into the shared user-scoped MemoryStore (Settings > Memory),\n // independent of which miniapps are running or subscribed. Off = nothing is\n // written; existing history is kept until the user clears it. Device-local\n // only (saveOnServer: false) — the timeline itself never leaves the phone,\n // so the switch that governs it shouldn't either. Defaults ON to preserve\n // the behavior the Assistant miniapp previously provided.\n memory_save_conversations: {\n key: \"memory_save_conversations\",\n defaultValue: () => true,\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n china_deployment: {\n key: \"china_deployment\",\n defaultValue: () => (process.env.EXPO_PUBLIC_DEPLOYMENT_REGION === \"china\" ? true : false),\n override: () => (process.env.EXPO_PUBLIC_DEPLOYMENT_REGION === \"china\" ? true : false),\n writable: false,\n saveOnServer: false,\n persist: true,\n },\n // Hard privacy stance (Settings > Privacy): when true the app never talks to\n // Glassly cloud at all — the CloudClient is not constructed, so the runtime\n // websocket, cloud STT/TTS, managed photo/stream uploads, and report uploads\n // all go away with it. Distinct from `offline_mode`, which is a transient\n // \"I'm offline right now\" app-grid filter the user flips from Speech; this\n // one is a durable choice that survives reconnecting to a good network.\n // Device-local by design: a \"don't use the cloud\" preference must not itself\n // be uploaded to the cloud, so saveOnServer stays false. Not in\n // BLUETOOTH_SETTING_KEYS — glasses firmware has no use for it.\n disable_cloud: {\n key: \"disable_cloud\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n // Cloud V2 endpoint OVERRIDES. Empty = no override; cloudClient's resolveUrl\n // owns the full precedence (override -> env -> Metro-derived dev default).\n // The value may be an explicit URL or the METRO_AUTO sentinel (\"my dev\n // laptop\", resolved live from Metro so it survives network changes). Never\n // bake an env var or a personal LAN IP into the default here: that makes the\n // override branch always-truthy and strands devs on a stale address.\n cloud_core_url: {\n key: \"cloud_core_url\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n resetOnBuildEnvChange: true,\n },\n cloud_runtime_url: {\n key: \"cloud_runtime_url\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n resetOnBuildEnvChange: true,\n },\n // Bookmarked Cloud V2 endpoint pairs. Each entry is {label, coreUrl,\n // runtimeUrl} — core + runtime are saved together because they are always\n // applied as a matched set (presets fill both; Save & Test verifies both).\n saved_cloud_url_pairs: {\n key: \"saved_cloud_url_pairs\",\n defaultValue: () => [],\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n // User-supplied Soniox API key (Settings > Keys). Non-empty enables\n // phone -> Soniox direct transcription: audio streams from the device to\n // Soniox and transcription/translation subscriptions are withheld from the\n // cloud. Device-local by design — the key must never sync to a server\n // (saveOnServer: false) and must never ride BLE to glasses (do NOT add to\n // bluetoothSettingKeys).\n soniox_api_key: {\n key: \"soniox_api_key\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n // User-supplied Mapbox access token (Settings > Keys). The app ships no\n // baked Mapbox key: every consumer resolves this key first, else the public\n // render token served by Glassly Cloud at runtime (MapboxTokenService) —\n // and with the cloud disabled this key is the ONLY token source, by\n // design. The `_api_key`\n // suffix is load-bearing: diagnosticContext redacts settings by that suffix,\n // so renaming would leak the key into bug reports. Device-local by design —\n // never synced to a server (saveOnServer: false) and never on BLE (do NOT\n // add to bluetoothSettingKeys).\n mapbox_api_key: {\n key: \"mapbox_api_key\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n // User-supplied AI/voice provider keys (Settings > API Keys). Not consumed\n // by the app itself — they exist so miniapps declaring the API_KEYS manifest\n // permission can read them via session.keys.get() (see\n // MINIAPP_READABLE_API_KEYS in LocalMiniappRuntime; mapbox is also readable\n // there, soniox is not). Same invariants as the other provider keys: the\n // `_api_key` suffix is load-bearing (diagnosticContext redacts by suffix),\n // device-local by design — never synced to a server (saveOnServer: false)\n // and never on BLE (do NOT add to bluetoothSettingKeys).\n anthropic_api_key: {\n key: \"anthropic_api_key\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n gemini_api_key: {\n key: \"gemini_api_key\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n openai_api_key: {\n key: \"openai_api_key\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n elevenlabs_api_key: {\n key: \"elevenlabs_api_key\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n // Per-tier model picks for session.ai completions (Settings > AI Models).\n // Miniapps request a TIER (\"quick\"/\"balanced\"/\"frontier\"), never a\n // provider/model; these settings are how the user overrides what each tier\n // resolves to. Value is \"auto\" (pick by which provider keys are saved — see\n // AiTierResolution) or \"<provider>:<model>\" from the curated registry.\n // Device-local: the mapping only matters to this phone's direct/cloud calls.\n ai_model_quick: {\n key: \"ai_model_quick\",\n defaultValue: () => \"auto\",\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n ai_model_balanced: {\n key: \"ai_model_balanced\",\n defaultValue: () => \"auto\",\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n ai_model_frontier: {\n key: \"ai_model_frontier\",\n defaultValue: () => \"auto\",\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n // Developer override for the ASG OTA manifest URL. null/empty = no override;\n // the normal selection applies (legacy-glasses gate, EXPO_PUBLIC_ASG_OTA_VERSION_URL,\n // glasses-reported URL, then production). See resolveOtaManifestUrl.\n ota_version_url: {\n key: \"ota_version_url\",\n defaultValue: () => null,\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n saved_ota_version_urls: {\n key: \"saved_ota_version_urls\",\n defaultValue: () => [],\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n reconnect_on_app_foreground: {\n key: \"reconnect_on_app_foreground\",\n defaultValue: () => true,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n location_tier: {key: \"location_tier\", defaultValue: () => \"\", writable: true, saveOnServer: true, persist: true},\n // Volatile bearer synced to Bluetooth for glasses-side Cloud V2 calls. The\n // key name is kept for BLE compatibility, but the value must never be loaded\n // from or saved to the legacy Cloud V1 settings store.\n core_token: {key: \"core_token\", defaultValue: () => \"\", writable: true, saveOnServer: false, persist: false},\n auth_email: {key: \"auth_email\", defaultValue: () => \"\", writable: true, saveOnServer: false, persist: true},\n // Pairing identity is per-phone, not per-account: two phones on one account\n // can be paired to different glasses, so none of these keys may sync to the\n // server (saveOnServer: false — a stale server copy resurrecting a local\n // pairing identity is exactly the desync this group's flags prevent).\n //\n // Two-phase identity: pending_wearable is the model the user last STARTED\n // pairing (written at selection, rendered as a finish-pairing card);\n // default_wearable + device_name + device_address are only promoted by the\n // native layer when pairing actually succeeds (handleDeviceReady).\n // pending_wearable persists so an abandoned selection still shows its\n // finish-pairing card after an app restart.\n pending_wearable: {\n key: \"pending_wearable\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n nativeAuthoritative: true,\n },\n default_wearable: {\n key: \"default_wearable\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n nativeAuthoritative: true,\n },\n device_name: {\n key: \"device_name\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n nativeAuthoritative: true,\n },\n device_address: {\n key: \"device_address\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n nativeAuthoritative: true,\n },\n project_name: {\n key: \"project_name\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n nativeAuthoritative: true,\n },\n default_controller: {\n key: \"default_controller\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n nativeAuthoritative: true,\n },\n pending_controller: {\n key: \"pending_controller\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n nativeAuthoritative: true,\n },\n controller_device_name: {\n key: \"controller_device_name\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n nativeAuthoritative: true,\n },\n controller_address: {\n key: \"controller_address\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n nativeAuthoritative: true,\n },\n // ui state:\n home_background: {\n key: \"home_background\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n theme_preference: {\n key: \"theme_preference\",\n defaultValue: () => \"system\",\n // override: () => \"light\",\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n enable_phone_notifications: {\n key: \"enable_phone_notifications\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n settings_access_count: {\n key: \"settings_access_count\",\n defaultValue: () => 0,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n show_advanced_settings: {\n key: \"show_advanced_settings\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n onboarding_completed: {\n key: \"onboarding_completed\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n onboarding_live_completed: {\n key: \"onboarding_live_completed\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n onboarding_os_completed: {\n key: \"onboarding_os_completed\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n has_ever_activated_app: {\n key: \"has_ever_activated_app\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n\n // Bluetooth SDK settings:\n sensing_enabled: {\n key: \"sensing_enabled\",\n defaultValue: () => true,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n power_saving_mode: {\n key: \"power_saving_mode\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n // The Glassly App intentionally preserves Mentra Live's historical VAD-on\n // product default. Standalone public Bluetooth SDK hosts default VAD off so\n // their microphone audio remains continuous.\n voice_activity_detection_enabled: {\n key: \"voice_activity_detection_enabled\",\n defaultValue: () => true,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n // Mentra Live center-mic loudness / \"Barrier\" gate (cs_swit type 10). Default on.\n loudness_gate_enabled: {\n key: \"loudness_gate_enabled\",\n defaultValue: () => true,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n always_on_status_bar: {\n key: \"always_on_status_bar\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n // Legacy cloud/mobile setting name. Locally it maps to glasses-side Voice Activity Detection.\n bypass_vad_for_debugging: {\n key: \"bypass_vad_for_debugging\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n bypass_audio_encoding_for_debugging: {\n key: \"bypass_audio_encoding_for_debugging\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n metric_system: {\n key: \"metric_system\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n twelve_hour_time: {\n key: \"twelve_hour_time\",\n defaultValue: () => true,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n enforce_local_transcription: {\n key: \"enforce_local_transcription\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n // \"Recognize my voice\" (Settings > Voice Recognition). Drives the on-device\n // SpeakerIdEngine. Device-local by design — voice profiles are biometric\n // data, so nothing about this feature syncs to the server.\n speaker_id_enabled: {\n key: \"speaker_id_enabled\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n // LC3 audio quality setting (frame size in bytes)\n // 20 = 16kbps (low bandwidth), 40 = 32kbps (balanced), 60 = 48kbps (high quality)\n lc3_frame_size: {\n key: \"lc3_frame_size\",\n defaultValue: () => 60,\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n preferred_mic: {\n key: \"preferred_mic\",\n defaultValue: () => \"auto\",\n writable: true,\n indexer: (key: string) => {\n const glasses = useSettingsStore.getState().getSetting(SETTINGS.default_wearable.key)\n if (glasses) {\n return `${key}:${glasses}`\n }\n return key\n },\n saveOnServer: true,\n persist: true,\n },\n screen_disabled: {\n key: \"screen_disabled\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n // glasses settings:\n contextual_dashboard: {\n key: \"contextual_dashboard\",\n defaultValue: () => true,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n use_native_dashboard: {\n key: \"use_native_dashboard\",\n defaultValue: () => true,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n head_up_angle: {key: \"head_up_angle\", defaultValue: () => 45, writable: true, saveOnServer: true, persist: true},\n brightness: {key: \"brightness\", defaultValue: () => 50, writable: true, saveOnServer: true, persist: true},\n auto_brightness: {\n key: \"auto_brightness\",\n defaultValue: () => true,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n dashboard_height: {\n key: \"dashboard_height\",\n defaultValue: () => 4,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n dashboard_depth: {\n key: \"dashboard_depth\",\n defaultValue: () => 2,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n menu_apps: {\n key: \"menu_apps\",\n defaultValue: () => null,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n calendar_events: {\n key: \"calendar_events\",\n defaultValue: () => [],\n writable: true,\n saveOnServer: false,\n persist: false,\n },\n // button settings\n // Legacy persisted/cloud key; hardware behavior is now controlled by gallery_mode plus capture settings.\n button_mode: {key: \"button_mode\", defaultValue: () => \"photo\", writable: true, saveOnServer: true, persist: true},\n button_photo_size: {\n key: \"button_photo_size\",\n defaultValue: () => \"max\",\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n button_video_settings: {\n key: \"button_video_settings\",\n defaultValue: () => ({width: 1920, height: 1080, fps: 30}),\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n button_max_recording_time: {\n key: \"button_max_recording_time\",\n defaultValue: () => 10,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n camera_fov: {\n key: \"camera_fov\",\n defaultValue: () => ({fov: 118, roi_position: 0}),\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n media_post_processing: {\n key: \"media_post_processing\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n\n // time zone settings\n time_zone: {\n key: \"time_zone\",\n defaultValue: () => \"\",\n writable: true,\n override: () => {\n const override = useSettingsStore.getState().getSetting(SETTINGS.time_zone_override.key)\n if (override) {\n return override\n }\n return getTimeZone()\n },\n saveOnServer: true,\n persist: true,\n },\n time_zone_override: {\n key: \"time_zone_override\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n // offline applets\n offline_mode: {key: \"offline_mode\", defaultValue: () => false, writable: true, saveOnServer: true, persist: true},\n // Runtime flag: coordinator flips this on when cloud STT has failed and fallback is active.\n // Native GlassesStore watches it to gate PCM 鈫?Sherpa feeding. Not user-facing.\n local_stt_fallback_active: {\n key: \"local_stt_fallback_active\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: false,\n persist: false,\n },\n // Runtime flag: why the coordinator activated local STT (\"\" while inactive).\n // Values are LocalSttFallbackReason strings. UI-only; native ignores it.\n local_stt_fallback_reason: {\n key: \"local_stt_fallback_reason\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: false,\n },\n gallery_mode: {key: \"gallery_mode\", defaultValue: () => true, writable: true, saveOnServer: true, persist: true},\n gallery_sync_explained: {\n key: \"gallery_sync_explained\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n offline_camera_running: {\n key: \"offline_camera_running\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n // offline translation\n offline_translation_running: {\n key: \"offline_translation_running\",\n defaultValue: () => false,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n offline_translation_source: {\n key: \"offline_translation_source\",\n defaultValue: () => \"en\",\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n offline_translation_target: {\n key: \"offline_translation_target\",\n defaultValue: () => \"es\",\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n // button action settings\n default_button_action_enabled: {\n key: \"default_button_action_enabled\",\n defaultValue: () => true,\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n default_button_action_app: {\n key: \"default_button_action_app\",\n defaultValue: () => \"com.glassly.camera\",\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n // notifications\n notifications_blocklist: {\n key: \"notifications_blocklist\",\n defaultValue: () => [],\n writable: true,\n saveOnServer: true,\n persist: true,\n },\n // Cached required version from server - used to enforce updates even when offline\n cached_required_version: {\n key: \"cached_required_version\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n // OTA update dismissal - stores the version code user dismissed (not persisted so resets on app restart)\n dismissed_ota_version: {\n key: \"dismissed_ota_version\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: false,\n },\n // Contact email for feedback (persisted for Apple private relay users)\n contact_email: {\n key: \"contact_email\",\n defaultValue: () => \"\",\n writable: true,\n saveOnServer: false,\n persist: true,\n },\n} as const\n\nexport const OFFLINE_APPLETS: string[] = [\"com.glassly.livecaptions\", \"com.glassly.camera\"]\n\n// These settings are automatically synced to the Bluetooth SDK.\n// Keep this list hardware-facing; app/UI/cloud-only preferences should stay in JS/Crust.\nexport const BLUETOOTH_SETTING_KEYS: string[] = [\n // Bluetooth settings:\n SETTINGS.sensing_enabled.key,\n SETTINGS.power_saving_mode.key,\n SETTINGS.voice_activity_detection_enabled.key,\n SETTINGS.loudness_gate_enabled.key,\n SETTINGS.lc3_frame_size.key,\n SETTINGS.preferred_mic.key,\n SETTINGS.screen_disabled.key,\n SETTINGS.auth_email.key,\n SETTINGS.core_token.key,\n // glasses settings:\n SETTINGS.contextual_dashboard.key,\n SETTINGS.head_up_angle.key,\n SETTINGS.brightness.key,\n SETTINGS.auto_brightness.key,\n SETTINGS.dashboard_height.key,\n SETTINGS.dashboard_depth.key,\n SETTINGS.menu_apps.key,\n SETTINGS.calendar_events.key,\n SETTINGS.use_native_dashboard.key,\n SETTINGS.twelve_hour_time.key,\n SETTINGS.metric_system.key,\n // button:\n SETTINGS.button_photo_size.key,\n // Legacy MentraLive native code reads the object form when syncing video settings.\n SETTINGS.button_video_settings.key,\n SETTINGS.button_max_recording_time.key,\n SETTINGS.camera_fov.key,\n // device / pairing:\n SETTINGS.pending_wearable.key,\n SETTINGS.default_wearable.key,\n SETTINGS.device_name.key,\n SETTINGS.device_address.key,\n SETTINGS.project_name.key,\n SETTINGS.default_controller.key,\n SETTINGS.pending_controller.key,\n SETTINGS.controller_device_name.key,\n SETTINGS.controller_address.key,\n // offline applets:\n SETTINGS.offline_mode.key,\n // Runtime flag flipped by LocalSttFallbackCoordinator. Native reads it from\n // GlassesStore to gate PCM 鈫?Sherpa feeding in handlePcm and to keep the\n // mic on while local STT is the active engine.\n SETTINGS.local_stt_fallback_active.key,\n SETTINGS.gallery_mode.key,\n // Mentra Nex feature flags:\n SETTINGS.nex_chinese_captions.key,\n SETTINGS.nex_lc3_audio_playback.key,\n]\n\n// Pairing identity is NATIVE-authoritative: the native layer writes it on\n// pairing success (handleDeviceReady) / forget and echoes it down via\n// save_setting; JS persists those echoes. JS鈫抧ative, identity travels ONLY in\n// the explicit full seeds (device-store hydration, pre-connect push,\n// post-demotion re-push) — never in the change-push subscription. Relaying an\n// echoed identity change back up would make the sync bidirectional with loop\n// gain 1: two identity values in flight (e.g. a boot demotion crossing a\n// native promotion) then chase each other through push鈫抋pply鈫抏cho鈫抪ush\n// forever, flapping the UI.\n//\n// Derived from the `nativeAuthoritative` descriptor flag (not maintained as a\n// parallel list) so the change-push exclusion in GlassesSettingsSync can't\n// drift from the setting declarations.\nexport const PAIRING_IDENTITY_KEYS: string[] = Object.values(SETTINGS)\n .filter((setting) => setting.nativeAuthoritative)\n .map((setting) => setting.key)\n\n// const PER_GLASSES_SETTINGS_KEYS: string[] = [SETTINGS.preferred_mic.key]\n\nexport interface SettingsState {\n // Settings values\n settings: Record<string, any>\n // Loading states\n isInitialized: boolean\n // Actions\n setSetting: (key: string, value: any, updateServer?: boolean) => AsyncResult<void, Error>\n setManyLocally: (settings: Record<string, any>) => AsyncResult<void, Error>\n getSetting: (key: string) => any\n // loadSetting: (key: string) => AsyncResult<void, Error>\n loadAllSettings: () => AsyncResult<void, Error>\n // Utility methods\n getBluetoothSettings: () => Record<string, any>\n resetAllSettingsLocally: () => void\n}\n\nconst getDefaultSettings = () =>\n Object.keys(SETTINGS).reduce(\n (acc, key) => {\n acc[key] = SETTINGS[key].defaultValue()\n return acc\n },\n {} as Record<string, any>,\n )\n\n// Single-flight for loadAllSettings: the host fires it at module load and\n// engine.start()'s device-store hydration awaits it — without the memo the\n// second caller runs a duplicate full disk load while the first is still in\n// flight. Cleared on failure so a later call can retry.\nlet loadAllSettingsInFlight: AsyncResult<void, Error> | null = null\n\nfunction printableSettingValue(key: string, value: unknown): string {\n return key.includes(\"token\") || key.includes(\"email\") || key.includes(\"api_key\")\n ? \"<redacted>\"\n : JSON.stringify(value)\n}\n\nexport const useSettingsStore = create<SettingsState>()(\n subscribeWithSelector((set, get) => ({\n settings: getDefaultSettings(),\n isInitialized: false,\n loadingKeys: new Set(),\n setSetting: (key: string, value: any, _updateServer = true): AsyncResult<void, Error> => {\n return Res.try_async(async () => {\n const setting = SETTINGS[key]\n const originalKey = key\n\n if (!setting) {\n throw new Error(`SETTINGS: SET: ${originalKey} is not a valid setting!`)\n }\n\n if (setting.indexer) {\n key = setting.indexer(originalKey)\n }\n\n if (!setting.writable) {\n throw new Error(`SETTINGS: ${originalKey} is not writable!`)\n }\n\n // Update store immediately for optimistic UI\n console.log(`SETTINGS: SET: ${key} = ${printableSettingValue(key, value)}`)\n set((state) => ({\n settings: {...state.settings, [key]: value},\n }))\n\n if (setting.persist) {\n let res = await storage.save(key, value)\n if (res.is_error()) {\n throw new Error(`SETTINGS: couldn't save setting to storage: ${res.error}`)\n }\n\n // Cloud V1 per-change server sync removed with the V1 ripout (issue\n // #3392). Settings are local-first until a V2 sync lands; the\n // saveOnServer flags are retained as intent markers for that work.\n }\n })\n },\n getSetting: (key: string) => {\n const state = get()\n const originalKey = key\n const setting = SETTINGS[originalKey]\n\n if (!setting) {\n console.error(`SETTINGS: GET: ${originalKey} is not a valid setting!`)\n return undefined\n }\n\n if (setting.override) {\n let override = setting.override()\n if (override !== undefined) {\n return override\n }\n }\n\n if (setting.indexer) {\n key = setting.indexer(originalKey)\n }\n\n // console.log(`GET SETTING: ${key} = ${state.settings[key]}`)\n\n try {\n const raw = state.settings[key] ?? SETTINGS[originalKey].defaultValue()\n return raw\n } catch (e) {\n // for dynamically created settings, we need to create a new setting in SETTINGS:\n console.log(`Failed to get setting, creating new setting:(${key}):`, e)\n SETTINGS[key] = {key: key, defaultValue: () => undefined, writable: true, saveOnServer: false, persist: true}\n return SETTINGS[key].defaultValue()\n }\n },\n // batch update many settings from the server:\n setManyLocally: (settings: Record<string, any>): AsyncResult<void, Error> => {\n return Res.try_async(async () => {\n const settingsToLoad: Record<string, any> = {}\n // if a setting should not persist, don't load it:\n for (const [key, value] of Object.entries(settings)) {\n const stg: Setting | undefined = SETTINGS[key.toLowerCase()]\n if (!stg) {\n continue\n }\n if (!stg.persist) {\n continue\n }\n settingsToLoad[key.toLowerCase()] = value\n }\n // console.log(\"SETTINGS: SET MANY LOCALLY: \", settingsToLoad)\n\n set((state) => ({\n settings: {...state.settings, ...settingsToLoad},\n }))\n\n // save to storage:\n await Promise.all(Object.entries(settingsToLoad).map(([key, value]) => storage.save(key, value)))\n })\n },\n // loads any preferences that have been changed from the default and saved to DISK!\n loadAllSettings: (): AsyncResult<void, Error> => {\n console.log(\"SETTINGS: loadAllSettings()\")\n if (loadAllSettingsInFlight) {\n return loadAllSettingsInFlight\n }\n const inFlight = Res.try_async(async () => {\n const state = get()\n let loadedSettings: Record<string, any> = {}\n\n if (state.isInitialized) {\n return undefined\n }\n\n for (const setting of Object.values(SETTINGS)) {\n // if the settings should not persist, don't load it:\n if (!setting.persist) {\n continue\n }\n\n // load all subkeys for an indexed setting:\n if (setting?.indexer) {\n console.log(`SETTINGS: LOAD: ${setting.key} with indexer!`)\n\n let res: Result<Record<string, unknown>, Error> = storage.loadSubKeys(setting.key)\n if (res.is_error()) {\n console.log(`SETTINGS: LOAD: ${setting.key}`, res.error)\n continue\n }\n\n let subKeys: Record<string, unknown> = res.value\n console.log(`SETTINGS: LOAD: ${setting.key} subkeys are set!`, subKeys)\n loadedSettings = {...loadedSettings, ...subKeys}\n continue\n }\n\n let res = storage.load<any>(setting.key)\n if (res.is_error()) {\n console.log(`SETTINGS: LOAD: ${setting.key} is not set!`, res.error)\n // this setting isn't set from the default, so we don't load anything\n continue\n }\n // normal key:value pair:\n let value = res.value\n // res.value IS the stored value; logging value.value printed\n // \"undefined\" for every loaded setting and disguised present\n // values as missing. Redact token- and email-bearing keys: console\n // logs are uploaded in bug-report artifacts (same keys\n // diagnosticContext's SENSITIVE_SETTINGS_KEYS strips, minus an\n // import that would cycle stores <-> utils).\n console.log(`SETTINGS: LOAD: ${setting.key} = ${printableSettingValue(setting.key, value)}`)\n loadedSettings[setting.key] = value\n }\n\n // console.log(\"##############################################\")\n // console.log(loadedSettings)\n // console.log(\"##############################################\")\n\n set((state) => ({\n isInitialized: true,\n settings: {...state.settings, ...loadedSettings},\n }))\n\n // This hidden debug switch originally shipped default-off while the\n // notification-listener cold-start ANR was being investigated. Now\n // that the listener runs in its own guarded process, migrate existing\n // installs to the new default once; later explicit debug changes still\n // persist normally.\n // Reset the cloud backend override when the build's environment changes.\n //\n // cloud_core_url / cloud_runtime_url are persist:true and outrank both\n // the build's env and the compiled default (see resolveUrl in\n // cloudClient.ts). That is what we want inside one environment: a\n // developer's METRO_AUTO pin should survive a rebuild. It is wrong\n // across environments.\n //\n // The concrete case is an install that moves BETWEEN environments: an\n // internal tester running a dev build with a pinned override who then\n // installs the store build. The override outranks that build's prod\n // URLs, so without this they keep talking to dev with nothing\n // surfacing it.\n //\n // Note what this deliberately does NOT do, because the distinction is\n // easy to get backwards. TestFlight and the App Store receive the SAME\n // binary, so promotion does not change EXPO_PUBLIC_BUILD_ENV and this\n // reset never fires on it. Promotion is safe for a different reason:\n // the publishing lane bakes prod URLs (staging-builds.yml defaults\n // cloud_env to prod), so a promoted build was pointed at production the\n // whole time. The same holds for Android internal-track to production.\n //\n // The residual gap is therefore an override pinned while already on a\n // prod-labelled build, which no label comparison can see. That is a\n // deliberate limit: reaching it means typing a URL into a dev-only\n // screen, VersionInfo renders the current value, and the same screen\n // clears it.\n //\n // Comparing the baked EXPO_PUBLIC_BUILD_ENV against the last one seen\n // on this device covers those environment switches and fresh installs\n // without touching the setting write path. A reinstall needs no\n // handling: it drops the marker and the override together\n // (android:allowBackup=\"false\", and iOS deletes the container).\n const BUILD_ENV_KEY = \"settings.lastBuildEnv\"\n const buildEnv = (process.env.EXPO_PUBLIC_BUILD_ENV ?? \"dev\").trim() || \"dev\"\n const lastBuildEnv = storage.load<string>(BUILD_ENV_KEY)\n const previousBuildEnv = lastBuildEnv.is_error() ? undefined : lastBuildEnv.value\n if (previousBuildEnv !== buildEnv) {\n // Clear when there is no marker yet, not just on a recorded change.\n // The first build carrying this code meets every existing install\n // with previousBuildEnv === undefined, and those are exactly the\n // installs that may hold an override set before the pin existed --\n // the population this is here to repair. Treating \"no marker\" as a\n // fresh install would record the marker and never look again. A\n // genuinely fresh install has nothing persisted, so the clear below\n // writes each default over itself and costs nothing.\n //\n // Driven by the descriptors rather than a hardcoded key list, so a\n // setting that needs this behaviour declares it in one place and\n // cannot be missed here.\n const scoped = Object.values(SETTINGS).filter((setting) => setting.resetOnBuildEnvChange)\n console.log(\n `SETTINGS: build env ${previousBuildEnv ?? \"(none recorded)\"} -> ${buildEnv}, ` +\n `clearing ${scoped.length} build-scoped setting(s)`,\n )\n let allCleared = true\n for (const setting of scoped) {\n const cleared = await get().setSetting(setting.key, setting.defaultValue(), false)\n if (cleared.is_error()) {\n allCleared = false\n console.log(`SETTINGS: could not clear ${setting.key}:`, cleared.error)\n }\n }\n // Advance the marker only once the reset actually landed. Recording\n // it after a failed write would retire the retry and leave the stale\n // override for the life of the install; leaving it unset costs one\n // repeated attempt per launch until a write succeeds.\n if (allCleared) {\n storage.save(BUILD_ENV_KEY, buildEnv)\n }\n }\n\n const NOTIFICATION_LISTENER_MIGRATION_KEY = \"migration:android_notification_listener_default_on_v1\"\n const notificationListenerMigrationDone = storage.load<boolean>(NOTIFICATION_LISTENER_MIGRATION_KEY)\n if (notificationListenerMigrationDone.is_error() || !notificationListenerMigrationDone.value) {\n const result = await get().setSetting(SETTINGS.android_notification_listener_enabled.key, true, false)\n if (result.is_error()) {\n console.log(\"SETTINGS: notification listener migration failed:\", result.error)\n } else {\n storage.save(NOTIFICATION_LISTENER_MIGRATION_KEY, true)\n }\n }\n\n // One-time migration: force android_blur=false for existing users.\n // The setting's default is already false; this migration covers users\n // who explicitly opted into Android blur effects before we discovered\n // they're a major source of frame drops on cheap Android phones.\n // The dimezisBlurViewSdk31Plus blur each costs ~5-10ms/frame; with\n // multiple blurs on home (top fade + AppSwitcherButton x2) a low-end\n // device misses the 16ms budget consistently. Users can turn it back\n // on under Settings 鈫?Appearance once we've optimized further.\n //\n // The setSetting call also pushes to the server (saveOnServer: true)\n // so the server-stored value flips too — otherwise the next sync\n // from the user's server-stored prefs would re-enable blur.\n // Best-effort: a server failure (offline, 5xx) shouldn't block boot;\n // we still mark the migration done locally so we don't loop.\n const MIGRATION_KEY = \"migration:android_blur_default_false_v1\"\n const migrationDone = storage.load<boolean>(MIGRATION_KEY)\n if (migrationDone.is_error() || !migrationDone.value) {\n const current = get().getSetting(SETTINGS.android_blur.key)\n if (current === true) {\n const result = await get().setSetting(SETTINGS.android_blur.key, false, true)\n if (result.is_error()) {\n // Server push failed (offline / 5xx). Local storage was still\n // updated, so the user immediately gets the new behavior. The\n // server-side stale `true` will be overwritten the next time\n // the user opens Appearance settings and the auto-sync runs.\n console.log(\"SETTINGS: android_blur migration server-push failed:\", result.error)\n }\n }\n // Mark done unconditionally — even on server-push failure we don't\n // want to retry the migration on every boot. The local value is\n // already correct.\n storage.save(MIGRATION_KEY, true)\n }\n\n // The old camera default cropped the sensor to 102掳. Move existing\n // default-shaped values to the full 118掳 sensor once; named miniapp\n // requests for the 102掳 \"standard\" preset remain available.\n const CAMERA_FOV_MIGRATION_KEY = \"migration:camera_fov_full_sensor_v1\"\n const cameraFovMigrationDone = storage.load<boolean>(CAMERA_FOV_MIGRATION_KEY)\n if (cameraFovMigrationDone.is_error() || !cameraFovMigrationDone.value) {\n const current = get().getSetting(SETTINGS.camera_fov.key) as {fov?: number; roi_position?: number} | undefined\n let migrationSucceeded = true\n if (current?.fov === 102 && (current.roi_position ?? 0) === 0) {\n const result = await get().setSetting(SETTINGS.camera_fov.key, {fov: 118, roi_position: 0}, true)\n if (result.is_error()) {\n console.log(\"SETTINGS: camera FOV migration failed:\", result.error)\n migrationSucceeded = false\n }\n }\n // Unlike the blur migration above, a failed camera set may leave the\n // local value unchanged. Only mark this migration complete once the\n // desired value was applied so a transient failure retries on boot.\n if (migrationSucceeded) storage.save(CAMERA_FOV_MIGRATION_KEY, true)\n }\n })\n loadAllSettingsInFlight = inFlight\n void Promise.resolve(inFlight).then((result) => {\n if (result.is_error()) {\n loadAllSettingsInFlight = null\n }\n })\n return inFlight\n },\n getBluetoothSettings: () => {\n const state = get()\n // Device-model-filtered key set (wire v2): Mentra Live (no display) gets\n // the reduced MENTRA_LIVE_SETTING_KEYS; display glasses get the full set.\n const deviceModel = useGlassesStore.getState().deviceModel || state.getSetting(SETTINGS.default_wearable.key)\n const keys = getBluetoothSettingKeysForDevice(deviceModel, BLUETOOTH_SETTING_KEYS)\n const bluetoothSettings: Record<string, any> = {}\n for (const key of keys) {\n const value = state.getSetting(key)\n if (key === SETTINGS.core_token.key && (typeof value !== \"string\" || value.trim().length === 0)) {\n continue\n }\n bluetoothSettings[key] = value\n }\n return bluetoothSettings\n },\n resetAllSettingsLocally: () => {\n set((_state) => ({\n settings: getDefaultSettings(),\n isInitialized: true,\n }))\n },\n })),\n)\n\nexport const useSetting = <T = any>(key: string): [T, (value: T) => AsyncResult<void, Error>] => {\n const value = useSettingsStore((state) => state.getSetting(key))\n const setSetting = useSettingsStore((state) => state.setSetting)\n return [value, (newValue: T) => setSetting(key, newValue)]\n}\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type TranscriptDebugSource = "cloud" | "direct" | "local";
|
|
2
|
+
export type CloudAudioSubscriptionWriteStatus = "idle" | "pending" | "applied" | "failed";
|
|
3
|
+
export interface CloudAudioSubscriptionWrite {
|
|
4
|
+
status: CloudAudioSubscriptionWriteStatus;
|
|
5
|
+
/** Subscription count of the last attempted cloud write. */
|
|
6
|
+
count: number;
|
|
7
|
+
}
|
|
8
|
+
interface TranscriptionDebugState {
|
|
9
|
+
/** Package names with at least one live transcription:* subscription. */
|
|
10
|
+
transcriptionSubscribers: string[];
|
|
11
|
+
/** Package names with at least one live translation:* subscription. */
|
|
12
|
+
translationSubscribers: string[];
|
|
13
|
+
/** Per-source "delivered a result within the recency window" flags. */
|
|
14
|
+
recentTranscriptSources: Record<TranscriptDebugSource, boolean>;
|
|
15
|
+
cloudAudioSubscriptionWrite: CloudAudioSubscriptionWrite;
|
|
16
|
+
setSubscribers: (transcription: string[], translation: string[]) => void;
|
|
17
|
+
setRecentSource: (source: TranscriptDebugSource, recent: boolean) => void;
|
|
18
|
+
setCloudAudioSubscriptionWrite: (write: CloudAudioSubscriptionWrite) => void;
|
|
19
|
+
reset: () => void;
|
|
20
|
+
}
|
|
21
|
+
export declare const useTranscriptionDebugStore: import("zustand").UseBoundStore<import("zustand").StoreApi<TranscriptionDebugState>>;
|
|
22
|
+
/** Mark a transcript source as recently delivering; auto-clears after the window. */
|
|
23
|
+
export declare function markTranscriptSourceRecent(source: TranscriptDebugSource): void;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=transcriptionDebug.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcriptionDebug.d.ts","sourceRoot":"","sources":["../../src/stores/transcriptionDebug.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEhE,MAAM,MAAM,iCAAiC,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEzF,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,iCAAiC,CAAA;IACzC,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,uBAAuB;IAC/B,yEAAyE;IACzE,wBAAwB,EAAE,MAAM,EAAE,CAAA;IAClC,uEAAuE;IACvE,sBAAsB,EAAE,MAAM,EAAE,CAAA;IAChC,uEAAuE;IACvE,uBAAuB,EAAE,MAAM,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAA;IAC/D,2BAA2B,EAAE,2BAA2B,CAAA;IACxD,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IACxE,eAAe,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACzE,8BAA8B,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAA;IAC5E,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AASD,eAAO,MAAM,0BAA0B,sFAsBpC,CAAA;AAOH,qFAAqF;AACrF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAQ9E"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcriptionDebug.js","sourceRoot":"","sources":["../../src/stores/transcriptionDebug.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAA;AAE9B,OAAO,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAA;AA0BvC,MAAM,YAAY,GAAG;IACnB,wBAAwB,EAAE,EAAc;IACxC,sBAAsB,EAAE,EAAc;IACtC,uBAAuB,EAAE,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAA2C;IAC9G,2BAA2B,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAgC;CACvF,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAA0B,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAClF,GAAG,YAAY;IACf,cAAc,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,EAAE,CAC7C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;QACpE,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9D,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,EAAC,wBAAwB,EAAE,aAAa,EAAE,sBAAsB,EAAE,WAAW,EAAC,CACnF;IACH,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAClC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,KAAK,MAAM;QAC9C,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,EAAC,uBAAuB,EAAE,EAAC,GAAG,KAAK,CAAC,uBAAuB,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAC,EAAC,CACpF;IACH,8BAA8B,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAC,2BAA2B,EAAE,KAAK,EAAC,CAAC;IACpF,KAAK,EAAE,GAAG,EAAE,CACV,GAAG,CAAC;QACF,GAAG,YAAY;QACf,uBAAuB,EAAE,EAAC,GAAG,YAAY,CAAC,uBAAuB,EAAC;QAClE,2BAA2B,EAAE,EAAC,GAAG,YAAY,CAAC,2BAA2B,EAAC;KAC3E,CAAC;CACL,CAAC,CAAC,CAAA;AAEH,yEAAyE;AACzE,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAE7B,MAAM,YAAY,GAAmD,EAAE,CAAA;AAEvE,qFAAqF;AACrF,MAAM,UAAU,0BAA0B,CAAC,MAA6B;IACtE,0BAA0B,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnE,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IAClC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IACpD,YAAY,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE;QAC7C,YAAY,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;QAChC,0BAA0B,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACtE,CAAC,EAAE,gBAAgB,CAAC,CAAA;AACtB,CAAC","sourcesContent":["/**\n * Transcription-pipeline debug store — feeds the dev status bar\n * (engine.dev.runtimeStatus): which local miniapps currently hold live\n * transcription/translation subscriptions, whether each transcript source\n * (cloud runtime / Soniox-direct / local sherpa) has delivered a result\n * recently, and the outcome of the last cloud audio subscription write.\n */\nimport {create} from \"zustand\"\n\nimport {BgTimer} from \"../utils/timers\"\n\nexport type TranscriptDebugSource = \"cloud\" | \"direct\" | \"local\"\n\nexport type CloudAudioSubscriptionWriteStatus = \"idle\" | \"pending\" | \"applied\" | \"failed\"\n\nexport interface CloudAudioSubscriptionWrite {\n status: CloudAudioSubscriptionWriteStatus\n /** Subscription count of the last attempted cloud write. */\n count: number\n}\n\ninterface TranscriptionDebugState {\n /** Package names with at least one live transcription:* subscription. */\n transcriptionSubscribers: string[]\n /** Package names with at least one live translation:* subscription. */\n translationSubscribers: string[]\n /** Per-source \"delivered a result within the recency window\" flags. */\n recentTranscriptSources: Record<TranscriptDebugSource, boolean>\n cloudAudioSubscriptionWrite: CloudAudioSubscriptionWrite\n setSubscribers: (transcription: string[], translation: string[]) => void\n setRecentSource: (source: TranscriptDebugSource, recent: boolean) => void\n setCloudAudioSubscriptionWrite: (write: CloudAudioSubscriptionWrite) => void\n reset: () => void\n}\n\nconst initialState = {\n transcriptionSubscribers: [] as string[],\n translationSubscribers: [] as string[],\n recentTranscriptSources: {cloud: false, direct: false, local: false} as Record<TranscriptDebugSource, boolean>,\n cloudAudioSubscriptionWrite: {status: \"idle\", count: 0} as CloudAudioSubscriptionWrite,\n}\n\nexport const useTranscriptionDebugStore = create<TranscriptionDebugState>((set) => ({\n ...initialState,\n setSubscribers: (transcription, translation) =>\n set((state) =>\n state.transcriptionSubscribers.join(\"\u0000\") === transcription.join(\"\u0000\") &&\n state.translationSubscribers.join(\"\u0000\") === translation.join(\"\u0000\")\n ? state\n : {transcriptionSubscribers: transcription, translationSubscribers: translation},\n ),\n setRecentSource: (source, recent) =>\n set((state) =>\n state.recentTranscriptSources[source] === recent\n ? state\n : {recentTranscriptSources: {...state.recentTranscriptSources, [source]: recent}},\n ),\n setCloudAudioSubscriptionWrite: (write) => set({cloudAudioSubscriptionWrite: write}),\n reset: () =>\n set({\n ...initialState,\n recentTranscriptSources: {...initialState.recentTranscriptSources},\n cloudAudioSubscriptionWrite: {...initialState.cloudAudioSubscriptionWrite},\n }),\n}))\n\n/** How long a source's \"recent\" flag stays lit after its last result. */\nconst RECENT_WINDOW_MS = 3000\n\nconst recentTimers: Partial<Record<TranscriptDebugSource, number>> = {}\n\n/** Mark a transcript source as recently delivering; auto-clears after the window. */\nexport function markTranscriptSourceRecent(source: TranscriptDebugSource): void {\n useTranscriptionDebugStore.getState().setRecentSource(source, true)\n const prior = recentTimers[source]\n if (prior !== undefined) BgTimer.clearTimeout(prior)\n recentTimers[source] = BgTimer.setTimeout(() => {\n recentTimers[source] = undefined\n useTranscriptionDebugStore.getState().setRecentSource(source, false)\n }, RECENT_WINDOW_MS)\n}\n"]}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* App/Applet types for client interfaces
|
|
3
|
+
*/
|
|
4
|
+
import { HardwareRequirement } from "./hardware";
|
|
5
|
+
import type { CompatibilityResult } from "../utils/hardware/hardware";
|
|
6
|
+
/**
|
|
7
|
+
* App execution model types
|
|
8
|
+
*/
|
|
9
|
+
export type AppletType = "standard" | "background" | "system_dashboard";
|
|
10
|
+
/**
|
|
11
|
+
* Permission types that apps can request
|
|
12
|
+
*/
|
|
13
|
+
export type AppPermissionType = "ALL" | "MICROPHONE" | "CAMERA" | "CALENDAR" | "LOCATION" | "BACKGROUND_LOCATION" | "READ_NOTIFICATIONS" | "POST_NOTIFICATIONS" | "API_KEYS" | "MEMORY" | "AI" | "SPEAKERS";
|
|
14
|
+
/**
|
|
15
|
+
* Permission object with type and description
|
|
16
|
+
*/
|
|
17
|
+
export interface AppletPermission {
|
|
18
|
+
type: AppPermissionType;
|
|
19
|
+
description?: string;
|
|
20
|
+
required?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Minimal app interface for client home screen display
|
|
24
|
+
* Optimized for fast rendering - only essential fields
|
|
25
|
+
*
|
|
26
|
+
* This is the client-facing interface used by mobile apps.
|
|
27
|
+
* Internal cloud services use AppI from models (more fields).
|
|
28
|
+
*/
|
|
29
|
+
export interface AppletInterface {
|
|
30
|
+
packageName: string;
|
|
31
|
+
name: string;
|
|
32
|
+
webviewUrl: string;
|
|
33
|
+
logoUrl: string;
|
|
34
|
+
type: AppletType;
|
|
35
|
+
permissions: AppletPermission[];
|
|
36
|
+
running: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* True while this app's UI WebView is mounted in the Compositor overlay.
|
|
39
|
+
* At most one app is foregrounded at a time. Distinct from `running`:
|
|
40
|
+
* a foregrounded app is always running, but a running app may be
|
|
41
|
+
* backgrounded (JSContext alive, WebView torn down). Normalized to a
|
|
42
|
+
* concrete boolean by the apps store's projectApps; literal call sites
|
|
43
|
+
* may omit it.
|
|
44
|
+
*/
|
|
45
|
+
foregrounded?: boolean;
|
|
46
|
+
healthy: boolean;
|
|
47
|
+
hardwareRequirements: HardwareRequirement[];
|
|
48
|
+
/** ISO date string when the app was installed */
|
|
49
|
+
installedDate?: string;
|
|
50
|
+
/** ISO date string when the app was last run. Undefined if never run (app is "new") */
|
|
51
|
+
lastActiveAt?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Runtime applet shape used by the engine apps store and OEM hosts.
|
|
55
|
+
*
|
|
56
|
+
* Extends AppletInterface with the host-side fields the manager / OEM tracks
|
|
57
|
+
* outside the manifest: offline routing, hardware compatibility result,
|
|
58
|
+
* loading/hidden/local flags, lifecycle hooks, screenshot, and the
|
|
59
|
+
* dev-miniapp escape hatches (`devUrl` / `isMiniappDev`) that surface a
|
|
60
|
+
* `glassly-miniapp dev` snapshot.
|
|
61
|
+
*/
|
|
62
|
+
/**
|
|
63
|
+
* A manifest-declared action a miniapp exposes for other miniapps to invoke
|
|
64
|
+
* via `session.actions`. Populated from `miniapp.json`'s `actions` field.
|
|
65
|
+
* Shape maps 1:1 onto an MCP tool (id→name, description, parameters→inputSchema).
|
|
66
|
+
*/
|
|
67
|
+
export interface DeclaredAction {
|
|
68
|
+
id: string;
|
|
69
|
+
description: string;
|
|
70
|
+
/** JSON-Schema input descriptor (MCP-compatible subset). */
|
|
71
|
+
parameters?: Record<string, unknown>;
|
|
72
|
+
/** JSON-Schema descriptor for the action's structured result. */
|
|
73
|
+
outputSchema?: Record<string, unknown>;
|
|
74
|
+
/**
|
|
75
|
+
* Who may invoke the action: "public" (default — any installed miniapp) or
|
|
76
|
+
* "system" (system miniapps such as the AI assistant only).
|
|
77
|
+
*/
|
|
78
|
+
visibility?: "public" | "system";
|
|
79
|
+
}
|
|
80
|
+
export interface ClientApp extends AppletInterface {
|
|
81
|
+
offline: boolean;
|
|
82
|
+
offlineRoute: string;
|
|
83
|
+
compatibility?: CompatibilityResult;
|
|
84
|
+
loading: boolean;
|
|
85
|
+
local: boolean;
|
|
86
|
+
hidden: boolean;
|
|
87
|
+
onStart?: () => void;
|
|
88
|
+
onStop?: () => void;
|
|
89
|
+
screenshot?: string;
|
|
90
|
+
runtimePermissions?: string[];
|
|
91
|
+
declaredPermissions?: string[];
|
|
92
|
+
version?: string;
|
|
93
|
+
needsPcm?: boolean;
|
|
94
|
+
needsTranscript?: boolean;
|
|
95
|
+
devUrl?: string;
|
|
96
|
+
devPort?: number;
|
|
97
|
+
isMiniappDev?: boolean;
|
|
98
|
+
/** Manifest-declared actions (for session.miniapps.list + invoke gating). */
|
|
99
|
+
actions?: DeclaredAction[];
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=applet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applet.d.ts","sourceRoot":"","sources":["../../src/types/applet.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAC,mBAAmB,EAAC,MAAM,YAAY,CAAA;AAE9C,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,4BAA4B,CAAA;AAEnE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,kBAAkB,CAAA;AAEvE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,KAAK,GACL,YAAY,GACZ,QAAQ,GACR,UAAU,GACV,UAAU,GACV,qBAAqB,GACrB,oBAAoB,GACpB,oBAAoB,GACpB,UAAU,GACV,QAAQ,GACR,IAAI,GACJ,UAAU,CAAA;AAEd;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,iBAAiB,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,EAAE,gBAAgB,EAAE,CAAA;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,oBAAoB,EAAE,mBAAmB,EAAE,CAAA;IAC3C,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;;;GAQG;AACH;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtC;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CACjC;AAED,MAAM,WAAW,SAAU,SAAQ,eAAe;IAChD,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,cAAc,EAAE,CAAA;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applet.js","sourceRoot":"","sources":["../../src/types/applet.ts"],"names":[],"mappings":"AAAA;;GAEG","sourcesContent":["/**\n * App/Applet types for client interfaces\n */\n\n\nimport {HardwareRequirement} from \"./hardware\"\n\nimport type {CompatibilityResult} from \"../utils/hardware/hardware\"\n\n/**\n * App execution model types\n */\nexport type AppletType = \"standard\" | \"background\" | \"system_dashboard\"\n\n/**\n * Permission types that apps can request\n */\nexport type AppPermissionType =\n | \"ALL\"\n | \"MICROPHONE\"\n | \"CAMERA\"\n | \"CALENDAR\"\n | \"LOCATION\"\n | \"BACKGROUND_LOCATION\"\n | \"READ_NOTIFICATIONS\"\n | \"POST_NOTIFICATIONS\"\n | \"API_KEYS\"\n | \"MEMORY\"\n | \"AI\"\n | \"SPEAKERS\"\n\n/**\n * Permission object with type and description\n */\nexport interface AppletPermission {\n type: AppPermissionType\n description?: string\n required?: boolean\n}\n\n/**\n * Minimal app interface for client home screen display\n * Optimized for fast rendering - only essential fields\n *\n * This is the client-facing interface used by mobile apps.\n * Internal cloud services use AppI from models (more fields).\n */\nexport interface AppletInterface {\n packageName: string\n name: string\n webviewUrl: string\n logoUrl: string\n type: AppletType\n permissions: AppletPermission[]\n running: boolean\n /**\n * True while this app's UI WebView is mounted in the Compositor overlay.\n * At most one app is foregrounded at a time. Distinct from `running`:\n * a foregrounded app is always running, but a running app may be\n * backgrounded (JSContext alive, WebView torn down). Normalized to a\n * concrete boolean by the apps store's projectApps; literal call sites\n * may omit it.\n */\n foregrounded?: boolean\n healthy: boolean\n hardwareRequirements: HardwareRequirement[]\n /** ISO date string when the app was installed */\n installedDate?: string\n /** ISO date string when the app was last run. Undefined if never run (app is \"new\") */\n lastActiveAt?: string\n}\n\n/**\n * Runtime applet shape used by the engine apps store and OEM hosts.\n *\n * Extends AppletInterface with the host-side fields the manager / OEM tracks\n * outside the manifest: offline routing, hardware compatibility result,\n * loading/hidden/local flags, lifecycle hooks, screenshot, and the\n * dev-miniapp escape hatches (`devUrl` / `isMiniappDev`) that surface a\n * `glassly-miniapp dev` snapshot.\n */\n/**\n * A manifest-declared action a miniapp exposes for other miniapps to invoke\n * via `session.actions`. Populated from `miniapp.json`'s `actions` field.\n * Shape maps 1:1 onto an MCP tool (id→name, description, parameters→inputSchema).\n */\nexport interface DeclaredAction {\n id: string\n description: string\n /** JSON-Schema input descriptor (MCP-compatible subset). */\n parameters?: Record<string, unknown>\n /** JSON-Schema descriptor for the action's structured result. */\n outputSchema?: Record<string, unknown>\n /**\n * Who may invoke the action: \"public\" (default — any installed miniapp) or\n * \"system\" (system miniapps such as the AI assistant only).\n */\n visibility?: \"public\" | \"system\"\n}\n\nexport interface ClientApp extends AppletInterface {\n offline: boolean\n offlineRoute: string\n compatibility?: CompatibilityResult\n loading: boolean\n local: boolean\n hidden: boolean\n onStart?: () => void\n onStop?: () => void\n screenshot?: string\n runtimePermissions?: string[]\n declaredPermissions?: string[]\n version?: string\n needsPcm?: boolean\n needsTranscript?: boolean\n devUrl?: string\n devPort?: number\n isMiniappDev?: boolean\n /** Manifest-declared actions (for session.miniapps.list + invoke gating). */\n actions?: DeclaredAction[]\n}\n"]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gallery / ASG HTTP-API types (relocated from the host `@/types/asg`). `PhotoInfo`
|
|
3
|
+
* lives with the gallerySync store that owns it; the rest describe the glasses'
|
|
4
|
+
* on-device camera HTTP API that asgCameraApi talks to. The host `@/types/asg`
|
|
5
|
+
* re-exports these from `@glassly/engine` so existing importers stay unchanged.
|
|
6
|
+
*/
|
|
7
|
+
import type { PhotoInfo } from "../stores/gallerySync";
|
|
8
|
+
export type { PhotoInfo };
|
|
9
|
+
export interface CaptureFile {
|
|
10
|
+
name: string;
|
|
11
|
+
size: number;
|
|
12
|
+
role: "primary" | "bracket" | "sidecar";
|
|
13
|
+
modified?: number;
|
|
14
|
+
mime_type?: string;
|
|
15
|
+
etag?: string;
|
|
16
|
+
sha256?: string;
|
|
17
|
+
download_url?: string;
|
|
18
|
+
hash_url?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface CaptureGroup {
|
|
21
|
+
capture_id: string;
|
|
22
|
+
request_id?: string;
|
|
23
|
+
type: "photo" | "video";
|
|
24
|
+
timestamp: number;
|
|
25
|
+
total_size: number;
|
|
26
|
+
files: CaptureFile[];
|
|
27
|
+
thumbnail_data?: string;
|
|
28
|
+
thumbnail_url?: string;
|
|
29
|
+
duration?: number;
|
|
30
|
+
}
|
|
31
|
+
export interface GalleryResponse {
|
|
32
|
+
status: "success" | "error";
|
|
33
|
+
data: {
|
|
34
|
+
photos: PhotoInfo[];
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export interface ServerStatus {
|
|
38
|
+
status: string;
|
|
39
|
+
uptime: number;
|
|
40
|
+
version: string;
|
|
41
|
+
timestamp: string;
|
|
42
|
+
}
|
|
43
|
+
export interface HealthResponse {
|
|
44
|
+
status: "healthy" | "unhealthy";
|
|
45
|
+
timestamp: string;
|
|
46
|
+
version: string;
|
|
47
|
+
}
|
|
48
|
+
export interface GalleryEvent {
|
|
49
|
+
type: "photo_added" | "photo_deleted" | "gallery_updated";
|
|
50
|
+
photo?: PhotoInfo;
|
|
51
|
+
timestamp: string;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=asg.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asg.d.ts","sourceRoot":"","sources":["../../src/types/asg.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAA;AACpD,YAAY,EAAC,SAAS,EAAC,CAAA;AAEvB,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,SAAS,GAAG,OAAO,CAAA;IAC3B,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS,EAAE,CAAA;KACpB,CAAA;CACF;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,GAAG,WAAW,CAAA;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,aAAa,GAAG,eAAe,GAAG,iBAAiB,CAAA;IACzD,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asg.js","sourceRoot":"","sources":["../../src/types/asg.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Gallery / ASG HTTP-API types (relocated from the host `@/types/asg`). `PhotoInfo`\n * lives with the gallerySync store that owns it; the rest describe the glasses'\n * on-device camera HTTP API that asgCameraApi talks to. The host `@/types/asg`\n * re-exports these from `@glassly/engine` so existing importers stay unchanged.\n */\nimport type {PhotoInfo} from \"../stores/gallerySync\"\nexport type {PhotoInfo}\n\nexport interface CaptureFile {\n name: string // \"IMG_xxx/base.jpg\" or \"IMG_xxx.jpg\" (legacy)\n size: number\n role: \"primary\" | \"bracket\" | \"sidecar\"\n modified?: number\n mime_type?: string\n etag?: string\n sha256?: string\n download_url?: string\n hash_url?: string\n}\n\nexport interface CaptureGroup {\n capture_id: string // folder name: \"IMG_20250302_143022_456_123\" or \"IMG_..._<requestId>\"\n request_id?: string // originating SDK requestId embedded in the folder name (absent for button captures / legacy files)\n type: \"photo\" | \"video\"\n timestamp: number\n total_size: number\n files: CaptureFile[]\n thumbnail_data?: string\n thumbnail_url?: string\n duration?: number // video only\n}\n\nexport interface GalleryResponse {\n status: \"success\" | \"error\"\n data: {\n photos: PhotoInfo[]\n }\n}\n\nexport interface ServerStatus {\n status: string\n uptime: number\n version: string\n timestamp: string\n}\n\nexport interface HealthResponse {\n status: \"healthy\" | \"unhealthy\"\n timestamp: string\n version: string\n}\n\nexport interface GalleryEvent {\n type: \"photo_added\" | \"photo_deleted\" | \"gallery_updated\"\n photo?: PhotoInfo\n timestamp: string\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Even Realities G1 Hardware Capabilities
|
|
3
|
+
*
|
|
4
|
+
* Capability profile for the Even Realities G1 smart glasses model.
|
|
5
|
+
* Defines the hardware and software features available on this device.
|
|
6
|
+
*/
|
|
7
|
+
import type { Capabilities } from "../hardware";
|
|
8
|
+
/**
|
|
9
|
+
* Even Realities G1 capability profile
|
|
10
|
+
*/
|
|
11
|
+
export declare const evenRealitiesG1: Capabilities;
|
|
12
|
+
//# sourceMappingURL=even-realities-g1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"even-realities-g1.d.ts","sourceRoot":"","sources":["../../../src/types/capabilities/even-realities-g1.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAA;AAE7C;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,YAyD7B,CAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Even Realities G1 Hardware Capabilities
|
|
3
|
+
*
|
|
4
|
+
* Capability profile for the Even Realities G1 smart glasses model.
|
|
5
|
+
* Defines the hardware and software features available on this device.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Even Realities G1 capability profile
|
|
9
|
+
*/
|
|
10
|
+
export const evenRealitiesG1 = {
|
|
11
|
+
modelName: "Even Realities G1",
|
|
12
|
+
// Camera capabilities - G1 does not have a camera
|
|
13
|
+
hasCamera: false,
|
|
14
|
+
camera: null,
|
|
15
|
+
// Display capabilities - G1 has a green monochrome display
|
|
16
|
+
hasDisplay: true,
|
|
17
|
+
display: {
|
|
18
|
+
count: 2,
|
|
19
|
+
isColor: false,
|
|
20
|
+
color: "green",
|
|
21
|
+
canDisplayBitmap: false, // broken in practice — capability stops lying (design doc §3.4.8)
|
|
22
|
+
resolution: { width: 640, height: 200 },
|
|
23
|
+
fieldOfView: { horizontal: 25 },
|
|
24
|
+
maxTextLines: 5,
|
|
25
|
+
adjustBrightness: true,
|
|
26
|
+
// Scene display API — no positioned elements; scenes degrade to text walls.
|
|
27
|
+
canPosition: false,
|
|
28
|
+
maxImageElements: 0,
|
|
29
|
+
},
|
|
30
|
+
// Microphone capabilities - G1 has one microphone without VAD
|
|
31
|
+
hasMicrophone: true,
|
|
32
|
+
microphone: {
|
|
33
|
+
count: 1,
|
|
34
|
+
hasVAD: false,
|
|
35
|
+
},
|
|
36
|
+
// Speaker capabilities - G1 does not have a speaker
|
|
37
|
+
hasSpeaker: false,
|
|
38
|
+
speaker: null,
|
|
39
|
+
// IMU capabilities - G1 has IMU for head-up/down detection but raw data not exposed to apps
|
|
40
|
+
hasIMU: true,
|
|
41
|
+
imu: null,
|
|
42
|
+
// Button capabilities - G1 does not have buttons
|
|
43
|
+
hasButton: false,
|
|
44
|
+
button: null,
|
|
45
|
+
// Light capabilities - G1 does not have lights
|
|
46
|
+
hasLight: false,
|
|
47
|
+
light: null,
|
|
48
|
+
// Power capabilities - G1 does not have external battery
|
|
49
|
+
power: {
|
|
50
|
+
hasExternalBattery: false,
|
|
51
|
+
},
|
|
52
|
+
// WiFi capabilities - G1 does not support WiFi
|
|
53
|
+
hasWifi: false,
|
|
54
|
+
// OTA capabilities - G1 firmware updates are not driven by the ASG OTA flow
|
|
55
|
+
hasOta: false,
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=even-realities-g1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"even-realities-g1.js","sourceRoot":"","sources":["../../../src/types/capabilities/even-realities-g1.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAiB;IAC3C,SAAS,EAAE,mBAAmB;IAE9B,kDAAkD;IAClD,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,IAAI;IAEZ,2DAA2D;IAC3D,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE;QACP,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,OAAO;QACd,gBAAgB,EAAE,KAAK,EAAE,kEAAkE;QAC3F,UAAU,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAC;QACrC,WAAW,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC;QAC7B,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,IAAI;QAEtB,4EAA4E;QAC5E,WAAW,EAAE,KAAK;QAClB,gBAAgB,EAAE,CAAC;KACpB;IAED,8DAA8D;IAC9D,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE;QACV,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,KAAK;KACd;IAED,oDAAoD;IACpD,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,IAAI;IAEb,4FAA4F;IAC5F,MAAM,EAAE,IAAI;IACZ,GAAG,EAAE,IAAI;IAET,iDAAiD;IACjD,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,IAAI;IAEZ,+CAA+C;IAC/C,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE,IAAI;IAEX,yDAAyD;IACzD,KAAK,EAAE;QACL,kBAAkB,EAAE,KAAK;KAC1B;IAED,+CAA+C;IAC/C,OAAO,EAAE,KAAK;IAEd,4EAA4E;IAC5E,MAAM,EAAE,KAAK;CACd,CAAA","sourcesContent":["/**\n * @fileoverview Even Realities G1 Hardware Capabilities\n *\n * Capability profile for the Even Realities G1 smart glasses model.\n * Defines the hardware and software features available on this device.\n */\n\nimport type {Capabilities} from \"../hardware\"\n\n/**\n * Even Realities G1 capability profile\n */\nexport const evenRealitiesG1: Capabilities = {\n modelName: \"Even Realities G1\",\n\n // Camera capabilities - G1 does not have a camera\n hasCamera: false,\n camera: null,\n\n // Display capabilities - G1 has a green monochrome display\n hasDisplay: true,\n display: {\n count: 2,\n isColor: false,\n color: \"green\",\n canDisplayBitmap: false, // broken in practice — capability stops lying (design doc §3.4.8)\n resolution: {width: 640, height: 200},\n fieldOfView: {horizontal: 25},\n maxTextLines: 5,\n adjustBrightness: true,\n\n // Scene display API — no positioned elements; scenes degrade to text walls.\n canPosition: false,\n maxImageElements: 0,\n },\n\n // Microphone capabilities - G1 has one microphone without VAD\n hasMicrophone: true,\n microphone: {\n count: 1,\n hasVAD: false,\n },\n\n // Speaker capabilities - G1 does not have a speaker\n hasSpeaker: false,\n speaker: null,\n\n // IMU capabilities - G1 has IMU for head-up/down detection but raw data not exposed to apps\n hasIMU: true,\n imu: null,\n\n // Button capabilities - G1 does not have buttons\n hasButton: false,\n button: null,\n\n // Light capabilities - G1 does not have lights\n hasLight: false,\n light: null,\n\n // Power capabilities - G1 does not have external battery\n power: {\n hasExternalBattery: false,\n },\n\n // WiFi capabilities - G1 does not support WiFi\n hasWifi: false,\n\n // OTA capabilities - G1 firmware updates are not driven by the ASG OTA flow\n hasOta: false,\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Even Realities G2 Hardware Capabilities
|
|
3
|
+
*
|
|
4
|
+
* Capability profile for the Even Realities G2 smart glasses model.
|
|
5
|
+
* G2 uses the EvenHub protocol with protobuf-based commands.
|
|
6
|
+
*/
|
|
7
|
+
import type { Capabilities } from "../hardware";
|
|
8
|
+
/**
|
|
9
|
+
* Even Realities G2 capability profile
|
|
10
|
+
*/
|
|
11
|
+
export declare const evenRealitiesG2: Capabilities;
|
|
12
|
+
//# sourceMappingURL=even-realities-g2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"even-realities-g2.d.ts","sourceRoot":"","sources":["../../../src/types/capabilities/even-realities-g2.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAA;AAE7C;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,YAqF7B,CAAA"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Even Realities G2 Hardware Capabilities
|
|
3
|
+
*
|
|
4
|
+
* Capability profile for the Even Realities G2 smart glasses model.
|
|
5
|
+
* G2 uses the EvenHub protocol with protobuf-based commands.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Even Realities G2 capability profile
|
|
9
|
+
*/
|
|
10
|
+
export const evenRealitiesG2 = {
|
|
11
|
+
modelName: "Even Realities G2",
|
|
12
|
+
// Camera capabilities - G2 does not have a camera
|
|
13
|
+
hasCamera: false,
|
|
14
|
+
camera: null,
|
|
15
|
+
// Display capabilities - G2 has a green monochrome display (similar to G1)
|
|
16
|
+
hasDisplay: true,
|
|
17
|
+
display: {
|
|
18
|
+
count: 2,
|
|
19
|
+
isColor: false,
|
|
20
|
+
color: "green",
|
|
21
|
+
canDisplayBitmap: true,
|
|
22
|
+
// Physical panel; stock firmware blits its 576×288 scene canvas into it 1:1.
|
|
23
|
+
resolution: { width: 640, height: 480 },
|
|
24
|
+
fieldOfView: { horizontal: 25 },
|
|
25
|
+
maxTextLines: 8,
|
|
26
|
+
adjustBrightness: true,
|
|
27
|
+
// Scene display API — EvenHub retained containers.
|
|
28
|
+
width: 576,
|
|
29
|
+
height: 288,
|
|
30
|
+
canPosition: true,
|
|
31
|
+
maxTextElements: 6, // firmware text-container pool (rects share it)
|
|
32
|
+
maxImageElements: 4, // firmware image-container pool
|
|
33
|
+
// No maxImagePx: the SGC tiles larger images across multiple firmware
|
|
34
|
+
// containers (each ≤200x100 — the hardware-verified per-container transfer
|
|
35
|
+
// envelope). Pathological sizes needing more than the 4-container pool are
|
|
36
|
+
// dropped SGC-side with a log.
|
|
37
|
+
shapes: ["rect"], // bordered empty container ≈ rect
|
|
38
|
+
intensityLevels: 2,
|
|
39
|
+
partialUpdate: true,
|
|
40
|
+
},
|
|
41
|
+
// Microphone capabilities - G2 has one microphone (right side), LC3 codec
|
|
42
|
+
hasMicrophone: true,
|
|
43
|
+
microphone: {
|
|
44
|
+
count: 1,
|
|
45
|
+
hasVAD: false,
|
|
46
|
+
},
|
|
47
|
+
// Speaker capabilities - G2 does not have a speaker
|
|
48
|
+
hasSpeaker: false,
|
|
49
|
+
speaker: null,
|
|
50
|
+
// IMU capabilities - G2 has IMU
|
|
51
|
+
hasIMU: true,
|
|
52
|
+
imu: null,
|
|
53
|
+
// Button capabilities - G2 has a capacitive touchbar
|
|
54
|
+
hasButton: true,
|
|
55
|
+
button: {
|
|
56
|
+
count: 1,
|
|
57
|
+
buttons: [
|
|
58
|
+
{
|
|
59
|
+
type: "swipe1d",
|
|
60
|
+
events: ["TAP", "DOUBLE_TAP", "TRIPLE_TAP", "PRESS_HOLD", "SWIPE_UP", "SWIPE_DOWN"],
|
|
61
|
+
isCapacitive: true,
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
// Light capabilities - G2 does not have lights
|
|
66
|
+
hasLight: false,
|
|
67
|
+
light: null,
|
|
68
|
+
// Power capabilities
|
|
69
|
+
power: {
|
|
70
|
+
hasExternalBattery: false,
|
|
71
|
+
},
|
|
72
|
+
// WiFi capabilities - G2 does not support WiFi
|
|
73
|
+
hasWifi: false,
|
|
74
|
+
// Dashboard - G2 renders Even Realities' native dashboard in firmware, so
|
|
75
|
+
// Glassly does not manage the dashboard or expose dashboard settings for it
|
|
76
|
+
hasNativeDashboard: true,
|
|
77
|
+
// Navigation - firmware nav UI on service 0x08 (card, 176×176 mini map,
|
|
78
|
+
// 576×188 overview map); magnetometer streams only while it is active
|
|
79
|
+
hasNativeNavigation: true,
|
|
80
|
+
// OTA capabilities - G2 firmware updates are not driven by the ASG OTA flow
|
|
81
|
+
hasOta: false,
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=even-realities-g2.js.map
|