@glassly/engine 0.4.0 → 0.4.1-beta.1138
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/engine.d.ts +3 -1
- package/build/engine.d.ts.map +1 -1
- package/build/engine.js +6 -4
- package/build/engine.js.map +1 -1
- package/build/facades/display.d.ts +1 -1
- package/build/facades/display.d.ts.map +1 -1
- package/build/facades/display.js +1 -1
- package/build/facades/display.js.map +1 -1
- package/build/facades/glasses.js +1 -1
- package/build/facades/glasses.js.map +1 -1
- package/build/facades/permissions.d.ts.map +1 -1
- package/build/facades/permissions.js +0 -2
- package/build/facades/permissions.js.map +1 -1
- package/build/facades/phoneNotifications.d.ts +7 -0
- package/build/facades/phoneNotifications.d.ts.map +1 -1
- package/build/facades/phoneNotifications.js +6 -0
- package/build/facades/phoneNotifications.js.map +1 -1
- package/build/facades/providerKeys.d.ts +1 -1
- package/build/facades/providerKeys.js +1 -1
- package/build/facades/providerKeys.js.map +1 -1
- package/build/facades/reports.d.ts +15 -0
- package/build/facades/reports.d.ts.map +1 -1
- package/build/facades/reports.js +37 -0
- package/build/facades/reports.js.map +1 -1
- package/build/facades/settings.js +1 -1
- package/build/facades/settings.js.map +1 -1
- package/build/generated/releaseMetadata.js +4 -4
- package/build/generated/releaseMetadata.js.map +1 -1
- package/build/index.d.ts +2 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/react/useMentraLiveOta.d.ts.map +1 -1
- package/build/react/useMentraLiveOta.js.map +1 -1
- package/build/runtime/config.d.ts.map +1 -1
- package/build/runtime/config.js.map +1 -1
- package/build/services/AiTierResolution.d.ts +1 -1
- package/build/services/AiTierResolution.d.ts.map +1 -1
- package/build/services/AiTierResolution.js.map +1 -1
- package/build/services/AppRegistry.d.ts +12 -1
- package/build/services/AppRegistry.d.ts.map +1 -1
- package/build/services/AppRegistry.js +33 -0
- package/build/services/AppRegistry.js.map +1 -1
- package/build/services/AutomaticReportResult.d.ts.map +1 -1
- package/build/services/AutomaticReportResult.js.map +1 -1
- package/build/services/CloudClientService.d.ts +7 -5
- package/build/services/CloudClientService.d.ts.map +1 -1
- package/build/services/CloudClientService.js +17 -14
- package/build/services/CloudClientService.js.map +1 -1
- package/build/services/DisplayProcessor.d.ts.map +1 -1
- package/build/services/DisplayProcessor.js +2 -1
- package/build/services/DisplayProcessor.js.map +1 -1
- package/build/services/GestureDotsService.js +1 -1
- package/build/services/GestureDotsService.js.map +1 -1
- package/build/services/HotspotOtaTransport.d.ts.map +1 -1
- package/build/services/HotspotOtaTransport.js +0 -1
- package/build/services/HotspotOtaTransport.js.map +1 -1
- package/build/services/JSRouter.js +2 -2
- package/build/services/JSRouter.js.map +1 -1
- package/build/services/LocalLlmModelManager.d.ts.map +1 -1
- package/build/services/LocalLlmModelManager.js +4 -3
- package/build/services/LocalLlmModelManager.js.map +1 -1
- package/build/services/LocalLlmProvider.d.ts.map +1 -1
- package/build/services/LocalLlmProvider.js +5 -6
- package/build/services/LocalLlmProvider.js.map +1 -1
- package/build/services/LocalMiniappRuntime.d.ts +10 -3
- package/build/services/LocalMiniappRuntime.d.ts.map +1 -1
- package/build/services/LocalMiniappRuntime.js +142 -30
- package/build/services/LocalMiniappRuntime.js.map +1 -1
- package/build/services/LocalSttFallbackCoordinator.d.ts.map +1 -1
- package/build/services/LocalSttFallbackCoordinator.js.map +1 -1
- package/build/services/NativeNavigationService.d.ts.map +1 -1
- package/build/services/NativeNavigationService.js.map +1 -1
- package/build/services/NavigationHandlers.d.ts +1 -1
- package/build/services/NavigationHandlers.js +2 -2
- package/build/services/NavigationHandlers.js.map +1 -1
- package/build/services/NavigationService.d.ts +2 -2
- package/build/services/NavigationService.d.ts.map +1 -1
- package/build/services/NavigationService.js +11 -11
- package/build/services/NavigationService.js.map +1 -1
- package/build/services/PairingIdentity.d.ts.map +1 -1
- package/build/services/PairingIdentity.js.map +1 -1
- package/build/services/PhoneCalendarService.d.ts.map +1 -1
- package/build/services/PhoneCalendarService.js.map +1 -1
- package/build/services/PhoneNotificationsSync.d.ts.map +1 -1
- package/build/services/PhoneNotificationsSync.js +2 -1
- package/build/services/PhoneNotificationsSync.js.map +1 -1
- package/build/services/PhoneStreamCoordinator.d.ts.map +1 -1
- package/build/services/PhoneStreamCoordinator.js.map +1 -1
- package/build/services/ProviderKeyValidation.d.ts +1 -1
- package/build/services/ProviderKeyValidation.js +1 -1
- package/build/services/ProviderKeyValidation.js.map +1 -1
- package/build/services/STTModelManager.d.ts.map +1 -1
- package/build/services/STTModelManager.js +1 -6
- package/build/services/STTModelManager.js.map +1 -1
- package/build/services/SupportProfileSync.d.ts.map +1 -1
- package/build/services/SupportProfileSync.js +3 -0
- package/build/services/SupportProfileSync.js.map +1 -1
- package/build/services/TranscriptionRouting.d.ts +3 -0
- package/build/services/TranscriptionRouting.d.ts.map +1 -1
- package/build/services/TranscriptionRouting.js +14 -0
- package/build/services/TranscriptionRouting.js.map +1 -1
- package/build/services/UIRouter.d.ts.map +1 -1
- package/build/services/UIRouter.js.map +1 -1
- package/build/services/controllers.d.ts.map +1 -1
- package/build/services/controllers.js +1 -0
- package/build/services/controllers.js.map +1 -1
- package/build/services/effectiveCapabilities.js +3 -2
- package/build/services/effectiveCapabilities.js.map +1 -1
- package/build/services/gestureDotGlyphs.d.ts.map +1 -1
- package/build/services/gestureDotGlyphs.js.map +1 -1
- package/build/services/manifestActions.d.ts.map +1 -1
- package/build/services/manifestActions.js.map +1 -1
- package/build/services/neuralBand/MetaAuth.d.ts +1 -0
- package/build/services/neuralBand/MetaAuth.d.ts.map +1 -1
- package/build/services/neuralBand/MetaAuth.js +36 -8
- package/build/services/neuralBand/MetaAuth.js.map +1 -1
- package/build/services/notificationAppPayload.d.ts +14 -0
- package/build/services/notificationAppPayload.d.ts.map +1 -0
- package/build/services/notificationAppPayload.js +15 -0
- package/build/services/notificationAppPayload.js.map +1 -0
- package/build/services/notifications/miniappNotifications.d.ts +31 -0
- package/build/services/notifications/miniappNotifications.d.ts.map +1 -0
- package/build/services/notifications/miniappNotifications.js +24 -0
- package/build/services/notifications/miniappNotifications.js.map +1 -0
- package/build/services/pages/pageEligibility.d.ts +1 -2
- package/build/services/pages/pageEligibility.d.ts.map +1 -1
- package/build/services/pages/pageEligibility.js +4 -2
- package/build/services/pages/pageEligibility.js.map +1 -1
- package/build/services/settingsBridge.d.ts.map +1 -1
- package/build/services/settingsBridge.js +0 -2
- package/build/services/settingsBridge.js.map +1 -1
- package/build/services/uiShim.d.ts.map +1 -1
- package/build/services/uiShim.js +14 -0
- package/build/services/uiShim.js.map +1 -1
- package/build/stores/appVisibility.d.ts.map +1 -1
- package/build/stores/appVisibility.js.map +1 -1
- package/build/stores/gallerySync.d.ts.map +1 -1
- package/build/stores/gallerySync.js.map +1 -1
- package/build/stores/glasses.d.ts.map +1 -1
- package/build/stores/glasses.js +1 -0
- package/build/stores/glasses.js.map +1 -1
- package/build/stores/settings.d.ts.map +1 -1
- package/build/stores/settings.js +27 -28
- package/build/stores/settings.js.map +1 -1
- package/build/types/capabilities/even-realities-g1.d.ts.map +1 -1
- package/build/types/capabilities/even-realities-g1.js +4 -0
- package/build/types/capabilities/even-realities-g1.js.map +1 -1
- package/build/types/capabilities/nimo.d.ts.map +1 -1
- package/build/types/capabilities/nimo.js +21 -7
- package/build/types/capabilities/nimo.js.map +1 -1
- package/build/types/enums.d.ts +2 -1
- package/build/types/enums.d.ts.map +1 -1
- package/build/types/enums.js +1 -0
- package/build/types/enums.js.map +1 -1
- package/build/utils/display/index.d.ts +1 -0
- package/build/utils/display/index.d.ts.map +1 -1
- package/build/utils/display/index.js +2 -2
- package/build/utils/display/index.js.map +1 -1
- package/build/utils/display/profiles/index.d.ts +1 -0
- package/build/utils/display/profiles/index.d.ts.map +1 -1
- package/build/utils/display/profiles/index.js +1 -0
- package/build/utils/display/profiles/index.js.map +1 -1
- package/build/utils/display/profiles/nimo.d.ts +2 -0
- package/build/utils/display/profiles/nimo.d.ts.map +1 -0
- package/build/utils/display/profiles/nimo.js +3 -0
- package/build/utils/display/profiles/nimo.js.map +1 -0
- package/build/utils/display/scene/svgPath.js.map +1 -1
- package/build/utils/memory/search.d.ts.map +1 -1
- package/build/utils/memory/search.js +17 -7
- package/build/utils/memory/search.js.map +1 -1
- package/package.json +15 -15
- package/src/engine.ts +9 -7
- package/src/facades/display.ts +1 -1
- package/src/facades/glasses.ts +1 -1
- package/src/facades/permissions.ts +0 -2
- package/src/facades/phoneNotifications.ts +10 -0
- package/src/facades/providerKeys.ts +1 -1
- package/src/facades/reports.ts +41 -0
- package/src/facades/settings.ts +1 -1
- package/src/generated/releaseMetadata.ts +4 -4
- package/src/index.ts +2 -0
- package/src/react/useMentraLiveOta.ts +1 -4
- package/src/runtime/config.ts +1 -6
- package/src/services/AiTierResolution.ts +1 -1
- package/src/services/AppRegistry.ts +38 -1
- package/src/services/AutomaticReportResult.ts +1 -3
- package/src/services/CloudClientService.ts +17 -11
- package/src/services/DisplayProcessor.ts +2 -0
- package/src/services/GestureDotsService.ts +1 -1
- package/src/services/HotspotOtaTransport.ts +1 -5
- package/src/services/JSRouter.ts +2 -2
- package/src/services/LocalLlmModelManager.ts +4 -3
- package/src/services/LocalLlmProvider.ts +6 -7
- package/src/services/LocalMiniappRuntime.ts +170 -40
- package/src/services/LocalSttFallbackCoordinator.ts +1 -5
- package/src/services/NativeNavigationService.ts +1 -2
- package/src/services/NavigationHandlers.ts +2 -2
- package/src/services/NavigationService.ts +12 -11
- package/src/services/PairingIdentity.ts +1 -3
- package/src/services/PhoneCalendarService.ts +1 -3
- package/src/services/PhoneNotificationsSync.ts +2 -1
- package/src/services/PhoneStreamCoordinator.ts +1 -2
- package/src/services/ProviderKeyValidation.ts +1 -1
- package/src/services/STTModelManager.ts +1 -6
- package/src/services/SupportProfileSync.ts +2 -0
- package/src/services/TranscriptionRouting.ts +18 -0
- package/src/services/UIRouter.ts +3 -9
- package/src/services/controllers.ts +1 -0
- package/src/services/effectiveCapabilities.ts +3 -2
- package/src/services/gestureDotGlyphs.ts +10 -5
- package/src/services/manifestActions.ts +2 -1
- package/src/services/neuralBand/MetaAuth.ts +37 -8
- package/src/services/notificationAppPayload.ts +15 -0
- package/src/services/notifications/miniappNotifications.ts +53 -0
- package/src/services/pages/pageEligibility.ts +3 -2
- package/src/services/settingsBridge.ts +1 -4
- package/src/services/uiShim.ts +14 -0
- package/src/stores/appVisibility.ts +2 -5
- package/src/stores/gallerySync.ts +1 -7
- package/src/stores/glasses.ts +1 -0
- package/src/stores/settings.ts +27 -28
- package/src/types/capabilities/even-realities-g1.ts +5 -0
- package/src/types/capabilities/nimo.ts +23 -7
- package/src/types/enums.ts +1 -0
- package/src/utils/display/index.ts +2 -2
- package/src/utils/display/profiles/index.ts +2 -0
- package/src/utils/display/profiles/nimo.ts +2 -0
- package/src/utils/display/scene/svgPath.ts +1 -1
- package/src/utils/memory/search.ts +17 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerKeys.js","sourceRoot":"","sources":["../../src/facades/providerKeys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mCAAmC,CAAA;AAE1C,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS,EAAE;QACT,+DAA+D;QAC/D,WAAW,EAAE,CAAC,GAAG,IAAgD,EAAE,EAAE,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC;KACvG;IACD,MAAM,EAAE;QACN,4DAA4D;QAC5D,WAAW,EAAE,CAAC,GAAG,IAA6C,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;KACjG;IACD,MAAM,EAAE;QACN,4DAA4D;QAC5D,WAAW,EAAE,CAAC,GAAG,IAA6C,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;KACjG;IACD,QAAQ,EAAE;QACR,8DAA8D;QAC9D,WAAW,EAAE,CAAC,GAAG,IAA+C,EAAE,EAAE,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC;KACrG;IACD,UAAU,EAAE;QACV,gEAAgE;QAChE,WAAW,EAAE,CAAC,GAAG,IAAiD,EAAE,EAAE,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC;KACzG;CACF,CAAA","sourcesContent":["/**\n * providerKeys facade — `engine.providerKeys.{anthropic,gemini,openai,deepseek,elevenlabs}`:\n * validate-before-save probes for the user-supplied AI/voice provider keys\n * (Settings > API Keys). Same per-provider shape as `engine.maps.mapbox` /\n * `engine.speech.sonioxDirect` so the Keys screen treats providers uniformly.\n */\nimport {\n validateAnthropicApiKey,\n validateDeepSeekApiKey,\n validateElevenLabsApiKey,\n validateGeminiApiKey,\n validateOpenAiApiKey,\n} from \"../services/ProviderKeyValidation\"\n\nexport const providerKeys = {\n anthropic: {\n /** Probe a key against the Anthropic API without saving it. */\n validateKey: (...args: Parameters<typeof validateAnthropicApiKey>) => validateAnthropicApiKey(...args),\n },\n gemini: {\n /** Probe a key against the Gemini API without saving it. */\n validateKey: (...args: Parameters<typeof validateGeminiApiKey>) => validateGeminiApiKey(...args),\n },\n openai: {\n /** Probe a key against the OpenAI API without saving it. */\n validateKey: (...args: Parameters<typeof validateOpenAiApiKey>) => validateOpenAiApiKey(...args),\n },\n deepseek: {\n /** Probe a key against the DeepSeek API without saving it. */\n validateKey: (...args: Parameters<typeof validateDeepSeekApiKey>) => validateDeepSeekApiKey(...args),\n },\n elevenlabs: {\n /** Probe a key against the ElevenLabs API without saving it. */\n validateKey: (...args: Parameters<typeof validateElevenLabsApiKey>) => validateElevenLabsApiKey(...args),\n },\n}\n"]}
|
|
1
|
+
{"version":3,"file":"providerKeys.js","sourceRoot":"","sources":["../../src/facades/providerKeys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mCAAmC,CAAA;AAE1C,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS,EAAE;QACT,+DAA+D;QAC/D,WAAW,EAAE,CAAC,GAAG,IAAgD,EAAE,EAAE,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC;KACvG;IACD,MAAM,EAAE;QACN,4DAA4D;QAC5D,WAAW,EAAE,CAAC,GAAG,IAA6C,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;KACjG;IACD,MAAM,EAAE;QACN,4DAA4D;QAC5D,WAAW,EAAE,CAAC,GAAG,IAA6C,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;KACjG;IACD,QAAQ,EAAE;QACR,8DAA8D;QAC9D,WAAW,EAAE,CAAC,GAAG,IAA+C,EAAE,EAAE,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC;KACrG;IACD,UAAU,EAAE;QACV,gEAAgE;QAChE,WAAW,EAAE,CAAC,GAAG,IAAiD,EAAE,EAAE,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC;KACzG;CACF,CAAA","sourcesContent":["/**\n * providerKeys facade — `engine.providerKeys.{anthropic,gemini,openai,deepseek,elevenlabs}`:\n * validate-before-save probes for the user-supplied AI/voice provider keys\n * (Settings > Privacy > API Keys). Same per-provider shape as `engine.maps.mapbox` /\n * `engine.speech.sonioxDirect` so the Keys screen treats providers uniformly.\n */\nimport {\n validateAnthropicApiKey,\n validateDeepSeekApiKey,\n validateElevenLabsApiKey,\n validateGeminiApiKey,\n validateOpenAiApiKey,\n} from \"../services/ProviderKeyValidation\"\n\nexport const providerKeys = {\n anthropic: {\n /** Probe a key against the Anthropic API without saving it. */\n validateKey: (...args: Parameters<typeof validateAnthropicApiKey>) => validateAnthropicApiKey(...args),\n },\n gemini: {\n /** Probe a key against the Gemini API without saving it. */\n validateKey: (...args: Parameters<typeof validateGeminiApiKey>) => validateGeminiApiKey(...args),\n },\n openai: {\n /** Probe a key against the OpenAI API without saving it. */\n validateKey: (...args: Parameters<typeof validateOpenAiApiKey>) => validateOpenAiApiKey(...args),\n },\n deepseek: {\n /** Probe a key against the DeepSeek API without saving it. */\n validateKey: (...args: Parameters<typeof validateDeepSeekApiKey>) => validateDeepSeekApiKey(...args),\n },\n elevenlabs: {\n /** Probe a key against the ElevenLabs API without saving it. */\n validateKey: (...args: Parameters<typeof validateElevenLabsApiKey>) => validateElevenLabsApiKey(...args),\n },\n}\n"]}
|
|
@@ -29,8 +29,23 @@ export type ReportSubmitResult = {
|
|
|
29
29
|
status: "failed";
|
|
30
30
|
error: string;
|
|
31
31
|
};
|
|
32
|
+
/** A debug-console log upload: the report it went to, and whether it replaced an earlier upload. */
|
|
33
|
+
export type LogUploadResult = {
|
|
34
|
+
status: "created" | "updated";
|
|
35
|
+
reportId: string;
|
|
36
|
+
} | {
|
|
37
|
+
status: "busy";
|
|
38
|
+
} | {
|
|
39
|
+
status: "failed";
|
|
40
|
+
error: string;
|
|
41
|
+
};
|
|
42
|
+
/** Uploads within this window after a report's creation replace its phone logs. */
|
|
43
|
+
export declare const LOG_UPLOAD_WINDOW_MS: number;
|
|
44
|
+
/** Phone logs only, as a manual bug report; repeated taps cannot spam reports. */
|
|
45
|
+
declare function uploadLogs(): Promise<LogUploadResult>;
|
|
32
46
|
export declare const reports: {
|
|
33
47
|
submit(input: EngineSubmitReportInput): Promise<ReportSubmitResult>;
|
|
48
|
+
uploadLogs: typeof uploadLogs;
|
|
34
49
|
};
|
|
35
50
|
export declare function submitAutomaticReport(input: EngineSubmitAutomaticReportInput): Promise<ReportSubmitResult>;
|
|
36
51
|
//# sourceMappingURL=reports.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../../src/facades/reports.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AAOhH,YAAY,EACV,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,uBAAuB,CAAA;AAE9B,MAAM,MAAM,uBAAuB,GAC/B,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;IAAC,IAAI,EAAE,KAAK,CAAA;CAAC,CAAC,EAAE,SAAS,CAAC,GAAG;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAChC,WAAW,CAAC,EAAE,qBAAqB,EAAE,CAAA;CACtC,CAAC,GACF,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;IAAC,IAAI,EAAE,UAAU,CAAA;CAAC,CAAC,EAAE,SAAS,CAAC,GAAG;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;CACjC,CAAC,CAAA;AAEN,MAAM,MAAM,gCAAgC,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;IAAC,IAAI,EAAE,WAAW,CAAA;CAAC,CAAC,EAAE,SAAS,CAAC,GAAG;IAChH,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAChC,WAAW,CAAC,EAAE,qBAAqB,EAAE,CAAA;IACrC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAID,MAAM,MAAM,kBAAkB,GAC1B;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAC,GACnE;IAAC,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,yBAAyB,CAAA;CAAC,GACtD;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAA;AA8HrC,eAAO,MAAM,OAAO;kBACJ,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC
|
|
1
|
+
{"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../../src/facades/reports.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AAOhH,YAAY,EACV,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,uBAAuB,CAAA;AAE9B,MAAM,MAAM,uBAAuB,GAC/B,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;IAAC,IAAI,EAAE,KAAK,CAAA;CAAC,CAAC,EAAE,SAAS,CAAC,GAAG;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAChC,WAAW,CAAC,EAAE,qBAAqB,EAAE,CAAA;CACtC,CAAC,GACF,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;IAAC,IAAI,EAAE,UAAU,CAAA;CAAC,CAAC,EAAE,SAAS,CAAC,GAAG;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;CACjC,CAAC,CAAA;AAEN,MAAM,MAAM,gCAAgC,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;IAAC,IAAI,EAAE,WAAW,CAAA;CAAC,CAAC,EAAE,SAAS,CAAC,GAAG;IAChH,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAChC,WAAW,CAAC,EAAE,qBAAqB,EAAE,CAAA;IACrC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAID,MAAM,MAAM,kBAAkB,GAC1B;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAC,GACnE;IAAC,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,yBAAyB,CAAA;CAAC,GACtD;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAA;AA8HrC,oGAAoG;AACpG,MAAM,MAAM,eAAe,GACvB;IAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,GACjD;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,GAChB;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAA;AAErC,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,QAAa,CAAA;AAI9C,kFAAkF;AAClF,iBAAe,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC,CA0BpD;AAED,eAAO,MAAM,OAAO;kBACJ,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC;;CAIpE,CAAA;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gCAAgC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE1G"}
|
package/build/facades/reports.js
CHANGED
|
@@ -123,10 +123,47 @@ async function submitReportInternal(input) {
|
|
|
123
123
|
}
|
|
124
124
|
return { status: "submitted", reportId, reportStatus };
|
|
125
125
|
}
|
|
126
|
+
/** Uploads within this window after a report's creation replace its phone logs. */
|
|
127
|
+
export const LOG_UPLOAD_WINDOW_MS = 5 * 60_000;
|
|
128
|
+
let logUpload = null;
|
|
129
|
+
let logUploadInFlight = false;
|
|
130
|
+
/** Phone logs only, as a manual bug report; repeated taps cannot spam reports. */
|
|
131
|
+
async function uploadLogs() {
|
|
132
|
+
if (logUploadInFlight)
|
|
133
|
+
return { status: "busy" };
|
|
134
|
+
logUploadInFlight = true;
|
|
135
|
+
try {
|
|
136
|
+
const logs = logBuffer.getRecentLogs();
|
|
137
|
+
const now = Date.now();
|
|
138
|
+
if (logUpload && now - logUpload.createdAt < LOG_UPLOAD_WINDOW_MS) {
|
|
139
|
+
await cloudClientService.core.reports.addLogs(logUpload.reportId, "phone", logs, { replace: true });
|
|
140
|
+
return { status: "updated", reportId: logUpload.reportId };
|
|
141
|
+
}
|
|
142
|
+
const context = await collectDiagnosticContext();
|
|
143
|
+
const res = await cloudClientService.core.reports.submit({
|
|
144
|
+
kind: "bug",
|
|
145
|
+
trigger: { type: "manual", source: "debug_console", reason: "log_upload" },
|
|
146
|
+
report: { actualBehavior: "Debug console log upload" },
|
|
147
|
+
context,
|
|
148
|
+
});
|
|
149
|
+
logUpload = { reportId: res.reportId, createdAt: now };
|
|
150
|
+
if (logs.length > 0)
|
|
151
|
+
await cloudClientService.core.reports.addLogs(res.reportId, "phone", logs);
|
|
152
|
+
await cloudClientService.core.reports.complete(res.reportId);
|
|
153
|
+
return { status: "created", reportId: res.reportId };
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
return { status: "failed", error: error instanceof Error ? error.message : String(error) };
|
|
157
|
+
}
|
|
158
|
+
finally {
|
|
159
|
+
logUploadInFlight = false;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
126
162
|
export const reports = {
|
|
127
163
|
submit(input) {
|
|
128
164
|
return submitReportInternal(input);
|
|
129
165
|
},
|
|
166
|
+
uploadLogs,
|
|
130
167
|
};
|
|
131
168
|
export function submitAutomaticReport(input) {
|
|
132
169
|
return submitReportInternal(input);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reports.js","sourceRoot":"","sources":["../../src/facades/reports.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * reports facade — `engine.reports`: user/system report submission over the\n * Cloud core client.\n *\n * Host/OEM code owns UI and wording. Engine owns Glassly mechanics: context\n * collection, recent phone logs, Cloud calls, local automatic throttling,\n * screenshots, and notifying connected glasses.\n */\nimport BluetoothSdk from \"@glassly/bluetooth-sdk/internal\"\nimport type {ReportAttachmentInput, ReportContext, ReportStatus, SubmitReportInput} from \"@glassly/cloud-client\"\nimport {useGlassesStore} from \"../stores/glasses\"\nimport {isGlassesConnected} from \"../services/GlassesReadiness\"\nimport {cloudClientService} from \"../services/CloudClientService\"\nimport {collectDiagnosticContext} from \"../utils/diagnosticContext\"\nimport {logBuffer} from \"../utils/devLogging\"\n\nexport type {\n ReportAttachmentInput,\n ReportContext,\n ReportDetails,\n ReportStatus,\n ReportTrigger,\n} from \"@glassly/cloud-client\"\n\nexport type EngineSubmitReportInput =\n | (Omit<Extract<SubmitReportInput, {kind: \"bug\"}>, \"context\"> & {\n context?: Partial<ReportContext>\n screenshots?: ReportAttachmentInput[]\n })\n | (Omit<Extract<SubmitReportInput, {kind: \"feedback\"}>, \"context\"> & {\n context?: Partial<ReportContext>\n })\n\nexport type EngineSubmitAutomaticReportInput = Omit<Extract<SubmitReportInput, {kind: \"automatic\"}>, \"context\"> & {\n context?: Partial<ReportContext>\n screenshots?: ReportAttachmentInput[]\n throttleKey?: string\n throttleWindowMs?: number\n}\n\ntype InternalSubmitReportInput = EngineSubmitReportInput | EngineSubmitAutomaticReportInput\n\nexport type ReportSubmitResult =\n | {status: \"submitted\"; reportId: string; reportStatus: ReportStatus}\n | {status: \"skipped\"; reason: \"throttled_within_window\"}\n | {status: \"failed\"; error: string}\n\nconst DEFAULT_AUTOMATIC_REPORT_THROTTLE_MS = 90_000\nconst automaticReportThrottleRegistry = new Map<string, number>()\n\nfunction automaticThrottleShouldSkip(key: string, nowMs: number, windowMs: number): boolean {\n const previous = automaticReportThrottleRegistry.get(key)\n if (previous !== undefined && nowMs - previous < windowMs) {\n return true\n }\n pruneAutomaticThrottleRegistry(nowMs, windowMs)\n return false\n}\n\nfunction markAutomaticThrottleSuccess(key: string, nowMs: number, windowMs: number): void {\n automaticReportThrottleRegistry.set(key, nowMs)\n pruneAutomaticThrottleRegistry(nowMs, windowMs)\n}\n\nfunction pruneAutomaticThrottleRegistry(nowMs: number, windowMs: number): void {\n for (const [entryKey, entryTime] of automaticReportThrottleRegistry) {\n if (nowMs - entryTime > windowMs * 3) {\n automaticReportThrottleRegistry.delete(entryKey)\n }\n }\n}\n\nfunction notifyGlasses(reportId: string, apiBaseUrl?: string | null): void {\n if (!isGlassesConnected(useGlassesStore.getState().connection)) return\n void (async () => {\n try {\n await cloudClientService.syncCoreTokenToBluetooth()\n await BluetoothSdk.sendIncidentId(reportId, apiBaseUrl ?? cloudClientService.getCoreUrl())\n } catch (error) {\n console.warn(\"reports.submit: notify glasses failed:\", error instanceof Error ? error.message : error)\n }\n })()\n}\n\nasync function submitReportInternal(input: InternalSubmitReportInput): Promise<ReportSubmitResult> {\n const throttle =\n input.kind === \"automatic\" && input.throttleKey\n ? {\n key: input.throttleKey,\n windowMs: input.throttleWindowMs ?? DEFAULT_AUTOMATIC_REPORT_THROTTLE_MS,\n }\n : null\n\n if (input.kind === \"automatic\" && input.throttleKey) {\n const shouldSkip = automaticThrottleShouldSkip(\n input.throttleKey,\n Date.now(),\n throttle?.windowMs ?? DEFAULT_AUTOMATIC_REPORT_THROTTLE_MS,\n )\n if (shouldSkip) return {status: \"skipped\", reason: \"throttled_within_window\"}\n }\n\n const context = await collectDiagnosticContext(input.context)\n let reportId: string\n let reportStatus: ReportStatus\n let artifactsComplete = true\n try {\n const res =\n input.kind === \"feedback\"\n ? await cloudClientService.core.reports.submit({\n kind: \"feedback\",\n feedback: input.feedback,\n context,\n })\n : input.kind === \"bug\"\n ? await cloudClientService.core.reports.submit({\n kind: \"bug\",\n trigger: input.trigger,\n report: input.report,\n context,\n })\n : await cloudClientService.core.reports.submit({\n kind: \"automatic\",\n trigger: input.trigger,\n report: input.report,\n context,\n })\n reportId = res.reportId\n reportStatus = res.status\n } catch (error) {\n return {status: \"failed\", error: error instanceof Error ? error.message : String(error)}\n }\n\n if (input.kind !== \"feedback\") {\n const logs = logBuffer.getRecentLogs()\n if (logs.length > 0) {\n try {\n await cloudClientService.core.reports.addLogs(reportId, \"phone\", logs)\n } catch (error) {\n artifactsComplete = false\n console.warn(\"reports.submit: add phone logs failed:\", error instanceof Error ? error.message : error)\n }\n }\n\n notifyGlasses(reportId, cloudClientService.getCoreUrl())\n\n if (input.screenshots && input.screenshots.length > 0) {\n try {\n await cloudClientService.core.reports.addScreenshots(reportId, input.screenshots)\n } catch (error) {\n artifactsComplete = false\n console.warn(\"reports.submit: add screenshots failed:\", error instanceof Error ? error.message : error)\n }\n }\n\n try {\n const completed = await cloudClientService.core.reports.complete(reportId)\n reportStatus = completed.status\n } catch (error) {\n artifactsComplete = false\n console.warn(\"reports.submit: complete report failed:\", error instanceof Error ? error.message : error)\n }\n }\n\n if (throttle && artifactsComplete) {\n markAutomaticThrottleSuccess(throttle.key, Date.now(), throttle.windowMs)\n }\n\n return {status: \"submitted\", reportId, reportStatus}\n}\n\nexport const reports = {\n submit(input: EngineSubmitReportInput): Promise<ReportSubmitResult> {\n return submitReportInternal(input)\n },\n}\n\nexport function submitAutomaticReport(input: EngineSubmitAutomaticReportInput): Promise<ReportSubmitResult> {\n return submitReportInternal(input)\n}\n"]}
|
|
1
|
+
{"version":3,"file":"reports.js","sourceRoot":"","sources":["../../src/facades/reports.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * reports facade — `engine.reports`: user/system report submission over the\n * Cloud core client.\n *\n * Host/OEM code owns UI and wording. Engine owns Glassly mechanics: context\n * collection, recent phone logs, Cloud calls, local automatic throttling,\n * screenshots, and notifying connected glasses.\n */\nimport BluetoothSdk from \"@glassly/bluetooth-sdk/internal\"\nimport type {ReportAttachmentInput, ReportContext, ReportStatus, SubmitReportInput} from \"@glassly/cloud-client\"\nimport {useGlassesStore} from \"../stores/glasses\"\nimport {isGlassesConnected} from \"../services/GlassesReadiness\"\nimport {cloudClientService} from \"../services/CloudClientService\"\nimport {collectDiagnosticContext} from \"../utils/diagnosticContext\"\nimport {logBuffer} from \"../utils/devLogging\"\n\nexport type {\n ReportAttachmentInput,\n ReportContext,\n ReportDetails,\n ReportStatus,\n ReportTrigger,\n} from \"@glassly/cloud-client\"\n\nexport type EngineSubmitReportInput =\n | (Omit<Extract<SubmitReportInput, {kind: \"bug\"}>, \"context\"> & {\n context?: Partial<ReportContext>\n screenshots?: ReportAttachmentInput[]\n })\n | (Omit<Extract<SubmitReportInput, {kind: \"feedback\"}>, \"context\"> & {\n context?: Partial<ReportContext>\n })\n\nexport type EngineSubmitAutomaticReportInput = Omit<Extract<SubmitReportInput, {kind: \"automatic\"}>, \"context\"> & {\n context?: Partial<ReportContext>\n screenshots?: ReportAttachmentInput[]\n throttleKey?: string\n throttleWindowMs?: number\n}\n\ntype InternalSubmitReportInput = EngineSubmitReportInput | EngineSubmitAutomaticReportInput\n\nexport type ReportSubmitResult =\n | {status: \"submitted\"; reportId: string; reportStatus: ReportStatus}\n | {status: \"skipped\"; reason: \"throttled_within_window\"}\n | {status: \"failed\"; error: string}\n\nconst DEFAULT_AUTOMATIC_REPORT_THROTTLE_MS = 90_000\nconst automaticReportThrottleRegistry = new Map<string, number>()\n\nfunction automaticThrottleShouldSkip(key: string, nowMs: number, windowMs: number): boolean {\n const previous = automaticReportThrottleRegistry.get(key)\n if (previous !== undefined && nowMs - previous < windowMs) {\n return true\n }\n pruneAutomaticThrottleRegistry(nowMs, windowMs)\n return false\n}\n\nfunction markAutomaticThrottleSuccess(key: string, nowMs: number, windowMs: number): void {\n automaticReportThrottleRegistry.set(key, nowMs)\n pruneAutomaticThrottleRegistry(nowMs, windowMs)\n}\n\nfunction pruneAutomaticThrottleRegistry(nowMs: number, windowMs: number): void {\n for (const [entryKey, entryTime] of automaticReportThrottleRegistry) {\n if (nowMs - entryTime > windowMs * 3) {\n automaticReportThrottleRegistry.delete(entryKey)\n }\n }\n}\n\nfunction notifyGlasses(reportId: string, apiBaseUrl?: string | null): void {\n if (!isGlassesConnected(useGlassesStore.getState().connection)) return\n void (async () => {\n try {\n await cloudClientService.syncCoreTokenToBluetooth()\n await BluetoothSdk.sendIncidentId(reportId, apiBaseUrl ?? cloudClientService.getCoreUrl())\n } catch (error) {\n console.warn(\"reports.submit: notify glasses failed:\", error instanceof Error ? error.message : error)\n }\n })()\n}\n\nasync function submitReportInternal(input: InternalSubmitReportInput): Promise<ReportSubmitResult> {\n const throttle =\n input.kind === \"automatic\" && input.throttleKey\n ? {\n key: input.throttleKey,\n windowMs: input.throttleWindowMs ?? DEFAULT_AUTOMATIC_REPORT_THROTTLE_MS,\n }\n : null\n\n if (input.kind === \"automatic\" && input.throttleKey) {\n const shouldSkip = automaticThrottleShouldSkip(\n input.throttleKey,\n Date.now(),\n throttle?.windowMs ?? DEFAULT_AUTOMATIC_REPORT_THROTTLE_MS,\n )\n if (shouldSkip) return {status: \"skipped\", reason: \"throttled_within_window\"}\n }\n\n const context = await collectDiagnosticContext(input.context)\n let reportId: string\n let reportStatus: ReportStatus\n let artifactsComplete = true\n try {\n const res =\n input.kind === \"feedback\"\n ? await cloudClientService.core.reports.submit({\n kind: \"feedback\",\n feedback: input.feedback,\n context,\n })\n : input.kind === \"bug\"\n ? await cloudClientService.core.reports.submit({\n kind: \"bug\",\n trigger: input.trigger,\n report: input.report,\n context,\n })\n : await cloudClientService.core.reports.submit({\n kind: \"automatic\",\n trigger: input.trigger,\n report: input.report,\n context,\n })\n reportId = res.reportId\n reportStatus = res.status\n } catch (error) {\n return {status: \"failed\", error: error instanceof Error ? error.message : String(error)}\n }\n\n if (input.kind !== \"feedback\") {\n const logs = logBuffer.getRecentLogs()\n if (logs.length > 0) {\n try {\n await cloudClientService.core.reports.addLogs(reportId, \"phone\", logs)\n } catch (error) {\n artifactsComplete = false\n console.warn(\"reports.submit: add phone logs failed:\", error instanceof Error ? error.message : error)\n }\n }\n\n notifyGlasses(reportId, cloudClientService.getCoreUrl())\n\n if (input.screenshots && input.screenshots.length > 0) {\n try {\n await cloudClientService.core.reports.addScreenshots(reportId, input.screenshots)\n } catch (error) {\n artifactsComplete = false\n console.warn(\"reports.submit: add screenshots failed:\", error instanceof Error ? error.message : error)\n }\n }\n\n try {\n const completed = await cloudClientService.core.reports.complete(reportId)\n reportStatus = completed.status\n } catch (error) {\n artifactsComplete = false\n console.warn(\"reports.submit: complete report failed:\", error instanceof Error ? error.message : error)\n }\n }\n\n if (throttle && artifactsComplete) {\n markAutomaticThrottleSuccess(throttle.key, Date.now(), throttle.windowMs)\n }\n\n return {status: \"submitted\", reportId, reportStatus}\n}\n\n/** A debug-console log upload: the report it went to, and whether it replaced an earlier upload. */\nexport type LogUploadResult =\n | {status: \"created\" | \"updated\"; reportId: string}\n | {status: \"busy\"}\n | {status: \"failed\"; error: string}\n\n/** Uploads within this window after a report's creation replace its phone logs. */\nexport const LOG_UPLOAD_WINDOW_MS = 5 * 60_000\nlet logUpload: {reportId: string; createdAt: number} | null = null\nlet logUploadInFlight = false\n\n/** Phone logs only, as a manual bug report; repeated taps cannot spam reports. */\nasync function uploadLogs(): Promise<LogUploadResult> {\n if (logUploadInFlight) return {status: \"busy\"}\n logUploadInFlight = true\n try {\n const logs = logBuffer.getRecentLogs()\n const now = Date.now()\n if (logUpload && now - logUpload.createdAt < LOG_UPLOAD_WINDOW_MS) {\n await cloudClientService.core.reports.addLogs(logUpload.reportId, \"phone\", logs, {replace: true})\n return {status: \"updated\", reportId: logUpload.reportId}\n }\n const context = await collectDiagnosticContext()\n const res = await cloudClientService.core.reports.submit({\n kind: \"bug\",\n trigger: {type: \"manual\", source: \"debug_console\", reason: \"log_upload\"},\n report: {actualBehavior: \"Debug console log upload\"},\n context,\n })\n logUpload = {reportId: res.reportId, createdAt: now}\n if (logs.length > 0) await cloudClientService.core.reports.addLogs(res.reportId, \"phone\", logs)\n await cloudClientService.core.reports.complete(res.reportId)\n return {status: \"created\", reportId: res.reportId}\n } catch (error) {\n return {status: \"failed\", error: error instanceof Error ? error.message : String(error)}\n } finally {\n logUploadInFlight = false\n }\n}\n\nexport const reports = {\n submit(input: EngineSubmitReportInput): Promise<ReportSubmitResult> {\n return submitReportInternal(input)\n },\n uploadLogs,\n}\n\nexport function submitAutomaticReport(input: EngineSubmitAutomaticReportInput): Promise<ReportSubmitResult> {\n return submitReportInternal(input)\n}\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* settings facade — `engine.settings`: the typed keyed user-settings surface over
|
|
3
3
|
* the engine-owned settings store. This is the OEM contract.
|
|
4
4
|
*
|
|
5
|
-
* Keys + their schema live in `SETTINGS` (theme, devMode,
|
|
5
|
+
* Keys + their schema live in `SETTINGS` (theme, devMode, metric_system,
|
|
6
6
|
* notifications, onboarding flags, …); `descriptor(key)`/`keys()` expose them.
|
|
7
7
|
*/
|
|
8
8
|
import { useSettingsStore, SETTINGS } from "../stores/settings";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/facades/settings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAC,gBAAgB,EAAE,QAAQ,EAAC,MAAM,oBAAoB,CAAA;AAE7D,+EAA+E;AAC/E,kFAAkF;AAClF,SAAS,gBAAgB,CAAI,KAAQ;IACnC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,KAAK,CAAM,CAAA;IAChD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAC,GAAI,KAAgB,EAAM,CAAA;IAC1E,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB;8BAC0B;IAC1B,GAAG,EAAE,CAAc,GAAW,EAAiB,EAAE,CAC/C,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAkB,CAAC;IAChF;;;OAGG;IACH,GAAG,EAAE,CAAc,GAAW,EAAE,KAAQ,EAAE,YAAY,GAAG,IAAI,EAAE,EAAE,CAC/D,gBAAgB,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC;IAClE,gEAAgE;IAChE,SAAS,EAAE,CAAc,GAAW,EAAE,EAAkC,EAAgB,EAAE,CACxF,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAkB,EAAE,EAAE,CAAC;IAC3E,+EAA+E;IAC/E,UAAU,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC1C,8BAA8B;IAC9B,IAAI,EAAE,GAAa,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC3C;;;OAGG;IACH,aAAa,EAAE,GAAS,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,uBAAuB,EAAE;IAChF;;;OAGG;IACH,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,eAAe,EAAE;IAC5D;;;OAGG;IACH,MAAM,EAAE,GAA4B,EAAE,CAAC,CAAC,EAAC,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAC,CAAC;IAClF;;;OAGG;IACH,YAAY,EAAE,CAAC,MAA+B,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;CACtG,CAAA","sourcesContent":["/**\n * settings facade — `engine.settings`: the typed keyed user-settings surface over\n * the engine-owned settings store. This is the OEM contract.\n *\n * Keys + their schema live in `SETTINGS` (theme, devMode,
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/facades/settings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAC,gBAAgB,EAAE,QAAQ,EAAC,MAAM,oBAAoB,CAAA;AAE7D,+EAA+E;AAC/E,kFAAkF;AAClF,SAAS,gBAAgB,CAAI,KAAQ;IACnC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,KAAK,CAAM,CAAA;IAChD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAC,GAAI,KAAgB,EAAM,CAAA;IAC1E,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB;8BAC0B;IAC1B,GAAG,EAAE,CAAc,GAAW,EAAiB,EAAE,CAC/C,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAkB,CAAC;IAChF;;;OAGG;IACH,GAAG,EAAE,CAAc,GAAW,EAAE,KAAQ,EAAE,YAAY,GAAG,IAAI,EAAE,EAAE,CAC/D,gBAAgB,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC;IAClE,gEAAgE;IAChE,SAAS,EAAE,CAAc,GAAW,EAAE,EAAkC,EAAgB,EAAE,CACxF,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAkB,EAAE,EAAE,CAAC;IAC3E,+EAA+E;IAC/E,UAAU,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC1C,8BAA8B;IAC9B,IAAI,EAAE,GAAa,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC3C;;;OAGG;IACH,aAAa,EAAE,GAAS,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,uBAAuB,EAAE;IAChF;;;OAGG;IACH,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,eAAe,EAAE;IAC5D;;;OAGG;IACH,MAAM,EAAE,GAA4B,EAAE,CAAC,CAAC,EAAC,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAC,CAAC;IAClF;;;OAGG;IACH,YAAY,EAAE,CAAC,MAA+B,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;CACtG,CAAA","sourcesContent":["/**\n * settings facade — `engine.settings`: the typed keyed user-settings surface over\n * the engine-owned settings store. This is the OEM contract.\n *\n * Keys + their schema live in `SETTINGS` (theme, devMode, metric_system,\n * notifications, onboarding flags, …); `descriptor(key)`/`keys()` expose them.\n */\nimport {useSettingsStore, SETTINGS} from \"../stores/settings\"\n\n// Copy: object/array-valued settings must not hand callers a mutable reference\n// into the store (mutations would silently corrupt store state, bypassing set()).\nfunction copySettingValue<T>(value: T): T {\n if (Array.isArray(value)) return [...value] as T\n if (value && typeof value === \"object\") return {...(value as object)} as T\n return value\n}\n\nexport const settings = {\n /** Read a setting by key (the current value, or its default; object/array values\n * are shallow copies). */\n get: <T = unknown>(key: string): T | undefined =>\n copySettingValue(useSettingsStore.getState().getSetting(key) as T | undefined),\n /**\n * Write a setting. `syncToServer` (default true) also pushes the change to the\n * backend; pass false for device-local-only writes.\n */\n set: <T = unknown>(key: string, value: T, syncToServer = true) =>\n useSettingsStore.getState().setSetting(key, value, syncToServer),\n /** Subscribe to changes for one key; returns an unsubscribe. */\n onChanged: <T = unknown>(key: string, cb: (value: T | undefined) => void): (() => void) =>\n useSettingsStore.subscribe((s) => s.getSetting(key) as T | undefined, cb),\n /** The schema descriptor for a key (type, default, options…), or undefined. */\n descriptor: (key: string) => SETTINGS[key],\n /** All known setting keys. */\n keys: (): string[] => Object.keys(SETTINGS),\n /**\n * Reset every setting to its default on THIS device only (no server sync) —\n * the logout path. Server-side settings are untouched.\n */\n resetAllLocal: (): void => useSettingsStore.getState().resetAllSettingsLocally(),\n /**\n * Hydrate the settings store from device storage — the host-boot step (fire\n * once at app start, before UI reads settings). Single-flighted internally.\n */\n loadAll: () => useSettingsStore.getState().loadAllSettings(),\n /**\n * Every EXPLICITLY-SET setting (shallow copy; keys never written are absent —\n * use get() for default-resolved reads). The data-export surface.\n */\n getAll: (): Record<string, unknown> => ({...useSettingsStore.getState().settings}),\n /**\n * Bulk device-local write without server sync — seeding the store from a\n * backend settings payload.\n */\n setManyLocal: (values: Record<string, unknown>) => useSettingsStore.getState().setManyLocally(values),\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export const ENGINE_RELEASE_METADATA = Object.freeze({
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"familyBaseVersion": "0.4.
|
|
4
|
-
"releaseIdentity": "0.4.
|
|
5
|
-
"releaseSetId": "glassly-0.4.
|
|
6
|
-
"sourceCommit": "
|
|
3
|
+
"familyBaseVersion": "0.4.1",
|
|
4
|
+
"releaseIdentity": "0.4.1-beta.1138",
|
|
5
|
+
"releaseSetId": "glassly-0.4.1-beta.1138",
|
|
6
|
+
"sourceCommit": "71bec7fa9156ff40639ef61147d437c9f8db3c07",
|
|
7
7
|
"otaManifestUrl": null,
|
|
8
8
|
"otaManifestSha256": null
|
|
9
9
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"releaseMetadata.js","sourceRoot":"","sources":["../../src/generated/releaseMetadata.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,uBAAuB,GAAoC,MAAM,CAAC,MAAM,CAAC;IACpF,eAAe,EAAE,CAAC;IAClB,mBAAmB,EAAE,OAAO;IAC5B,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"releaseMetadata.js","sourceRoot":"","sources":["../../src/generated/releaseMetadata.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,uBAAuB,GAAoC,MAAM,CAAC,MAAM,CAAC;IACpF,eAAe,EAAE,CAAC;IAClB,mBAAmB,EAAE,OAAO;IAC5B,iBAAiB,EAAE,iBAAiB;IACpC,cAAc,EAAE,yBAAyB;IACzC,cAAc,EAAE,0CAA0C;IAC1D,gBAAgB,EAAE,IAAI;IACtB,mBAAmB,EAAE,IAAI;CAC1B,CAAC,CAAA","sourcesContent":["/** Generated by release CI. Do not edit in a release checkout. */\nexport interface EngineReleaseMetadata {\n schemaVersion: 1\n familyBaseVersion: string | null\n releaseIdentity: string | null\n releaseSetId: string | null\n sourceCommit: string | null\n otaManifestUrl: string | null\n otaManifestSha256: string | null\n}\n\nexport const ENGINE_RELEASE_METADATA: Readonly<EngineReleaseMetadata> = Object.freeze({\n \"schemaVersion\": 1,\n \"familyBaseVersion\": \"0.4.1\",\n \"releaseIdentity\": \"0.4.1-beta.1138\",\n \"releaseSetId\": \"glassly-0.4.1-beta.1138\",\n \"sourceCommit\": \"71bec7fa9156ff40639ef61147d437c9f8db3c07\",\n \"otaManifestUrl\": null,\n \"otaManifestSha256\": null\n})\n"]}
|
package/build/index.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export { engine } from "./engine";
|
|
|
13
13
|
export type { ReportAttachmentInput, ReportContext, ReportDetails, ReportStatus, ReportTrigger, ReportSubmitResult, EngineSubmitReportInput, } from "./facades/reports";
|
|
14
14
|
export type { IslandNotification, IslandNotificationKind } from "./facades/notifications";
|
|
15
15
|
export type { PresentationOwner } from "./services/notifications/notificationPolicy";
|
|
16
|
+
export type { MiniappNotificationEvent } from "./services/notifications/miniappNotifications";
|
|
16
17
|
export { DEFAULT_HIDDEN_PACKAGES, isGatedByDevTools, isSystemMiniapp } from "./stores/appVisibility";
|
|
17
18
|
export type { WifiSearchResult } from "./facades/glassesWifi";
|
|
18
19
|
export type { IdentitySnapshot } from "./services/PairingIdentity";
|
|
@@ -54,7 +55,7 @@ export { DUMMY_APPLET, saveAppsOrder, getAppsOrder, sortAppsByPackageNamePriorit
|
|
|
54
55
|
export { decideDevLaunchRoute, type DecideDevLaunchOptions, type DevLaunchResult, type DevManifest, } from "./utils/devMiniappLaunch";
|
|
55
56
|
export { HardwareCompatibility, type CompatibilityResult } from "./utils/hardware";
|
|
56
57
|
export { BgTimer } from "./utils/timers";
|
|
57
|
-
export { MetaAuthError, authEntryUrl, callbackMatches, callbackQuery, decryptBlob, isLoginCallback, login, tokensQuery, type MetaSession, type MetaSsoTokens, } from "./services/neuralBand/MetaAuth";
|
|
58
|
+
export { MetaAuthError, authEntryUrl, callbackMatches, callbackQuery, callbackShape, decryptBlob, isLoginCallback, login, tokensQuery, type MetaSession, type MetaSsoTokens, } from "./services/neuralBand/MetaAuth";
|
|
58
59
|
export type { NeuralBandClaimStatus, NeuralBandFirmwareStatus, NeuralBandHandwritingStatus, NeuralBandHandwritingUpdate, } from "./services/neuralBand/NeuralBandInput";
|
|
59
60
|
export { HardwareType, HardwareRequirementLevel, DeviceTypes, ControllerTypes, HARDWARE_CAPABILITIES, getModelCapabilities, simulatedGlasses, evenRealitiesG1, evenRealitiesG2, mentraLive, nimo, rayneoIO, vuzixZ100, mentraDisplay, } from "./types";
|
|
60
61
|
export type { HardwareRequirement, CameraCapabilities, DisplayCapabilities, MicrophoneCapabilities, SpeakerCapabilities, IMUCapabilities, ButtonCapabilities, LightCapabilities, PowerCapabilities, Capabilities, AppletType, AppPermissionType, AppletPermission, AppletInterface, ClientApp, } from "./types";
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/build/index.js
CHANGED
|
@@ -51,7 +51,7 @@ export { decideDevLaunchRoute, } from "./utils/devMiniappLaunch";
|
|
|
51
51
|
export { HardwareCompatibility } from "./utils/hardware";
|
|
52
52
|
export { BgTimer } from "./utils/timers";
|
|
53
53
|
// Meta Neural Band: the account sign-in a claim needs (the WebView lives in the host).
|
|
54
|
-
export { MetaAuthError, authEntryUrl, callbackMatches, callbackQuery, decryptBlob, isLoginCallback, login, tokensQuery, } from "./services/neuralBand/MetaAuth";
|
|
54
|
+
export { MetaAuthError, authEntryUrl, callbackMatches, callbackQuery, callbackShape, decryptBlob, isLoginCallback, login, tokensQuery, } from "./services/neuralBand/MetaAuth";
|
|
55
55
|
// Hardware types and capability profiles.
|
|
56
56
|
export { HardwareType, HardwareRequirementLevel, DeviceTypes, ControllerTypes, HARDWARE_CAPABILITIES, getModelCapabilities, simulatedGlasses, evenRealitiesG1, evenRealitiesG2, mentraLive, nimo, rayneoIO, vuzixZ100, mentraDisplay, } from "./types";
|
|
57
57
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,2EAA2E;AAC3E,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAY/B,OAAO,EAAC,uBAAuB,EAAE,iBAAiB,EAAE,eAAe,EAAC,MAAM,wBAAwB,CAAA;AAiBlG,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAAyE;AACzE,qEAAqE;AACrE,kDAAkD;AAClD,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAE,uBAAuB,EAAC,MAAM,mBAAmB,CAAA;AAC/E,OAAO,EAAC,oBAAoB,EAAE,yBAAyB,EAAC,MAAM,kCAAkC,CAAA;AAChG,OAAO,EAAC,wBAAwB,EAAC,MAAM,kCAAkC,CAAA;AACzE,OAAO,EAAC,iBAAiB,EAAE,iBAAiB,EAAC,MAAM,wBAAwB,CAAA;AAE3E,4EAA4E;AAC5E,yEAAyE;AACzE,6EAA6E;AAC7E,OAAO,EAAC,QAAQ,EAAE,kBAAkB,EAAE,gBAAgB,EAAC,MAAM,6BAA6B,CAAA;AAU1F,OAAO,EAAC,uBAAuB,EAAE,iBAAiB,EAAC,MAAM,iCAAiC,CAAA;AAiB1F,OAAO,EAAC,wBAAwB,EAAE,gCAAgC,EAAC,MAAM,+BAA+B,CAAA;AAExG,8CAA8C;AAC9C,OAAO,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAA;AAGrD,2DAA2D;AAC3D,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,mBAAmB,GAGpB,MAAM,6BAA6B,CAAA;AACpC,yEAAyE;AACzE,OAAO,EACL,eAAe,EACf,yBAAyB,GAI1B,MAAM,kCAAkC,CAAA;AAazC,uEAAuE;AACvE,2DAA2D;AAC3D,OAAO,EACL,wBAAwB,EACxB,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAA;AAW7D,OAAO,EACL,iBAAiB,EACjB,8BAA8B,EAC9B,oBAAoB,EACpB,uBAAuB,EACvB,kCAAkC,EAClC,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,mCAAmC,GACpC,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,uCAAuC,EACvC,yCAAyC,GAC1C,MAAM,4BAA4B,CAAA;AAMnC,OAAO,EAAC,uBAAuB,EAAC,MAAM,6CAA6C,CAAA;AACnF,OAAO,EAAC,wBAAwB,EAAC,MAAM,wCAAwC,CAAA;AAe/E,+EAA+E;AAC/E,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAA;AAEnD,yEAAyE;AACzE,6CAA6C;AAC7C,OAAO,EACL,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,6BAA6B,EAC7B,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,OAAO,EACP,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,UAAU,EACV,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,gBAAgB,GAGjB,MAAM,eAAe,CAAA;AAEtB,4EAA4E;AAC5E,OAAO,EACL,oBAAoB,GAIrB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAC,qBAAqB,EAA2B,MAAM,kBAAkB,CAAA;AAChF,OAAO,EAAC,OAAO,EAAC,MAAM,gBAAgB,CAAA;AACtC,uFAAuF;AACvF,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,EACb,WAAW,EACX,eAAe,EACf,KAAK,EACL,WAAW,GAGZ,MAAM,gCAAgC,CAAA;AAQvC,0CAA0C;AAC1C,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,WAAW,EACX,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,aAAa,GACd,MAAM,SAAS,CAAA","sourcesContent":["/**\n * `@glassly/engine` — the OEM-facing main entry.\n *\n * The `engine` namespace (configure/start/stop + typed domain facades), the\n * public contract/read-model types, and the pure helpers host UI legitimately\n * renders with (decision functions, sort/order helpers, policy constants,\n * capability tables, timers). Judgment rule: read models, commands, pure\n * functions and types belong here; anything that mutates runtime state or\n * exposes a raw store/service remains private to the Glassly host.\n * See cloud/docs/issues/020-glasses-status-boundary/integration-review.md §D.\n */\n\n// The namespaced OEM-facing engine API (the \"(A) host API\"). See ./engine.\nexport {engine} from \"./engine\"\nexport type {\n ReportAttachmentInput,\n ReportContext,\n ReportDetails,\n ReportStatus,\n ReportTrigger,\n ReportSubmitResult,\n EngineSubmitReportInput,\n} from \"./facades/reports\"\nexport type {IslandNotification, IslandNotificationKind} from \"./facades/notifications\"\nexport type {PresentationOwner} from \"./services/notifications/notificationPolicy\"\nexport {DEFAULT_HIDDEN_PACKAGES, isGatedByDevTools, isSystemMiniapp} from \"./stores/appVisibility\"\nexport type {WifiSearchResult} from \"./facades/glassesWifi\"\nexport type {IdentitySnapshot} from \"./services/PairingIdentity\"\nexport type {DisplayMirrorEvent} from \"./facades/displayMirror\"\nexport type {\n IslandConfigureOptions,\n IslandAuth,\n IslandConfigValues,\n IslandAnalytics,\n IslandUiSeams,\n ScanQrOptions,\n ScanQrResult,\n WebLoginOptions,\n WebLoginResult,\n SubjectTokenType,\n} from \"./runtime/bootstrap\"\n\n// Settings contract: the typed key registry (schema descriptors — the same\n// surface engine.settings.descriptor()/keys() reads), the per-key React hook\n// (the hook layer, same precedent as the apps hooks below), and the pure\n// device-model key helpers. The raw useSettingsStore stays internal;\n// imperative access goes through engine.settings.\nexport {SETTINGS, useSetting, AI_DATA_CONSENT_VERSION} from \"./stores/settings\"\nexport {isCfwFirmwareVersion, isCustomDashboardEligible} from \"./services/pages/pageEligibility\"\nexport {getEffectiveCapabilities} from \"./services/effectiveCapabilities\"\nexport {isControllerModel, isControllerReady} from \"./services/controllers\"\n\n// AI tier registry: the curated per-tier model dropdown options and helpers\n// the Settings > AI Models screen renders. Resolution itself runs inside\n// LocalMiniappRuntime; the screen only reads/writes the ai_model_* settings.\nexport {AI_TIERS, TIER_MODEL_OPTIONS, parseTierSetting} from \"./services/AiTierResolution\"\nexport type {AiTier, AiTierProvider, TierModelOption} from \"./services/AiTierResolution\"\n// On-device LLM: the model catalog and download status the same screen\n// renders for the phone-side model (engine.ai.local).\nexport type {\n LocalLlmDownloadStage,\n LocalLlmDownloadStatus,\n LocalLlmModelConfig,\n LocalLlmModelId,\n} from \"./services/LocalLlmModelManager\"\nexport {DEFAULT_LOCAL_LLM_MODEL, isLocalLlmModelId} from \"./services/LocalLlmModelManager\"\nexport type {\n OfflineActivity,\n OfflineActivityReason,\n OfflineLlmActivity,\n OfflineTranscriptionActivity,\n OfflineTranslationActivity,\n OfflineTranslationPair,\n} from \"./services/OfflineActivity\"\n\n// Shared user memory timeline (engine.memory / Settings > Memory). Entry and\n// session shapes are canonical in @glassly/miniapp (the session.memory\n// surface); the stats read model is engine-side.\nexport type {MemoryStats} from \"./services/MemoryStore\"\nexport type {AppStateExportResult, AppStateRestoreOptions, AppStateRestoreResult} from \"./services/appStateBackupFile\"\nexport type {SpeakerProfile} from \"./services/SpeakerProfileStore\"\nexport type {EnrollOutcome} from \"./facades/speakers\"\nexport {MENTRA_LIVE_SETTING_KEYS, getBluetoothSettingKeysForDevice} from \"./stores/bluetoothSettingKeys\"\n\n// Runtime-shared constants and contract DTOs.\nexport {ISLAND_SETTINGS_KEYS} from \"./runtime/config\"\nexport type {CloudClientStatusSnapshot, MiniappAuthToken, InteropAuditEvent, TtsSynthesisResult} from \"./runtime/config\"\n\n// Pure readiness predicates over glasses connection state.\nexport {\n isGlassesConnected,\n isGlassesReady,\n isGlassesLinkLayerBusy,\n waitForGlassesReady,\n type GlassesConnectionStatus,\n type WaitForGlassesReadyOptions,\n} from \"./services/GlassesReadiness\"\n// Pure connect/reconnect decision helpers (host UI renders the outcome).\nexport {\n decideReconnect,\n decideConnectButtonAction,\n type ReconnectDecision,\n type ReconnectDecisionInput,\n type ConnectButtonAction,\n} from \"./services/ConnectionCoordinator\"\n\n// OTA read-model types for host OTA UI (progress screen, error mapping,\n// progress section) — the check/install machinery itself is internal.\nexport type {\n VersionInfo,\n MtkPatch,\n BesFirmware,\n VersionJson,\n OtaCheckResult,\n OtaCheckCurrentGlassesResult,\n OtaCheckCurrentGlassesOptions,\n} from \"./services/OtaUpdateCheckService\"\n// OTA install policy (watchdog timings + failure copy) + display-state\n// derivation, consumed by the OTA screens and their tests.\nexport {\n MINIMUM_OTA_STATUS_BUILD,\n MAX_RETRIES,\n RETRY_INTERVAL_MS,\n PROGRESS_TIMEOUT_MS,\n DOWNLOAD_STUCK_TIMEOUT_MS,\n MTK_INSTALL_TIMEOUT_MS,\n GLOBAL_OTA_TIMEOUT_MS,\n PING_INTERVAL_MS,\n QUERY_REPLY_TIMEOUT_MS,\n BES_RESTART_TIMEOUT_MS,\n OtaProgressMessages,\n} from \"./services/otaInstallPolicy\"\nexport {deriveDisplayState} from \"./services/otaDisplayState\"\nexport type {DisplayState} from \"./services/otaDisplayState\"\nexport type {\n OtaProgress,\n OtaProgressStatus,\n OtaStatus,\n OtaUpdateInfo,\n ReleaseChangelog,\n OtaSnapshot,\n OtaInstallSnapshot,\n} from \"./facades/ota\"\nexport {\n beginOtaAutoChain,\n clearOtaAutoChainReconnectWait,\n isOtaAutoChainActive,\n otaAutoChainFingerprint,\n otaAutoChainReconnectWaitRemaining,\n stopOtaAutoChain,\n tryAdvanceOtaAutoChain,\n MAX_OTA_AUTO_CHAIN_PASSES,\n OTA_AUTO_CHAIN_RECONNECT_TIMEOUT_MS,\n} from \"./services/OtaAutoChain\"\nexport type {OtaAutoChainAdvanceResult} from \"./services/OtaAutoChain\"\nexport {\n BES_INSTALL_RESTART_MESSAGE,\n getOtaErrorMessage,\n shouldRequireGlassesRebootForBesFailure,\n shouldShowChangeWifiForOtaDownloadFailure,\n} from \"./services/OtaErrorMapping\"\n\n// Gallery read models: engine.gallery.onNotice payload types, the media\n// permission helper + display-name derivation host gallery UI uses, and the\n// glasses-camera DTO types (re-exported through the host @/types/asg shim).\nexport type {GalleryNotice, GalleryNoticeCode} from \"./services/asg/galleryNotices\"\nexport {MediaLibraryPermissions} from \"./utils/permissions/MediaLibraryPermissions\"\nexport {deriveGalleryDisplayName} from \"./utils/permissions/galleryDisplayName\"\nexport type {\n PhotoInfo,\n CaptureFile,\n CaptureGroup,\n GalleryResponse,\n ServerStatus,\n HealthResponse,\n GalleryEvent,\n} from \"./types/asg\"\n\n// Bluetooth SDK event types host UI subscribes to via engine facades (the\n// BluetoothSdk singleton passthrough itself is internal).\nexport type {PairFailureEvent, GlassesNotReadyEvent, PairedController, ControllerStatus} from \"@glassly/bluetooth-sdk\"\n\n// Cloud connection status enum (read model; the connection store is internal).\nexport {WebSocketStatus} from \"./stores/connection\"\n\n// App-list hook layer + pure list helpers (the raw useAppStatusStore and\n// installAppStoreHooks wiring are internal).\nexport {\n DUMMY_APPLET,\n saveAppsOrder,\n getAppsOrder,\n sortAppsByPackageNamePriority,\n saveLastOpenTime,\n getLastOpenTime,\n sortAppsByLastOpenTime,\n useApps,\n useStart,\n useStop,\n useSetForeground,\n useClearForeground,\n useRefresh,\n useStopAll,\n useInstall,\n useUninstall,\n useActiveApps,\n useRunningAlwaysOnApps,\n useWidgetApps,\n useActiveBackgroundApps,\n useBackgroundApps,\n useActiveForegroundApp,\n useForegroundApp,\n useActiveBackgroundAppsCount,\n useLocalMiniApps,\n type StartOptions,\n type OrderMap,\n} from \"./stores/apps\"\n\n// Pure dev-miniapp launch-route decision (registration itself is internal).\nexport {\n decideDevLaunchRoute,\n type DecideDevLaunchOptions,\n type DevLaunchResult,\n type DevManifest,\n} from \"./utils/devMiniappLaunch\"\nexport {HardwareCompatibility, type CompatibilityResult} from \"./utils/hardware\"\nexport {BgTimer} from \"./utils/timers\"\n// Meta Neural Band: the account sign-in a claim needs (the WebView lives in the host).\nexport {\n MetaAuthError,\n authEntryUrl,\n callbackMatches,\n callbackQuery,\n decryptBlob,\n isLoginCallback,\n login,\n tokensQuery,\n type MetaSession,\n type MetaSsoTokens,\n} from \"./services/neuralBand/MetaAuth\"\nexport type {\n NeuralBandClaimStatus,\n NeuralBandFirmwareStatus,\n NeuralBandHandwritingStatus,\n NeuralBandHandwritingUpdate,\n} from \"./services/neuralBand/NeuralBandInput\"\n\n// Hardware types and capability profiles.\nexport {\n HardwareType,\n HardwareRequirementLevel,\n DeviceTypes,\n ControllerTypes,\n HARDWARE_CAPABILITIES,\n getModelCapabilities,\n simulatedGlasses,\n evenRealitiesG1,\n evenRealitiesG2,\n mentraLive,\n nimo,\n rayneoIO,\n vuzixZ100,\n mentraDisplay,\n} from \"./types\"\nexport type {\n HardwareRequirement,\n CameraCapabilities,\n DisplayCapabilities,\n MicrophoneCapabilities,\n SpeakerCapabilities,\n IMUCapabilities,\n ButtonCapabilities,\n LightCapabilities,\n PowerCapabilities,\n Capabilities,\n AppletType,\n AppPermissionType,\n AppletPermission,\n AppletInterface,\n ClientApp,\n} from \"./types\"\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `@glassly/engine` — the OEM-facing main entry.\n *\n * The `engine` namespace (configure/start/stop + typed domain facades), the\n * public contract/read-model types, and the pure helpers host UI legitimately\n * renders with (decision functions, sort/order helpers, policy constants,\n * capability tables, timers). Judgment rule: read models, commands, pure\n * functions and types belong here; anything that mutates runtime state or\n * exposes a raw store/service remains private to the Glassly host.\n * See cloud/docs/issues/020-glasses-status-boundary/integration-review.md §D.\n */\n\n// The namespaced OEM-facing engine API (the \"(A) host API\"). See ./engine.\nexport {engine} from \"./engine\"\nexport type {\n ReportAttachmentInput,\n ReportContext,\n ReportDetails,\n ReportStatus,\n ReportTrigger,\n ReportSubmitResult,\n EngineSubmitReportInput,\n} from \"./facades/reports\"\nexport type {IslandNotification, IslandNotificationKind} from \"./facades/notifications\"\nexport type {PresentationOwner} from \"./services/notifications/notificationPolicy\"\nexport type {MiniappNotificationEvent} from \"./services/notifications/miniappNotifications\"\nexport {DEFAULT_HIDDEN_PACKAGES, isGatedByDevTools, isSystemMiniapp} from \"./stores/appVisibility\"\nexport type {WifiSearchResult} from \"./facades/glassesWifi\"\nexport type {IdentitySnapshot} from \"./services/PairingIdentity\"\nexport type {DisplayMirrorEvent} from \"./facades/displayMirror\"\nexport type {\n IslandConfigureOptions,\n IslandAuth,\n IslandConfigValues,\n IslandAnalytics,\n IslandUiSeams,\n ScanQrOptions,\n ScanQrResult,\n WebLoginOptions,\n WebLoginResult,\n SubjectTokenType,\n} from \"./runtime/bootstrap\"\n\n// Settings contract: the typed key registry (schema descriptors — the same\n// surface engine.settings.descriptor()/keys() reads), the per-key React hook\n// (the hook layer, same precedent as the apps hooks below), and the pure\n// device-model key helpers. The raw useSettingsStore stays internal;\n// imperative access goes through engine.settings.\nexport {SETTINGS, useSetting, AI_DATA_CONSENT_VERSION} from \"./stores/settings\"\nexport {isCfwFirmwareVersion, isCustomDashboardEligible} from \"./services/pages/pageEligibility\"\nexport {getEffectiveCapabilities} from \"./services/effectiveCapabilities\"\nexport {isControllerModel, isControllerReady} from \"./services/controllers\"\n\n// AI tier registry: the curated per-tier model dropdown options and helpers\n// the Settings > AI Models screen renders. Resolution itself runs inside\n// LocalMiniappRuntime; the screen only reads/writes the ai_model_* settings.\nexport {AI_TIERS, TIER_MODEL_OPTIONS, parseTierSetting} from \"./services/AiTierResolution\"\nexport type {AiTier, AiTierProvider, TierModelOption} from \"./services/AiTierResolution\"\n// On-device LLM: the model catalog and download status the same screen\n// renders for the phone-side model (engine.ai.local).\nexport type {\n LocalLlmDownloadStage,\n LocalLlmDownloadStatus,\n LocalLlmModelConfig,\n LocalLlmModelId,\n} from \"./services/LocalLlmModelManager\"\nexport {DEFAULT_LOCAL_LLM_MODEL, isLocalLlmModelId} from \"./services/LocalLlmModelManager\"\nexport type {\n OfflineActivity,\n OfflineActivityReason,\n OfflineLlmActivity,\n OfflineTranscriptionActivity,\n OfflineTranslationActivity,\n OfflineTranslationPair,\n} from \"./services/OfflineActivity\"\n\n// Shared user memory timeline (engine.memory / Settings > Memory). Entry and\n// session shapes are canonical in @glassly/miniapp (the session.memory\n// surface); the stats read model is engine-side.\nexport type {MemoryStats} from \"./services/MemoryStore\"\nexport type {AppStateExportResult, AppStateRestoreOptions, AppStateRestoreResult} from \"./services/appStateBackupFile\"\nexport type {SpeakerProfile} from \"./services/SpeakerProfileStore\"\nexport type {EnrollOutcome} from \"./facades/speakers\"\nexport {MENTRA_LIVE_SETTING_KEYS, getBluetoothSettingKeysForDevice} from \"./stores/bluetoothSettingKeys\"\n\n// Runtime-shared constants and contract DTOs.\nexport {ISLAND_SETTINGS_KEYS} from \"./runtime/config\"\nexport type {CloudClientStatusSnapshot, MiniappAuthToken, InteropAuditEvent, TtsSynthesisResult} from \"./runtime/config\"\n\n// Pure readiness predicates over glasses connection state.\nexport {\n isGlassesConnected,\n isGlassesReady,\n isGlassesLinkLayerBusy,\n waitForGlassesReady,\n type GlassesConnectionStatus,\n type WaitForGlassesReadyOptions,\n} from \"./services/GlassesReadiness\"\n// Pure connect/reconnect decision helpers (host UI renders the outcome).\nexport {\n decideReconnect,\n decideConnectButtonAction,\n type ReconnectDecision,\n type ReconnectDecisionInput,\n type ConnectButtonAction,\n} from \"./services/ConnectionCoordinator\"\n\n// OTA read-model types for host OTA UI (progress screen, error mapping,\n// progress section) — the check/install machinery itself is internal.\nexport type {\n VersionInfo,\n MtkPatch,\n BesFirmware,\n VersionJson,\n OtaCheckResult,\n OtaCheckCurrentGlassesResult,\n OtaCheckCurrentGlassesOptions,\n} from \"./services/OtaUpdateCheckService\"\n// OTA install policy (watchdog timings + failure copy) + display-state\n// derivation, consumed by the OTA screens and their tests.\nexport {\n MINIMUM_OTA_STATUS_BUILD,\n MAX_RETRIES,\n RETRY_INTERVAL_MS,\n PROGRESS_TIMEOUT_MS,\n DOWNLOAD_STUCK_TIMEOUT_MS,\n MTK_INSTALL_TIMEOUT_MS,\n GLOBAL_OTA_TIMEOUT_MS,\n PING_INTERVAL_MS,\n QUERY_REPLY_TIMEOUT_MS,\n BES_RESTART_TIMEOUT_MS,\n OtaProgressMessages,\n} from \"./services/otaInstallPolicy\"\nexport {deriveDisplayState} from \"./services/otaDisplayState\"\nexport type {DisplayState} from \"./services/otaDisplayState\"\nexport type {\n OtaProgress,\n OtaProgressStatus,\n OtaStatus,\n OtaUpdateInfo,\n ReleaseChangelog,\n OtaSnapshot,\n OtaInstallSnapshot,\n} from \"./facades/ota\"\nexport {\n beginOtaAutoChain,\n clearOtaAutoChainReconnectWait,\n isOtaAutoChainActive,\n otaAutoChainFingerprint,\n otaAutoChainReconnectWaitRemaining,\n stopOtaAutoChain,\n tryAdvanceOtaAutoChain,\n MAX_OTA_AUTO_CHAIN_PASSES,\n OTA_AUTO_CHAIN_RECONNECT_TIMEOUT_MS,\n} from \"./services/OtaAutoChain\"\nexport type {OtaAutoChainAdvanceResult} from \"./services/OtaAutoChain\"\nexport {\n BES_INSTALL_RESTART_MESSAGE,\n getOtaErrorMessage,\n shouldRequireGlassesRebootForBesFailure,\n shouldShowChangeWifiForOtaDownloadFailure,\n} from \"./services/OtaErrorMapping\"\n\n// Gallery read models: engine.gallery.onNotice payload types, the media\n// permission helper + display-name derivation host gallery UI uses, and the\n// glasses-camera DTO types (re-exported through the host @/types/asg shim).\nexport type {GalleryNotice, GalleryNoticeCode} from \"./services/asg/galleryNotices\"\nexport {MediaLibraryPermissions} from \"./utils/permissions/MediaLibraryPermissions\"\nexport {deriveGalleryDisplayName} from \"./utils/permissions/galleryDisplayName\"\nexport type {\n PhotoInfo,\n CaptureFile,\n CaptureGroup,\n GalleryResponse,\n ServerStatus,\n HealthResponse,\n GalleryEvent,\n} from \"./types/asg\"\n\n// Bluetooth SDK event types host UI subscribes to via engine facades (the\n// BluetoothSdk singleton passthrough itself is internal).\nexport type {PairFailureEvent, GlassesNotReadyEvent, PairedController, ControllerStatus} from \"@glassly/bluetooth-sdk\"\n\n// Cloud connection status enum (read model; the connection store is internal).\nexport {WebSocketStatus} from \"./stores/connection\"\n\n// App-list hook layer + pure list helpers (the raw useAppStatusStore and\n// installAppStoreHooks wiring are internal).\nexport {\n DUMMY_APPLET,\n saveAppsOrder,\n getAppsOrder,\n sortAppsByPackageNamePriority,\n saveLastOpenTime,\n getLastOpenTime,\n sortAppsByLastOpenTime,\n useApps,\n useStart,\n useStop,\n useSetForeground,\n useClearForeground,\n useRefresh,\n useStopAll,\n useInstall,\n useUninstall,\n useActiveApps,\n useRunningAlwaysOnApps,\n useWidgetApps,\n useActiveBackgroundApps,\n useBackgroundApps,\n useActiveForegroundApp,\n useForegroundApp,\n useActiveBackgroundAppsCount,\n useLocalMiniApps,\n type StartOptions,\n type OrderMap,\n} from \"./stores/apps\"\n\n// Pure dev-miniapp launch-route decision (registration itself is internal).\nexport {\n decideDevLaunchRoute,\n type DecideDevLaunchOptions,\n type DevLaunchResult,\n type DevManifest,\n} from \"./utils/devMiniappLaunch\"\nexport {HardwareCompatibility, type CompatibilityResult} from \"./utils/hardware\"\nexport {BgTimer} from \"./utils/timers\"\n// Meta Neural Band: the account sign-in a claim needs (the WebView lives in the host).\nexport {\n MetaAuthError,\n authEntryUrl,\n callbackMatches,\n callbackQuery,\n callbackShape,\n decryptBlob,\n isLoginCallback,\n login,\n tokensQuery,\n type MetaSession,\n type MetaSsoTokens,\n} from \"./services/neuralBand/MetaAuth\"\nexport type {\n NeuralBandClaimStatus,\n NeuralBandFirmwareStatus,\n NeuralBandHandwritingStatus,\n NeuralBandHandwritingUpdate,\n} from \"./services/neuralBand/NeuralBandInput\"\n\n// Hardware types and capability profiles.\nexport {\n HardwareType,\n HardwareRequirementLevel,\n DeviceTypes,\n ControllerTypes,\n HARDWARE_CAPABILITIES,\n getModelCapabilities,\n simulatedGlasses,\n evenRealitiesG1,\n evenRealitiesG2,\n mentraLive,\n nimo,\n rayneoIO,\n vuzixZ100,\n mentraDisplay,\n} from \"./types\"\nexport type {\n HardwareRequirement,\n CameraCapabilities,\n DisplayCapabilities,\n MicrophoneCapabilities,\n SpeakerCapabilities,\n IMUCapabilities,\n ButtonCapabilities,\n LightCapabilities,\n PowerCapabilities,\n Capabilities,\n AppletType,\n AppPermissionType,\n AppletPermission,\n AppletInterface,\n ClientApp,\n} from \"./types\"\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMentraLiveOta.d.ts","sourceRoot":"","sources":["../../src/react/useMentraLiveOta.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,gBAAgB,CAAA;AAKpD,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,UAAU,CAAA;AAExD,MAAM,MAAM,mBAAmB,GAC3B,cAAc,GACd,UAAU,GACV,WAAW,GACX,kBAAkB,GAClB,kBAAkB,GAClB,eAAe,GACf,YAAY,GACZ,WAAW,GACX,cAAc,GACd,yBAAyB,GACzB,UAAU,GACV,mBAAmB,GACnB,UAAU,GACV,YAAY,GACZ,WAAW,GACX,UAAU,GACV,QAAQ,GACR,cAAc,CAAA;AAElB,MAAM,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"useMentraLiveOta.d.ts","sourceRoot":"","sources":["../../src/react/useMentraLiveOta.ts"],"names":[],"mappings":"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"}
|