@mentra/sdk 2.1.30-beta.1 โ 2.1.31-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/server/index.d.ts +2 -1
- package/dist/app/server/index.d.ts.map +1 -1
- package/dist/app/session/device-state.d.ts +83 -0
- package/dist/app/session/device-state.d.ts.map +1 -0
- package/dist/app/session/index.d.ts +21 -7
- package/dist/app/session/index.d.ts.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +205 -9
- package/dist/index.js.map +12 -10
- package/dist/types/capabilities.d.ts +3 -90
- package/dist/types/capabilities.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/message-types.d.ts +3 -1
- package/dist/types/message-types.d.ts.map +1 -1
- package/dist/types/messages/app-to-cloud.d.ts +15 -1
- package/dist/types/messages/app-to-cloud.d.ts.map +1 -1
- package/dist/types/messages/cloud-to-app.d.ts +14 -1
- package/dist/types/messages/cloud-to-app.d.ts.map +1 -1
- package/dist/utils/Observable.d.ts +92 -0
- package/dist/utils/Observable.d.ts.map +1 -0
- package/node_modules/@mentra/types/README.md +134 -0
- package/node_modules/@mentra/types/dist/applet.d.ts +39 -0
- package/node_modules/@mentra/types/dist/applet.d.ts.map +1 -0
- package/node_modules/@mentra/types/dist/applet.js +5 -0
- package/node_modules/@mentra/types/dist/capabilities/even-realities-g1.d.ts +12 -0
- package/node_modules/@mentra/types/dist/capabilities/even-realities-g1.d.ts.map +1 -0
- package/node_modules/@mentra/types/dist/capabilities/even-realities-g1.js +54 -0
- package/node_modules/@mentra/types/dist/capabilities/mentra-live.d.ts +12 -0
- package/node_modules/@mentra/types/dist/capabilities/mentra-live.d.ts.map +1 -0
- package/node_modules/@mentra/types/dist/capabilities/mentra-live.js +94 -0
- package/node_modules/@mentra/types/dist/capabilities/simulated-glasses.d.ts +13 -0
- package/node_modules/@mentra/types/dist/capabilities/simulated-glasses.d.ts.map +1 -0
- package/node_modules/@mentra/types/dist/capabilities/simulated-glasses.js +67 -0
- package/node_modules/@mentra/types/dist/capabilities/vuzix-z100.d.ts +12 -0
- package/node_modules/@mentra/types/dist/capabilities/vuzix-z100.d.ts.map +1 -0
- package/node_modules/@mentra/types/dist/capabilities/vuzix-z100.js +51 -0
- package/node_modules/@mentra/types/dist/cli.d.ts +130 -0
- package/node_modules/@mentra/types/dist/cli.d.ts.map +1 -0
- package/node_modules/@mentra/types/dist/cli.js +7 -0
- package/node_modules/@mentra/types/dist/device.d.ts +32 -0
- package/node_modules/@mentra/types/dist/device.d.ts.map +1 -0
- package/node_modules/@mentra/types/dist/device.js +6 -0
- package/node_modules/@mentra/types/dist/enums.d.ts +34 -0
- package/node_modules/@mentra/types/dist/enums.d.ts.map +1 -0
- package/node_modules/@mentra/types/dist/enums.js +39 -0
- package/node_modules/@mentra/types/dist/hardware.d.ts +141 -0
- package/node_modules/@mentra/types/dist/hardware.d.ts.map +1 -0
- package/node_modules/@mentra/types/dist/hardware.js +33 -0
- package/node_modules/@mentra/types/dist/index.d.ts +18 -0
- package/node_modules/@mentra/types/dist/index.d.ts.map +1 -0
- package/node_modules/@mentra/types/dist/index.js +25 -0
- package/node_modules/@mentra/types/package.json +31 -0
- 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":"AAAA;;;;;GAKG;AACH,OAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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(
|
|
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":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/session/index.ts"],"names":[],"mappings":"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"}
|
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
|
|
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
|
|
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
|
*/
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;AAG9B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAG9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AAGxC,OAAO,EAEL,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,cAAc,IAAI,iBAAiB,EAAE,+DAA+D;AACpG,kBAAkB,EAClB,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,uBAAuB,EACvB,aAAa,EACb,mBAAmB,EACnB,yBAAyB,EACzB,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EAEjB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,2BAA2B,EAC3B,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EAGrB,eAAe,IAAI,wBAAwB,EAC3C,uBAAuB,IAAI,gCAAgC,EAC3D,kBAAkB,IAAI,2BAA2B,GAClD,MAAM,+BAA+B,CAAC;AAGvC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,qBAAqB,CAAC;AAGpC,OAAO,
|
|
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 = "
|
|
2209
|
+
var NODE_ENV = "development";
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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=
|
|
5641
|
+
//# debugId=BBCA9D1CAB7CB76464756E2164756E21
|