@mentra/sdk 2.1.31-beta.6 → 3.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -9
- package/dist/MiniAppServer.d.ts +58 -0
- package/dist/MiniAppServer.d.ts.map +1 -0
- package/dist/app/server/index.d.ts +143 -88
- package/dist/app/server/index.d.ts.map +1 -1
- package/dist/app/session/events.d.ts +20 -3
- package/dist/app/session/events.d.ts.map +1 -1
- package/dist/app/session/index.d.ts +56 -3
- package/dist/app/session/index.d.ts.map +1 -1
- package/dist/app/session/modules/audio-output-stream.d.ts +108 -0
- package/dist/app/session/modules/audio-output-stream.d.ts.map +1 -0
- package/dist/app/session/modules/audio.d.ts +36 -1
- package/dist/app/session/modules/audio.d.ts.map +1 -1
- package/dist/app/session/modules/camera-managed-extension.d.ts +37 -33
- package/dist/app/session/modules/camera-managed-extension.d.ts.map +1 -1
- package/dist/app/session/modules/camera.d.ts +108 -50
- package/dist/app/session/modules/camera.d.ts.map +1 -1
- package/dist/app/session/modules/index.d.ts +4 -3
- package/dist/app/session/modules/index.d.ts.map +1 -1
- package/dist/app/session/modules/led.d.ts.map +1 -1
- package/dist/app/session/modules/location.d.ts.map +1 -1
- package/dist/app/session/settings.d.ts +5 -1
- package/dist/app/session/settings.d.ts.map +1 -1
- package/dist/app/webview/index.d.ts +67 -9
- package/dist/app/webview/index.d.ts.map +1 -1
- package/dist/constants/log-messages/updates.d.ts +32 -9
- package/dist/constants/log-messages/updates.d.ts.map +1 -1
- package/dist/constants/log-messages/warning.d.ts +12 -0
- package/dist/constants/log-messages/warning.d.ts.map +1 -1
- package/dist/display-utils.d.ts +3 -1
- package/dist/display-utils.d.ts.map +1 -1
- package/dist/display-utils.js +443 -26
- package/dist/display-utils.js.map +10 -6
- package/dist/index.d.ts +22 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8877 -4236
- package/dist/index.js.map +63 -31
- package/dist/internal/_SessionManager.d.ts +76 -0
- package/dist/internal/_SessionManager.d.ts.map +1 -0
- package/dist/logging/clean-transport.d.ts +50 -0
- package/dist/logging/clean-transport.d.ts.map +1 -0
- package/dist/logging/errors.d.ts +90 -0
- package/dist/logging/errors.d.ts.map +1 -0
- package/dist/logging/logger.d.ts +72 -1
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/telemetry-transport.d.ts +51 -0
- package/dist/logging/telemetry-transport.d.ts.map +1 -0
- package/dist/session/DataStreamRouter.d.ts +219 -0
- package/dist/session/DataStreamRouter.d.ts.map +1 -0
- package/dist/session/MentraSession.d.ts +102 -0
- package/dist/session/MentraSession.d.ts.map +1 -0
- package/dist/session/index.d.ts +2 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/internal/_ConnectionManager.d.ts +43 -0
- package/dist/session/internal/_ConnectionManager.d.ts.map +1 -0
- package/dist/session/internal/_MessageRouter.d.ts +11 -0
- package/dist/session/internal/_MessageRouter.d.ts.map +1 -0
- package/dist/session/internal/_SubscriptionManager.d.ts +32 -0
- package/dist/session/internal/_SubscriptionManager.d.ts.map +1 -0
- package/dist/session/internal/_V2AudioStreamShim.d.ts +12 -0
- package/dist/session/internal/_V2AudioStreamShim.d.ts.map +1 -0
- package/dist/session/internal/_V2CameraShim.d.ts +51 -0
- package/dist/session/internal/_V2CameraShim.d.ts.map +1 -0
- package/dist/session/internal/_V2EventManagerShim.d.ts +51 -0
- package/dist/session/internal/_V2EventManagerShim.d.ts.map +1 -0
- package/dist/session/internal/_V2SessionShim.d.ts +165 -0
- package/dist/session/internal/_V2SessionShim.d.ts.map +1 -0
- package/dist/session/internal/_V2SettingsShim.d.ts +17 -0
- package/dist/session/internal/_V2SettingsShim.d.ts.map +1 -0
- package/dist/session/managers/CameraManager.d.ts +197 -0
- package/dist/session/managers/CameraManager.d.ts.map +1 -0
- package/dist/session/managers/DashboardManager.d.ts +131 -0
- package/dist/session/managers/DashboardManager.d.ts.map +1 -0
- package/dist/session/managers/DeviceManager.d.ts +332 -0
- package/dist/session/managers/DeviceManager.d.ts.map +1 -0
- package/dist/session/managers/DisplayManager.d.ts +171 -0
- package/dist/session/managers/DisplayManager.d.ts.map +1 -0
- package/dist/session/managers/LedManager.d.ts +131 -0
- package/dist/session/managers/LedManager.d.ts.map +1 -0
- package/dist/session/managers/LocationManager.d.ts +255 -0
- package/dist/session/managers/LocationManager.d.ts.map +1 -0
- package/dist/session/managers/MicManager.d.ts +252 -0
- package/dist/session/managers/MicManager.d.ts.map +1 -0
- package/dist/session/managers/PermissionsManager.d.ts +182 -0
- package/dist/session/managers/PermissionsManager.d.ts.map +1 -0
- package/dist/session/managers/PhoneManager.d.ts +295 -0
- package/dist/session/managers/PhoneManager.d.ts.map +1 -0
- package/dist/session/managers/SpeakerManager.d.ts +285 -0
- package/dist/session/managers/SpeakerManager.d.ts.map +1 -0
- package/dist/session/managers/StorageManager.d.ts +289 -0
- package/dist/session/managers/StorageManager.d.ts.map +1 -0
- package/dist/session/managers/TimeUtils.d.ts +175 -0
- package/dist/session/managers/TimeUtils.d.ts.map +1 -0
- package/dist/session/managers/TranscriptionManager.d.ts +195 -0
- package/dist/session/managers/TranscriptionManager.d.ts.map +1 -0
- package/dist/session/managers/TranslationManager.d.ts +189 -0
- package/dist/session/managers/TranslationManager.d.ts.map +1 -0
- package/dist/session.d.ts +41 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +4168 -0
- package/dist/session.js.map +44 -0
- package/dist/transport/Transport.d.ts +119 -0
- package/dist/transport/Transport.d.ts.map +1 -0
- package/dist/transport/WebSocketTransport.d.ts +73 -0
- package/dist/transport/WebSocketTransport.d.ts.map +1 -0
- package/dist/types/index.d.ts +31 -5
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/message-types.d.ts +25 -9
- package/dist/types/message-types.d.ts.map +1 -1
- package/dist/types/messages/app-to-cloud.d.ts +113 -16
- package/dist/types/messages/app-to-cloud.d.ts.map +1 -1
- package/dist/types/messages/cloud-to-app.d.ts +50 -4
- package/dist/types/messages/cloud-to-app.d.ts.map +1 -1
- package/dist/types/messages/cloud-to-glasses.d.ts +43 -14
- package/dist/types/messages/cloud-to-glasses.d.ts.map +1 -1
- package/dist/types/messages/glasses-to-cloud.d.ts +5 -5
- package/dist/types/messages/glasses-to-cloud.d.ts.map +1 -1
- package/dist/types/models.d.ts +17 -0
- package/dist/types/models.d.ts.map +1 -1
- package/dist/types/rtmp-stream.d.ts +4 -4
- package/dist/types/rtmp-stream.d.ts.map +1 -1
- package/dist/types/streams.d.ts +6 -1
- package/dist/types/streams.d.ts.map +1 -1
- package/dist/types/webhooks.d.ts +11 -0
- package/dist/types/webhooks.d.ts.map +1 -1
- package/dist/utils/error-utils.d.ts +139 -0
- package/dist/utils/error-utils.d.ts.map +1 -0
- package/dist/utils/permissions-utils.d.ts +30 -7
- package/dist/utils/permissions-utils.d.ts.map +1 -1
- package/node_modules/@mentra/types/dist/applet.d.ts +5 -1
- package/node_modules/@mentra/types/dist/applet.d.ts.map +1 -1
- package/node_modules/@mentra/types/dist/capabilities/even-realities-g2.d.ts +12 -0
- package/node_modules/@mentra/types/dist/capabilities/even-realities-g2.d.ts.map +1 -0
- package/node_modules/@mentra/types/dist/capabilities/even-realities-g2.js +61 -0
- package/node_modules/@mentra/types/dist/capabilities/mentra-display.d.ts +12 -0
- package/node_modules/@mentra/types/dist/capabilities/mentra-display.d.ts.map +1 -0
- package/node_modules/@mentra/types/dist/capabilities/mentra-display.js +54 -0
- package/node_modules/@mentra/types/dist/capabilities/none.d.ts +13 -0
- package/node_modules/@mentra/types/dist/capabilities/none.d.ts.map +1 -0
- package/node_modules/@mentra/types/dist/capabilities/none.js +67 -0
- package/node_modules/@mentra/types/dist/enums.d.ts +8 -2
- package/node_modules/@mentra/types/dist/enums.d.ts.map +1 -1
- package/node_modules/@mentra/types/dist/enums.js +9 -2
- package/node_modules/@mentra/types/dist/hardware.d.ts +3 -1
- package/node_modules/@mentra/types/dist/hardware.d.ts.map +1 -1
- package/node_modules/@mentra/types/dist/hardware.js +12 -2
- package/node_modules/@mentra/types/dist/index.d.ts +1 -1
- package/node_modules/@mentra/types/dist/index.d.ts.map +1 -1
- package/node_modules/@mentra/types/dist/index.js +2 -1
- package/node_modules/@mentra/types/package.json +2 -2
- package/package.json +24 -12
- package/dist/examples/managed-rtmp-streaming-example.d.ts +0 -2
- package/dist/examples/managed-rtmp-streaming-example.d.ts.map +0 -1
- package/dist/examples/managed-rtmp-streaming-with-restream-example.d.ts +0 -11
- package/dist/examples/managed-rtmp-streaming-with-restream-example.d.ts.map +0 -1
- package/dist/examples/rtmp-streaming-example.d.ts +0 -2
- package/dist/examples/rtmp-streaming-example.d.ts.map +0 -1
- package/node_modules/@mentra/types/src/applet.ts +0 -51
- package/node_modules/@mentra/types/src/capabilities/even-realities-g1.ts +0 -63
- package/node_modules/@mentra/types/src/capabilities/mentra-live.ts +0 -103
- package/node_modules/@mentra/types/src/capabilities/simulated-glasses.ts +0 -76
- package/node_modules/@mentra/types/src/capabilities/vuzix-z100.ts +0 -60
- package/node_modules/@mentra/types/src/cli.ts +0 -169
- package/node_modules/@mentra/types/src/device.ts +0 -43
- package/node_modules/@mentra/types/src/enums.ts +0 -36
- package/node_modules/@mentra/types/src/hardware.ts +0 -172
- package/node_modules/@mentra/types/src/index.ts +0 -64
- package/node_modules/@mentra/types/tsconfig.json +0 -22
- package/node_modules/@mentra/types/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport Interface
|
|
3
|
+
*
|
|
4
|
+
* Runtime-agnostic message transport contract for MentraSession.
|
|
5
|
+
* On a cloud server, this is a WebSocket. On a phone, it's a native bridge.
|
|
6
|
+
* In tests, it's a mock. MentraSession never imports WebSocket directly —
|
|
7
|
+
* it receives a Transport from the host environment.
|
|
8
|
+
*
|
|
9
|
+
* This interface has ZERO Node.js/Bun/server dependencies.
|
|
10
|
+
* It runs in any JS engine (V8, JSC, Hermes, QuickJS).
|
|
11
|
+
*
|
|
12
|
+
* @see WebSocketTransport — cloud/server implementation
|
|
13
|
+
* @see NativeBridgeTransport — phone/local runtime implementation (future)
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Transport connection states, mirroring WebSocket readyState values
|
|
17
|
+
* for compatibility with existing code that checks readyState.
|
|
18
|
+
*/
|
|
19
|
+
export declare const TransportState: {
|
|
20
|
+
readonly CONNECTING: 0;
|
|
21
|
+
readonly OPEN: 1;
|
|
22
|
+
readonly CLOSING: 2;
|
|
23
|
+
readonly CLOSED: 3;
|
|
24
|
+
};
|
|
25
|
+
export type TransportState = (typeof TransportState)[keyof typeof TransportState];
|
|
26
|
+
/**
|
|
27
|
+
* The Transport interface is the only bridge between MentraSession
|
|
28
|
+
* and the outside world. Everything else (managers, message dispatch,
|
|
29
|
+
* subscription logic) is pure TypeScript that runs identically
|
|
30
|
+
* regardless of which Transport implementation is in use.
|
|
31
|
+
*
|
|
32
|
+
* Implementations:
|
|
33
|
+
* - `WebSocketTransport` — wraps `ws` for cloud/server apps (used by MentraApp)
|
|
34
|
+
* - `NativeBridgeTransport` — wraps `globalThis.__mentraTransport` for local apps
|
|
35
|
+
* - `MockTransport` — for unit tests
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* // Cloud app — MentraApp creates this automatically
|
|
40
|
+
* const transport = new WebSocketTransport(wsUrl);
|
|
41
|
+
*
|
|
42
|
+
* // Local app — phone runtime provides this
|
|
43
|
+
* const transport = new NativeBridgeTransport(globalThis.__mentraTransport);
|
|
44
|
+
*
|
|
45
|
+
* // Either way, MentraSession works the same
|
|
46
|
+
* const session = new MentraSession({ transport, ... });
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export interface Transport {
|
|
50
|
+
/**
|
|
51
|
+
* Send a JSON-serialized string message to the cloud/host.
|
|
52
|
+
* Implementations should silently drop or queue messages
|
|
53
|
+
* when the transport is not in OPEN state.
|
|
54
|
+
*/
|
|
55
|
+
send(data: string): void;
|
|
56
|
+
/**
|
|
57
|
+
* Send binary data (e.g., audio stream frames).
|
|
58
|
+
* Used by SpeakerManager for audio output streaming.
|
|
59
|
+
*/
|
|
60
|
+
sendBinary(data: ArrayBuffer | Uint8Array): void;
|
|
61
|
+
/**
|
|
62
|
+
* Register a handler for incoming text (JSON) messages.
|
|
63
|
+
* Only one handler should be active at a time — subsequent
|
|
64
|
+
* calls replace the previous handler.
|
|
65
|
+
*/
|
|
66
|
+
onMessage(handler: (data: string) => void): void;
|
|
67
|
+
/**
|
|
68
|
+
* Register a handler for incoming binary messages.
|
|
69
|
+
* Used by MicManager for raw audio chunks.
|
|
70
|
+
* Only one handler should be active at a time.
|
|
71
|
+
*/
|
|
72
|
+
onBinary(handler: (data: ArrayBuffer) => void): void;
|
|
73
|
+
/**
|
|
74
|
+
* Register a handler for transport close events.
|
|
75
|
+
* `code` and `reason` follow WebSocket close frame semantics.
|
|
76
|
+
* Only one handler should be active at a time.
|
|
77
|
+
*/
|
|
78
|
+
onClose(handler: (code: number, reason: string) => void): void;
|
|
79
|
+
/**
|
|
80
|
+
* Register a handler for transport errors.
|
|
81
|
+
* Only one handler should be active at a time.
|
|
82
|
+
*/
|
|
83
|
+
onError(handler: (error: Error) => void): void;
|
|
84
|
+
/**
|
|
85
|
+
* Close the transport. After calling this, no more messages
|
|
86
|
+
* will be sent or received. The `onClose` handler will fire.
|
|
87
|
+
*/
|
|
88
|
+
close(code?: number, reason?: string): void;
|
|
89
|
+
/**
|
|
90
|
+
* Current state of the transport.
|
|
91
|
+
* Uses the same numeric values as WebSocket.readyState:
|
|
92
|
+
* 0 = CONNECTING
|
|
93
|
+
* 1 = OPEN
|
|
94
|
+
* 2 = CLOSING
|
|
95
|
+
* 3 = CLOSED
|
|
96
|
+
*/
|
|
97
|
+
readonly readyState: TransportState;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Options passed to Transport implementations at construction time.
|
|
101
|
+
* Each implementation may support additional options beyond these.
|
|
102
|
+
*/
|
|
103
|
+
export interface TransportOptions {
|
|
104
|
+
/** URL or address to connect to (WebSocket URL, bridge identifier, etc.) */
|
|
105
|
+
url?: string;
|
|
106
|
+
/** Headers to send during connection upgrade (WebSocket only) */
|
|
107
|
+
headers?: Record<string, string>;
|
|
108
|
+
/** Connection timeout in milliseconds */
|
|
109
|
+
timeoutMs?: number;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Check if a transport is currently open and ready to send messages.
|
|
113
|
+
*/
|
|
114
|
+
export declare function isTransportOpen(transport: Transport): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Check if a transport is in a terminal state (closing or closed).
|
|
117
|
+
*/
|
|
118
|
+
export declare function isTransportClosed(transport: Transport): boolean;
|
|
119
|
+
//# sourceMappingURL=Transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Transport.d.ts","sourceRoot":"","sources":["../../src/transport/Transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAIlF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC;IAEjD;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAEjD;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI,CAAC;IAErD;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAE/D;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IAE/C;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5C;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;CACrC;AAID;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAE/D"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebSocketTransport
|
|
3
|
+
*
|
|
4
|
+
* Transport implementation that wraps the `ws` library for cloud/server apps.
|
|
5
|
+
* Used by MentraApp to connect MentraSession instances to the cloud.
|
|
6
|
+
*
|
|
7
|
+
* This is the ONLY file in the SDK that imports `ws` — the session layer
|
|
8
|
+
* and all managers are transport-agnostic and never touch WebSocket directly.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const transport = new WebSocketTransport("wss://cloud.mentra.glass/ws/miniapp", {
|
|
13
|
+
* headers: { Authorization: `Bearer ${jwt}` },
|
|
14
|
+
* timeoutMs: 10000,
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* transport.onMessage((data) => console.log("received:", data));
|
|
18
|
+
* transport.onClose((code, reason) => console.log("closed:", code, reason));
|
|
19
|
+
*
|
|
20
|
+
* await transport.connect();
|
|
21
|
+
* transport.send(JSON.stringify({ type: "connection_init", ... }));
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
import { Transport, TransportState, TransportOptions } from "./Transport";
|
|
25
|
+
export interface WebSocketTransportOptions extends TransportOptions {
|
|
26
|
+
/** WebSocket URL to connect to (wss:// or ws://) */
|
|
27
|
+
url: string;
|
|
28
|
+
/** Headers sent during the WebSocket upgrade request */
|
|
29
|
+
headers?: Record<string, string>;
|
|
30
|
+
/** Connection timeout in milliseconds (default: 10000) */
|
|
31
|
+
timeoutMs?: number;
|
|
32
|
+
/**
|
|
33
|
+
* If true, the transport will attempt to connect immediately on construction.
|
|
34
|
+
* If false (default), call connect() manually.
|
|
35
|
+
*/
|
|
36
|
+
connectOnCreate?: boolean;
|
|
37
|
+
}
|
|
38
|
+
export declare class WebSocketTransport implements Transport {
|
|
39
|
+
private ws;
|
|
40
|
+
private _readyState;
|
|
41
|
+
private _onMessage;
|
|
42
|
+
private _onBinary;
|
|
43
|
+
private _onClose;
|
|
44
|
+
private _onError;
|
|
45
|
+
private readonly url;
|
|
46
|
+
private readonly headers;
|
|
47
|
+
private readonly timeoutMs;
|
|
48
|
+
constructor(options: WebSocketTransportOptions);
|
|
49
|
+
get readyState(): TransportState;
|
|
50
|
+
send(data: string): void;
|
|
51
|
+
sendBinary(data: ArrayBuffer | Uint8Array): void;
|
|
52
|
+
onMessage(handler: (data: string) => void): void;
|
|
53
|
+
onBinary(handler: (data: ArrayBuffer) => void): void;
|
|
54
|
+
onClose(handler: (code: number, reason: string) => void): void;
|
|
55
|
+
onError(handler: (error: Error) => void): void;
|
|
56
|
+
close(code?: number, reason?: string): void;
|
|
57
|
+
/**
|
|
58
|
+
* Establish the WebSocket connection.
|
|
59
|
+
* Resolves when the connection is open, rejects on error or timeout.
|
|
60
|
+
*/
|
|
61
|
+
connect(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Whether the transport is currently connected and ready to send.
|
|
64
|
+
*/
|
|
65
|
+
get isOpen(): boolean;
|
|
66
|
+
private handleIncomingMessage;
|
|
67
|
+
/**
|
|
68
|
+
* Remove all event listeners from the current WebSocket instance.
|
|
69
|
+
* Called before replacing the socket on reconnect.
|
|
70
|
+
*/
|
|
71
|
+
private detachListeners;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=WebSocketTransport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebSocketTransport.d.ts","sourceRoot":"","sources":["../../src/transport/WebSocketTransport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI1E,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IACjE,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IAEZ,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAID,qBAAa,kBAAmB,YAAW,SAAS;IAClD,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,WAAW,CAAyC;IAG5D,OAAO,CAAC,UAAU,CAAyC;IAC3D,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,QAAQ,CAAyD;IACzE,OAAO,CAAC,QAAQ,CAAyC;IAEzD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,OAAO,EAAE,yBAAyB;IAY9C,IAAI,UAAU,IAAI,cAAc,CAM/B;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAYxB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI;IAWhD,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIhD,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAIpD,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9D,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAI9C,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAmB3C;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAoGxB;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAID,OAAO,CAAC,qBAAqB;IA+D7B;;;OAGG;IACH,OAAO,CAAC,eAAe;CAWxB"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -3,9 +3,11 @@ export * from "./message-types";
|
|
|
3
3
|
export * from "./messages/base";
|
|
4
4
|
export * from "./messages/glasses-to-cloud";
|
|
5
5
|
export * from "./messages/cloud-to-glasses";
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
|
|
6
|
+
export { isAppConnectionInit, isAppReconnect, isAppSubscriptionUpdate, isDisplayRequest, isRgbLedControlRequest, isCameraFovSetRequest, isAudioPlayRequest, isAudioStopRequest, isDashboardContentUpdate, isDashboardModeChange, isDashboardSystemUpdate, isManagedStreamRequest, isManagedStreamStopRequest, isStreamRequest, isStreamStopRequest, isOwnershipRelease, isTelemetryResponse, isPhotoRequest as isPhotoRequestFromApp, } from "./messages/app-to-cloud";
|
|
7
|
+
export type { SubscriptionRequest, AppConnectionInit, AppReconnect, AppSubscriptionUpdate, PhotoRequest, RgbLedControlRequest, CameraFovSetRequest, CameraRoiPosition, StreamRequest, StreamStopRequest, AppLocationPollRequest, RestreamDestination, ManagedStreamRequest, ManagedStreamStopRequest, StreamStatusCheckRequest, AudioPlayRequest, AudioStopRequest, AudioStreamStart, AudioStreamEnd, AppToCloudMessage, AppBroadcastMessage, AppDirectMessage, AppUserDiscovery, AppRoomJoin, AppRoomLeave, RequestWifiSetup, OwnershipReleaseMessage, TelemetryLogEntry, TelemetryResponse, } from "./messages/app-to-cloud";
|
|
8
|
+
export { isAppConnectionAck, isAppConnectionError, isAppStopped, isSettingsUpdate, isCapabilitiesUpdate, isDataStream, isAudioChunk, isAudioPlayResponse, isDashboardModeChanged, isDashboardAlwaysOnChanged, isManagedStreamStatus, isStreamStatusCheckResponse, isPhotoResponse as isPhotoResponseFromCloud, isStreamStatus as isStreamStatusFromCloud, isRgbLedControlResponse as isRgbLedControlResponseFromCloud, isRequestTelemetry, } from "./messages/cloud-to-app";
|
|
9
|
+
export type { AppConnectionAck, AppConnectionError, AppStopped, SettingsUpdate as AppSettingsUpdate, // Alias to avoid conflict with cloud-to-glasses SettingsUpdate
|
|
10
|
+
CapabilitiesUpdate, DataStream, CloudToAppMessage, AudioPlayResponse, TranslationData, ToolCall, StandardConnectionError, CustomMessage, ManagedStreamStatus, StreamStatusCheckResponse, OutputStatus, MentraosSettingsUpdate, TranscriptionData, TranscriptionMetadata, SonioxToken, AudioChunk, PermissionError, PermissionErrorDetail, AudioStreamReady, RequestTelemetry, } from "./messages/cloud-to-app";
|
|
9
11
|
export * from "./streams";
|
|
10
12
|
export * from "./layouts";
|
|
11
13
|
export * from "./dashboard";
|
|
@@ -23,10 +25,34 @@ export interface WebSocketError {
|
|
|
23
25
|
message: string;
|
|
24
26
|
details?: unknown;
|
|
25
27
|
}
|
|
26
|
-
import type {
|
|
28
|
+
import type { Context } from "hono";
|
|
27
29
|
import type { AppSession } from "../app/session";
|
|
28
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Hono Context variables for authenticated requests.
|
|
32
|
+
* Apps should prefer the public auth helpers instead of reading these
|
|
33
|
+
* variables directly from the context.
|
|
34
|
+
*/
|
|
35
|
+
export interface AuthVariables {
|
|
36
|
+
authUserId?: string;
|
|
37
|
+
activeSession: AppSession | null;
|
|
38
|
+
}
|
|
39
|
+
export interface MentraAuthContext {
|
|
40
|
+
userId: string | null;
|
|
41
|
+
session: AppSession | null;
|
|
42
|
+
}
|
|
43
|
+
export type MentraAuthHonoContext = Context<{
|
|
44
|
+
Variables: AuthVariables;
|
|
45
|
+
}>;
|
|
46
|
+
/**
|
|
47
|
+
* @deprecated Use AuthVariables with Hono context instead
|
|
48
|
+
* This type is kept for backward compatibility during migration
|
|
49
|
+
*/
|
|
50
|
+
export interface AuthenticatedRequest {
|
|
29
51
|
authUserId?: string;
|
|
30
52
|
activeSession: AppSession | null;
|
|
53
|
+
query: Record<string, string | undefined>;
|
|
54
|
+
headers: Record<string, string | undefined>;
|
|
55
|
+
cookies?: Record<string, string>;
|
|
56
|
+
body?: unknown;
|
|
31
57
|
}
|
|
32
58
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ export declare enum GlassesToCloudMessageType {
|
|
|
10
10
|
OPEN_DASHBOARD = "open_dashboard",
|
|
11
11
|
PHOTO_RESPONSE = "photo_response",
|
|
12
12
|
LOCAL_TRANSCRIPTION = "local_transcription",
|
|
13
|
-
|
|
13
|
+
STREAM_STATUS = "stream_status",
|
|
14
14
|
KEEP_ALIVE_ACK = "keep_alive_ack",
|
|
15
15
|
BUTTON_PRESS = "button_press",
|
|
16
16
|
HEAD_POSITION = "head_position",
|
|
@@ -48,10 +48,11 @@ export declare enum CloudToGlassesMessageType {
|
|
|
48
48
|
AUDIO_PLAY_REQUEST = "audio_play_request",
|
|
49
49
|
AUDIO_STOP_REQUEST = "audio_stop_request",
|
|
50
50
|
RGB_LED_CONTROL = "rgb_led_control",
|
|
51
|
+
CAMERA_FOV_SET = "camera_fov_set",
|
|
51
52
|
SHOW_WIFI_SETUP = "show_wifi_setup",
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
START_STREAM = "start_stream",
|
|
54
|
+
STOP_STREAM = "stop_stream",
|
|
55
|
+
KEEP_STREAM_ALIVE = "keep_stream_alive",
|
|
55
56
|
DASHBOARD_MODE_CHANGE = "dashboard_mode_change",
|
|
56
57
|
DASHBOARD_ALWAYS_ON_CHANGE = "dashboard_always_on_change",
|
|
57
58
|
SET_LOCATION_TIER = "set_location_tier",
|
|
@@ -65,16 +66,20 @@ export declare enum CloudToGlassesMessageType {
|
|
|
65
66
|
*/
|
|
66
67
|
export declare enum AppToCloudMessageType {
|
|
67
68
|
CONNECTION_INIT = "tpa_connection_init",
|
|
69
|
+
RECONNECT = "reconnect",
|
|
68
70
|
SUBSCRIPTION_UPDATE = "subscription_update",
|
|
69
71
|
LOCATION_POLL_REQUEST = "location_poll_request",
|
|
70
72
|
DISPLAY_REQUEST = "display_event",
|
|
71
73
|
PHOTO_REQUEST = "photo_request",
|
|
72
74
|
AUDIO_PLAY_REQUEST = "audio_play_request",
|
|
73
75
|
AUDIO_STOP_REQUEST = "audio_stop_request",
|
|
76
|
+
AUDIO_STREAM_START = "audio_stream_start",
|
|
77
|
+
AUDIO_STREAM_END = "audio_stream_end",
|
|
74
78
|
RGB_LED_CONTROL = "rgb_led_control",
|
|
79
|
+
CAMERA_FOV_SET = "camera_fov_set",
|
|
75
80
|
REQUEST_WIFI_SETUP = "request_wifi_setup",
|
|
76
|
-
|
|
77
|
-
|
|
81
|
+
STREAM_REQUEST = "stream_request",
|
|
82
|
+
STREAM_STOP = "stream_stop",
|
|
78
83
|
MANAGED_STREAM_REQUEST = "managed_stream_request",
|
|
79
84
|
MANAGED_STREAM_STOP = "managed_stream_stop",
|
|
80
85
|
STREAM_STATUS_CHECK = "stream_status_check",
|
|
@@ -86,7 +91,8 @@ export declare enum AppToCloudMessageType {
|
|
|
86
91
|
APP_USER_DISCOVERY = "app_user_discovery",
|
|
87
92
|
APP_ROOM_JOIN = "app_room_join",
|
|
88
93
|
APP_ROOM_LEAVE = "app_room_leave",
|
|
89
|
-
OWNERSHIP_RELEASE = "ownership_release"
|
|
94
|
+
OWNERSHIP_RELEASE = "ownership_release",
|
|
95
|
+
TELEMETRY_RESPONSE = "telemetry_response"
|
|
90
96
|
}
|
|
91
97
|
/**
|
|
92
98
|
* Types of messages from cloud to Apps
|
|
@@ -94,6 +100,9 @@ export declare enum AppToCloudMessageType {
|
|
|
94
100
|
export declare enum CloudToAppMessageType {
|
|
95
101
|
CONNECTION_ACK = "tpa_connection_ack",
|
|
96
102
|
CONNECTION_ERROR = "tpa_connection_error",
|
|
103
|
+
RECONNECT_ACK = "reconnect_ack",
|
|
104
|
+
RECONNECT_REJECTED = "reconnect_rejected",
|
|
105
|
+
RECONNECT_DEFERRED = "reconnect_deferred",
|
|
97
106
|
APP_STOPPED = "app_stopped",
|
|
98
107
|
SETTINGS_UPDATE = "settings_update",
|
|
99
108
|
CAPABILITIES_UPDATE = "capabilities_update",
|
|
@@ -103,12 +112,19 @@ export declare enum CloudToAppMessageType {
|
|
|
103
112
|
DATA_STREAM = "data_stream",
|
|
104
113
|
PHOTO_RESPONSE = "photo_response",
|
|
105
114
|
AUDIO_PLAY_RESPONSE = "audio_play_response",
|
|
115
|
+
AUDIO_STREAM_READY = "audio_stream_ready",
|
|
106
116
|
RGB_LED_CONTROL_RESPONSE = "rgb_led_control_response",
|
|
107
|
-
|
|
117
|
+
STREAM_STATUS = "stream_status",
|
|
108
118
|
MANAGED_STREAM_STATUS = "managed_stream_status",
|
|
109
119
|
STREAM_STATUS_CHECK_RESPONSE = "stream_status_check_response",
|
|
110
120
|
WEBSOCKET_ERROR = "websocket_error",
|
|
111
121
|
PERMISSION_ERROR = "permission_error",
|
|
122
|
+
REQUEST_TELEMETRY = "request_telemetry",
|
|
123
|
+
/**
|
|
124
|
+
* @deprecated Use the settings system (mentraosSettings) instead.
|
|
125
|
+
* This message type was used for datetime updates but is no longer needed.
|
|
126
|
+
* Will be removed in a future version.
|
|
127
|
+
*/
|
|
112
128
|
CUSTOM_MESSAGE = "custom_message",
|
|
113
129
|
APP_MESSAGE_RECEIVED = "app_message_received",
|
|
114
130
|
APP_USER_JOINED = "app_user_joined",
|
|
@@ -131,7 +147,7 @@ export declare const ResponseTypes: readonly [CloudToGlassesMessageType.CONNECTI
|
|
|
131
147
|
/**
|
|
132
148
|
* Update message types (subset of CloudToGlassesMessageType)
|
|
133
149
|
*/
|
|
134
|
-
export declare const UpdateTypes: readonly [CloudToGlassesMessageType.DISPLAY_EVENT, CloudToGlassesMessageType.APP_STATE_CHANGE, CloudToGlassesMessageType.MICROPHONE_STATE_CHANGE, CloudToGlassesMessageType.PHOTO_REQUEST, CloudToGlassesMessageType.AUDIO_PLAY_REQUEST, CloudToGlassesMessageType.AUDIO_STOP_REQUEST, CloudToGlassesMessageType.RGB_LED_CONTROL, CloudToGlassesMessageType.SETTINGS_UPDATE, CloudToGlassesMessageType.DASHBOARD_MODE_CHANGE, CloudToGlassesMessageType.DASHBOARD_ALWAYS_ON_CHANGE, CloudToGlassesMessageType.
|
|
150
|
+
export declare const UpdateTypes: readonly [CloudToGlassesMessageType.DISPLAY_EVENT, CloudToGlassesMessageType.APP_STATE_CHANGE, CloudToGlassesMessageType.MICROPHONE_STATE_CHANGE, CloudToGlassesMessageType.PHOTO_REQUEST, CloudToGlassesMessageType.AUDIO_PLAY_REQUEST, CloudToGlassesMessageType.AUDIO_STOP_REQUEST, CloudToGlassesMessageType.RGB_LED_CONTROL, CloudToGlassesMessageType.SETTINGS_UPDATE, CloudToGlassesMessageType.DASHBOARD_MODE_CHANGE, CloudToGlassesMessageType.DASHBOARD_ALWAYS_ON_CHANGE, CloudToGlassesMessageType.START_STREAM, CloudToGlassesMessageType.STOP_STREAM, CloudToGlassesMessageType.KEEP_STREAM_ALIVE, CloudToGlassesMessageType.LIVEKIT_INFO];
|
|
135
151
|
/**
|
|
136
152
|
* Dashboard message types
|
|
137
153
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-types.d.ts","sourceRoot":"","sources":["../../src/types/message-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"message-types.d.ts","sourceRoot":"","sources":["../../src/types/message-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,17 @@ export type SubscriptionRequest = ExtendedStreamType | LocationStreamRequest;
|
|
|
12
12
|
export interface AppConnectionInit extends BaseMessage {
|
|
13
13
|
type: AppToCloudMessageType.CONNECTION_INIT;
|
|
14
14
|
packageName: string;
|
|
15
|
-
sessionId
|
|
15
|
+
sessionId?: string;
|
|
16
16
|
apiKey: string;
|
|
17
|
+
sdkVersion?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Reconnect request from App
|
|
21
|
+
*/
|
|
22
|
+
export interface AppReconnect extends BaseMessage {
|
|
23
|
+
type: AppToCloudMessageType.RECONNECT;
|
|
24
|
+
sessionId: string;
|
|
25
|
+
sdkVersion: string;
|
|
17
26
|
}
|
|
18
27
|
/**
|
|
19
28
|
* Subscription update from App
|
|
@@ -37,6 +46,8 @@ export interface PhotoRequest extends BaseMessage {
|
|
|
37
46
|
size?: "small" | "medium" | "large" | "full";
|
|
38
47
|
/** Image compression level: none, medium, or heavy. Defaults to none. */
|
|
39
48
|
compress?: "none" | "medium" | "heavy";
|
|
49
|
+
/** Controls shutter sound. Defaults to true if omitted. */
|
|
50
|
+
sound?: boolean;
|
|
40
51
|
}
|
|
41
52
|
/**
|
|
42
53
|
* RGB LED control request from App
|
|
@@ -52,21 +63,23 @@ export interface RgbLedControlRequest extends BaseMessage {
|
|
|
52
63
|
count?: number;
|
|
53
64
|
}
|
|
54
65
|
/**
|
|
55
|
-
*
|
|
66
|
+
* Stream request from App (supports RTMP, SRT, WHIP)
|
|
56
67
|
*/
|
|
57
|
-
export interface
|
|
58
|
-
type: AppToCloudMessageType.
|
|
68
|
+
export interface StreamRequest extends BaseMessage {
|
|
69
|
+
type: AppToCloudMessageType.STREAM_REQUEST;
|
|
59
70
|
packageName: string;
|
|
60
|
-
|
|
71
|
+
streamUrl: string;
|
|
61
72
|
video?: VideoConfig;
|
|
62
73
|
audio?: AudioConfig;
|
|
63
74
|
stream?: StreamConfig;
|
|
75
|
+
/** Controls stream start/stop sounds. Defaults to true if omitted. */
|
|
76
|
+
sound?: boolean;
|
|
64
77
|
}
|
|
65
78
|
/**
|
|
66
|
-
*
|
|
79
|
+
* Stream stop request from App
|
|
67
80
|
*/
|
|
68
|
-
export interface
|
|
69
|
-
type: AppToCloudMessageType.
|
|
81
|
+
export interface StreamStopRequest extends BaseMessage {
|
|
82
|
+
type: AppToCloudMessageType.STREAM_STOP;
|
|
70
83
|
packageName: string;
|
|
71
84
|
streamId?: string;
|
|
72
85
|
}
|
|
@@ -87,8 +100,9 @@ export interface RestreamDestination {
|
|
|
87
100
|
name?: string;
|
|
88
101
|
}
|
|
89
102
|
/**
|
|
90
|
-
* Managed
|
|
91
|
-
*
|
|
103
|
+
* Managed stream request from App.
|
|
104
|
+
* By default, managed streams use WebRTC (WHIP ingest → WHEP playback) for low latency.
|
|
105
|
+
* If restreamDestinations are provided, falls back to SRT ingest with HLS/DASH playback.
|
|
92
106
|
*/
|
|
93
107
|
export interface ManagedStreamRequest extends BaseMessage {
|
|
94
108
|
type: AppToCloudMessageType.MANAGED_STREAM_REQUEST;
|
|
@@ -98,8 +112,11 @@ export interface ManagedStreamRequest extends BaseMessage {
|
|
|
98
112
|
video?: VideoConfig;
|
|
99
113
|
audio?: AudioConfig;
|
|
100
114
|
stream?: StreamConfig;
|
|
101
|
-
/** Optional RTMP destinations to re-stream to (YouTube, Twitch, etc)
|
|
115
|
+
/** Optional RTMP destinations to re-stream to (YouTube, Twitch, etc).
|
|
116
|
+
* When present, stream uses SRT ingest + HLS/DASH playback instead of WebRTC. */
|
|
102
117
|
restreamDestinations?: RestreamDestination[];
|
|
118
|
+
/** Controls stream start/stop sounds. Defaults to true if omitted. */
|
|
119
|
+
sound?: boolean;
|
|
103
120
|
}
|
|
104
121
|
/**
|
|
105
122
|
* Managed RTMP stream stop request from App
|
|
@@ -152,6 +169,48 @@ export interface AudioStopRequest extends BaseMessage {
|
|
|
152
169
|
trackId?: number;
|
|
153
170
|
sessionId?: string;
|
|
154
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Audio output stream start request from App.
|
|
174
|
+
* Creates an HTTP streaming relay on the cloud. The cloud responds with
|
|
175
|
+
* AUDIO_STREAM_READY containing the relay URL. The SDK then sends binary
|
|
176
|
+
* WS frames (streamId header + MP3 data) and tells the phone to play
|
|
177
|
+
* the relay URL via AUDIO_PLAY_REQUEST.
|
|
178
|
+
*/
|
|
179
|
+
export interface AudioStreamStart extends BaseMessage {
|
|
180
|
+
type: AppToCloudMessageType.AUDIO_STREAM_START;
|
|
181
|
+
packageName: string;
|
|
182
|
+
sessionId: string;
|
|
183
|
+
streamId: string;
|
|
184
|
+
/** MIME type of the audio being streamed (default: audio/mpeg) */
|
|
185
|
+
contentType?: string;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Audio output stream end signal from App.
|
|
189
|
+
* Tells the cloud to close the HTTP relay response for this stream.
|
|
190
|
+
*/
|
|
191
|
+
export interface AudioStreamEnd extends BaseMessage {
|
|
192
|
+
type: AppToCloudMessageType.AUDIO_STREAM_END;
|
|
193
|
+
packageName: string;
|
|
194
|
+
sessionId: string;
|
|
195
|
+
streamId: string;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* ROI crop position for camera FOV control
|
|
199
|
+
*/
|
|
200
|
+
export type CameraRoiPosition = "center" | "top" | "bottom";
|
|
201
|
+
/**
|
|
202
|
+
* Camera FOV set request from App
|
|
203
|
+
*/
|
|
204
|
+
export interface CameraFovSetRequest extends BaseMessage {
|
|
205
|
+
type: AppToCloudMessageType.CAMERA_FOV_SET;
|
|
206
|
+
packageName: string;
|
|
207
|
+
sessionId: string;
|
|
208
|
+
requestId: string;
|
|
209
|
+
/** Field of view in degrees (82-118). 118 means no crop (full sensor). */
|
|
210
|
+
fov: number;
|
|
211
|
+
/** ROI crop position. Ignored when fov is 118. Defaults to "center". */
|
|
212
|
+
roiPosition: CameraRoiPosition;
|
|
213
|
+
}
|
|
155
214
|
/**
|
|
156
215
|
* WiFi setup request from App
|
|
157
216
|
*/
|
|
@@ -174,11 +233,15 @@ export interface OwnershipReleaseMessage extends BaseMessage {
|
|
|
174
233
|
/**
|
|
175
234
|
* Union type for all messages from Apps to cloud
|
|
176
235
|
*/
|
|
177
|
-
export type AppToCloudMessage = AppConnectionInit | AppSubscriptionUpdate | AppLocationPollRequest | DisplayRequest | PhotoRequest | RgbLedControlRequest | AudioPlayRequest | AudioStopRequest |
|
|
236
|
+
export type AppToCloudMessage = AppConnectionInit | AppReconnect | AppSubscriptionUpdate | AppLocationPollRequest | DisplayRequest | PhotoRequest | RgbLedControlRequest | CameraFovSetRequest | AudioPlayRequest | AudioStopRequest | AudioStreamStart | AudioStreamEnd | StreamRequest | StreamStopRequest | ManagedStreamRequest | ManagedStreamStopRequest | StreamStatusCheckRequest | DashboardContentUpdate | DashboardModeChange | DashboardSystemUpdate | RequestWifiSetup | OwnershipReleaseMessage | AppBroadcastMessage | AppDirectMessage | AppUserDiscovery | AppRoomJoin | AppRoomLeave | TelemetryResponse;
|
|
178
237
|
/**
|
|
179
238
|
* Type guard to check if a message is a App connection init
|
|
180
239
|
*/
|
|
181
240
|
export declare function isAppConnectionInit(message: AppToCloudMessage): message is AppConnectionInit;
|
|
241
|
+
/**
|
|
242
|
+
* Type guard to check if a message is a App reconnect request
|
|
243
|
+
*/
|
|
244
|
+
export declare function isAppReconnect(message: AppToCloudMessage): message is AppReconnect;
|
|
182
245
|
/**
|
|
183
246
|
* Type guard to check if a message is a App subscription update
|
|
184
247
|
*/
|
|
@@ -195,6 +258,10 @@ export declare function isPhotoRequest(message: AppToCloudMessage): message is P
|
|
|
195
258
|
* Type guard to check if a message is a RGB LED control request
|
|
196
259
|
*/
|
|
197
260
|
export declare function isRgbLedControlRequest(message: AppToCloudMessage): message is RgbLedControlRequest;
|
|
261
|
+
/**
|
|
262
|
+
* Type guard to check if a message is a camera FOV set request
|
|
263
|
+
*/
|
|
264
|
+
export declare function isCameraFovSetRequest(message: AppToCloudMessage): message is CameraFovSetRequest;
|
|
198
265
|
/**
|
|
199
266
|
* Type guard to check if a message is a App audio play request
|
|
200
267
|
*/
|
|
@@ -279,15 +346,45 @@ export interface AppRoomLeave extends BaseMessage {
|
|
|
279
346
|
roomId: string;
|
|
280
347
|
}
|
|
281
348
|
/**
|
|
282
|
-
* Type guard to check if a message is
|
|
349
|
+
* Type guard to check if a message is a stream request
|
|
283
350
|
*/
|
|
284
|
-
export declare function
|
|
351
|
+
export declare function isStreamRequest(message: AppToCloudMessage): message is StreamRequest;
|
|
285
352
|
/**
|
|
286
|
-
* Type guard to check if a message is
|
|
353
|
+
* Type guard to check if a message is a stream stop request
|
|
287
354
|
*/
|
|
288
|
-
export declare function
|
|
355
|
+
export declare function isStreamStopRequest(message: AppToCloudMessage): message is StreamStopRequest;
|
|
289
356
|
/**
|
|
290
357
|
* Type guard to check if a message is an ownership release message
|
|
291
358
|
*/
|
|
292
359
|
export declare function isOwnershipRelease(message: AppToCloudMessage): message is OwnershipReleaseMessage;
|
|
360
|
+
/**
|
|
361
|
+
* Telemetry log entry from an App server
|
|
362
|
+
*/
|
|
363
|
+
export interface TelemetryLogEntry {
|
|
364
|
+
timestamp: number;
|
|
365
|
+
level: "debug" | "info" | "warn" | "error";
|
|
366
|
+
message: string;
|
|
367
|
+
source?: string;
|
|
368
|
+
data?: unknown;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Telemetry response from App server to cloud.
|
|
372
|
+
* Sent in response to REQUEST_TELEMETRY message.
|
|
373
|
+
*/
|
|
374
|
+
export interface TelemetryResponse extends BaseMessage {
|
|
375
|
+
type: AppToCloudMessageType.TELEMETRY_RESPONSE;
|
|
376
|
+
incidentId: string;
|
|
377
|
+
packageName: string;
|
|
378
|
+
logs: TelemetryLogEntry[];
|
|
379
|
+
/** Metadata about the telemetry collection */
|
|
380
|
+
metadata?: {
|
|
381
|
+
bufferSize?: number;
|
|
382
|
+
oldestEntryMs?: number;
|
|
383
|
+
newestEntryMs?: number;
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Type guard to check if a message is a telemetry response
|
|
388
|
+
*/
|
|
389
|
+
export declare function isTelemetryResponse(message: AppToCloudMessage): message is TelemetryResponse;
|
|
293
390
|
//# sourceMappingURL=app-to-cloud.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-to-cloud.d.ts","sourceRoot":"","sources":["../../../src/types/messages/app-to-cloud.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"app-to-cloud.d.ts","sourceRoot":"","sources":["../../../src/types/messages/app-to-cloud.ts"],"names":[],"mappings":"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"}
|