@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.
Files changed (1053) hide show
  1. package/README.md +96 -0
  2. package/build/devtools.d.ts +11 -0
  3. package/build/devtools.d.ts.map +1 -0
  4. package/build/devtools.js +13 -0
  5. package/build/devtools.js.map +1 -0
  6. package/build/engine.d.ts +336 -0
  7. package/build/engine.d.ts.map +1 -0
  8. package/build/engine.js +198 -0
  9. package/build/engine.js.map +1 -0
  10. package/build/facades/dev.d.ts +69 -0
  11. package/build/facades/dev.d.ts.map +1 -0
  12. package/build/facades/dev.js +204 -0
  13. package/build/facades/dev.js.map +1 -0
  14. package/build/facades/display.d.ts +21 -0
  15. package/build/facades/display.d.ts.map +1 -0
  16. package/build/facades/display.js +17 -0
  17. package/build/facades/display.js.map +1 -0
  18. package/build/facades/displayMirror.d.ts +15 -0
  19. package/build/facades/displayMirror.d.ts.map +1 -0
  20. package/build/facades/displayMirror.js +29 -0
  21. package/build/facades/displayMirror.js.map +1 -0
  22. package/build/facades/gallery.d.ts +62 -0
  23. package/build/facades/gallery.d.ts.map +1 -0
  24. package/build/facades/gallery.js +61 -0
  25. package/build/facades/gallery.js.map +1 -0
  26. package/build/facades/glasses.d.ts +142 -0
  27. package/build/facades/glasses.d.ts.map +1 -0
  28. package/build/facades/glasses.js +214 -0
  29. package/build/facades/glasses.js.map +1 -0
  30. package/build/facades/glassesSettings.d.ts +13 -0
  31. package/build/facades/glassesSettings.d.ts.map +1 -0
  32. package/build/facades/glassesSettings.js +55 -0
  33. package/build/facades/glassesSettings.js.map +1 -0
  34. package/build/facades/glassesWifi.d.ts +25 -0
  35. package/build/facades/glassesWifi.d.ts.map +1 -0
  36. package/build/facades/glassesWifi.js +57 -0
  37. package/build/facades/glassesWifi.js.map +1 -0
  38. package/build/facades/maps.d.ts +18 -0
  39. package/build/facades/maps.d.ts.map +1 -0
  40. package/build/facades/maps.js +13 -0
  41. package/build/facades/maps.js.map +1 -0
  42. package/build/facades/memory.d.ts +38 -0
  43. package/build/facades/memory.d.ts.map +1 -0
  44. package/build/facades/memory.js +33 -0
  45. package/build/facades/memory.js.map +1 -0
  46. package/build/facades/miniapps.d.ts +47 -0
  47. package/build/facades/miniapps.d.ts.map +1 -0
  48. package/build/facades/miniapps.js +54 -0
  49. package/build/facades/miniapps.js.map +1 -0
  50. package/build/facades/notifications.d.ts +13 -0
  51. package/build/facades/notifications.d.ts.map +1 -0
  52. package/build/facades/notifications.js +12 -0
  53. package/build/facades/notifications.js.map +1 -0
  54. package/build/facades/ota.d.ts +106 -0
  55. package/build/facades/ota.d.ts.map +1 -0
  56. package/build/facades/ota.js +159 -0
  57. package/build/facades/ota.js.map +1 -0
  58. package/build/facades/pairing.d.ts +115 -0
  59. package/build/facades/pairing.d.ts.map +1 -0
  60. package/build/facades/pairing.js +275 -0
  61. package/build/facades/pairing.js.map +1 -0
  62. package/build/facades/permissions.d.ts +33 -0
  63. package/build/facades/permissions.d.ts.map +1 -0
  64. package/build/facades/permissions.js +155 -0
  65. package/build/facades/permissions.js.map +1 -0
  66. package/build/facades/phoneNotifications.d.ts +17 -0
  67. package/build/facades/phoneNotifications.d.ts.map +1 -0
  68. package/build/facades/phoneNotifications.js +41 -0
  69. package/build/facades/phoneNotifications.js.map +1 -0
  70. package/build/facades/providerKeys.d.ts +26 -0
  71. package/build/facades/providerKeys.d.ts.map +1 -0
  72. package/build/facades/providerKeys.js +26 -0
  73. package/build/facades/providerKeys.js.map +1 -0
  74. package/build/facades/reports.d.ts +36 -0
  75. package/build/facades/reports.d.ts.map +1 -0
  76. package/build/facades/reports.js +134 -0
  77. package/build/facades/reports.js.map +1 -0
  78. package/build/facades/session.d.ts +21 -0
  79. package/build/facades/session.d.ts.map +1 -0
  80. package/build/facades/session.js +52 -0
  81. package/build/facades/session.js.map +1 -0
  82. package/build/facades/settings.d.ts +37 -0
  83. package/build/facades/settings.d.ts.map +1 -0
  84. package/build/facades/settings.js +55 -0
  85. package/build/facades/settings.js.map +1 -0
  86. package/build/facades/speakers.d.ts +41 -0
  87. package/build/facades/speakers.d.ts.map +1 -0
  88. package/build/facades/speakers.js +139 -0
  89. package/build/facades/speakers.js.map +1 -0
  90. package/build/facades/speech.d.ts +44 -0
  91. package/build/facades/speech.d.ts.map +1 -0
  92. package/build/facades/speech.js +46 -0
  93. package/build/facades/speech.js.map +1 -0
  94. package/build/index.d.ts +48 -0
  95. package/build/index.d.ts.map +1 -0
  96. package/build/index.js +49 -0
  97. package/build/index.js.map +1 -0
  98. package/build/internal.d.ts +67 -0
  99. package/build/internal.d.ts.map +1 -0
  100. package/build/internal.js +90 -0
  101. package/build/internal.js.map +1 -0
  102. package/build/runtime/bootstrap.d.ts +115 -0
  103. package/build/runtime/bootstrap.d.ts.map +1 -0
  104. package/build/runtime/bootstrap.js +73 -0
  105. package/build/runtime/bootstrap.js.map +1 -0
  106. package/build/runtime/config.d.ts +152 -0
  107. package/build/runtime/config.d.ts.map +1 -0
  108. package/build/runtime/config.js +19 -0
  109. package/build/runtime/config.js.map +1 -0
  110. package/build/runtime/scanQrSeam.d.ts +7 -0
  111. package/build/runtime/scanQrSeam.d.ts.map +1 -0
  112. package/build/runtime/scanQrSeam.js +16 -0
  113. package/build/runtime/scanQrSeam.js.map +1 -0
  114. package/build/runtime/streamConfig.d.ts +4 -0
  115. package/build/runtime/streamConfig.d.ts.map +1 -0
  116. package/build/runtime/streamConfig.js +38 -0
  117. package/build/runtime/streamConfig.js.map +1 -0
  118. package/build/services/AiTierResolution.d.ts +61 -0
  119. package/build/services/AiTierResolution.d.ts.map +1 -0
  120. package/build/services/AiTierResolution.js +83 -0
  121. package/build/services/AiTierResolution.js.map +1 -0
  122. package/build/services/AppRegistry.d.ts +303 -0
  123. package/build/services/AppRegistry.d.ts.map +1 -0
  124. package/build/services/AppRegistry.js +1108 -0
  125. package/build/services/AppRegistry.js.map +1 -0
  126. package/build/services/AudioCloudUplink.d.ts +15 -0
  127. package/build/services/AudioCloudUplink.d.ts.map +1 -0
  128. package/build/services/AudioCloudUplink.js +54 -0
  129. package/build/services/AudioCloudUplink.js.map +1 -0
  130. package/build/services/AudioPlaybackService.d.ts +183 -0
  131. package/build/services/AudioPlaybackService.d.ts.map +1 -0
  132. package/build/services/AudioPlaybackService.js +750 -0
  133. package/build/services/AudioPlaybackService.js.map +1 -0
  134. package/build/services/AutomaticReportResult.d.ts +20 -0
  135. package/build/services/AutomaticReportResult.d.ts.map +1 -0
  136. package/build/services/AutomaticReportResult.js +29 -0
  137. package/build/services/AutomaticReportResult.js.map +1 -0
  138. package/build/services/BlobStore.d.ts +106 -0
  139. package/build/services/BlobStore.d.ts.map +1 -0
  140. package/build/services/BlobStore.js +741 -0
  141. package/build/services/BlobStore.js.map +1 -0
  142. package/build/services/CaptionsTesterReportService.d.ts +4 -0
  143. package/build/services/CaptionsTesterReportService.d.ts.map +1 -0
  144. package/build/services/CaptionsTesterReportService.js +80 -0
  145. package/build/services/CaptionsTesterReportService.js.map +1 -0
  146. package/build/services/CloudAudioSubscriptionSync.d.ts +24 -0
  147. package/build/services/CloudAudioSubscriptionSync.d.ts.map +1 -0
  148. package/build/services/CloudAudioSubscriptionSync.js +51 -0
  149. package/build/services/CloudAudioSubscriptionSync.js.map +1 -0
  150. package/build/services/CloudClientService.d.ts +293 -0
  151. package/build/services/CloudClientService.d.ts.map +1 -0
  152. package/build/services/CloudClientService.js +965 -0
  153. package/build/services/CloudClientService.js.map +1 -0
  154. package/build/services/CloudTranscriptE2EMetrics.d.ts +4 -0
  155. package/build/services/CloudTranscriptE2EMetrics.d.ts.map +1 -0
  156. package/build/services/CloudTranscriptE2EMetrics.js +24 -0
  157. package/build/services/CloudTranscriptE2EMetrics.js.map +1 -0
  158. package/build/services/ConnectionCoordinator.d.ts +51 -0
  159. package/build/services/ConnectionCoordinator.d.ts.map +1 -0
  160. package/build/services/ConnectionCoordinator.js +34 -0
  161. package/build/services/ConnectionCoordinator.js.map +1 -0
  162. package/build/services/DevServerBridge.d.ts +63 -0
  163. package/build/services/DevServerBridge.d.ts.map +1 -0
  164. package/build/services/DevServerBridge.js +296 -0
  165. package/build/services/DevServerBridge.js.map +1 -0
  166. package/build/services/DeviceEventRouter.d.ts +3 -0
  167. package/build/services/DeviceEventRouter.d.ts.map +1 -0
  168. package/build/services/DeviceEventRouter.js +214 -0
  169. package/build/services/DeviceEventRouter.js.map +1 -0
  170. package/build/services/DeviceStoreHydration.d.ts +38 -0
  171. package/build/services/DeviceStoreHydration.d.ts.map +1 -0
  172. package/build/services/DeviceStoreHydration.js +124 -0
  173. package/build/services/DeviceStoreHydration.js.map +1 -0
  174. package/build/services/DisplayProcessor.d.ts +223 -0
  175. package/build/services/DisplayProcessor.d.ts.map +1 -0
  176. package/build/services/DisplayProcessor.js +552 -0
  177. package/build/services/DisplayProcessor.js.map +1 -0
  178. package/build/services/ForegroundLocationPermission.d.ts +13 -0
  179. package/build/services/ForegroundLocationPermission.d.ts.map +1 -0
  180. package/build/services/ForegroundLocationPermission.js +12 -0
  181. package/build/services/ForegroundLocationPermission.js.map +1 -0
  182. package/build/services/GlassesReadiness.d.ts +41 -0
  183. package/build/services/GlassesReadiness.d.ts.map +1 -0
  184. package/build/services/GlassesReadiness.js +82 -0
  185. package/build/services/GlassesReadiness.js.map +1 -0
  186. package/build/services/GlassesSettingsSync.d.ts +33 -0
  187. package/build/services/GlassesSettingsSync.d.ts.map +1 -0
  188. package/build/services/GlassesSettingsSync.js +127 -0
  189. package/build/services/GlassesSettingsSync.js.map +1 -0
  190. package/build/services/GlassesStatusProjection.d.ts +3 -0
  191. package/build/services/GlassesStatusProjection.d.ts.map +1 -0
  192. package/build/services/GlassesStatusProjection.js +65 -0
  193. package/build/services/GlassesStatusProjection.js.map +1 -0
  194. package/build/services/HeadingService.d.ts +33 -0
  195. package/build/services/HeadingService.d.ts.map +1 -0
  196. package/build/services/HeadingService.js +123 -0
  197. package/build/services/HeadingService.js.map +1 -0
  198. package/build/services/HotspotOtaTransport.d.ts +29 -0
  199. package/build/services/HotspotOtaTransport.d.ts.map +1 -0
  200. package/build/services/HotspotOtaTransport.js +146 -0
  201. package/build/services/HotspotOtaTransport.js.map +1 -0
  202. package/build/services/HotspotShutdown.d.ts +17 -0
  203. package/build/services/HotspotShutdown.d.ts.map +1 -0
  204. package/build/services/HotspotShutdown.js +29 -0
  205. package/build/services/HotspotShutdown.js.map +1 -0
  206. package/build/services/JSCrashController.d.ts +97 -0
  207. package/build/services/JSCrashController.d.ts.map +1 -0
  208. package/build/services/JSCrashController.js +138 -0
  209. package/build/services/JSCrashController.js.map +1 -0
  210. package/build/services/JSCrashloopReportService.d.ts +9 -0
  211. package/build/services/JSCrashloopReportService.d.ts.map +1 -0
  212. package/build/services/JSCrashloopReportService.js +54 -0
  213. package/build/services/JSCrashloopReportService.js.map +1 -0
  214. package/build/services/JSLogPipeline.d.ts +87 -0
  215. package/build/services/JSLogPipeline.d.ts.map +1 -0
  216. package/build/services/JSLogPipeline.js +137 -0
  217. package/build/services/JSLogPipeline.js.map +1 -0
  218. package/build/services/JSRouter.d.ts +203 -0
  219. package/build/services/JSRouter.d.ts.map +1 -0
  220. package/build/services/JSRouter.js +482 -0
  221. package/build/services/JSRouter.js.map +1 -0
  222. package/build/services/LocalDisplayManager.d.ts +162 -0
  223. package/build/services/LocalDisplayManager.d.ts.map +1 -0
  224. package/build/services/LocalDisplayManager.js +687 -0
  225. package/build/services/LocalDisplayManager.js.map +1 -0
  226. package/build/services/LocalMiniappDataMigration.d.ts +46 -0
  227. package/build/services/LocalMiniappDataMigration.d.ts.map +1 -0
  228. package/build/services/LocalMiniappDataMigration.js +78 -0
  229. package/build/services/LocalMiniappDataMigration.js.map +1 -0
  230. package/build/services/LocalMiniappRuntime.d.ts +677 -0
  231. package/build/services/LocalMiniappRuntime.d.ts.map +1 -0
  232. package/build/services/LocalMiniappRuntime.js +5068 -0
  233. package/build/services/LocalMiniappRuntime.js.map +1 -0
  234. package/build/services/LocalMiniappStorage.d.ts +32 -0
  235. package/build/services/LocalMiniappStorage.d.ts.map +1 -0
  236. package/build/services/LocalMiniappStorage.js +66 -0
  237. package/build/services/LocalMiniappStorage.js.map +1 -0
  238. package/build/services/LocalMiniappUserIdentity.d.ts +41 -0
  239. package/build/services/LocalMiniappUserIdentity.d.ts.map +1 -0
  240. package/build/services/LocalMiniappUserIdentity.js +73 -0
  241. package/build/services/LocalMiniappUserIdentity.js.map +1 -0
  242. package/build/services/LocalSttFallbackCoordinator.d.ts +101 -0
  243. package/build/services/LocalSttFallbackCoordinator.d.ts.map +1 -0
  244. package/build/services/LocalSttFallbackCoordinator.js +210 -0
  245. package/build/services/LocalSttFallbackCoordinator.js.map +1 -0
  246. package/build/services/MapboxTokenService.d.ts +33 -0
  247. package/build/services/MapboxTokenService.d.ts.map +1 -0
  248. package/build/services/MapboxTokenService.js +115 -0
  249. package/build/services/MapboxTokenService.js.map +1 -0
  250. package/build/services/MemoryCapture.d.ts +40 -0
  251. package/build/services/MemoryCapture.d.ts.map +1 -0
  252. package/build/services/MemoryCapture.js +42 -0
  253. package/build/services/MemoryCapture.js.map +1 -0
  254. package/build/services/MemoryStore.d.ts +184 -0
  255. package/build/services/MemoryStore.d.ts.map +1 -0
  256. package/build/services/MemoryStore.js +541 -0
  257. package/build/services/MemoryStore.js.map +1 -0
  258. package/build/services/MicStateCoordinator.d.ts +78 -0
  259. package/build/services/MicStateCoordinator.d.ts.map +1 -0
  260. package/build/services/MicStateCoordinator.js +219 -0
  261. package/build/services/MicStateCoordinator.js.map +1 -0
  262. package/build/services/MiniappEngine.d.ts +31 -0
  263. package/build/services/MiniappEngine.d.ts.map +1 -0
  264. package/build/services/MiniappEngine.js +119 -0
  265. package/build/services/MiniappEngine.js.map +1 -0
  266. package/build/services/MiniappLauncher.d.ts +127 -0
  267. package/build/services/MiniappLauncher.d.ts.map +1 -0
  268. package/build/services/MiniappLauncher.js +309 -0
  269. package/build/services/MiniappLauncher.js.map +1 -0
  270. package/build/services/MiniappLiveness.d.ts +12 -0
  271. package/build/services/MiniappLiveness.d.ts.map +1 -0
  272. package/build/services/MiniappLiveness.js +16 -0
  273. package/build/services/MiniappLiveness.js.map +1 -0
  274. package/build/services/MiniappRunningRegistry.d.ts +24 -0
  275. package/build/services/MiniappRunningRegistry.d.ts.map +1 -0
  276. package/build/services/MiniappRunningRegistry.js +52 -0
  277. package/build/services/MiniappRunningRegistry.js.map +1 -0
  278. package/build/services/NativeHttpResponse.d.ts +3 -0
  279. package/build/services/NativeHttpResponse.d.ts.map +1 -0
  280. package/build/services/NativeHttpResponse.js +6 -0
  281. package/build/services/NativeHttpResponse.js.map +1 -0
  282. package/build/services/NativeNavigationService.d.ts +51 -0
  283. package/build/services/NativeNavigationService.d.ts.map +1 -0
  284. package/build/services/NativeNavigationService.js +154 -0
  285. package/build/services/NativeNavigationService.js.map +1 -0
  286. package/build/services/NavigationHandlers.d.ts +107 -0
  287. package/build/services/NavigationHandlers.d.ts.map +1 -0
  288. package/build/services/NavigationHandlers.js +479 -0
  289. package/build/services/NavigationHandlers.js.map +1 -0
  290. package/build/services/NavigationService.d.ts +283 -0
  291. package/build/services/NavigationService.d.ts.map +1 -0
  292. package/build/services/NavigationService.js +696 -0
  293. package/build/services/NavigationService.js.map +1 -0
  294. package/build/services/NotificationsEmitter.d.ts +28 -0
  295. package/build/services/NotificationsEmitter.d.ts.map +1 -0
  296. package/build/services/NotificationsEmitter.js +22 -0
  297. package/build/services/NotificationsEmitter.js.map +1 -0
  298. package/build/services/OfflineSpeechModelService.d.ts +33 -0
  299. package/build/services/OfflineSpeechModelService.d.ts.map +1 -0
  300. package/build/services/OfflineSpeechModelService.js +136 -0
  301. package/build/services/OfflineSpeechModelService.js.map +1 -0
  302. package/build/services/OtaArtifactDownloader.d.ts +65 -0
  303. package/build/services/OtaArtifactDownloader.d.ts.map +1 -0
  304. package/build/services/OtaArtifactDownloader.js +226 -0
  305. package/build/services/OtaArtifactDownloader.js.map +1 -0
  306. package/build/services/OtaInstallCoordinator.d.ts +275 -0
  307. package/build/services/OtaInstallCoordinator.d.ts.map +1 -0
  308. package/build/services/OtaInstallCoordinator.js +1491 -0
  309. package/build/services/OtaInstallCoordinator.js.map +1 -0
  310. package/build/services/OtaService.d.ts +3 -0
  311. package/build/services/OtaService.d.ts.map +1 -0
  312. package/build/services/OtaService.js +72 -0
  313. package/build/services/OtaService.js.map +1 -0
  314. package/build/services/OtaUpdateCheckService.d.ts +100 -0
  315. package/build/services/OtaUpdateCheckService.d.ts.map +1 -0
  316. package/build/services/OtaUpdateCheckService.js +380 -0
  317. package/build/services/OtaUpdateCheckService.js.map +1 -0
  318. package/build/services/PairingIdentity.d.ts +80 -0
  319. package/build/services/PairingIdentity.d.ts.map +1 -0
  320. package/build/services/PairingIdentity.js +145 -0
  321. package/build/services/PairingIdentity.js.map +1 -0
  322. package/build/services/PhoneCalendarHelpers.d.ts +32 -0
  323. package/build/services/PhoneCalendarHelpers.d.ts.map +1 -0
  324. package/build/services/PhoneCalendarHelpers.js +157 -0
  325. package/build/services/PhoneCalendarHelpers.js.map +1 -0
  326. package/build/services/PhoneCalendarService.d.ts +5 -0
  327. package/build/services/PhoneCalendarService.d.ts.map +1 -0
  328. package/build/services/PhoneCalendarService.js +45 -0
  329. package/build/services/PhoneCalendarService.js.map +1 -0
  330. package/build/services/PhoneCameraFovCoordinator.d.ts +30 -0
  331. package/build/services/PhoneCameraFovCoordinator.d.ts.map +1 -0
  332. package/build/services/PhoneCameraFovCoordinator.js +194 -0
  333. package/build/services/PhoneCameraFovCoordinator.js.map +1 -0
  334. package/build/services/PhoneLocationService.d.ts +36 -0
  335. package/build/services/PhoneLocationService.d.ts.map +1 -0
  336. package/build/services/PhoneLocationService.js +115 -0
  337. package/build/services/PhoneLocationService.js.map +1 -0
  338. package/build/services/PhoneNotificationsSync.d.ts +3 -0
  339. package/build/services/PhoneNotificationsSync.d.ts.map +1 -0
  340. package/build/services/PhoneNotificationsSync.js +37 -0
  341. package/build/services/PhoneNotificationsSync.js.map +1 -0
  342. package/build/services/PhonePhotoCoordinator.d.ts +110 -0
  343. package/build/services/PhonePhotoCoordinator.d.ts.map +1 -0
  344. package/build/services/PhonePhotoCoordinator.js +344 -0
  345. package/build/services/PhonePhotoCoordinator.js.map +1 -0
  346. package/build/services/PhoneStreamCoordinator.d.ts +175 -0
  347. package/build/services/PhoneStreamCoordinator.d.ts.map +1 -0
  348. package/build/services/PhoneStreamCoordinator.js +740 -0
  349. package/build/services/PhoneStreamCoordinator.js.map +1 -0
  350. package/build/services/PhoneVideoCoordinator.d.ts +52 -0
  351. package/build/services/PhoneVideoCoordinator.d.ts.map +1 -0
  352. package/build/services/PhoneVideoCoordinator.js +157 -0
  353. package/build/services/PhoneVideoCoordinator.js.map +1 -0
  354. package/build/services/ProviderKeyValidation.d.ts +27 -0
  355. package/build/services/ProviderKeyValidation.d.ts.map +1 -0
  356. package/build/services/ProviderKeyValidation.js +42 -0
  357. package/build/services/ProviderKeyValidation.js.map +1 -0
  358. package/build/services/STTModelManager.d.ts +65 -0
  359. package/build/services/STTModelManager.d.ts.map +1 -0
  360. package/build/services/STTModelManager.js +366 -0
  361. package/build/services/STTModelManager.js.map +1 -0
  362. package/build/services/SceneRenderer.d.ts +90 -0
  363. package/build/services/SceneRenderer.d.ts.map +1 -0
  364. package/build/services/SceneRenderer.js +274 -0
  365. package/build/services/SceneRenderer.js.map +1 -0
  366. package/build/services/SentenceTtsPipeline.d.ts +31 -0
  367. package/build/services/SentenceTtsPipeline.d.ts.map +1 -0
  368. package/build/services/SentenceTtsPipeline.js +67 -0
  369. package/build/services/SentenceTtsPipeline.js.map +1 -0
  370. package/build/services/SpeakerIdModelManager.d.ts +36 -0
  371. package/build/services/SpeakerIdModelManager.d.ts.map +1 -0
  372. package/build/services/SpeakerIdModelManager.js +132 -0
  373. package/build/services/SpeakerIdModelManager.js.map +1 -0
  374. package/build/services/SpeakerIdSync.d.ts +14 -0
  375. package/build/services/SpeakerIdSync.d.ts.map +1 -0
  376. package/build/services/SpeakerIdSync.js +62 -0
  377. package/build/services/SpeakerIdSync.js.map +1 -0
  378. package/build/services/SpeakerLabelResolver.d.ts +80 -0
  379. package/build/services/SpeakerLabelResolver.d.ts.map +1 -0
  380. package/build/services/SpeakerLabelResolver.js +108 -0
  381. package/build/services/SpeakerLabelResolver.js.map +1 -0
  382. package/build/services/SpeakerProfileStore.d.ts +90 -0
  383. package/build/services/SpeakerProfileStore.d.ts.map +1 -0
  384. package/build/services/SpeakerProfileStore.js +213 -0
  385. package/build/services/SpeakerProfileStore.js.map +1 -0
  386. package/build/services/SpeakerSegmentResolver.d.ts +87 -0
  387. package/build/services/SpeakerSegmentResolver.d.ts.map +1 -0
  388. package/build/services/SpeakerSegmentResolver.js +137 -0
  389. package/build/services/SpeakerSegmentResolver.js.map +1 -0
  390. package/build/services/StreamLifecycleController.d.ts +63 -0
  391. package/build/services/StreamLifecycleController.d.ts.map +1 -0
  392. package/build/services/StreamLifecycleController.js +148 -0
  393. package/build/services/StreamLifecycleController.js.map +1 -0
  394. package/build/services/SupportProfileSync.d.ts +22 -0
  395. package/build/services/SupportProfileSync.d.ts.map +1 -0
  396. package/build/services/SupportProfileSync.js +213 -0
  397. package/build/services/SupportProfileSync.js.map +1 -0
  398. package/build/services/TTSModelManager.d.ts +90 -0
  399. package/build/services/TTSModelManager.d.ts.map +1 -0
  400. package/build/services/TTSModelManager.js +366 -0
  401. package/build/services/TTSModelManager.js.map +1 -0
  402. package/build/services/TranscriptionRouting.d.ts +22 -0
  403. package/build/services/TranscriptionRouting.d.ts.map +1 -0
  404. package/build/services/TranscriptionRouting.js +34 -0
  405. package/build/services/TranscriptionRouting.js.map +1 -0
  406. package/build/services/TtsTextSanitizer.d.ts +5 -0
  407. package/build/services/TtsTextSanitizer.d.ts.map +1 -0
  408. package/build/services/TtsTextSanitizer.js +61 -0
  409. package/build/services/TtsTextSanitizer.js.map +1 -0
  410. package/build/services/UIRouter.d.ts +137 -0
  411. package/build/services/UIRouter.d.ts.map +1 -0
  412. package/build/services/UIRouter.js +210 -0
  413. package/build/services/UIRouter.js.map +1 -0
  414. package/build/services/WebviewBridge.d.ts +22 -0
  415. package/build/services/WebviewBridge.d.ts.map +1 -0
  416. package/build/services/WebviewBridge.js +47 -0
  417. package/build/services/WebviewBridge.js.map +1 -0
  418. package/build/services/WifiAdbRequest.d.ts +17 -0
  419. package/build/services/WifiAdbRequest.d.ts.map +1 -0
  420. package/build/services/WifiAdbRequest.js +35 -0
  421. package/build/services/WifiAdbRequest.js.map +1 -0
  422. package/build/services/asg/GalleryMediaIntegrityReportService.d.ts +17 -0
  423. package/build/services/asg/GalleryMediaIntegrityReportService.d.ts.map +1 -0
  424. package/build/services/asg/GalleryMediaIntegrityReportService.js +43 -0
  425. package/build/services/asg/GalleryMediaIntegrityReportService.js.map +1 -0
  426. package/build/services/asg/asgCameraApi.d.ts +208 -0
  427. package/build/services/asg/asgCameraApi.d.ts.map +1 -0
  428. package/build/services/asg/asgCameraApi.js +1480 -0
  429. package/build/services/asg/asgCameraApi.js.map +1 -0
  430. package/build/services/asg/cameraRollExportCoordinator.d.ts +60 -0
  431. package/build/services/asg/cameraRollExportCoordinator.d.ts.map +1 -0
  432. package/build/services/asg/cameraRollExportCoordinator.js +618 -0
  433. package/build/services/asg/cameraRollExportCoordinator.js.map +1 -0
  434. package/build/services/asg/cameraRollExportLedger.d.ts +44 -0
  435. package/build/services/asg/cameraRollExportLedger.d.ts.map +1 -0
  436. package/build/services/asg/cameraRollExportLedger.js +78 -0
  437. package/build/services/asg/cameraRollExportLedger.js.map +1 -0
  438. package/build/services/asg/galleryMediaValidation.d.ts +29 -0
  439. package/build/services/asg/galleryMediaValidation.d.ts.map +1 -0
  440. package/build/services/asg/galleryMediaValidation.js +149 -0
  441. package/build/services/asg/galleryMediaValidation.js.map +1 -0
  442. package/build/services/asg/galleryNotices.d.ts +33 -0
  443. package/build/services/asg/galleryNotices.d.ts.map +1 -0
  444. package/build/services/asg/galleryNotices.js +29 -0
  445. package/build/services/asg/galleryNotices.js.map +1 -0
  446. package/build/services/asg/galleryPathMigration.d.ts +3 -0
  447. package/build/services/asg/galleryPathMigration.d.ts.map +1 -0
  448. package/build/services/asg/galleryPathMigration.js +26 -0
  449. package/build/services/asg/galleryPathMigration.js.map +1 -0
  450. package/build/services/asg/gallerySettingsService.d.ts +20 -0
  451. package/build/services/asg/gallerySettingsService.d.ts.map +1 -0
  452. package/build/services/asg/gallerySettingsService.js +53 -0
  453. package/build/services/asg/gallerySettingsService.js.map +1 -0
  454. package/build/services/asg/gallerySyncNotifications.d.ts +56 -0
  455. package/build/services/asg/gallerySyncNotifications.d.ts.map +1 -0
  456. package/build/services/asg/gallerySyncNotifications.js +198 -0
  457. package/build/services/asg/gallerySyncNotifications.js.map +1 -0
  458. package/build/services/asg/gallerySyncService.d.ts +137 -0
  459. package/build/services/asg/gallerySyncService.d.ts.map +1 -0
  460. package/build/services/asg/gallerySyncService.js +1945 -0
  461. package/build/services/asg/gallerySyncService.js.map +1 -0
  462. package/build/services/asg/galleryTransferLedger.d.ts +58 -0
  463. package/build/services/asg/galleryTransferLedger.d.ts.map +1 -0
  464. package/build/services/asg/galleryTransferLedger.js +225 -0
  465. package/build/services/asg/galleryTransferLedger.js.map +1 -0
  466. package/build/services/asg/localNetworkTransport.d.ts +15 -0
  467. package/build/services/asg/localNetworkTransport.d.ts.map +1 -0
  468. package/build/services/asg/localNetworkTransport.js +144 -0
  469. package/build/services/asg/localNetworkTransport.js.map +1 -0
  470. package/build/services/asg/localStorageService.d.ts +146 -0
  471. package/build/services/asg/localStorageService.d.ts.map +1 -0
  472. package/build/services/asg/localStorageService.js +572 -0
  473. package/build/services/asg/localStorageService.js.map +1 -0
  474. package/build/services/asg/mediaProcessingQueue.d.ts +70 -0
  475. package/build/services/asg/mediaProcessingQueue.d.ts.map +1 -0
  476. package/build/services/asg/mediaProcessingQueue.js +451 -0
  477. package/build/services/asg/mediaProcessingQueue.js.map +1 -0
  478. package/build/services/audioPlaybackAssets.d.ts +8 -0
  479. package/build/services/audioPlaybackAssets.d.ts.map +1 -0
  480. package/build/services/audioPlaybackAssets.js +7 -0
  481. package/build/services/audioPlaybackAssets.js.map +1 -0
  482. package/build/services/blobPaths.d.ts +31 -0
  483. package/build/services/blobPaths.d.ts.map +1 -0
  484. package/build/services/blobPaths.js +86 -0
  485. package/build/services/blobPaths.js.map +1 -0
  486. package/build/services/cloudStreamApi.d.ts +59 -0
  487. package/build/services/cloudStreamApi.d.ts.map +1 -0
  488. package/build/services/cloudStreamApi.js +81 -0
  489. package/build/services/cloudStreamApi.js.map +1 -0
  490. package/build/services/effectiveCapabilities.d.ts +8 -0
  491. package/build/services/effectiveCapabilities.d.ts.map +1 -0
  492. package/build/services/effectiveCapabilities.js +23 -0
  493. package/build/services/effectiveCapabilities.js.map +1 -0
  494. package/build/services/gallerySyncClock.d.ts +17 -0
  495. package/build/services/gallerySyncClock.d.ts.map +1 -0
  496. package/build/services/gallerySyncClock.js +21 -0
  497. package/build/services/gallerySyncClock.js.map +1 -0
  498. package/build/services/glassesClockSync.d.ts +20 -0
  499. package/build/services/glassesClockSync.d.ts.map +1 -0
  500. package/build/services/glassesClockSync.js +97 -0
  501. package/build/services/glassesClockSync.js.map +1 -0
  502. package/build/services/manifestActions.d.ts +31 -0
  503. package/build/services/manifestActions.d.ts.map +1 -0
  504. package/build/services/manifestActions.js +54 -0
  505. package/build/services/manifestActions.js.map +1 -0
  506. package/build/services/manifestVersionGate.d.ts +28 -0
  507. package/build/services/manifestVersionGate.d.ts.map +1 -0
  508. package/build/services/manifestVersionGate.js +41 -0
  509. package/build/services/manifestVersionGate.js.map +1 -0
  510. package/build/services/memoryStoreInstance.d.ts +19 -0
  511. package/build/services/memoryStoreInstance.d.ts.map +1 -0
  512. package/build/services/memoryStoreInstance.js +65 -0
  513. package/build/services/memoryStoreInstance.js.map +1 -0
  514. package/build/services/navigation/roadNameResolver.d.ts +67 -0
  515. package/build/services/navigation/roadNameResolver.d.ts.map +1 -0
  516. package/build/services/navigation/roadNameResolver.js +87 -0
  517. package/build/services/navigation/roadNameResolver.js.map +1 -0
  518. package/build/services/navigation/routesApiCodec.d.ts +38 -0
  519. package/build/services/navigation/routesApiCodec.d.ts.map +1 -0
  520. package/build/services/navigation/routesApiCodec.js +68 -0
  521. package/build/services/navigation/routesApiCodec.js.map +1 -0
  522. package/build/services/otaDisplayState.d.ts +53 -0
  523. package/build/services/otaDisplayState.d.ts.map +1 -0
  524. package/build/services/otaDisplayState.js +114 -0
  525. package/build/services/otaDisplayState.js.map +1 -0
  526. package/build/services/otaInstallPolicy.d.ts +93 -0
  527. package/build/services/otaInstallPolicy.d.ts.map +1 -0
  528. package/build/services/otaInstallPolicy.js +117 -0
  529. package/build/services/otaInstallPolicy.js.map +1 -0
  530. package/build/services/otaLegacyMapping.d.ts +22 -0
  531. package/build/services/otaLegacyMapping.d.ts.map +1 -0
  532. package/build/services/otaLegacyMapping.js +56 -0
  533. package/build/services/otaLegacyMapping.js.map +1 -0
  534. package/build/services/otaManifestUrl.d.ts +2 -0
  535. package/build/services/otaManifestUrl.d.ts.map +1 -0
  536. package/build/services/otaManifestUrl.js +46 -0
  537. package/build/services/otaManifestUrl.js.map +1 -0
  538. package/build/services/slimStreamStatus.d.ts +18 -0
  539. package/build/services/slimStreamStatus.d.ts.map +1 -0
  540. package/build/services/slimStreamStatus.js +36 -0
  541. package/build/services/slimStreamStatus.js.map +1 -0
  542. package/build/services/soniox/SonioxDirectService.d.ts +109 -0
  543. package/build/services/soniox/SonioxDirectService.d.ts.map +1 -0
  544. package/build/services/soniox/SonioxDirectService.js +449 -0
  545. package/build/services/soniox/SonioxDirectService.js.map +1 -0
  546. package/build/services/soniox/SonioxRealtimeClient.d.ts +121 -0
  547. package/build/services/soniox/SonioxRealtimeClient.d.ts.map +1 -0
  548. package/build/services/soniox/SonioxRealtimeClient.js +301 -0
  549. package/build/services/soniox/SonioxRealtimeClient.js.map +1 -0
  550. package/build/services/soniox/SonioxTokenAssembler.d.ts +98 -0
  551. package/build/services/soniox/SonioxTokenAssembler.d.ts.map +1 -0
  552. package/build/services/soniox/SonioxTokenAssembler.js +394 -0
  553. package/build/services/soniox/SonioxTokenAssembler.js.map +1 -0
  554. package/build/services/speakerProfileStoreInstance.d.ts +8 -0
  555. package/build/services/speakerProfileStoreInstance.d.ts.map +1 -0
  556. package/build/services/speakerProfileStoreInstance.js +24 -0
  557. package/build/services/speakerProfileStoreInstance.js.map +1 -0
  558. package/build/services/uiShim.d.ts +38 -0
  559. package/build/services/uiShim.d.ts.map +1 -0
  560. package/build/services/uiShim.js +369 -0
  561. package/build/services/uiShim.js.map +1 -0
  562. package/build/stores/apps.d.ts +104 -0
  563. package/build/stores/apps.d.ts.map +1 -0
  564. package/build/stores/apps.js +503 -0
  565. package/build/stores/apps.js.map +1 -0
  566. package/build/stores/bluetoothSettingKeys.d.ts +4 -0
  567. package/build/stores/bluetoothSettingKeys.d.ts.map +1 -0
  568. package/build/stores/bluetoothSettingKeys.js +33 -0
  569. package/build/stores/bluetoothSettingKeys.js.map +1 -0
  570. package/build/stores/cloudClientStatus.d.ts +9 -0
  571. package/build/stores/cloudClientStatus.d.ts.map +1 -0
  572. package/build/stores/cloudClientStatus.js +24 -0
  573. package/build/stores/cloudClientStatus.js.map +1 -0
  574. package/build/stores/connection.d.ts +22 -0
  575. package/build/stores/connection.d.ts.map +1 -0
  576. package/build/stores/connection.js +43 -0
  577. package/build/stores/connection.js.map +1 -0
  578. package/build/stores/core.d.ts +15 -0
  579. package/build/stores/core.d.ts.map +1 -0
  580. package/build/stores/core.js +21 -0
  581. package/build/stores/core.js.map +1 -0
  582. package/build/stores/display.d.ts +24 -0
  583. package/build/stores/display.d.ts.map +1 -0
  584. package/build/stores/display.js +96 -0
  585. package/build/stores/display.js.map +1 -0
  586. package/build/stores/gallerySync.d.ts +103 -0
  587. package/build/stores/gallerySync.d.ts.map +1 -0
  588. package/build/stores/gallerySync.js +219 -0
  589. package/build/stores/gallerySync.js.map +1 -0
  590. package/build/stores/glasses.d.ts +62 -0
  591. package/build/stores/glasses.d.ts.map +1 -0
  592. package/build/stores/glasses.js +208 -0
  593. package/build/stores/glasses.js.map +1 -0
  594. package/build/stores/settings.d.ts +54 -0
  595. package/build/stores/settings.d.ts.map +1 -0
  596. package/build/stores/settings.js +1200 -0
  597. package/build/stores/settings.js.map +1 -0
  598. package/build/stores/transcriptionDebug.d.ts +25 -0
  599. package/build/stores/transcriptionDebug.d.ts.map +1 -0
  600. package/build/stores/transcriptionDebug.js +0 -0
  601. package/build/stores/transcriptionDebug.js.map +1 -0
  602. package/build/types/applet.d.ts +101 -0
  603. package/build/types/applet.d.ts.map +1 -0
  604. package/build/types/applet.js +5 -0
  605. package/build/types/applet.js.map +1 -0
  606. package/build/types/asg.d.ts +53 -0
  607. package/build/types/asg.d.ts.map +1 -0
  608. package/build/types/asg.js +2 -0
  609. package/build/types/asg.js.map +1 -0
  610. package/build/types/capabilities/even-realities-g1.d.ts +12 -0
  611. package/build/types/capabilities/even-realities-g1.d.ts.map +1 -0
  612. package/build/types/capabilities/even-realities-g1.js +57 -0
  613. package/build/types/capabilities/even-realities-g1.js.map +1 -0
  614. package/build/types/capabilities/even-realities-g2.d.ts +12 -0
  615. package/build/types/capabilities/even-realities-g2.d.ts.map +1 -0
  616. package/build/types/capabilities/even-realities-g2.js +83 -0
  617. package/build/types/capabilities/even-realities-g2.js.map +1 -0
  618. package/build/types/capabilities/mentra-display.d.ts +12 -0
  619. package/build/types/capabilities/mentra-display.d.ts.map +1 -0
  620. package/build/types/capabilities/mentra-display.js +65 -0
  621. package/build/types/capabilities/mentra-display.js.map +1 -0
  622. package/build/types/capabilities/mentra-live.d.ts +12 -0
  623. package/build/types/capabilities/mentra-live.d.ts.map +1 -0
  624. package/build/types/capabilities/mentra-live.js +94 -0
  625. package/build/types/capabilities/mentra-live.js.map +1 -0
  626. package/build/types/capabilities/nimo.d.ts +13 -0
  627. package/build/types/capabilities/nimo.d.ts.map +1 -0
  628. package/build/types/capabilities/nimo.js +72 -0
  629. package/build/types/capabilities/nimo.js.map +1 -0
  630. package/build/types/capabilities/none.d.ts +13 -0
  631. package/build/types/capabilities/none.d.ts.map +1 -0
  632. package/build/types/capabilities/none.js +67 -0
  633. package/build/types/capabilities/none.js.map +1 -0
  634. package/build/types/capabilities/simulated-glasses.d.ts +13 -0
  635. package/build/types/capabilities/simulated-glasses.d.ts.map +1 -0
  636. package/build/types/capabilities/simulated-glasses.js +82 -0
  637. package/build/types/capabilities/simulated-glasses.js.map +1 -0
  638. package/build/types/capabilities/vuzix-z100.d.ts +12 -0
  639. package/build/types/capabilities/vuzix-z100.d.ts.map +1 -0
  640. package/build/types/capabilities/vuzix-z100.js +54 -0
  641. package/build/types/capabilities/vuzix-z100.js.map +1 -0
  642. package/build/types/enums.d.ts +22 -0
  643. package/build/types/enums.d.ts.map +1 -0
  644. package/build/types/enums.js +27 -0
  645. package/build/types/enums.js.map +1 -0
  646. package/build/types/hardware.d.ts +155 -0
  647. package/build/types/hardware.d.ts.map +1 -0
  648. package/build/types/hardware.js +52 -0
  649. package/build/types/hardware.js.map +1 -0
  650. package/build/types/index.d.ts +11 -0
  651. package/build/types/index.d.ts.map +1 -0
  652. package/build/types/index.js +10 -0
  653. package/build/types/index.js.map +1 -0
  654. package/build/utils/GlobalEventEmitter.d.ts +11 -0
  655. package/build/utils/GlobalEventEmitter.d.ts.map +1 -0
  656. package/build/utils/GlobalEventEmitter.js +14 -0
  657. package/build/utils/GlobalEventEmitter.js.map +1 -0
  658. package/build/utils/cloudClient/RnUdpAdapter.d.ts +3 -0
  659. package/build/utils/cloudClient/RnUdpAdapter.d.ts.map +1 -0
  660. package/build/utils/cloudClient/RnUdpAdapter.js +41 -0
  661. package/build/utils/cloudClient/RnUdpAdapter.js.map +1 -0
  662. package/build/utils/cloudClient/cloudSecureStore.d.ts +3 -0
  663. package/build/utils/cloudClient/cloudSecureStore.d.ts.map +1 -0
  664. package/build/utils/cloudClient/cloudSecureStore.js +26 -0
  665. package/build/utils/cloudClient/cloudSecureStore.js.map +1 -0
  666. package/build/utils/configuredDevHost.d.ts +6 -0
  667. package/build/utils/configuredDevHost.d.ts.map +1 -0
  668. package/build/utils/configuredDevHost.js +19 -0
  669. package/build/utils/configuredDevHost.js.map +1 -0
  670. package/build/utils/debouncedPatch.d.ts +6 -0
  671. package/build/utils/debouncedPatch.d.ts.map +1 -0
  672. package/build/utils/debouncedPatch.js +25 -0
  673. package/build/utils/debouncedPatch.js.map +1 -0
  674. package/build/utils/devLogging.d.ts +26 -0
  675. package/build/utils/devLogging.d.ts.map +1 -0
  676. package/build/utils/devLogging.js +116 -0
  677. package/build/utils/devLogging.js.map +1 -0
  678. package/build/utils/devMiniappLaunch.d.ts +55 -0
  679. package/build/utils/devMiniappLaunch.d.ts.map +1 -0
  680. package/build/utils/devMiniappLaunch.js +175 -0
  681. package/build/utils/devMiniappLaunch.js.map +1 -0
  682. package/build/utils/diagnosticContext.d.ts +3 -0
  683. package/build/utils/diagnosticContext.d.ts.map +1 -0
  684. package/build/utils/diagnosticContext.js +122 -0
  685. package/build/utils/diagnosticContext.js.map +1 -0
  686. package/build/utils/display/composer/ColumnComposer.d.ts +131 -0
  687. package/build/utils/display/composer/ColumnComposer.d.ts.map +1 -0
  688. package/build/utils/display/composer/ColumnComposer.js +204 -0
  689. package/build/utils/display/composer/ColumnComposer.js.map +1 -0
  690. package/build/utils/display/composer/index.d.ts +9 -0
  691. package/build/utils/display/composer/index.d.ts.map +1 -0
  692. package/build/utils/display/composer/index.js +9 -0
  693. package/build/utils/display/composer/index.js.map +1 -0
  694. package/build/utils/display/helpers/DisplayHelpers.d.ts +165 -0
  695. package/build/utils/display/helpers/DisplayHelpers.d.ts.map +1 -0
  696. package/build/utils/display/helpers/DisplayHelpers.js +312 -0
  697. package/build/utils/display/helpers/DisplayHelpers.js.map +1 -0
  698. package/build/utils/display/helpers/ScrollView.d.ts +183 -0
  699. package/build/utils/display/helpers/ScrollView.d.ts.map +1 -0
  700. package/build/utils/display/helpers/ScrollView.js +257 -0
  701. package/build/utils/display/helpers/ScrollView.js.map +1 -0
  702. package/build/utils/display/helpers/index.d.ts +11 -0
  703. package/build/utils/display/helpers/index.d.ts.map +1 -0
  704. package/build/utils/display/helpers/index.js +10 -0
  705. package/build/utils/display/helpers/index.js.map +1 -0
  706. package/build/utils/display/index.d.ts +174 -0
  707. package/build/utils/display/index.d.ts.map +1 -0
  708. package/build/utils/display/index.js +188 -0
  709. package/build/utils/display/index.js.map +1 -0
  710. package/build/utils/display/measurer/TextMeasurer.d.ts +160 -0
  711. package/build/utils/display/measurer/TextMeasurer.d.ts.map +1 -0
  712. package/build/utils/display/measurer/TextMeasurer.js +273 -0
  713. package/build/utils/display/measurer/TextMeasurer.js.map +1 -0
  714. package/build/utils/display/measurer/index.d.ts +10 -0
  715. package/build/utils/display/measurer/index.d.ts.map +1 -0
  716. package/build/utils/display/measurer/index.js +11 -0
  717. package/build/utils/display/measurer/index.js.map +1 -0
  718. package/build/utils/display/measurer/script-detection.d.ts +53 -0
  719. package/build/utils/display/measurer/script-detection.d.ts.map +1 -0
  720. package/build/utils/display/measurer/script-detection.js +184 -0
  721. package/build/utils/display/measurer/script-detection.js.map +1 -0
  722. package/build/utils/display/profiles/g1.d.ts +33 -0
  723. package/build/utils/display/profiles/g1.d.ts.map +1 -0
  724. package/build/utils/display/profiles/g1.js +213 -0
  725. package/build/utils/display/profiles/g1.js.map +1 -0
  726. package/build/utils/display/profiles/g2.d.ts +13 -0
  727. package/build/utils/display/profiles/g2.d.ts.map +1 -0
  728. package/build/utils/display/profiles/g2.js +34 -0
  729. package/build/utils/display/profiles/g2.js.map +1 -0
  730. package/build/utils/display/profiles/index.d.ts +12 -0
  731. package/build/utils/display/profiles/index.d.ts.map +1 -0
  732. package/build/utils/display/profiles/index.js +15 -0
  733. package/build/utils/display/profiles/index.js.map +1 -0
  734. package/build/utils/display/profiles/nex.d.ts +10 -0
  735. package/build/utils/display/profiles/nex.d.ts.map +1 -0
  736. package/build/utils/display/profiles/nex.js +150 -0
  737. package/build/utils/display/profiles/nex.js.map +1 -0
  738. package/build/utils/display/profiles/types.d.ts +103 -0
  739. package/build/utils/display/profiles/types.d.ts.map +1 -0
  740. package/build/utils/display/profiles/types.js +2 -0
  741. package/build/utils/display/profiles/types.js.map +1 -0
  742. package/build/utils/display/profiles/z100.d.ts +33 -0
  743. package/build/utils/display/profiles/z100.d.ts.map +1 -0
  744. package/build/utils/display/profiles/z100.js +182 -0
  745. package/build/utils/display/profiles/z100.js.map +1 -0
  746. package/build/utils/display/scene/anchor.d.ts +17 -0
  747. package/build/utils/display/scene/anchor.d.ts.map +1 -0
  748. package/build/utils/display/scene/anchor.js +33 -0
  749. package/build/utils/display/scene/anchor.js.map +1 -0
  750. package/build/utils/display/scene/degrade.d.ts +25 -0
  751. package/build/utils/display/scene/degrade.d.ts.map +1 -0
  752. package/build/utils/display/scene/degrade.js +64 -0
  753. package/build/utils/display/scene/degrade.js.map +1 -0
  754. package/build/utils/display/scene/differ.d.ts +38 -0
  755. package/build/utils/display/scene/differ.d.ts.map +1 -0
  756. package/build/utils/display/scene/differ.js +107 -0
  757. package/build/utils/display/scene/differ.js.map +1 -0
  758. package/build/utils/display/scene/index.d.ts +11 -0
  759. package/build/utils/display/scene/index.d.ts.map +1 -0
  760. package/build/utils/display/scene/index.js +7 -0
  761. package/build/utils/display/scene/index.js.map +1 -0
  762. package/build/utils/display/scene/process.d.ts +35 -0
  763. package/build/utils/display/scene/process.d.ts.map +1 -0
  764. package/build/utils/display/scene/process.js +201 -0
  765. package/build/utils/display/scene/process.js.map +1 -0
  766. package/build/utils/display/scene/store.d.ts +48 -0
  767. package/build/utils/display/scene/store.d.ts.map +1 -0
  768. package/build/utils/display/scene/store.js +0 -0
  769. package/build/utils/display/scene/store.js.map +1 -0
  770. package/build/utils/display/scene/types.d.ts +139 -0
  771. package/build/utils/display/scene/types.d.ts.map +1 -0
  772. package/build/utils/display/scene/types.js +0 -0
  773. package/build/utils/display/scene/types.js.map +1 -0
  774. package/build/utils/display/wrapper/TextWrapper.d.ts +102 -0
  775. package/build/utils/display/wrapper/TextWrapper.d.ts.map +1 -0
  776. package/build/utils/display/wrapper/TextWrapper.js +471 -0
  777. package/build/utils/display/wrapper/TextWrapper.js.map +1 -0
  778. package/build/utils/display/wrapper/index.d.ts +12 -0
  779. package/build/utils/display/wrapper/index.d.ts.map +1 -0
  780. package/build/utils/display/wrapper/index.js +12 -0
  781. package/build/utils/display/wrapper/index.js.map +1 -0
  782. package/build/utils/display/wrapper/types.d.ts +75 -0
  783. package/build/utils/display/wrapper/types.d.ts.map +1 -0
  784. package/build/utils/display/wrapper/types.js +11 -0
  785. package/build/utils/display/wrapper/types.js.map +1 -0
  786. package/build/utils/e2eMetrics.d.ts +6 -0
  787. package/build/utils/e2eMetrics.d.ts.map +1 -0
  788. package/build/utils/e2eMetrics.js +27 -0
  789. package/build/utils/e2eMetrics.js.map +1 -0
  790. package/build/utils/hardware/hardware.d.ts +42 -0
  791. package/build/utils/hardware/hardware.d.ts.map +1 -0
  792. package/build/utils/hardware/hardware.js +131 -0
  793. package/build/utils/hardware/hardware.js.map +1 -0
  794. package/build/utils/hardware/index.d.ts +2 -0
  795. package/build/utils/hardware/index.d.ts.map +1 -0
  796. package/build/utils/hardware/index.js +2 -0
  797. package/build/utils/hardware/index.js.map +1 -0
  798. package/build/utils/memory/search.d.ts +72 -0
  799. package/build/utils/memory/search.d.ts.map +1 -0
  800. package/build/utils/memory/search.js +178 -0
  801. package/build/utils/memory/search.js.map +1 -0
  802. package/build/utils/miniappDiagnostics.d.ts +64 -0
  803. package/build/utils/miniappDiagnostics.d.ts.map +1 -0
  804. package/build/utils/miniappDiagnostics.js +173 -0
  805. package/build/utils/miniappDiagnostics.js.map +1 -0
  806. package/build/utils/miniappGlobals.d.ts +59 -0
  807. package/build/utils/miniappGlobals.d.ts.map +1 -0
  808. package/build/utils/miniappGlobals.js +223 -0
  809. package/build/utils/miniappGlobals.js.map +1 -0
  810. package/build/utils/permissions/MediaLibraryPermissions.d.ts +45 -0
  811. package/build/utils/permissions/MediaLibraryPermissions.d.ts.map +1 -0
  812. package/build/utils/permissions/MediaLibraryPermissions.js +145 -0
  813. package/build/utils/permissions/MediaLibraryPermissions.js.map +1 -0
  814. package/build/utils/permissions/galleryDisplayName.d.ts +8 -0
  815. package/build/utils/permissions/galleryDisplayName.d.ts.map +1 -0
  816. package/build/utils/permissions/galleryDisplayName.js +25 -0
  817. package/build/utils/permissions/galleryDisplayName.js.map +1 -0
  818. package/build/utils/speakerEmbedding.d.ts +8 -0
  819. package/build/utils/speakerEmbedding.d.ts.map +1 -0
  820. package/build/utils/speakerEmbedding.js +63 -0
  821. package/build/utils/speakerEmbedding.js.map +1 -0
  822. package/build/utils/storage/index.d.ts +3 -0
  823. package/build/utils/storage/index.d.ts.map +1 -0
  824. package/build/utils/storage/index.js +3 -0
  825. package/build/utils/storage/index.js.map +1 -0
  826. package/build/utils/storage/storage.d.ts +24 -0
  827. package/build/utils/storage/storage.d.ts.map +1 -0
  828. package/build/utils/storage/storage.js +85 -0
  829. package/build/utils/storage/storage.js.map +1 -0
  830. package/build/utils/storage/zip.d.ts +3 -0
  831. package/build/utils/storage/zip.d.ts.map +1 -0
  832. package/build/utils/storage/zip.js +14 -0
  833. package/build/utils/storage/zip.js.map +1 -0
  834. package/build/utils/timers/index.d.ts +3 -0
  835. package/build/utils/timers/index.d.ts.map +1 -0
  836. package/build/utils/timers/index.js +3 -0
  837. package/build/utils/timers/index.js.map +1 -0
  838. package/build/utils/timers/timers.d.ts +9 -0
  839. package/build/utils/timers/timers.d.ts.map +1 -0
  840. package/build/utils/timers/timers.js +142 -0
  841. package/build/utils/timers/timers.js.map +1 -0
  842. package/package.json +122 -0
  843. package/src/assets/silence.wav +0 -0
  844. package/src/devtools.ts +13 -0
  845. package/src/engine.ts +198 -0
  846. package/src/facades/dev.ts +213 -0
  847. package/src/facades/display.ts +17 -0
  848. package/src/facades/displayMirror.ts +33 -0
  849. package/src/facades/gallery.ts +69 -0
  850. package/src/facades/glasses.ts +219 -0
  851. package/src/facades/glassesSettings.ts +57 -0
  852. package/src/facades/glassesWifi.ts +68 -0
  853. package/src/facades/maps.ts +13 -0
  854. package/src/facades/memory.ts +46 -0
  855. package/src/facades/miniapps.ts +62 -0
  856. package/src/facades/notifications.ts +14 -0
  857. package/src/facades/ota.ts +177 -0
  858. package/src/facades/pairing.ts +329 -0
  859. package/src/facades/permissions.ts +165 -0
  860. package/src/facades/phoneNotifications.ts +41 -0
  861. package/src/facades/providerKeys.ts +31 -0
  862. package/src/facades/reports.ts +180 -0
  863. package/src/facades/session.ts +54 -0
  864. package/src/facades/settings.ts +57 -0
  865. package/src/facades/speakers.ts +152 -0
  866. package/src/facades/speech.ts +49 -0
  867. package/src/index.ts +214 -0
  868. package/src/internal.ts +155 -0
  869. package/src/runtime/bootstrap.ts +159 -0
  870. package/src/runtime/config.ts +155 -0
  871. package/src/runtime/scanQrSeam.ts +20 -0
  872. package/src/runtime/streamConfig.ts +34 -0
  873. package/src/services/AiTierResolution.ts +106 -0
  874. package/src/services/AppRegistry.ts +1245 -0
  875. package/src/services/AudioCloudUplink.ts +56 -0
  876. package/src/services/AudioPlaybackService.ts +873 -0
  877. package/src/services/AutomaticReportResult.ts +50 -0
  878. package/src/services/BlobStore.ts +823 -0
  879. package/src/services/CaptionsTesterReportService.ts +107 -0
  880. package/src/services/CloudAudioSubscriptionSync.ts +53 -0
  881. package/src/services/CloudClientService.ts +1031 -0
  882. package/src/services/CloudTranscriptE2EMetrics.ts +27 -0
  883. package/src/services/ConnectionCoordinator.ts +65 -0
  884. package/src/services/DevServerBridge.ts +334 -0
  885. package/src/services/DeviceEventRouter.ts +266 -0
  886. package/src/services/DeviceStoreHydration.ts +130 -0
  887. package/src/services/DisplayProcessor.ts +775 -0
  888. package/src/services/ForegroundLocationPermission.ts +24 -0
  889. package/src/services/GlassesReadiness.ts +103 -0
  890. package/src/services/GlassesSettingsSync.ts +140 -0
  891. package/src/services/GlassesStatusProjection.ts +73 -0
  892. package/src/services/HeadingService.ts +122 -0
  893. package/src/services/HotspotOtaTransport.ts +184 -0
  894. package/src/services/HotspotShutdown.ts +41 -0
  895. package/src/services/JSCrashController.ts +189 -0
  896. package/src/services/JSCrashloopReportService.ts +66 -0
  897. package/src/services/JSLogPipeline.ts +166 -0
  898. package/src/services/JSRouter.ts +555 -0
  899. package/src/services/LocalDisplayManager.ts +815 -0
  900. package/src/services/LocalMiniappDataMigration.ts +102 -0
  901. package/src/services/LocalMiniappRuntime.ts +5747 -0
  902. package/src/services/LocalMiniappStorage.ts +82 -0
  903. package/src/services/LocalMiniappUserIdentity.ts +79 -0
  904. package/src/services/LocalSttFallbackCoordinator.ts +247 -0
  905. package/src/services/MapboxTokenService.ts +118 -0
  906. package/src/services/MemoryCapture.ts +61 -0
  907. package/src/services/MemoryStore.ts +633 -0
  908. package/src/services/MicStateCoordinator.ts +259 -0
  909. package/src/services/MiniappEngine.ts +143 -0
  910. package/src/services/MiniappLauncher.ts +365 -0
  911. package/src/services/MiniappLiveness.ts +24 -0
  912. package/src/services/MiniappRunningRegistry.ts +57 -0
  913. package/src/services/NativeHttpResponse.ts +6 -0
  914. package/src/services/NativeNavigationService.ts +176 -0
  915. package/src/services/NavigationHandlers.ts +527 -0
  916. package/src/services/NavigationService.ts +926 -0
  917. package/src/services/NotificationsEmitter.ts +49 -0
  918. package/src/services/OfflineSpeechModelService.ts +168 -0
  919. package/src/services/OtaArtifactDownloader.ts +312 -0
  920. package/src/services/OtaInstallCoordinator.ts +1707 -0
  921. package/src/services/OtaService.ts +89 -0
  922. package/src/services/OtaUpdateCheckService.ts +550 -0
  923. package/src/services/PairingIdentity.ts +154 -0
  924. package/src/services/PhoneCalendarHelpers.ts +212 -0
  925. package/src/services/PhoneCalendarService.ts +61 -0
  926. package/src/services/PhoneCameraFovCoordinator.ts +210 -0
  927. package/src/services/PhoneLocationService.ts +120 -0
  928. package/src/services/PhoneNotificationsSync.ts +46 -0
  929. package/src/services/PhonePhotoCoordinator.ts +435 -0
  930. package/src/services/PhoneStreamCoordinator.ts +874 -0
  931. package/src/services/PhoneVideoCoordinator.ts +203 -0
  932. package/src/services/ProviderKeyValidation.ts +57 -0
  933. package/src/services/STTModelManager.ts +434 -0
  934. package/src/services/SceneRenderer.ts +320 -0
  935. package/src/services/SentenceTtsPipeline.ts +106 -0
  936. package/src/services/SpeakerIdModelManager.ts +151 -0
  937. package/src/services/SpeakerIdSync.ts +79 -0
  938. package/src/services/SpeakerLabelResolver.ts +140 -0
  939. package/src/services/SpeakerProfileStore.ts +265 -0
  940. package/src/services/SpeakerSegmentResolver.ts +194 -0
  941. package/src/services/StreamLifecycleController.ts +203 -0
  942. package/src/services/SupportProfileSync.ts +218 -0
  943. package/src/services/TTSModelManager.ts +466 -0
  944. package/src/services/TranscriptionRouting.ts +47 -0
  945. package/src/services/TtsTextSanitizer.ts +66 -0
  946. package/src/services/UIRouter.ts +250 -0
  947. package/src/services/WebviewBridge.ts +50 -0
  948. package/src/services/WifiAdbRequest.ts +53 -0
  949. package/src/services/asg/GalleryMediaIntegrityReportService.ts +72 -0
  950. package/src/services/asg/asgCameraApi.ts +1786 -0
  951. package/src/services/asg/cameraRollExportCoordinator.ts +627 -0
  952. package/src/services/asg/cameraRollExportLedger.ts +122 -0
  953. package/src/services/asg/galleryMediaValidation.ts +185 -0
  954. package/src/services/asg/galleryNotices.ts +61 -0
  955. package/src/services/asg/galleryPathMigration.ts +22 -0
  956. package/src/services/asg/gallerySettingsService.ts +68 -0
  957. package/src/services/asg/gallerySyncNotifications.ts +235 -0
  958. package/src/services/asg/gallerySyncService.ts +2278 -0
  959. package/src/services/asg/galleryTransferLedger.ts +312 -0
  960. package/src/services/asg/localNetworkTransport.ts +169 -0
  961. package/src/services/asg/localStorageService.ts +652 -0
  962. package/src/services/asg/mediaProcessingQueue.ts +518 -0
  963. package/src/services/audioPlaybackAssets.ts +8 -0
  964. package/src/services/blobPaths.ts +86 -0
  965. package/src/services/cloudStreamApi.ts +142 -0
  966. package/src/services/effectiveCapabilities.ts +27 -0
  967. package/src/services/gallerySyncClock.ts +39 -0
  968. package/src/services/glassesClockSync.ts +115 -0
  969. package/src/services/manifestActions.ts +80 -0
  970. package/src/services/manifestVersionGate.ts +43 -0
  971. package/src/services/memoryStoreInstance.ts +70 -0
  972. package/src/services/navigation/roadNameResolver.ts +103 -0
  973. package/src/services/navigation/routesApiCodec.ts +69 -0
  974. package/src/services/otaDisplayState.ts +156 -0
  975. package/src/services/otaInstallPolicy.ts +132 -0
  976. package/src/services/otaLegacyMapping.ts +71 -0
  977. package/src/services/otaManifestUrl.ts +53 -0
  978. package/src/services/slimStreamStatus.ts +39 -0
  979. package/src/services/soniox/SonioxDirectService.ts +517 -0
  980. package/src/services/soniox/SonioxRealtimeClient.ts +349 -0
  981. package/src/services/soniox/SonioxTokenAssembler.ts +451 -0
  982. package/src/services/speakerProfileStoreInstance.ts +25 -0
  983. package/src/services/uiShim.ts +375 -0
  984. package/src/stores/apps.ts +626 -0
  985. package/src/stores/bluetoothSettingKeys.ts +35 -0
  986. package/src/stores/cloudClientStatus.ts +37 -0
  987. package/src/stores/connection.ts +69 -0
  988. package/src/stores/core.ts +32 -0
  989. package/src/stores/display.ts +121 -0
  990. package/src/stores/gallerySync.ts +384 -0
  991. package/src/stores/glasses.ts +314 -0
  992. package/src/stores/settings.ts +1299 -0
  993. package/src/stores/transcriptionDebug.ts +0 -0
  994. package/src/types/applet.ts +121 -0
  995. package/src/types/asg.ts +58 -0
  996. package/src/types/capabilities/even-realities-g1.ts +70 -0
  997. package/src/types/capabilities/even-realities-g2.ts +98 -0
  998. package/src/types/capabilities/mentra-display.ts +78 -0
  999. package/src/types/capabilities/mentra-live.ts +106 -0
  1000. package/src/types/capabilities/nimo.ts +84 -0
  1001. package/src/types/capabilities/none.ts +79 -0
  1002. package/src/types/capabilities/simulated-glasses.ts +95 -0
  1003. package/src/types/capabilities/vuzix-z100.ts +67 -0
  1004. package/src/types/enums.ts +27 -0
  1005. package/src/types/hardware.ts +220 -0
  1006. package/src/types/index.ts +38 -0
  1007. package/src/utils/GlobalEventEmitter.ts +15 -0
  1008. package/src/utils/cloudClient/RnUdpAdapter.ts +47 -0
  1009. package/src/utils/cloudClient/cloudSecureStore.ts +28 -0
  1010. package/src/utils/configuredDevHost.ts +17 -0
  1011. package/src/utils/debouncedPatch.ts +28 -0
  1012. package/src/utils/devLogging.ts +140 -0
  1013. package/src/utils/devMiniappLaunch.ts +196 -0
  1014. package/src/utils/diagnosticContext.ts +159 -0
  1015. package/src/utils/display/composer/ColumnComposer.ts +285 -0
  1016. package/src/utils/display/composer/index.ts +15 -0
  1017. package/src/utils/display/helpers/DisplayHelpers.ts +409 -0
  1018. package/src/utils/display/helpers/ScrollView.ts +326 -0
  1019. package/src/utils/display/helpers/index.ts +14 -0
  1020. package/src/utils/display/index.ts +273 -0
  1021. package/src/utils/display/measurer/TextMeasurer.ts +346 -0
  1022. package/src/utils/display/measurer/index.ts +21 -0
  1023. package/src/utils/display/measurer/script-detection.ts +218 -0
  1024. package/src/utils/display/profiles/g1.ts +236 -0
  1025. package/src/utils/display/profiles/g2.ts +39 -0
  1026. package/src/utils/display/profiles/index.ts +28 -0
  1027. package/src/utils/display/profiles/nex.ts +166 -0
  1028. package/src/utils/display/profiles/types.ts +132 -0
  1029. package/src/utils/display/profiles/z100.ts +198 -0
  1030. package/src/utils/display/scene/anchor.ts +39 -0
  1031. package/src/utils/display/scene/degrade.ts +80 -0
  1032. package/src/utils/display/scene/differ.ts +128 -0
  1033. package/src/utils/display/scene/index.ts +24 -0
  1034. package/src/utils/display/scene/process.ts +228 -0
  1035. package/src/utils/display/scene/store.ts +0 -0
  1036. package/src/utils/display/scene/types.ts +0 -0
  1037. package/src/utils/display/wrapper/TextWrapper.ts +546 -0
  1038. package/src/utils/display/wrapper/index.ts +15 -0
  1039. package/src/utils/display/wrapper/types.ts +102 -0
  1040. package/src/utils/e2eMetrics.ts +30 -0
  1041. package/src/utils/hardware/hardware.ts +171 -0
  1042. package/src/utils/hardware/index.ts +1 -0
  1043. package/src/utils/memory/search.ts +204 -0
  1044. package/src/utils/miniappDiagnostics.ts +226 -0
  1045. package/src/utils/miniappGlobals.ts +259 -0
  1046. package/src/utils/permissions/MediaLibraryPermissions.ts +161 -0
  1047. package/src/utils/permissions/galleryDisplayName.ts +28 -0
  1048. package/src/utils/speakerEmbedding.ts +58 -0
  1049. package/src/utils/storage/index.ts +2 -0
  1050. package/src/utils/storage/storage.ts +101 -0
  1051. package/src/utils/storage/zip.ts +13 -0
  1052. package/src/utils/timers/index.ts +2 -0
  1053. package/src/utils/timers/timers.ts +175 -0
@@ -0,0 +1,479 @@
1
+ /**
2
+ * NavigationHandlers — turn-by-turn navigation request handlers for
3
+ * LocalMiniappRuntime. Extracted from LocalMiniappRuntime so the
4
+ * navigation surface (Google Maps Navigation SDK adapter, multi-stop
5
+ * routes, deviation simulator, dev toggles, road-snapped GPS streaming)
6
+ * lives in one file the reviewer can read in isolation.
7
+ *
8
+ * Wire-up: LocalMiniappRuntime owns one instance, constructed with
9
+ * callbacks for sending results / events back to the miniapp. The
10
+ * dispatcher's switch statement delegates each `NAVIGATION_*` case to a
11
+ * handler here. Cross-cutting hooks (cleanup on disconnect, location-
12
+ * stream gating during a trip) are exposed via {@link onDisconnect} and
13
+ * {@link isTripActive}.
14
+ *
15
+ * State owned here:
16
+ * - navListeners: per-package unsubscribers for the nav-update +
17
+ * road-snapped-location + route streams. Detached on disconnect,
18
+ * reattached on the next NAVIGATION_START from the same package.
19
+ * - activeNavApps: packages with a live nav session. Used by the
20
+ * dispatcher to gate raw background-GPS forwards (we don't want the
21
+ * unsnapped fix interleaving with the simulator's snapped output
22
+ * during a trip).
23
+ */
24
+ import { cloudClientService } from "./CloudClientService";
25
+ import nativeNavigationService from "./NativeNavigationService";
26
+ import navigationService from "./NavigationService";
27
+ import { MiniappErrorCode, MiniappResponseType, MiniappStreamType } from "@glassly/miniapp";
28
+ const LOG_TAG = "LocalMiniappRuntime";
29
+ export class NavigationHandlers {
30
+ sendToMiniapp;
31
+ sendResult;
32
+ /** packageName → unsubscribe fn for that app's nav event forwarder. */
33
+ navListeners = new Map();
34
+ /** Set of packageNames that have called navigation.start() and not yet stop(). */
35
+ activeNavApps = new Set();
36
+ constructor(sendToMiniapp, sendResult) {
37
+ this.sendToMiniapp = sendToMiniapp;
38
+ this.sendResult = sendResult;
39
+ nativeNavigationService.setOnGlassesExit(() => this.stopFromGlasses());
40
+ }
41
+ /**
42
+ * The wearer exited nav mode on the glasses — end the trip: stop the native
43
+ * navigator and tell each active nav app via a "cancelled" update so it can
44
+ * reset its own trip state.
45
+ */
46
+ stopFromGlasses() {
47
+ if (this.activeNavApps.size === 0)
48
+ return;
49
+ console.log(`${LOG_TAG}: nav mode exited on glasses — stopping trip for ${[...this.activeNavApps].join(", ")}`);
50
+ for (const packageName of this.activeNavApps) {
51
+ this.sendToMiniapp(packageName, {
52
+ type: MiniappResponseType.EVENT,
53
+ streamType: MiniappStreamType.NAVIGATION_UPDATE,
54
+ data: { kind: "cancelled", reason: "glasses" },
55
+ });
56
+ }
57
+ this.activeNavApps.clear();
58
+ void navigationService.stop().catch((err) => {
59
+ console.error(`${LOG_TAG}: navigation stop after glasses exit failed:`, err);
60
+ });
61
+ }
62
+ /** True iff a trip is currently active for the package (used to gate raw-GPS forwards). */
63
+ isTripActive(packageName) {
64
+ return this.activeNavApps.has(packageName);
65
+ }
66
+ /**
67
+ * Detach the per-app nav event forwarder. Called when the mini-app
68
+ * disconnects. The native nav session is left running so the user can
69
+ * reopen the app and reattach without losing their trip; `activeNavApps`
70
+ * is kept intact for the same reason.
71
+ */
72
+ onDisconnect(packageName) {
73
+ const unsub = this.navListeners.get(packageName);
74
+ if (unsub) {
75
+ unsub();
76
+ this.navListeners.delete(packageName);
77
+ }
78
+ }
79
+ /**
80
+ * The user closed/disabled the mini-app (not a crash-respawn). Unlike
81
+ * {@link onDisconnect}, this ends the trip: the glasses leave native nav
82
+ * mode and the phone navigator stops once no other app is navigating.
83
+ */
84
+ onAppClosed(packageName) {
85
+ this.onDisconnect(packageName);
86
+ if (!this.activeNavApps.delete(packageName))
87
+ return;
88
+ if (this.activeNavApps.size > 0)
89
+ return;
90
+ console.log(`${LOG_TAG}: ${packageName} closed with an active trip — stopping navigation`);
91
+ nativeNavigationService.onTripEnd(false);
92
+ void navigationService.stop().catch((err) => {
93
+ console.error(`${LOG_TAG}: navigation stop after app close failed:`, err);
94
+ });
95
+ }
96
+ async handleStart(packageName, payload, requestId) {
97
+ console.log(`${LOG_TAG}: handleNavigationStart from ${packageName}`, JSON.stringify(payload));
98
+ // v2 wire shape sends `stops`; v1 shape sends bare lat/lng. Accept both.
99
+ const rawStops = payload.stops;
100
+ const stops = [];
101
+ if (Array.isArray(rawStops)) {
102
+ for (const s of rawStops) {
103
+ const sLat = Number(s?.lat);
104
+ const sLng = Number(s?.lng);
105
+ if (Number.isFinite(sLat) && Number.isFinite(sLng))
106
+ stops.push({ lat: sLat, lng: sLng });
107
+ }
108
+ }
109
+ if (stops.length === 0) {
110
+ const lat = Number(payload.lat);
111
+ const lng = Number(payload.lng);
112
+ if (Number.isFinite(lat) && Number.isFinite(lng))
113
+ stops.push({ lat, lng });
114
+ }
115
+ if (stops.length === 0) {
116
+ this.sendResult(packageName, requestId, false, undefined, {
117
+ code: MiniappErrorCode.INTERNAL,
118
+ message: "stops or lat/lng required",
119
+ });
120
+ return;
121
+ }
122
+ const lat = stops[0].lat;
123
+ const lng = stops[0].lng;
124
+ const simulate = payload.simulate === true;
125
+ const speedNum = Number(payload.speedMultiplier);
126
+ const speedMultiplier = Number.isFinite(speedNum) && speedNum > 0 ? speedNum : 5;
127
+ const mode = typeof payload.mode === "string" ? payload.mode : "driving";
128
+ const avoidRaw = payload.avoid;
129
+ const avoid = avoidRaw
130
+ ? {
131
+ highways: avoidRaw.highways === true,
132
+ tolls: avoidRaw.tolls === true,
133
+ ferries: avoidRaw.ferries === true,
134
+ }
135
+ : undefined;
136
+ const missedRaw = Number(payload.missedTurnRerouteMeters);
137
+ const missedTurnRerouteMeters = Number.isFinite(missedRaw) && missedRaw > 0 ? missedRaw : undefined;
138
+ const navigation = navigationService;
139
+ if (!navigation) {
140
+ this.sendResult(packageName, requestId, false, undefined, {
141
+ code: MiniappErrorCode.INTERNAL,
142
+ message: "navigation adapter not configured on host",
143
+ });
144
+ return;
145
+ }
146
+ // Reattach the per-app event forwarder (it may have been detached when the
147
+ // mini-app closed its UI without stopping the trip).
148
+ if (!this.navListeners.has(packageName)) {
149
+ const unsubNav = navigation.addListener((update) => {
150
+ this.sendToMiniapp(packageName, {
151
+ type: MiniappResponseType.EVENT,
152
+ streamType: MiniappStreamType.NAVIGATION_UPDATE,
153
+ data: update,
154
+ });
155
+ // Trip ended naturally — keep the forwarder alive (miniapp may
156
+ // restart nav) but remove from active set so stop() accounting
157
+ // stays accurate.
158
+ if (update.kind === "arrived" || update.kind === "error") {
159
+ this.activeNavApps.delete(packageName);
160
+ if (this.activeNavApps.size === 0) {
161
+ nativeNavigationService.onTripEnd(update.kind === "arrived");
162
+ }
163
+ }
164
+ });
165
+ // Forward the nav-SDK's road-snapped GPS fixes as a location_update
166
+ // stream, so the miniapp's existing session.events.onLocation(...) just
167
+ // works while a trip is active.
168
+ const unsubLoc = navigation.addLocationListener((loc) => {
169
+ this.sendToMiniapp(packageName, {
170
+ type: MiniappResponseType.EVENT,
171
+ streamType: MiniappStreamType.LOCATION_UPDATE,
172
+ data: {
173
+ lat: loc.lat,
174
+ lng: loc.lng,
175
+ accuracy: loc.accuracy ?? undefined,
176
+ timestamp: loc.timestamp,
177
+ },
178
+ });
179
+ });
180
+ const unsubRoute = navigation.addRouteListener((route) => {
181
+ this.sendToMiniapp(packageName, {
182
+ type: MiniappResponseType.EVENT,
183
+ streamType: MiniappStreamType.NAVIGATION_ROUTE,
184
+ data: route,
185
+ });
186
+ });
187
+ this.navListeners.set(packageName, () => {
188
+ unsubNav();
189
+ unsubLoc();
190
+ unsubRoute();
191
+ });
192
+ }
193
+ // If a trip is already active for this app (user closed the UI and came
194
+ // back), reuse the running session — replay current snapshot and return
195
+ // ok without restarting the native navigator.
196
+ if (this.activeNavApps.has(packageName) && navigation.getState() !== "idle") {
197
+ console.log(`${LOG_TAG}: resuming existing nav session for ${packageName}`);
198
+ const snapshot = navigation.getSnapshot();
199
+ this.sendResult(packageName, requestId, true, { ok: true, resumed: true, snapshot });
200
+ return;
201
+ }
202
+ try {
203
+ const result = await navigation.start({ lat, lng }, { simulate, speedMultiplier, stops, mode, avoid, missedTurnRerouteMeters });
204
+ if (result.ok) {
205
+ this.activeNavApps.add(packageName);
206
+ // Glasses with a firmware-rendered nav UI (G2) enter their native
207
+ // navigation mode for the duration of the trip.
208
+ nativeNavigationService.onTripStart(packageName);
209
+ }
210
+ this.sendResult(packageName, requestId, result.ok, result, undefined);
211
+ }
212
+ catch (err) {
213
+ console.error(`${LOG_TAG}: navigation start error:`, err);
214
+ this.sendResult(packageName, requestId, false, undefined, {
215
+ code: MiniappErrorCode.INTERNAL,
216
+ message: err instanceof Error ? err.message : "navigation start error",
217
+ });
218
+ }
219
+ }
220
+ async handleStop(packageName, requestId) {
221
+ try {
222
+ const unsub = this.navListeners.get(packageName);
223
+ if (unsub) {
224
+ unsub();
225
+ this.navListeners.delete(packageName);
226
+ }
227
+ this.activeNavApps.delete(packageName);
228
+ // Only stop the native trip when no other miniapp is still navigating.
229
+ if (this.activeNavApps.size === 0) {
230
+ nativeNavigationService.onTripEnd(false);
231
+ const navigation = navigationService;
232
+ const result = navigation ? await navigation.stop() : { ok: true };
233
+ this.sendResult(packageName, requestId, result.ok, result, undefined);
234
+ }
235
+ else {
236
+ this.sendResult(packageName, requestId, true, { ok: true }, undefined);
237
+ }
238
+ }
239
+ catch (err) {
240
+ console.error(`${LOG_TAG}: navigation stop error:`, err);
241
+ this.sendResult(packageName, requestId, false, undefined, {
242
+ code: MiniappErrorCode.INTERNAL,
243
+ message: err instanceof Error ? err.message : "navigation stop error",
244
+ });
245
+ }
246
+ }
247
+ async handleDeviate(packageName, payload, requestId) {
248
+ try {
249
+ const offsetNum = Number(payload.offsetMeters);
250
+ const offsetMeters = Number.isFinite(offsetNum) && offsetNum > 0 ? offsetNum : 20;
251
+ const navigation = navigationService;
252
+ const result = navigation
253
+ ? await navigation.simulateDeviation(offsetMeters)
254
+ : { ok: false, error: "navigation adapter not configured" };
255
+ this.sendResult(packageName, requestId, result.ok, result, undefined);
256
+ }
257
+ catch (err) {
258
+ console.error(`${LOG_TAG}: navigation deviate error:`, err);
259
+ this.sendResult(packageName, requestId, false, undefined, {
260
+ code: MiniappErrorCode.INTERNAL,
261
+ message: err instanceof Error ? err.message : "navigation deviate error",
262
+ });
263
+ }
264
+ }
265
+ async handleSetWrongSidewalk(packageName, payload, requestId) {
266
+ try {
267
+ const enabled = payload.enabled === true;
268
+ const navigation = navigationService;
269
+ const result = navigation
270
+ ? await navigation.setWrongSidewalkOffset(enabled)
271
+ : { ok: false, error: "navigation adapter not configured" };
272
+ this.sendResult(packageName, requestId, result.ok, result, undefined);
273
+ }
274
+ catch (err) {
275
+ console.error(`${LOG_TAG}: navigation setWrongSidewalkOffset error:`, err);
276
+ this.sendResult(packageName, requestId, false, undefined, {
277
+ code: MiniappErrorCode.INTERNAL,
278
+ message: err instanceof Error ? err.message : "navigation setWrongSidewalkOffset error",
279
+ });
280
+ }
281
+ }
282
+ async handleSetSkipCrossings(packageName, payload, requestId) {
283
+ try {
284
+ const enabled = payload.enabled === true;
285
+ const navigation = navigationService;
286
+ const result = navigation
287
+ ? await navigation.setSkipCrossings(enabled)
288
+ : { ok: false, error: "navigation adapter not configured" };
289
+ this.sendResult(packageName, requestId, result.ok, result, undefined);
290
+ }
291
+ catch (err) {
292
+ console.error(`${LOG_TAG}: navigation setSkipCrossings error:`, err);
293
+ this.sendResult(packageName, requestId, false, undefined, {
294
+ code: MiniappErrorCode.INTERNAL,
295
+ message: err instanceof Error ? err.message : "navigation setSkipCrossings error",
296
+ });
297
+ }
298
+ }
299
+ handleGetState(packageName, requestId) {
300
+ const snapshot = navigationService.getSnapshot() ?? null;
301
+ this.sendResult(packageName, requestId, true, { state: snapshot });
302
+ }
303
+ async handleRequestPermission(packageName, requestId) {
304
+ try {
305
+ const navigation = navigationService;
306
+ const result = navigation
307
+ ? await navigation.requestPermission()
308
+ : { ok: false, accepted: false, error: "navigation adapter not configured" };
309
+ this.sendResult(packageName, requestId, true, result);
310
+ }
311
+ catch (err) {
312
+ console.error(`${LOG_TAG}: navigation requestPermission error:`, err);
313
+ this.sendResult(packageName, requestId, false, undefined, {
314
+ code: MiniappErrorCode.INTERNAL,
315
+ message: err instanceof Error ? err.message : "navigation requestPermission error",
316
+ });
317
+ }
318
+ }
319
+ async handleComputeRoute(packageName, payload, requestId) {
320
+ try {
321
+ // With the user's own Mapbox key (Settings > API Keys), compute
322
+ // on-device so routing works without the cloud and bills their account.
323
+ // Without one, go through the v2 cloud maps proxy — org-token Mapbox
324
+ // usage only ever happens cloud-side.
325
+ if (navigationService.hasMapboxToken()) {
326
+ const local = await navigationService.computeRoute(payload);
327
+ if (local.ok) {
328
+ this.sendResult(packageName, requestId, true, { ok: true, routes: local.routes ?? [] });
329
+ return;
330
+ }
331
+ console.warn(`${LOG_TAG}: local computeRoute failed, falling back to cloud:`, local.error);
332
+ }
333
+ // Computed in the v2 cloud (provider-abstracted maps service). The SDK
334
+ // payload shape ({origin, stops, mode, avoid, alternatives}) is the v2
335
+ // DirectionsRequest field-for-field, so it passes straight through.
336
+ const { routes } = await cloudClientService.maps.directions(payload);
337
+ this.sendResult(packageName, requestId, true, { ok: true, routes });
338
+ }
339
+ catch (err) {
340
+ console.error(`${LOG_TAG}: navigation computeRoute error:`, err);
341
+ this.sendResult(packageName, requestId, false, undefined, {
342
+ code: MiniappErrorCode.INTERNAL,
343
+ message: err instanceof Error ? err.message : "navigation computeRoute error",
344
+ });
345
+ }
346
+ }
347
+ /**
348
+ * Reverse-geocode a coordinate into a short road name + full formatted
349
+ * address. Backs the SDK pivot engine's road-name fallback (`road`) and the
350
+ * navigation miniapp's dropped-pin / POI-tap labels (`address`). Always
351
+ * resolves with `{ok, road?, address?}` — a missing road/address is
352
+ * `{ok: true, road: null, address: null}`, not an error.
353
+ */
354
+ async handleReverseGeocode(packageName, payload, requestId) {
355
+ try {
356
+ const lat = Number(payload.lat);
357
+ const lng = Number(payload.lng);
358
+ if (!Number.isFinite(lat) || !Number.isFinite(lng)) {
359
+ this.sendResult(packageName, requestId, false, undefined, {
360
+ code: MiniappErrorCode.INTERNAL,
361
+ message: "lat/lng required",
362
+ });
363
+ return;
364
+ }
365
+ // With the user's own Mapbox key, resolve on-device so this works
366
+ // without the cloud; otherwise use the v2 cloud maps service.
367
+ if (navigationService.hasMapboxToken()) {
368
+ const local = await navigationService.reverseGeocodeRoad({ lat, lng });
369
+ if (local.ok) {
370
+ this.sendResult(packageName, requestId, true, {
371
+ ok: true,
372
+ road: local.road ?? null,
373
+ address: local.address ?? null,
374
+ });
375
+ return;
376
+ }
377
+ console.warn(`${LOG_TAG}: local reverseGeocode failed, falling back to cloud:`, local.error);
378
+ }
379
+ const { road, address } = await cloudClientService.maps.reverseGeocode({ lat, lng });
380
+ this.sendResult(packageName, requestId, true, { ok: true, road, address });
381
+ }
382
+ catch (err) {
383
+ console.error(`${LOG_TAG}: navigation reverseGeocode error:`, err);
384
+ this.sendResult(packageName, requestId, false, undefined, {
385
+ code: MiniappErrorCode.INTERNAL,
386
+ message: err instanceof Error ? err.message : "navigation reverseGeocode error",
387
+ });
388
+ }
389
+ }
390
+ /**
391
+ * Type-ahead place search. Runs on-device against Mapbox Search Box when the
392
+ * user saved their own key (Settings > API Keys) — that key exists precisely
393
+ * so search works without the cloud — and falls back to the v2 cloud maps
394
+ * service otherwise. Resolves `{ok: true, suggestions}` — an empty query or no
395
+ * matches is `{ok: true, suggestions: []}`, not an error.
396
+ */
397
+ async handlePlaceAutocomplete(packageName, payload, requestId) {
398
+ try {
399
+ const query = typeof payload.query === "string" ? payload.query : "";
400
+ const sessionToken = typeof payload.sessionToken === "string" ? payload.sessionToken : "";
401
+ const near = this.parseNear(payload.near);
402
+ if (navigationService.hasMapboxToken()) {
403
+ const local = await navigationService.placeAutocomplete(query, near, sessionToken);
404
+ if (local.ok) {
405
+ this.sendResult(packageName, requestId, true, { ok: true, suggestions: local.suggestions ?? [] });
406
+ return;
407
+ }
408
+ // A token is set but the direct call failed (bad key, offline, Mapbox
409
+ // error). Fall through to the cloud rather than failing the search
410
+ // outright.
411
+ console.warn(`${LOG_TAG}: local placeAutocomplete failed, falling back to cloud:`, local.error);
412
+ }
413
+ const { suggestions } = await cloudClientService.maps.placeAutocomplete({ query, near, sessionToken });
414
+ this.sendResult(packageName, requestId, true, { ok: true, suggestions });
415
+ }
416
+ catch (err) {
417
+ console.error(`${LOG_TAG}: navigation placeAutocomplete error:`, err);
418
+ this.sendResult(packageName, requestId, false, undefined, {
419
+ code: MiniappErrorCode.INTERNAL,
420
+ message: err instanceof Error ? err.message : "navigation placeAutocomplete error",
421
+ });
422
+ }
423
+ }
424
+ /**
425
+ * Resolve a suggestion (`placeId` + `sessionToken`) to a full place with
426
+ * coordinates. Takes the same on-device-vs-cloud branch as
427
+ * {@link handlePlaceAutocomplete}: the `placeId` and session token come from
428
+ * whichever provider produced the suggestion, so both calls must run against
429
+ * the same one. Resolves `{ok: true, place}`.
430
+ */
431
+ async handlePlaceDetails(packageName, payload, requestId) {
432
+ try {
433
+ const placeId = typeof payload.placeId === "string" ? payload.placeId : "";
434
+ const sessionToken = typeof payload.sessionToken === "string" ? payload.sessionToken : "";
435
+ if (!placeId) {
436
+ this.sendResult(packageName, requestId, false, undefined, {
437
+ code: MiniappErrorCode.INTERNAL,
438
+ message: "placeId required",
439
+ });
440
+ return;
441
+ }
442
+ if (navigationService.hasMapboxToken()) {
443
+ const local = await navigationService.placeDetails(placeId, sessionToken);
444
+ if (local.ok && local.place) {
445
+ this.sendResult(packageName, requestId, true, { ok: true, place: local.place });
446
+ return;
447
+ }
448
+ // Don't fall back to the cloud here: this `placeId` came from a Mapbox
449
+ // Search Box suggestion and is not resolvable by another provider.
450
+ this.sendResult(packageName, requestId, false, undefined, {
451
+ code: MiniappErrorCode.INTERNAL,
452
+ message: local.error ?? "navigation placeDetails error",
453
+ });
454
+ return;
455
+ }
456
+ const place = await cloudClientService.maps.placeDetails({ placeId, sessionToken });
457
+ this.sendResult(packageName, requestId, true, { ok: true, place });
458
+ }
459
+ catch (err) {
460
+ console.error(`${LOG_TAG}: navigation placeDetails error:`, err);
461
+ this.sendResult(packageName, requestId, false, undefined, {
462
+ code: MiniappErrorCode.INTERNAL,
463
+ message: err instanceof Error ? err.message : "navigation placeDetails error",
464
+ });
465
+ }
466
+ }
467
+ /** Coerce an inbound `near` payload to a {lat,lng}, or undefined when absent/invalid. */
468
+ parseNear(raw) {
469
+ if (!raw || typeof raw !== "object")
470
+ return undefined;
471
+ const obj = raw;
472
+ const lat = Number(obj.lat);
473
+ const lng = Number(obj.lng);
474
+ if (!Number.isFinite(lat) || !Number.isFinite(lng))
475
+ return undefined;
476
+ return { lat, lng };
477
+ }
478
+ }
479
+ //# sourceMappingURL=NavigationHandlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavigationHandlers.js","sourceRoot":"","sources":["../../src/services/NavigationHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * NavigationHandlers — turn-by-turn navigation request handlers for\n * LocalMiniappRuntime. Extracted from LocalMiniappRuntime so the\n * navigation surface (Google Maps Navigation SDK adapter, multi-stop\n * routes, deviation simulator, dev toggles, road-snapped GPS streaming)\n * lives in one file the reviewer can read in isolation.\n *\n * Wire-up: LocalMiniappRuntime owns one instance, constructed with\n * callbacks for sending results / events back to the miniapp. The\n * dispatcher's switch statement delegates each `NAVIGATION_*` case to a\n * handler here. Cross-cutting hooks (cleanup on disconnect, location-\n * stream gating during a trip) are exposed via {@link onDisconnect} and\n * {@link isTripActive}.\n *\n * State owned here:\n * - navListeners: per-package unsubscribers for the nav-update +\n * road-snapped-location + route streams. Detached on disconnect,\n * reattached on the next NAVIGATION_START from the same package.\n * - activeNavApps: packages with a live nav session. Used by the\n * dispatcher to gate raw background-GPS forwards (we don't want the\n * unsnapped fix interleaving with the simulator's snapped output\n * during a trip).\n */\n\nimport {type NavLocation, type NavRoute, type NavUpdate} from \"../runtime/config\"\nimport {cloudClientService} from \"./CloudClientService\"\nimport nativeNavigationService from \"./NativeNavigationService\"\nimport navigationService from \"./NavigationService\"\nimport {MiniappErrorCode, MiniappResponseType, MiniappStreamType} from \"@glassly/miniapp\"\n\nconst LOG_TAG = \"LocalMiniappRuntime\"\n\n/**\n * Shape of the per-miniapp envelope sender — matches\n * LocalMiniappRuntime.sendToMiniapp's signature.\n */\ntype SendToMiniapp = (\n packageName: string,\n envelope: {type: MiniappResponseType; streamType?: MiniappStreamType; data?: unknown},\n) => void\n\n/**\n * Shape of the request-result sender — matches\n * LocalMiniappRuntime.sendResult's signature.\n */\ntype SendResult = (\n packageName: string,\n requestId: string | undefined,\n ok: boolean,\n result?: unknown,\n error?: {code: MiniappErrorCode; message: string},\n) => void\n\nexport class NavigationHandlers {\n /** packageName → unsubscribe fn for that app's nav event forwarder. */\n private navListeners = new Map<string, () => void>()\n /** Set of packageNames that have called navigation.start() and not yet stop(). */\n private activeNavApps = new Set<string>()\n\n constructor(\n private readonly sendToMiniapp: SendToMiniapp,\n private readonly sendResult: SendResult,\n ) {\n nativeNavigationService.setOnGlassesExit(() => this.stopFromGlasses())\n }\n\n /**\n * The wearer exited nav mode on the glasses — end the trip: stop the native\n * navigator and tell each active nav app via a \"cancelled\" update so it can\n * reset its own trip state.\n */\n private stopFromGlasses(): void {\n if (this.activeNavApps.size === 0) return\n console.log(`${LOG_TAG}: nav mode exited on glasses — stopping trip for ${[...this.activeNavApps].join(\", \")}`)\n for (const packageName of this.activeNavApps) {\n this.sendToMiniapp(packageName, {\n type: MiniappResponseType.EVENT,\n streamType: MiniappStreamType.NAVIGATION_UPDATE,\n data: {kind: \"cancelled\", reason: \"glasses\"},\n })\n }\n this.activeNavApps.clear()\n void navigationService.stop().catch((err: unknown) => {\n console.error(`${LOG_TAG}: navigation stop after glasses exit failed:`, err)\n })\n }\n\n /** True iff a trip is currently active for the package (used to gate raw-GPS forwards). */\n isTripActive(packageName: string): boolean {\n return this.activeNavApps.has(packageName)\n }\n\n /**\n * Detach the per-app nav event forwarder. Called when the mini-app\n * disconnects. The native nav session is left running so the user can\n * reopen the app and reattach without losing their trip; `activeNavApps`\n * is kept intact for the same reason.\n */\n onDisconnect(packageName: string): void {\n const unsub = this.navListeners.get(packageName)\n if (unsub) {\n unsub()\n this.navListeners.delete(packageName)\n }\n }\n\n /**\n * The user closed/disabled the mini-app (not a crash-respawn). Unlike\n * {@link onDisconnect}, this ends the trip: the glasses leave native nav\n * mode and the phone navigator stops once no other app is navigating.\n */\n onAppClosed(packageName: string): void {\n this.onDisconnect(packageName)\n if (!this.activeNavApps.delete(packageName)) return\n if (this.activeNavApps.size > 0) return\n console.log(`${LOG_TAG}: ${packageName} closed with an active trip — stopping navigation`)\n nativeNavigationService.onTripEnd(false)\n void navigationService.stop().catch((err: unknown) => {\n console.error(`${LOG_TAG}: navigation stop after app close failed:`, err)\n })\n }\n\n async handleStart(packageName: string, payload: Record<string, unknown>, requestId?: string): Promise<void> {\n console.log(`${LOG_TAG}: handleNavigationStart from ${packageName}`, JSON.stringify(payload))\n\n // v2 wire shape sends `stops`; v1 shape sends bare lat/lng. Accept both.\n const rawStops = payload.stops as Array<{lat?: unknown; lng?: unknown}> | undefined\n const stops: Array<{lat: number; lng: number}> = []\n if (Array.isArray(rawStops)) {\n for (const s of rawStops) {\n const sLat = Number(s?.lat)\n const sLng = Number(s?.lng)\n if (Number.isFinite(sLat) && Number.isFinite(sLng)) stops.push({lat: sLat, lng: sLng})\n }\n }\n if (stops.length === 0) {\n const lat = Number(payload.lat)\n const lng = Number(payload.lng)\n if (Number.isFinite(lat) && Number.isFinite(lng)) stops.push({lat, lng})\n }\n if (stops.length === 0) {\n this.sendResult(packageName, requestId, false, undefined, {\n code: MiniappErrorCode.INTERNAL,\n message: \"stops or lat/lng required\",\n })\n return\n }\n const lat = stops[0].lat\n const lng = stops[0].lng\n const simulate = payload.simulate === true\n const speedNum = Number(payload.speedMultiplier)\n const speedMultiplier = Number.isFinite(speedNum) && speedNum > 0 ? speedNum : 5\n const mode = typeof payload.mode === \"string\" ? payload.mode : \"driving\"\n const avoidRaw = payload.avoid as Record<string, unknown> | undefined\n const avoid = avoidRaw\n ? {\n highways: avoidRaw.highways === true,\n tolls: avoidRaw.tolls === true,\n ferries: avoidRaw.ferries === true,\n }\n : undefined\n const missedRaw = Number(payload.missedTurnRerouteMeters)\n const missedTurnRerouteMeters = Number.isFinite(missedRaw) && missedRaw > 0 ? missedRaw : undefined\n\n const navigation = navigationService\n if (!navigation) {\n this.sendResult(packageName, requestId, false, undefined, {\n code: MiniappErrorCode.INTERNAL,\n message: \"navigation adapter not configured on host\",\n })\n return\n }\n\n // Reattach the per-app event forwarder (it may have been detached when the\n // mini-app closed its UI without stopping the trip).\n if (!this.navListeners.has(packageName)) {\n const unsubNav = navigation.addListener((update: NavUpdate) => {\n this.sendToMiniapp(packageName, {\n type: MiniappResponseType.EVENT,\n streamType: MiniappStreamType.NAVIGATION_UPDATE,\n data: update,\n })\n // Trip ended naturally — keep the forwarder alive (miniapp may\n // restart nav) but remove from active set so stop() accounting\n // stays accurate.\n if (update.kind === \"arrived\" || update.kind === \"error\") {\n this.activeNavApps.delete(packageName)\n if (this.activeNavApps.size === 0) {\n nativeNavigationService.onTripEnd(update.kind === \"arrived\")\n }\n }\n })\n // Forward the nav-SDK's road-snapped GPS fixes as a location_update\n // stream, so the miniapp's existing session.events.onLocation(...) just\n // works while a trip is active.\n const unsubLoc = navigation.addLocationListener((loc: NavLocation) => {\n this.sendToMiniapp(packageName, {\n type: MiniappResponseType.EVENT,\n streamType: MiniappStreamType.LOCATION_UPDATE,\n data: {\n lat: loc.lat,\n lng: loc.lng,\n accuracy: loc.accuracy ?? undefined,\n timestamp: loc.timestamp,\n },\n })\n })\n const unsubRoute = navigation.addRouteListener((route: NavRoute) => {\n this.sendToMiniapp(packageName, {\n type: MiniappResponseType.EVENT,\n streamType: MiniappStreamType.NAVIGATION_ROUTE,\n data: route,\n })\n })\n this.navListeners.set(packageName, () => {\n unsubNav()\n unsubLoc()\n unsubRoute()\n })\n }\n\n // If a trip is already active for this app (user closed the UI and came\n // back), reuse the running session — replay current snapshot and return\n // ok without restarting the native navigator.\n if (this.activeNavApps.has(packageName) && navigation.getState() !== \"idle\") {\n console.log(`${LOG_TAG}: resuming existing nav session for ${packageName}`)\n const snapshot = navigation.getSnapshot()\n this.sendResult(packageName, requestId, true, {ok: true, resumed: true, snapshot})\n return\n }\n\n try {\n const result = await navigation.start(\n {lat, lng},\n {simulate, speedMultiplier, stops, mode, avoid, missedTurnRerouteMeters},\n )\n if (result.ok) {\n this.activeNavApps.add(packageName)\n // Glasses with a firmware-rendered nav UI (G2) enter their native\n // navigation mode for the duration of the trip.\n nativeNavigationService.onTripStart(packageName)\n }\n this.sendResult(packageName, requestId, result.ok, result, undefined)\n } catch (err) {\n console.error(`${LOG_TAG}: navigation start error:`, err)\n this.sendResult(packageName, requestId, false, undefined, {\n code: MiniappErrorCode.INTERNAL,\n message: err instanceof Error ? err.message : \"navigation start error\",\n })\n }\n }\n\n async handleStop(packageName: string, requestId?: string): Promise<void> {\n try {\n const unsub = this.navListeners.get(packageName)\n if (unsub) {\n unsub()\n this.navListeners.delete(packageName)\n }\n this.activeNavApps.delete(packageName)\n // Only stop the native trip when no other miniapp is still navigating.\n if (this.activeNavApps.size === 0) {\n nativeNavigationService.onTripEnd(false)\n const navigation = navigationService\n const result = navigation ? await navigation.stop() : {ok: true}\n this.sendResult(packageName, requestId, result.ok, result, undefined)\n } else {\n this.sendResult(packageName, requestId, true, {ok: true}, undefined)\n }\n } catch (err) {\n console.error(`${LOG_TAG}: navigation stop error:`, err)\n this.sendResult(packageName, requestId, false, undefined, {\n code: MiniappErrorCode.INTERNAL,\n message: err instanceof Error ? err.message : \"navigation stop error\",\n })\n }\n }\n\n async handleDeviate(packageName: string, payload: Record<string, unknown>, requestId?: string): Promise<void> {\n try {\n const offsetNum = Number(payload.offsetMeters)\n const offsetMeters = Number.isFinite(offsetNum) && offsetNum > 0 ? offsetNum : 20\n const navigation = navigationService\n const result = navigation\n ? await navigation.simulateDeviation(offsetMeters)\n : {ok: false, error: \"navigation adapter not configured\"}\n this.sendResult(packageName, requestId, result.ok, result, undefined)\n } catch (err) {\n console.error(`${LOG_TAG}: navigation deviate error:`, err)\n this.sendResult(packageName, requestId, false, undefined, {\n code: MiniappErrorCode.INTERNAL,\n message: err instanceof Error ? err.message : \"navigation deviate error\",\n })\n }\n }\n\n async handleSetWrongSidewalk(\n packageName: string,\n payload: Record<string, unknown>,\n requestId?: string,\n ): Promise<void> {\n try {\n const enabled = payload.enabled === true\n const navigation = navigationService\n const result = navigation\n ? await navigation.setWrongSidewalkOffset(enabled)\n : {ok: false, error: \"navigation adapter not configured\"}\n this.sendResult(packageName, requestId, result.ok, result, undefined)\n } catch (err) {\n console.error(`${LOG_TAG}: navigation setWrongSidewalkOffset error:`, err)\n this.sendResult(packageName, requestId, false, undefined, {\n code: MiniappErrorCode.INTERNAL,\n message: err instanceof Error ? err.message : \"navigation setWrongSidewalkOffset error\",\n })\n }\n }\n\n async handleSetSkipCrossings(\n packageName: string,\n payload: Record<string, unknown>,\n requestId?: string,\n ): Promise<void> {\n try {\n const enabled = payload.enabled === true\n const navigation = navigationService\n const result = navigation\n ? await navigation.setSkipCrossings(enabled)\n : {ok: false, error: \"navigation adapter not configured\"}\n this.sendResult(packageName, requestId, result.ok, result, undefined)\n } catch (err) {\n console.error(`${LOG_TAG}: navigation setSkipCrossings error:`, err)\n this.sendResult(packageName, requestId, false, undefined, {\n code: MiniappErrorCode.INTERNAL,\n message: err instanceof Error ? err.message : \"navigation setSkipCrossings error\",\n })\n }\n }\n\n handleGetState(packageName: string, requestId?: string): void {\n const snapshot = navigationService.getSnapshot() ?? null\n this.sendResult(packageName, requestId, true, {state: snapshot})\n }\n\n async handleRequestPermission(packageName: string, requestId?: string): Promise<void> {\n try {\n const navigation = navigationService\n const result = navigation\n ? await navigation.requestPermission()\n : {ok: false, accepted: false, error: \"navigation adapter not configured\"}\n this.sendResult(packageName, requestId, true, result)\n } catch (err) {\n console.error(`${LOG_TAG}: navigation requestPermission error:`, err)\n this.sendResult(packageName, requestId, false, undefined, {\n code: MiniappErrorCode.INTERNAL,\n message: err instanceof Error ? err.message : \"navigation requestPermission error\",\n })\n }\n }\n\n async handleComputeRoute(packageName: string, payload: Record<string, unknown>, requestId?: string): Promise<void> {\n try {\n // With the user's own Mapbox key (Settings > API Keys), compute\n // on-device so routing works without the cloud and bills their account.\n // Without one, go through the v2 cloud maps proxy — org-token Mapbox\n // usage only ever happens cloud-side.\n if (navigationService.hasMapboxToken()) {\n const local = await navigationService.computeRoute(payload)\n if (local.ok) {\n this.sendResult(packageName, requestId, true, {ok: true, routes: local.routes ?? []})\n return\n }\n console.warn(`${LOG_TAG}: local computeRoute failed, falling back to cloud:`, local.error)\n }\n\n // Computed in the v2 cloud (provider-abstracted maps service). The SDK\n // payload shape ({origin, stops, mode, avoid, alternatives}) is the v2\n // DirectionsRequest field-for-field, so it passes straight through.\n const {routes} = await cloudClientService.maps.directions(payload as never)\n this.sendResult(packageName, requestId, true, {ok: true, routes})\n } catch (err) {\n console.error(`${LOG_TAG}: navigation computeRoute error:`, err)\n this.sendResult(packageName, requestId, false, undefined, {\n code: MiniappErrorCode.INTERNAL,\n message: err instanceof Error ? err.message : \"navigation computeRoute error\",\n })\n }\n }\n\n /**\n * Reverse-geocode a coordinate into a short road name + full formatted\n * address. Backs the SDK pivot engine's road-name fallback (`road`) and the\n * navigation miniapp's dropped-pin / POI-tap labels (`address`). Always\n * resolves with `{ok, road?, address?}` — a missing road/address is\n * `{ok: true, road: null, address: null}`, not an error.\n */\n async handleReverseGeocode(packageName: string, payload: Record<string, unknown>, requestId?: string): Promise<void> {\n try {\n const lat = Number(payload.lat)\n const lng = Number(payload.lng)\n if (!Number.isFinite(lat) || !Number.isFinite(lng)) {\n this.sendResult(packageName, requestId, false, undefined, {\n code: MiniappErrorCode.INTERNAL,\n message: \"lat/lng required\",\n })\n return\n }\n // With the user's own Mapbox key, resolve on-device so this works\n // without the cloud; otherwise use the v2 cloud maps service.\n if (navigationService.hasMapboxToken()) {\n const local = await navigationService.reverseGeocodeRoad({lat, lng})\n if (local.ok) {\n this.sendResult(packageName, requestId, true, {\n ok: true,\n road: local.road ?? null,\n address: local.address ?? null,\n })\n return\n }\n console.warn(`${LOG_TAG}: local reverseGeocode failed, falling back to cloud:`, local.error)\n }\n\n const {road, address} = await cloudClientService.maps.reverseGeocode({lat, lng})\n this.sendResult(packageName, requestId, true, {ok: true, road, address})\n } catch (err) {\n console.error(`${LOG_TAG}: navigation reverseGeocode error:`, err)\n this.sendResult(packageName, requestId, false, undefined, {\n code: MiniappErrorCode.INTERNAL,\n message: err instanceof Error ? err.message : \"navigation reverseGeocode error\",\n })\n }\n }\n\n /**\n * Type-ahead place search. Runs on-device against Mapbox Search Box when the\n * user saved their own key (Settings > API Keys) — that key exists precisely\n * so search works without the cloud — and falls back to the v2 cloud maps\n * service otherwise. Resolves `{ok: true, suggestions}` — an empty query or no\n * matches is `{ok: true, suggestions: []}`, not an error.\n */\n async handlePlaceAutocomplete(\n packageName: string,\n payload: Record<string, unknown>,\n requestId?: string,\n ): Promise<void> {\n try {\n const query = typeof payload.query === \"string\" ? payload.query : \"\"\n const sessionToken = typeof payload.sessionToken === \"string\" ? payload.sessionToken : \"\"\n const near = this.parseNear(payload.near)\n\n if (navigationService.hasMapboxToken()) {\n const local = await navigationService.placeAutocomplete(query, near, sessionToken)\n if (local.ok) {\n this.sendResult(packageName, requestId, true, {ok: true, suggestions: local.suggestions ?? []})\n return\n }\n // A token is set but the direct call failed (bad key, offline, Mapbox\n // error). Fall through to the cloud rather than failing the search\n // outright.\n console.warn(`${LOG_TAG}: local placeAutocomplete failed, falling back to cloud:`, local.error)\n }\n\n const {suggestions} = await cloudClientService.maps.placeAutocomplete({query, near, sessionToken})\n this.sendResult(packageName, requestId, true, {ok: true, suggestions})\n } catch (err) {\n console.error(`${LOG_TAG}: navigation placeAutocomplete error:`, err)\n this.sendResult(packageName, requestId, false, undefined, {\n code: MiniappErrorCode.INTERNAL,\n message: err instanceof Error ? err.message : \"navigation placeAutocomplete error\",\n })\n }\n }\n\n /**\n * Resolve a suggestion (`placeId` + `sessionToken`) to a full place with\n * coordinates. Takes the same on-device-vs-cloud branch as\n * {@link handlePlaceAutocomplete}: the `placeId` and session token come from\n * whichever provider produced the suggestion, so both calls must run against\n * the same one. Resolves `{ok: true, place}`.\n */\n async handlePlaceDetails(packageName: string, payload: Record<string, unknown>, requestId?: string): Promise<void> {\n try {\n const placeId = typeof payload.placeId === \"string\" ? payload.placeId : \"\"\n const sessionToken = typeof payload.sessionToken === \"string\" ? payload.sessionToken : \"\"\n if (!placeId) {\n this.sendResult(packageName, requestId, false, undefined, {\n code: MiniappErrorCode.INTERNAL,\n message: \"placeId required\",\n })\n return\n }\n\n if (navigationService.hasMapboxToken()) {\n const local = await navigationService.placeDetails(placeId, sessionToken)\n if (local.ok && local.place) {\n this.sendResult(packageName, requestId, true, {ok: true, place: local.place})\n return\n }\n // Don't fall back to the cloud here: this `placeId` came from a Mapbox\n // Search Box suggestion and is not resolvable by another provider.\n this.sendResult(packageName, requestId, false, undefined, {\n code: MiniappErrorCode.INTERNAL,\n message: local.error ?? \"navigation placeDetails error\",\n })\n return\n }\n\n const place = await cloudClientService.maps.placeDetails({placeId, sessionToken})\n this.sendResult(packageName, requestId, true, {ok: true, place})\n } catch (err) {\n console.error(`${LOG_TAG}: navigation placeDetails error:`, err)\n this.sendResult(packageName, requestId, false, undefined, {\n code: MiniappErrorCode.INTERNAL,\n message: err instanceof Error ? err.message : \"navigation placeDetails error\",\n })\n }\n }\n\n /** Coerce an inbound `near` payload to a {lat,lng}, or undefined when absent/invalid. */\n private parseNear(raw: unknown): {lat: number; lng: number} | undefined {\n if (!raw || typeof raw !== \"object\") return undefined\n const obj = raw as Record<string, unknown>\n const lat = Number(obj.lat)\n const lng = Number(obj.lng)\n if (!Number.isFinite(lat) || !Number.isFinite(lng)) return undefined\n return {lat, lng}\n }\n}\n"]}