@mentra/sdk 2.1.30-beta.1 โ†’ 2.1.31-beta.2

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 (67) hide show
  1. package/dist/app/server/index.d.ts +2 -1
  2. package/dist/app/server/index.d.ts.map +1 -1
  3. package/dist/app/session/device-state.d.ts +83 -0
  4. package/dist/app/session/device-state.d.ts.map +1 -0
  5. package/dist/app/session/index.d.ts +21 -7
  6. package/dist/app/session/index.d.ts.map +1 -1
  7. package/dist/index.d.ts +6 -3
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +205 -9
  10. package/dist/index.js.map +12 -10
  11. package/dist/types/capabilities.d.ts +3 -90
  12. package/dist/types/capabilities.d.ts.map +1 -1
  13. package/dist/types/index.d.ts +1 -1
  14. package/dist/types/index.d.ts.map +1 -1
  15. package/dist/types/message-types.d.ts +3 -1
  16. package/dist/types/message-types.d.ts.map +1 -1
  17. package/dist/types/messages/app-to-cloud.d.ts +15 -1
  18. package/dist/types/messages/app-to-cloud.d.ts.map +1 -1
  19. package/dist/types/messages/cloud-to-app.d.ts +14 -1
  20. package/dist/types/messages/cloud-to-app.d.ts.map +1 -1
  21. package/dist/utils/Observable.d.ts +92 -0
  22. package/dist/utils/Observable.d.ts.map +1 -0
  23. package/node_modules/@mentra/types/README.md +134 -0
  24. package/node_modules/@mentra/types/dist/applet.d.ts +39 -0
  25. package/node_modules/@mentra/types/dist/applet.d.ts.map +1 -0
  26. package/node_modules/@mentra/types/dist/applet.js +5 -0
  27. package/node_modules/@mentra/types/dist/capabilities/even-realities-g1.d.ts +12 -0
  28. package/node_modules/@mentra/types/dist/capabilities/even-realities-g1.d.ts.map +1 -0
  29. package/node_modules/@mentra/types/dist/capabilities/even-realities-g1.js +54 -0
  30. package/node_modules/@mentra/types/dist/capabilities/mentra-live.d.ts +12 -0
  31. package/node_modules/@mentra/types/dist/capabilities/mentra-live.d.ts.map +1 -0
  32. package/node_modules/@mentra/types/dist/capabilities/mentra-live.js +94 -0
  33. package/node_modules/@mentra/types/dist/capabilities/simulated-glasses.d.ts +13 -0
  34. package/node_modules/@mentra/types/dist/capabilities/simulated-glasses.d.ts.map +1 -0
  35. package/node_modules/@mentra/types/dist/capabilities/simulated-glasses.js +67 -0
  36. package/node_modules/@mentra/types/dist/capabilities/vuzix-z100.d.ts +12 -0
  37. package/node_modules/@mentra/types/dist/capabilities/vuzix-z100.d.ts.map +1 -0
  38. package/node_modules/@mentra/types/dist/capabilities/vuzix-z100.js +51 -0
  39. package/node_modules/@mentra/types/dist/cli.d.ts +130 -0
  40. package/node_modules/@mentra/types/dist/cli.d.ts.map +1 -0
  41. package/node_modules/@mentra/types/dist/cli.js +7 -0
  42. package/node_modules/@mentra/types/dist/device.d.ts +32 -0
  43. package/node_modules/@mentra/types/dist/device.d.ts.map +1 -0
  44. package/node_modules/@mentra/types/dist/device.js +6 -0
  45. package/node_modules/@mentra/types/dist/enums.d.ts +34 -0
  46. package/node_modules/@mentra/types/dist/enums.d.ts.map +1 -0
  47. package/node_modules/@mentra/types/dist/enums.js +39 -0
  48. package/node_modules/@mentra/types/dist/hardware.d.ts +141 -0
  49. package/node_modules/@mentra/types/dist/hardware.d.ts.map +1 -0
  50. package/node_modules/@mentra/types/dist/hardware.js +33 -0
  51. package/node_modules/@mentra/types/dist/index.d.ts +18 -0
  52. package/node_modules/@mentra/types/dist/index.d.ts.map +1 -0
  53. package/node_modules/@mentra/types/dist/index.js +25 -0
  54. package/node_modules/@mentra/types/package.json +31 -0
  55. package/node_modules/@mentra/types/src/applet.ts +51 -0
  56. package/node_modules/@mentra/types/src/capabilities/even-realities-g1.ts +63 -0
  57. package/node_modules/@mentra/types/src/capabilities/mentra-live.ts +103 -0
  58. package/node_modules/@mentra/types/src/capabilities/simulated-glasses.ts +76 -0
  59. package/node_modules/@mentra/types/src/capabilities/vuzix-z100.ts +60 -0
  60. package/node_modules/@mentra/types/src/cli.ts +169 -0
  61. package/node_modules/@mentra/types/src/device.ts +43 -0
  62. package/node_modules/@mentra/types/src/enums.ts +36 -0
  63. package/node_modules/@mentra/types/src/hardware.ts +172 -0
  64. package/node_modules/@mentra/types/src/index.ts +64 -0
  65. package/node_modules/@mentra/types/tsconfig.json +22 -0
  66. package/node_modules/@mentra/types/tsconfig.tsbuildinfo +1 -0
  67. package/package.json +6 -3
@@ -133,7 +133,7 @@ export declare class AppServer {
133
133
  * ๐Ÿ›‘ Stop the Server
134
134
  * Gracefully shuts down the server and cleans up all sessions.
135
135
  */
136
- stop(): void;
136
+ stop(): Promise<void>;
137
137
  /**
138
138
  * ๐Ÿ” Generate a App token for a user
139
139
  * This should be called when handling a session webhook request.
@@ -192,6 +192,7 @@ export declare class AppServer {
192
192
  /**
193
193
  * ๐Ÿงน Cleanup
194
194
  * Closes all active sessions and runs cleanup handlers.
195
+ * Releases ownership before disconnecting to enable clean handoffs (no resurrection).
195
196
  */
196
197
  private cleanup;
197
198
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/server/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/server/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAgB,EAAC,KAAK,OAAO,EAAC,MAAM,SAAS,CAAA;AAG7C,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAI3C,OAAO,EAKL,QAAQ,EAET,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAC,MAAM,EAAC,MAAM,MAAM,CAAA;AAI3B,eAAO,MAAM,iCAAiC,EAAE,MAA4C,CAAA;AAE5F;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,oIAAoI;IACpI,WAAW,EAAE,MAAM,CAAA;IACnB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAA;IACd,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAE1B,iEAAiE;IACjE,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,SAAS;IAcR,OAAO,CAAC,MAAM;IAb1B,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAS;IACpB,+CAA+C;IAC/C,OAAO,CAAC,cAAc,CAAgC;IACtD,4CAA4C;IAC5C,OAAO,CAAC,sBAAsB,CAAgC;IAC9D,mDAAmD;IACnD,OAAO,CAAC,eAAe,CAAwB;IAC/C,gDAAgD;IAChD,OAAO,CAAC,eAAe,CAAsB;IAE7C,SAAgB,MAAM,EAAE,MAAM,CAAA;gBAEV,MAAM,EAAE,eAAe;IAqDpC,aAAa,IAAI,OAAO;IAI/B;;;;;;;;OAQG;cACa,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhG;;;;;;;;OAQG;cACa,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxF;;;;;;;OAOG;cACa,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAM3E;;;;;OAKG;IACI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2D7B;;;OAGG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC;;;;;;;;OAQG;IACH,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAYrF;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAItD;;;OAGG;IACH,OAAO,CAAC,YAAY;IAoCpB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAgC7B;;OAEG;YACW,oBAAoB;IA6ElC;;OAEG;YACW,iBAAiB;IAgB/B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAyD7B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAQtB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAKrB;;;;OAIG;YACW,OAAO;IA4BrB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IA8GhC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAW/B;;OAEG;IACH,OAAO,CAAC,2BAA2B;CAQpC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,eAAe,GAAG,eAAe,CAAA;AAE7C;;;;;;;;;;;;GAYG;AACH,qBAAa,SAAU,SAAQ,SAAS;gBAC1B,MAAM,EAAE,eAAe;CASpC"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * DeviceState - Reactive device state management via WebSocket
3
+ *
4
+ * Provides real-time Observable properties for device state (WiFi, battery, hotspot, etc.)
5
+ * Uses flat structure matching GlassesInfo field names exactly.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // Synchronous read
10
+ * if (session.device.state.wifiConnected) {
11
+ * console.log("Connected to:", session.device.state.wifiSsid.value);
12
+ * }
13
+ *
14
+ * // Reactive subscription
15
+ * session.device.state.wifiConnected.onChange((connected) => {
16
+ * console.log("WiFi status:", connected);
17
+ * });
18
+ *
19
+ * session.device.state.batteryLevel.onChange((level) => {
20
+ * console.log("Battery:", level, "%");
21
+ * });
22
+ * ```
23
+ */
24
+ import { Observable } from '../../utils/Observable';
25
+ import type { GlassesInfo } from '@mentra/types';
26
+ import type { AppSession } from './index';
27
+ export declare class DeviceState {
28
+ /** WiFi connection status */
29
+ readonly wifiConnected: Observable<boolean>;
30
+ /** WiFi network SSID (null if not connected) */
31
+ readonly wifiSsid: Observable<string | null>;
32
+ /** WiFi local IP address (null if not connected) */
33
+ readonly wifiLocalIp: Observable<string | null>;
34
+ /** Glasses battery level (0-100, null if unknown) */
35
+ readonly batteryLevel: Observable<number | null>;
36
+ /** Glasses charging status (null if unknown) */
37
+ readonly charging: Observable<boolean | null>;
38
+ /** Case battery level (0-100, null if no case or unknown) */
39
+ readonly caseBatteryLevel: Observable<number | null>;
40
+ /** Case charging status (null if no case or unknown) */
41
+ readonly caseCharging: Observable<boolean | null>;
42
+ /** Case open/closed status (true = open, null if no case or unknown) */
43
+ readonly caseOpen: Observable<boolean | null>;
44
+ /** Case removed status (true = glasses not in case, null if no case or unknown) */
45
+ readonly caseRemoved: Observable<boolean | null>;
46
+ /** Hotspot enabled status (null if not supported or unknown) */
47
+ readonly hotspotEnabled: Observable<boolean | null>;
48
+ /** Hotspot SSID (null if disabled or unknown) */
49
+ readonly hotspotSsid: Observable<string | null>;
50
+ /** Glasses connected to phone/cloud (true = connected) */
51
+ readonly connected: Observable<boolean>;
52
+ /** Glasses model name (e.g., "even_g1", "xreal_air_2_pro") */
53
+ readonly modelName: Observable<string | null>;
54
+ private appSession;
55
+ constructor(appSession: AppSession);
56
+ /**
57
+ * Update device state from WebSocket message
58
+ *
59
+ * Called internally by AppSession when DEVICE_STATE_UPDATE message is received.
60
+ * Only updates Observables for fields present in the state object.
61
+ * Observables automatically notify listeners only if value changed.
62
+ *
63
+ * @param state - Partial device state (only changed fields, or full snapshot)
64
+ * @internal
65
+ */
66
+ updateFromMessage(state: Partial<GlassesInfo>): void;
67
+ /**
68
+ * Get snapshot of current device state
69
+ *
70
+ * Returns a plain object with current values of all Observables.
71
+ * Useful for compatibility with REST-style code or debugging.
72
+ *
73
+ * @returns Current device state as GlassesInfo partial object
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * const currentState = session.device.state.getSnapshot();
78
+ * console.log("Current state:", currentState);
79
+ * ```
80
+ */
81
+ getSnapshot(): Partial<GlassesInfo>;
82
+ }
83
+ //# sourceMappingURL=device-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-state.d.ts","sourceRoot":"","sources":["../../../src/app/session/device-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AAExC,qBAAa,WAAW;IAKtB,6BAA6B;IAC7B,SAAgB,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAEnD,gDAAgD;IAChD,SAAgB,QAAQ,EAAE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEpD,oDAAoD;IACpD,SAAgB,WAAW,EAAE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAMvD,qDAAqD;IACrD,SAAgB,YAAY,EAAE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAExD,gDAAgD;IAChD,SAAgB,QAAQ,EAAE,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAErD,6DAA6D;IAC7D,SAAgB,gBAAgB,EAAE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE5D,wDAAwD;IACxD,SAAgB,YAAY,EAAE,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAEzD,wEAAwE;IACxE,SAAgB,QAAQ,EAAE,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAErD,mFAAmF;IACnF,SAAgB,WAAW,EAAE,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAMxD,gEAAgE;IAChE,SAAgB,cAAc,EAAE,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE3D,iDAAiD;IACjD,SAAgB,WAAW,EAAE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAMvD,0DAA0D;IAC1D,SAAgB,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAE/C,8DAA8D;IAC9D,SAAgB,SAAS,EAAE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAMrD,OAAO,CAAC,UAAU,CAAa;gBAEnB,UAAU,EAAE,UAAU;IA4BlC;;;;;;;;;OASG;IACH,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAiDpD;;;;;;;;;;;;;OAaG;IACH,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;CAwBpC"}
@@ -1,9 +1,3 @@
1
- /**
2
- * ๐ŸŽฏ App Session Module
3
- *
4
- * Manages an active Third Party App session with MentraOS Cloud.
5
- * Handles real-time communication, event subscriptions, and display management.
6
- */
7
1
  import { EventManager, EventData } from "./events";
8
2
  import { LayoutManager } from "./layouts";
9
3
  import { SettingsManager } from "./settings";
@@ -16,6 +10,7 @@ import { DashboardAPI } from "../../types/dashboard";
16
10
  import { Logger } from "pino";
17
11
  import { AppServer } from "../server";
18
12
  import { SimpleStorage } from "./modules/simple-storage";
13
+ import { DeviceState } from "./device-state";
19
14
  /**
20
15
  * โš™๏ธ Configuration options for App Session
21
16
  *
@@ -117,6 +112,10 @@ export declare class AppSession {
117
112
  readonly audio: AudioManager;
118
113
  /** ๐Ÿ” Simple key-value storage interface */
119
114
  readonly simpleStorage: SimpleStorage;
115
+ /** ๐Ÿ“ฑ Reactive device state (WebSocket-based observables) */
116
+ readonly device: {
117
+ state: DeviceState;
118
+ };
120
119
  readonly appServer: AppServer;
121
120
  readonly logger: Logger;
122
121
  readonly userId: string;
@@ -247,11 +246,26 @@ export declare class AppSession {
247
246
  * @returns Promise that resolves when connected
248
247
  */
249
248
  connect(sessionId: string): Promise<void>;
249
+ /**
250
+ * ๐Ÿ”„ Release ownership of this session to allow clean handoff
251
+ * Call this before connecting to a different cloud instance or shutting down cleanly.
252
+ * This signals to the cloud that no resurrection is needed.
253
+ *
254
+ * @param reason - Why ownership is being released
255
+ */
256
+ releaseOwnership(reason: "switching_clouds" | "clean_shutdown" | "user_logout"): Promise<void>;
250
257
  /**
251
258
  * ๐Ÿ‘‹ Disconnect from MentraOS Cloud
252
259
  * Flushes any pending SimpleStorage writes before closing
260
+ *
261
+ * @param options - Optional disconnect options
262
+ * @param options.releaseOwnership - If true, send OWNERSHIP_RELEASE before disconnecting (enables clean handoff)
263
+ * @param options.reason - Reason for ownership release (required if releaseOwnership is true)
253
264
  */
254
- disconnect(): Promise<void>;
265
+ disconnect(options?: {
266
+ releaseOwnership?: boolean;
267
+ reason?: "switching_clouds" | "clean_shutdown" | "user_logout";
268
+ }): Promise<void>;
255
269
  /**
256
270
  * ๐Ÿ› ๏ธ Get all current user settings
257
271
  * @returns A copy of the current settings array
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/session/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/session/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAEL,iBAAiB,EAYjB,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,0BAA0B,EAC1B,iBAAiB,EACjB,eAAe,EAef,WAAW,EACX,UAAU,EACV,SAAS,EAGT,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,YAAY,EAEb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAatC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0EAA0E;IAC1E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8DAA8D;IAC9D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;CACtB;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,UAAU;IA8ET,OAAO,CAAC,MAAM;IA7E1B,6CAA6C;IAC7C,OAAO,CAAC,EAAE,CAA0B;IACpC,iCAAiC;IACjC,OAAO,CAAC,SAAS,CAAuB;IACxC,2CAA2C;IAC3C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,0FAA0F;IAC1F,OAAO,CAAC,UAAU,CAAS;IAK3B,4CAA4C;IAC5C,OAAO,CAAC,WAAW,CAAyC;IAC5D,6CAA6C;IAC7C,OAAO,CAAC,SAAS,CAAyB;IAC1C,kEAAkE;IAClE,OAAO,CAAC,YAAY,CAAmB;IACvC,oDAAoD;IACpD,OAAO,CAAC,SAAS,CAA0B;IAC3C,2DAA2D;IAC3D,OAAO,CAAC,yCAAyC,CAAS;IAC1D,mEAAmE;IACnE,OAAO,CAAC,2BAA2B,CAAC,CAAkD;IACtF,qEAAqE;IACrE,OAAO,CAAC,0BAA0B,CAAgB;IAClD,4DAA4D;IAC5D,OAAO,CAAC,4BAA4B,CAMhC;IACJ,4DAA4D;IAC5D,OAAO,CAAC,qBAAqB,CAMzB;IAEJ,oCAAoC;IACpC,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,qCAAqC;IACrC,SAAgB,OAAO,EAAE,aAAa,CAAC;IACvC,uCAAuC;IACvC,SAAgB,QAAQ,EAAE,eAAe,CAAC;IAC1C,wCAAwC;IACxC,SAAgB,SAAS,EAAE,YAAY,CAAC;IACxC,uCAAuC;IACvC,SAAgB,QAAQ,EAAE,eAAe,CAAC;IAC1C,mDAAmD;IACnD,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,2CAA2C;IAC3C,SAAgB,GAAG,EAAE,SAAS,CAAC;IAC/B,4CAA4C;IAC5C,SAAgB,KAAK,EAAE,YAAY,CAAC;IACpC,4CAA4C;IAC5C,SAAgB,aAAa,EAAE,aAAa,CAAC;IAC7C,6DAA6D;IAC7D,SAAgB,MAAM,EAAE;QAAE,KAAK,EAAE,WAAW,CAAA;KAAE,CAAC;IAE/C,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,wDAAwD;IACjD,YAAY,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEhD,gEAAgE;IAChE,OAAO,CAAC,sBAAsB,CAAa;IAE3C,8CAA8C;IAC9C,OAAO,CAAC,SAAS,CAAsB;gBAEnB,MAAM,EAAE,gBAAgB;IAsI5C;;;OAGG;IACH,YAAY,IAAI,MAAM;IAItB;;;OAGG;IACH,cAAc,IAAI,MAAM;IAQxB;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI;IAIvE;;;;;;;OAOG;IACH,0BAA0B,CACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,EAC1C,6BAA6B,UAAQ,GACpC,MAAM,IAAI;IAIb;;;;;;;;OAQG;IACH,wBAAwB,CACtB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,GACvC,MAAM,IAAI;IAIb;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI;IAIjE;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI;IAI/D;;;;;;;;;;;;OAYG;IACH,YAAY,CACV,gBAAgB,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC,EACvD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GACnC,MAAM,IAAI;IAIb;;;;;;;OAOG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI;IAcnD;;;;;OAKG;IACH,oBAAoB,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI;IAK5E;;;;;OAKG;IACH,4BAA4B,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,GAAG,MAAM,IAAI;IAI7F;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI;IAKrE;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAS7D;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IAgCzC;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IAuB3C;;;;OAIG;IACH,EAAE,CAAC,CAAC,SAAS,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAQ7F;;;;OAIG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0S/C;;;;;;OAMG;IACG,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,GAAG,gBAAgB,GAAG,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBpG;;;;;;;OAOG;IACG,UAAU,CAAC,OAAO,CAAC,EAAE;QACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,MAAM,CAAC,EAAE,kBAAkB,GAAG,gBAAgB,GAAG,aAAa,CAAC;KAChE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCjB;;;;OAIG;IACH,WAAW,IAAI,WAAW;IAI1B;;;;;OAKG;IACH,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIzC;;;;OAIG;IACH,uBAAuB,CAAC,OAAO,EAAE;QAC/B,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,kBAAkB,EAAE,CAAC;KAC1D,GAAG,IAAI;IAWR;;;OAGG;IACH,OAAO,CAAC,+BAA+B;IAsCvC;;;;OAIG;IACH,wBAAwB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAexD;;;;;OAKG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;IAgB/C;;;OAGG;IACH,SAAS,IAAI,SAAS,GAAG,IAAI;IAI7B;;;OAGG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAI3B,iBAAiB,IAAI,MAAM,GAAG,SAAS;IAO9C,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B;;;;OAIG;IACH,kBAAkB,IAAI,WAAW;IAajC;;;;OAIG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAUrD;;;OAGG;IACH,aAAa,IAAI;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI;IAOpE;;;OAGG;IACH,eAAe,IAAI,OAAO;IAI1B;;;;OAIG;IACH,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBvC;;;;OAIG;IACH,wBAAwB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAQnE;;OAEG;IACH,OAAO,CAAC,aAAa;IAuVrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAoBvB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA+B3B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAsDzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+B3B;;OAEG;YACW,kBAAkB;IA+EhC;;;OAGG;IACI,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAIpD;;;OAGG;IACH,OAAO,CAAC,IAAI;IAqEZ;;;OAGG;IACU,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgBtD;;;;OAIG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,UAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAgC7E;;;;OAIG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUpD;;;OAGG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUnD;;;;;OAKG;IACG,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxE;;;;;OAKG;IACG,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAoC7E;;;;;OAKG;IACG,WAAW,CACf,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,GAAG,CAAC;KAChB,GACA,OAAO,CAAC,IAAI,CAAC;IAkBhB;;;;OAIG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAKzD;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAKzD;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAKvD;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAK1D;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAG1B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEhD;;;;;;;;;;;;GAYG;AACH,qBAAa,UAAW,SAAQ,UAAU;gBAC5B,MAAM,EAAE,gBAAgB;CASrC;AAGD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -12,7 +12,7 @@ export * from "./types/streams";
12
12
  export * from "./types/layouts";
13
13
  export * from "./types/dashboard";
14
14
  export * from "./types/rtmp-stream";
15
- export { AppType, LayoutType, ViewType, AppSettingType, HardwareType, HardwareRequirementLevel, } from "./types/enums";
15
+ export { AppType, LayoutType, ViewType, AppSettingType, HardwareType, HardwareRequirementLevel } from "./types/enums";
16
16
  export * from "./types/models";
17
17
  export * from "./types/webhooks";
18
18
  export * from "./types/capabilities";
@@ -24,11 +24,14 @@ export { AppConnectionInit, AppSubscriptionUpdate, RtmpStreamRequest, RtmpStream
24
24
  export { TextWall, DoubleTextWall, DashboardCard, ReferenceCard, Layout, DisplayRequest, BitmapView, ClearView, } from "./types/layouts";
25
25
  export { isButtonPress, isHeadPosition, isConnectionInit, isStartApp, isStopApp, isPhotoResponse as isPhotoResponseFromGlasses, isRgbLedControlResponse as isRgbLedControlResponseFromGlasses, isRtmpStreamStatus as isRtmpStreamStatusFromGlasses, isKeepAliveAck, isPhoneNotificationDismissed, } from "./types/messages/glasses-to-cloud";
26
26
  export { isConnectionAck, isDisplayEvent, isAppStateChange, isPhotoRequest, isSettingsUpdate as isSettingsUpdateToGlasses, isStartRtmpStream, isStopRtmpStream, isKeepRtmpStreamAlive, isRgbLedControl, } from "./types/messages/cloud-to-glasses";
27
- export { isAppConnectionInit, isAppSubscriptionUpdate, isDisplayRequest, isRtmpStreamRequest, isRtmpStreamStopRequest, isPhotoRequest as isPhotoRequestFromApp, isRgbLedControlRequest, } from "./types/messages/app-to-cloud";
27
+ export { isAppConnectionInit, isAppSubscriptionUpdate, isDisplayRequest, isRtmpStreamRequest, isRtmpStreamStopRequest, isPhotoRequest as isPhotoRequestFromApp, isRgbLedControlRequest, isOwnershipRelease, } from "./types/messages/app-to-cloud";
28
28
  export { BaseAppSetting, AppSetting, AppSettings, AppConfig, validateAppConfig, ToolSchema, ToolParameterSchema, HardwareRequirement, } from "./types/models";
29
- export { VideoConfig, AudioConfig, StreamConfig, StreamStatusHandler, } from "./types/rtmp-stream";
29
+ export { VideoConfig, AudioConfig, StreamConfig, StreamStatusHandler } from "./types/rtmp-stream";
30
30
  export * from "./app/session/modules";
31
31
  export { PhotoData } from "./types/photo-data";
32
+ export { DeviceState } from "./app/session/device-state";
33
+ export { Observable } from "./utils/Observable";
34
+ export type { GlassesInfo } from "@mentra/types";
32
35
  /**
33
36
  * WebSocket error information
34
37
  */
@@ -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/dist/index.js CHANGED
@@ -373,6 +373,7 @@ var init_message_types = __esm(() => {
373
373
  AppToCloudMessageType2["APP_USER_DISCOVERY"] = "app_user_discovery";
374
374
  AppToCloudMessageType2["APP_ROOM_JOIN"] = "app_room_join";
375
375
  AppToCloudMessageType2["APP_ROOM_LEAVE"] = "app_room_leave";
376
+ AppToCloudMessageType2["OWNERSHIP_RELEASE"] = "ownership_release";
376
377
  })(AppToCloudMessageType ||= {});
377
378
  ((CloudToAppMessageType2) => {
378
379
  CloudToAppMessageType2["CONNECTION_ACK"] = "tpa_connection_ack";
@@ -380,6 +381,7 @@ var init_message_types = __esm(() => {
380
381
  CloudToAppMessageType2["APP_STOPPED"] = "app_stopped";
381
382
  CloudToAppMessageType2["SETTINGS_UPDATE"] = "settings_update";
382
383
  CloudToAppMessageType2["CAPABILITIES_UPDATE"] = "capabilities_update";
384
+ CloudToAppMessageType2["DEVICE_STATE_UPDATE"] = "device_state_update";
383
385
  CloudToAppMessageType2["DASHBOARD_MODE_CHANGED"] = "dashboard_mode_changed";
384
386
  CloudToAppMessageType2["DASHBOARD_ALWAYS_ON_CHANGED"] = "dashboard_always_on_changed";
385
387
  CloudToAppMessageType2["DATA_STREAM"] = "data_stream";
@@ -829,6 +831,9 @@ function isRtmpStreamRequest(message) {
829
831
  function isRtmpStreamStopRequest(message) {
830
832
  return message.type === "rtmp_stream_stop" /* RTMP_STREAM_STOP */;
831
833
  }
834
+ function isOwnershipRelease(message) {
835
+ return message.type === "ownership_release" /* OWNERSHIP_RELEASE */;
836
+ }
832
837
  // src/utils/bitmap-utils.ts
833
838
  import * as fs from "fs/promises";
834
839
  import * as path from "path";
@@ -1339,6 +1344,9 @@ function isSettingsUpdate2(message) {
1339
1344
  function isCapabilitiesUpdate(message) {
1340
1345
  return message.type === "capabilities_update" /* CAPABILITIES_UPDATE */;
1341
1346
  }
1347
+ function isDeviceStateUpdate(message) {
1348
+ return message.type === "device_state_update" /* DEVICE_STATE_UPDATE */;
1349
+ }
1342
1350
  function isDataStream(message) {
1343
1351
  return message.type === "data_stream" /* DATA_STREAM */;
1344
1352
  }
@@ -2198,7 +2206,7 @@ class ApiClient {
2198
2206
  import pino from "pino";
2199
2207
  var BETTERSTACK_SOURCE_TOKEN = process.env.BETTERSTACK_SOURCE_TOKEN;
2200
2208
  var BETTERSTACK_ENDPOINT = process.env.BETTERSTACK_ENDPOINT || "https://s1311181.eu-nbg-2.betterstackdata.com";
2201
- var NODE_ENV = "isaiah";
2209
+ var NODE_ENV = "aryan";
2202
2210
  var PORTER_APP_NAME = process.env.PORTER_APP_NAME || "cloud-local";
2203
2211
  var LOG_LEVEL = NODE_ENV === "production" ? "info" : "debug";
2204
2212
  var streams2 = [];
@@ -3530,6 +3538,149 @@ class SimpleStorage {
3530
3538
  }
3531
3539
  }
3532
3540
 
3541
+ // src/utils/Observable.ts
3542
+ class Observable {
3543
+ _value;
3544
+ _listeners = new Set;
3545
+ _initialized = false;
3546
+ constructor(initialValue) {
3547
+ this._value = initialValue;
3548
+ }
3549
+ get value() {
3550
+ return this._value;
3551
+ }
3552
+ valueOf() {
3553
+ return this._value;
3554
+ }
3555
+ toString() {
3556
+ return String(this._value);
3557
+ }
3558
+ [Symbol.toPrimitive](hint) {
3559
+ if (hint === "string") {
3560
+ return String(this._value);
3561
+ }
3562
+ return this._value;
3563
+ }
3564
+ onChange(callback) {
3565
+ this._listeners.add(callback);
3566
+ if (this._initialized) {
3567
+ callback(this._value);
3568
+ }
3569
+ return () => this._listeners.delete(callback);
3570
+ }
3571
+ setValue(value) {
3572
+ const isFirstInit = !this._initialized;
3573
+ if (isFirstInit) {
3574
+ this._initialized = true;
3575
+ }
3576
+ if (isFirstInit || this._value !== value) {
3577
+ this._value = value;
3578
+ this._listeners.forEach((cb) => {
3579
+ try {
3580
+ cb(value);
3581
+ } catch (error) {
3582
+ console.error("Error in Observable onChange callback:", error);
3583
+ }
3584
+ });
3585
+ }
3586
+ }
3587
+ get listenerCount() {
3588
+ return this._listeners.size;
3589
+ }
3590
+ }
3591
+
3592
+ // src/app/session/device-state.ts
3593
+ class DeviceState {
3594
+ wifiConnected;
3595
+ wifiSsid;
3596
+ wifiLocalIp;
3597
+ batteryLevel;
3598
+ charging;
3599
+ caseBatteryLevel;
3600
+ caseCharging;
3601
+ caseOpen;
3602
+ caseRemoved;
3603
+ hotspotEnabled;
3604
+ hotspotSsid;
3605
+ connected;
3606
+ modelName;
3607
+ appSession;
3608
+ constructor(appSession) {
3609
+ this.appSession = appSession;
3610
+ this.wifiConnected = new Observable(false);
3611
+ this.wifiSsid = new Observable(null);
3612
+ this.wifiLocalIp = new Observable(null);
3613
+ this.batteryLevel = new Observable(null);
3614
+ this.charging = new Observable(null);
3615
+ this.caseBatteryLevel = new Observable(null);
3616
+ this.caseCharging = new Observable(null);
3617
+ this.caseOpen = new Observable(null);
3618
+ this.caseRemoved = new Observable(null);
3619
+ this.hotspotEnabled = new Observable(null);
3620
+ this.hotspotSsid = new Observable(null);
3621
+ this.connected = new Observable(false);
3622
+ this.modelName = new Observable(null);
3623
+ }
3624
+ updateFromMessage(state) {
3625
+ if (state.connected !== undefined) {
3626
+ this.connected.setValue(state.connected);
3627
+ }
3628
+ if (state.modelName !== undefined) {
3629
+ this.modelName.setValue(state.modelName);
3630
+ }
3631
+ if (state.wifiConnected !== undefined) {
3632
+ this.wifiConnected.setValue(state.wifiConnected);
3633
+ }
3634
+ if (state.wifiSsid !== undefined) {
3635
+ this.wifiSsid.setValue(state.wifiSsid ?? null);
3636
+ }
3637
+ if (state.wifiLocalIp !== undefined) {
3638
+ this.wifiLocalIp.setValue(state.wifiLocalIp ?? null);
3639
+ }
3640
+ if (state.batteryLevel !== undefined) {
3641
+ this.batteryLevel.setValue(state.batteryLevel ?? null);
3642
+ }
3643
+ if (state.charging !== undefined) {
3644
+ this.charging.setValue(state.charging ?? null);
3645
+ }
3646
+ if (state.caseBatteryLevel !== undefined) {
3647
+ this.caseBatteryLevel.setValue(state.caseBatteryLevel ?? null);
3648
+ }
3649
+ if (state.caseCharging !== undefined) {
3650
+ this.caseCharging.setValue(state.caseCharging ?? null);
3651
+ }
3652
+ if (state.caseOpen !== undefined) {
3653
+ this.caseOpen.setValue(state.caseOpen ?? null);
3654
+ }
3655
+ if (state.caseRemoved !== undefined) {
3656
+ this.caseRemoved.setValue(state.caseRemoved ?? null);
3657
+ }
3658
+ if (state.hotspotEnabled !== undefined) {
3659
+ this.hotspotEnabled.setValue(state.hotspotEnabled ?? null);
3660
+ }
3661
+ if (state.hotspotSsid !== undefined) {
3662
+ this.hotspotSsid.setValue(state.hotspotSsid ?? null);
3663
+ }
3664
+ }
3665
+ getSnapshot() {
3666
+ return {
3667
+ connected: this.connected.value,
3668
+ modelName: this.modelName.value ?? undefined,
3669
+ wifiConnected: this.wifiConnected.value,
3670
+ wifiSsid: this.wifiSsid.value ?? undefined,
3671
+ wifiLocalIp: this.wifiLocalIp.value ?? undefined,
3672
+ batteryLevel: this.batteryLevel.value ?? undefined,
3673
+ charging: this.charging.value ?? undefined,
3674
+ caseBatteryLevel: this.caseBatteryLevel.value ?? undefined,
3675
+ caseCharging: this.caseCharging.value ?? undefined,
3676
+ caseOpen: this.caseOpen.value ?? undefined,
3677
+ caseRemoved: this.caseRemoved.value ?? undefined,
3678
+ hotspotEnabled: this.hotspotEnabled.value ?? undefined,
3679
+ hotspotSsid: this.hotspotSsid.value ?? undefined
3680
+ };
3681
+ }
3682
+ }
3683
+
3533
3684
  // src/app/session/index.ts
3534
3685
  var SDK_SUBSCRIPTION_PATCH = "bug007-fix-v2";
3535
3686
  var APP_TO_APP_EVENT_TYPES = [
@@ -3564,6 +3715,7 @@ class AppSession {
3564
3715
  led;
3565
3716
  audio;
3566
3717
  simpleStorage;
3718
+ device;
3567
3719
  appServer;
3568
3720
  logger;
3569
3721
  userId;
@@ -3631,6 +3783,7 @@ class AppSession {
3631
3783
  this.led = new LedModule(this, this.config.packageName, this.sessionId || "unknown-session-id", this.logger.child({ module: "led" }));
3632
3784
  this.audio = new AudioManager(this, this.config.packageName, this.sessionId || "unknown-session-id", this.logger.child({ module: "audio" }));
3633
3785
  this.simpleStorage = new SimpleStorage(this);
3786
+ this.device = { state: new DeviceState(this) };
3634
3787
  this.location = new LocationManager(this);
3635
3788
  }
3636
3789
  getSessionId() {
@@ -3910,7 +4063,26 @@ class AppSession {
3910
4063
  }
3911
4064
  });
3912
4065
  }
3913
- async disconnect() {
4066
+ async releaseOwnership(reason) {
4067
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
4068
+ this.logger.debug(`[${this.config.packageName}] Cannot release ownership - WebSocket not open`);
4069
+ return;
4070
+ }
4071
+ const message = {
4072
+ type: "ownership_release" /* OWNERSHIP_RELEASE */,
4073
+ packageName: this.config.packageName,
4074
+ sessionId: this.sessionId || "",
4075
+ reason,
4076
+ timestamp: new Date
4077
+ };
4078
+ this.logger.info({ reason, sessionId: this.sessionId }, `\uD83D\uDD04 [${this.config.packageName}] Releasing ownership: ${reason}`);
4079
+ this.send(message);
4080
+ await new Promise((resolve) => setTimeout(resolve, 100));
4081
+ }
4082
+ async disconnect(options) {
4083
+ if (options?.releaseOwnership && options?.reason) {
4084
+ await this.releaseOwnership(options.reason);
4085
+ }
3914
4086
  try {
3915
4087
  await this.simpleStorage.flush();
3916
4088
  console.log("SimpleStorage flushed on disconnect");
@@ -4150,6 +4322,12 @@ class AppSession {
4150
4322
  modelName: capabilitiesMessage.modelName,
4151
4323
  timestamp: capabilitiesMessage.timestamp
4152
4324
  });
4325
+ } else if (isDeviceStateUpdate(message)) {
4326
+ this.device.state.updateFromMessage(message.state);
4327
+ this.logger.debug({
4328
+ changedFields: Object.keys(message.state),
4329
+ fullSnapshot: message.fullSnapshot
4330
+ }, `[AppSession] Device state updated via WebSocket`);
4153
4331
  } else if (isAppStopped(message)) {
4154
4332
  const reason = message.reason || "unknown";
4155
4333
  const displayReason = `App stopped: ${reason}`;
@@ -4432,7 +4610,12 @@ class AppSession {
4432
4610
  throw new Error(`Failed to send message: ${errorMessage}`);
4433
4611
  }
4434
4612
  } catch (error) {
4435
- this.logger.error(error, "Message send error");
4613
+ const isDisconnectError = error instanceof Error && (error.message.includes("WebSocket not connected") || error.message.includes("CLOSED") || error.message.includes("CLOSING"));
4614
+ if (isDisconnectError) {
4615
+ this.logger.debug(error, "Message send skipped - session disconnected");
4616
+ } else {
4617
+ this.logger.error(error, "Message send error");
4618
+ }
4436
4619
  if (error instanceof Error) {
4437
4620
  this.events.emit("error", error);
4438
4621
  } else {
@@ -4985,10 +5168,10 @@ class AppServer {
4985
5168
  });
4986
5169
  });
4987
5170
  }
4988
- stop() {
5171
+ async stop() {
4989
5172
  this.logger.info(`
4990
5173
  \uD83D\uDED1 Shutting down...`);
4991
- this.cleanup();
5174
+ await this.cleanup();
4992
5175
  process.exit(0);
4993
5176
  }
4994
5177
  generateToken(userId, sessionId, secretKey) {
@@ -5192,10 +5375,20 @@ class AppServer {
5192
5375
  process.on("SIGTERM", () => this.stop());
5193
5376
  process.on("SIGINT", () => this.stop());
5194
5377
  }
5195
- cleanup() {
5378
+ async cleanup() {
5196
5379
  for (const [sessionId, session] of this.activeSessions) {
5197
- this.logger.info(`\uD83D\uDC4B Closing session ${sessionId}`);
5198
- session.disconnect();
5380
+ this.logger.info(`\uD83D\uDC4B Closing session ${sessionId} with ownership release`);
5381
+ try {
5382
+ await session.disconnect({
5383
+ releaseOwnership: true,
5384
+ reason: "clean_shutdown"
5385
+ });
5386
+ } catch (error) {
5387
+ this.logger.error(error, `Error during cleanup of session ${sessionId}`);
5388
+ try {
5389
+ await session.disconnect();
5390
+ } catch {}
5391
+ }
5199
5392
  }
5200
5393
  this.activeSessions.clear();
5201
5394
  this.activeSessionsByUserId.clear();
@@ -5349,6 +5542,7 @@ export {
5349
5542
  isPhoneNotificationDismissed,
5350
5543
  isPhoneNotification,
5351
5544
  isPhoneBatteryUpdate,
5545
+ isOwnershipRelease,
5352
5546
  isMicrophoneStateChange,
5353
5547
  isManagedStreamStopRequest,
5354
5548
  isManagedStreamStatus,
@@ -5417,6 +5611,7 @@ export {
5417
5611
  PhotoStage,
5418
5612
  PhotoErrorCode,
5419
5613
  PermissionType,
5614
+ Observable,
5420
5615
  LedModule,
5421
5616
  LayoutType,
5422
5617
  LEGACY_PERMISSION_MAP,
@@ -5425,6 +5620,7 @@ export {
5425
5620
  GlassesToCloudMessageType,
5426
5621
  GIVE_APP_CONTROL_OF_TOOL_RESPONSE,
5427
5622
  EventTypes,
5623
+ DeviceState,
5428
5624
  DashboardMode,
5429
5625
  DashboardMessageTypes,
5430
5626
  ControlActionTypes,
@@ -5442,4 +5638,4 @@ export {
5442
5638
  AnimationUtils
5443
5639
  };
5444
5640
 
5445
- //# debugId=E26109C36CC6A50F64756E2164756E21
5641
+ //# debugId=5178B6743C1469D964756E2164756E21