@mentra/sdk 2.1.12 → 2.1.14
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 +15 -12
- package/dist/app/server/index.d.ts.map +1 -1
- package/dist/app/server/index.js +104 -79
- package/dist/app/session/events.d.ts +35 -23
- package/dist/app/session/events.d.ts.map +1 -1
- package/dist/app/session/events.js +46 -38
- package/dist/app/session/index.d.ts +13 -13
- package/dist/app/session/index.d.ts.map +1 -1
- package/dist/app/session/index.js +237 -204
- package/dist/app/webview/index.d.ts +5 -3
- package/dist/app/webview/index.d.ts.map +1 -1
- package/dist/app/webview/index.js +73 -37
- package/dist/index.d.ts +28 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/types/index.d.ts +29 -27
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -1
- package/dist/types/message-types.d.ts +1 -0
- package/dist/types/message-types.d.ts.map +1 -1
- package/dist/types/message-types.js +6 -5
- package/dist/types/messages/cloud-to-app.d.ts +26 -14
- package/dist/types/messages/cloud-to-app.d.ts.map +1 -1
- package/dist/types/messages/cloud-to-app.js +6 -1
- package/dist/types/streams.d.ts +9 -3
- package/dist/types/streams.d.ts.map +1 -1
- package/dist/types/streams.js +68 -19
- package/package.json +1 -1
@@ -1,5 +1,6 @@
|
|
1
|
-
import { Response, NextFunction } from
|
2
|
-
import { AuthenticatedRequest } from
|
1
|
+
import { Response, NextFunction } from "express";
|
2
|
+
import { AuthenticatedRequest } from "../../types";
|
3
|
+
import { AppSession } from "../session";
|
3
4
|
/**
|
4
5
|
* Extracts the temporary token from a URL string.
|
5
6
|
* @param url The URL string, typically window.location.href.
|
@@ -36,11 +37,12 @@ export declare function createAuthMiddleware(options: {
|
|
36
37
|
packageName: string;
|
37
38
|
cookieName?: string;
|
38
39
|
cookieSecret: string;
|
40
|
+
getAppSessionForUser?: (userId: string) => AppSession | null;
|
39
41
|
cookieOptions?: {
|
40
42
|
httpOnly?: boolean;
|
41
43
|
secure?: boolean;
|
42
44
|
maxAge?: number;
|
43
|
-
sameSite?: boolean |
|
45
|
+
sameSite?: boolean | "lax" | "strict" | "none";
|
44
46
|
path?: string;
|
45
47
|
};
|
46
48
|
}): (req: AuthenticatedRequest, res: Response, next: NextFunction) => Promise<void>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/webview/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/webview/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAKnD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMxC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ3D;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAyC7B;AA6JD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC;IAC7D,aAAa,CAAC,EAAE;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,IA+BG,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,MAAM,YAAY,mBA0JrB"}
|
@@ -45,7 +45,8 @@ const axios_1 = __importDefault(require("axios"));
|
|
45
45
|
// Example: app.use(require('cookie-parser')());
|
46
46
|
const crypto = __importStar(require("crypto"));
|
47
47
|
const jsrsasign_1 = require("jsrsasign");
|
48
|
-
const userTokenPublicKey = process.env.MENTRAOS_CLOUD_USER_TOKEN_PUBLIC_KEY ||
|
48
|
+
const userTokenPublicKey = process.env.MENTRAOS_CLOUD_USER_TOKEN_PUBLIC_KEY ||
|
49
|
+
"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Yt2RtNOdeKQxWMY0c84\nADpY1Jy58YWZhaEgP2A5tBwFUKgy/TH9gQLWZjQ3dQ/6XXO8qq0kluoYFqM7ZDRF\nzJ0E4Yi0WQncioLRcCx4q8pDmqY9vPKgv6PruJdFWca0l0s3gZ3BqSeWum/C23xK\nFPHPwi8gvRdc6ALrkcHeciM+7NykU8c0EY8PSitNL+Tchti95kGu+j6APr5vNewi\nzRpQGOdqaLWe+ahHmtj6KtUZjm8o6lan4f/o08C6litizguZXuw2Nn/Kd9fFI1xF\nIVNJYMy9jgGaOi71+LpGw+vIpwAawp/7IvULDppvY3DdX5nt05P1+jvVJXPxMKzD\nTQIDAQAB\n-----END PUBLIC KEY-----";
|
49
50
|
/**
|
50
51
|
* Extracts the temporary token from a URL string.
|
51
52
|
* @param url The URL string, typically window.location.href.
|
@@ -54,7 +55,7 @@ const userTokenPublicKey = process.env.MENTRAOS_CLOUD_USER_TOKEN_PUBLIC_KEY || "
|
|
54
55
|
function extractTempToken(url) {
|
55
56
|
try {
|
56
57
|
const parsedUrl = new URL(url);
|
57
|
-
return parsedUrl.searchParams.get(
|
58
|
+
return parsedUrl.searchParams.get("aos_temp_token");
|
58
59
|
}
|
59
60
|
catch (e) {
|
60
61
|
console.error("Error parsing URL for temp token:", e);
|
@@ -76,12 +77,14 @@ async function exchangeToken(cloudApiUrl, tempToken, apiKey, packageName) {
|
|
76
77
|
try {
|
77
78
|
const response = await axios_1.default.post(endpoint, { aos_temp_token: tempToken, packageName: packageName }, {
|
78
79
|
headers: {
|
79
|
-
|
80
|
-
|
80
|
+
"Content-Type": "application/json",
|
81
|
+
Authorization: `Bearer ${apiKey}`,
|
81
82
|
},
|
82
83
|
timeout: 10000, // 10 second timeout
|
83
84
|
});
|
84
|
-
if (response.status === 200 &&
|
85
|
+
if (response.status === 200 &&
|
86
|
+
response.data.success &&
|
87
|
+
response.data.userId) {
|
85
88
|
return { userId: response.data.userId };
|
86
89
|
}
|
87
90
|
else {
|
@@ -94,13 +97,13 @@ async function exchangeToken(cloudApiUrl, tempToken, apiKey, packageName) {
|
|
94
97
|
if (axios_1.default.isAxiosError(error)) {
|
95
98
|
const status = error.response?.status;
|
96
99
|
const data = error.response?.data;
|
97
|
-
const message = data?.error || error.message ||
|
100
|
+
const message = data?.error || error.message || "Unknown error during token exchange";
|
98
101
|
console.error(`Token exchange failed with status ${status}: ${message}`);
|
99
102
|
throw new Error(`Token exchange failed: ${message}`);
|
100
103
|
}
|
101
104
|
else {
|
102
|
-
console.error(
|
103
|
-
throw new Error(
|
105
|
+
console.error("Unexpected error during token exchange:", error);
|
106
|
+
throw new Error("An unexpected error occurred during token exchange.");
|
104
107
|
}
|
105
108
|
}
|
106
109
|
}
|
@@ -115,9 +118,9 @@ function signSession(userId, secret) {
|
|
115
118
|
const timestamp = Date.now();
|
116
119
|
const data = `${userId}|${timestamp}`;
|
117
120
|
const signature = crypto
|
118
|
-
.createHmac(
|
121
|
+
.createHmac("sha256", secret)
|
119
122
|
.update(data)
|
120
|
-
.digest(
|
123
|
+
.digest("hex");
|
121
124
|
return `${data}|${signature}`;
|
122
125
|
}
|
123
126
|
/**
|
@@ -129,7 +132,7 @@ function signSession(userId, secret) {
|
|
129
132
|
*/
|
130
133
|
function verifySession(token, secret, maxAge) {
|
131
134
|
try {
|
132
|
-
const parts = token.split(
|
135
|
+
const parts = token.split("|");
|
133
136
|
if (parts.length !== 3)
|
134
137
|
return null;
|
135
138
|
const [userId, timestampStr, signature] = parts;
|
@@ -142,9 +145,9 @@ function verifySession(token, secret, maxAge) {
|
|
142
145
|
// Verify signature
|
143
146
|
const data = `${userId}|${timestamp}`;
|
144
147
|
const expectedSignature = crypto
|
145
|
-
.createHmac(
|
148
|
+
.createHmac("sha256", secret)
|
146
149
|
.update(data)
|
147
|
-
.digest(
|
150
|
+
.digest("hex");
|
148
151
|
if (signature !== expectedSignature) {
|
149
152
|
console.log(`Session token signature mismatch: ${signature} !== ${expectedSignature}`);
|
150
153
|
return null;
|
@@ -193,18 +196,22 @@ async function verifySignedUserToken(signedUserToken) {
|
|
193
196
|
function verifyFrontendToken(frontendToken, apiKey) {
|
194
197
|
try {
|
195
198
|
// Check if the token contains a user ID and hash separated by a colon
|
196
|
-
const tokenParts = frontendToken.split(
|
199
|
+
const tokenParts = frontendToken.split(":");
|
197
200
|
if (tokenParts.length === 2) {
|
198
201
|
// Format: userId:hash
|
199
202
|
const [tokenUserId, tokenHash] = tokenParts;
|
200
203
|
// Align the hashing algorithm with server-side `hashWithApiKey`
|
201
204
|
// 1. Hash the API key first (server only stores the hashed version)
|
202
|
-
const hashedApiKey = crypto
|
205
|
+
const hashedApiKey = crypto
|
206
|
+
.createHash("sha256")
|
207
|
+
.update(apiKey)
|
208
|
+
.digest("hex");
|
203
209
|
// 2. Create the expected hash using userId + hashedApiKey (same order & update calls)
|
204
|
-
const expectedHash = crypto
|
210
|
+
const expectedHash = crypto
|
211
|
+
.createHash("sha256")
|
205
212
|
.update(tokenUserId)
|
206
213
|
.update(hashedApiKey)
|
207
|
-
.digest(
|
214
|
+
.digest("hex");
|
208
215
|
if (tokenHash === expectedHash) {
|
209
216
|
return tokenUserId;
|
210
217
|
}
|
@@ -220,10 +227,12 @@ function verifyFrontendToken(frontendToken, apiKey) {
|
|
220
227
|
}
|
221
228
|
}
|
222
229
|
function validateCloudApiUrlChecksum(checksum, cloudApiUrl, apiKey) {
|
223
|
-
const hashedApiKey = crypto.createHash(
|
224
|
-
const expectedChecksum = crypto
|
230
|
+
const hashedApiKey = crypto.createHash("sha256").update(apiKey).digest("hex");
|
231
|
+
const expectedChecksum = crypto
|
232
|
+
.createHash("sha256")
|
233
|
+
.update(cloudApiUrl)
|
225
234
|
.update(hashedApiKey)
|
226
|
-
.digest(
|
235
|
+
.digest("hex");
|
227
236
|
return expectedChecksum === checksum;
|
228
237
|
}
|
229
238
|
/**
|
@@ -240,47 +249,56 @@ function validateCloudApiUrlChecksum(checksum, cloudApiUrl, apiKey) {
|
|
240
249
|
* @param options.cookieOptions Options for the session cookie (default: { httpOnly: true, secure: process.env.NODE_ENV === 'production' }).
|
241
250
|
*/
|
242
251
|
function createAuthMiddleware(options) {
|
243
|
-
const { apiKey, packageName, cookieName =
|
252
|
+
const { apiKey, packageName, cookieName = "aos_session", cookieSecret, getAppSessionForUser, cookieOptions = {
|
244
253
|
httpOnly: true,
|
245
|
-
secure: process.env.NODE_ENV ===
|
254
|
+
secure: process.env.NODE_ENV === "production",
|
246
255
|
maxAge: 30 * 24 * 60 * 60 * 1000, // 30 days by default
|
247
|
-
sameSite: process.env.NODE_ENV ===
|
248
|
-
path:
|
249
|
-
} } = options;
|
256
|
+
sameSite: process.env.NODE_ENV === "production" ? "none" : "lax",
|
257
|
+
path: "/",
|
258
|
+
}, } = options;
|
250
259
|
if (!apiKey) {
|
251
260
|
throw new Error("API Key are required for the auth middleware.");
|
252
261
|
}
|
253
|
-
if (!cookieSecret ||
|
262
|
+
if (!cookieSecret ||
|
263
|
+
typeof cookieSecret !== "string" ||
|
264
|
+
cookieSecret.length < 8) {
|
254
265
|
throw new Error("A strong cookieSecret (at least 8 characters) is required for secure session management.");
|
255
266
|
}
|
256
267
|
return async (req, res, next) => {
|
257
268
|
// First check for temporary token in the query string
|
258
|
-
const tempToken = req.query[
|
259
|
-
const frontendToken = req.headers.authorization?.replace(
|
260
|
-
|
269
|
+
const tempToken = req.query["aos_temp_token"];
|
270
|
+
const frontendToken = req.headers.authorization?.replace("Bearer ", "") ||
|
271
|
+
req.query["aos_frontend_token"];
|
272
|
+
const signedUserToken = req.query["aos_signed_user_token"];
|
261
273
|
// first check for signed user token
|
262
274
|
if (signedUserToken) {
|
263
275
|
const userId = await verifySignedUserToken(signedUserToken);
|
264
276
|
if (userId) {
|
265
277
|
// Set the user ID on the request
|
266
278
|
req.authUserId = userId;
|
279
|
+
if (getAppSessionForUser) {
|
280
|
+
const appSession = getAppSessionForUser(userId);
|
281
|
+
if (appSession) {
|
282
|
+
req.activeSession = appSession;
|
283
|
+
}
|
284
|
+
}
|
267
285
|
// Create a signed session token and store it in a cookie
|
268
286
|
const signedSession = signSession(userId, cookieSecret);
|
269
287
|
res.cookie(cookieName, signedSession, cookieOptions);
|
270
|
-
console.log(
|
288
|
+
console.log("[auth.middleware] User ID verified from signed user token: ", userId);
|
271
289
|
return next();
|
272
290
|
}
|
273
291
|
else {
|
274
|
-
console.log(
|
292
|
+
console.log("[auth.middleware] Signed user token invalid");
|
275
293
|
}
|
276
294
|
}
|
277
295
|
// If temporary token exists, authenticate with it
|
278
296
|
if (tempToken) {
|
279
297
|
try {
|
280
|
-
let cloudApiUrl = `https://
|
281
|
-
const cloudApiUrlFromQuery = req.query[
|
298
|
+
let cloudApiUrl = `https://api.mentra.glass`;
|
299
|
+
const cloudApiUrlFromQuery = req.query["cloudApiUrl"];
|
282
300
|
if (cloudApiUrlFromQuery) {
|
283
|
-
const cloudApiUrlChecksum = req.query[
|
301
|
+
const cloudApiUrlChecksum = req.query["cloudApiUrlChecksum"];
|
284
302
|
if (validateCloudApiUrlChecksum(cloudApiUrlChecksum, cloudApiUrlFromQuery, apiKey)) {
|
285
303
|
console.log(`Cloud API is being routed to alternate url at request of the server: ${cloudApiUrlFromQuery}`);
|
286
304
|
cloudApiUrl = cloudApiUrlFromQuery;
|
@@ -292,10 +310,16 @@ function createAuthMiddleware(options) {
|
|
292
310
|
const { userId } = await exchangeToken(cloudApiUrl, tempToken, apiKey, packageName);
|
293
311
|
// Set the user ID on the request
|
294
312
|
req.authUserId = userId;
|
313
|
+
if (getAppSessionForUser) {
|
314
|
+
const appSession = getAppSessionForUser(userId);
|
315
|
+
if (appSession) {
|
316
|
+
req.activeSession = appSession;
|
317
|
+
}
|
318
|
+
}
|
295
319
|
// Create a signed session token and store it in a cookie
|
296
320
|
const signedSession = signSession(userId, cookieSecret);
|
297
321
|
res.cookie(cookieName, signedSession, cookieOptions);
|
298
|
-
console.log(
|
322
|
+
console.log("[auth.middleware] User ID verified from temporary token: ", userId);
|
299
323
|
return next();
|
300
324
|
}
|
301
325
|
catch (error) {
|
@@ -308,14 +332,20 @@ function createAuthMiddleware(options) {
|
|
308
332
|
const userId = verifyFrontendToken(frontendToken, apiKey);
|
309
333
|
if (userId) {
|
310
334
|
req.authUserId = userId;
|
335
|
+
if (getAppSessionForUser) {
|
336
|
+
const appSession = getAppSessionForUser(userId);
|
337
|
+
if (appSession) {
|
338
|
+
req.activeSession = appSession;
|
339
|
+
}
|
340
|
+
}
|
311
341
|
// Create a signed session token and store it in a cookie
|
312
342
|
const signedSession = signSession(userId, cookieSecret);
|
313
343
|
res.cookie(cookieName, signedSession, cookieOptions);
|
314
|
-
console.log(
|
344
|
+
console.log("[auth.middleware] User ID verified from frontend user token: ", userId);
|
315
345
|
return next();
|
316
346
|
}
|
317
347
|
else {
|
318
|
-
console.log(
|
348
|
+
console.log("[auth.middleware] Frontend token invalid");
|
319
349
|
}
|
320
350
|
}
|
321
351
|
// No valid temporary token, check for existing session cookie
|
@@ -326,6 +356,12 @@ function createAuthMiddleware(options) {
|
|
326
356
|
const userId = verifySession(sessionCookie, cookieSecret, cookieOptions.maxAge);
|
327
357
|
if (userId) {
|
328
358
|
req.authUserId = userId;
|
359
|
+
if (getAppSessionForUser) {
|
360
|
+
const appSession = getAppSessionForUser(userId);
|
361
|
+
if (appSession) {
|
362
|
+
req.activeSession = appSession;
|
363
|
+
}
|
364
|
+
}
|
329
365
|
return next();
|
330
366
|
}
|
331
367
|
// Invalid or expired session, clear the cookie
|
package/dist/index.d.ts
CHANGED
@@ -1,35 +1,35 @@
|
|
1
|
-
export * from
|
2
|
-
export * from
|
3
|
-
export * from
|
4
|
-
export * from
|
5
|
-
export * from
|
6
|
-
export * from
|
1
|
+
export * from "./types/token";
|
2
|
+
export * from "./types/message-types";
|
3
|
+
export * from "./types/messages/base";
|
4
|
+
export * from "./types/messages/glasses-to-cloud";
|
5
|
+
export * from "./types/messages/cloud-to-glasses";
|
6
|
+
export * from "./types/messages/app-to-cloud";
|
7
7
|
export * from "./utils/bitmap-utils";
|
8
8
|
export * from "./utils/animation-utils";
|
9
9
|
export { AppConnectionAck, AppConnectionError, AppStopped, SettingsUpdate as AppSettingsUpdate, // Alias to avoid conflict with cloud-to-glasses SettingsUpdate
|
10
|
-
DataStream, CloudToAppMessage, TranslationData, ToolCall, StandardConnectionError, CustomMessage, ManagedStreamStatus, OutputStatus, MentraosSettingsUpdate, TranscriptionData, AudioChunk, PermissionError, PermissionErrorDetail, AudioPlayResponse, isAppConnectionAck, isAppConnectionError, isAppStopped, isSettingsUpdate, isDataStream, isAudioChunk, isDashboardModeChanged, isDashboardAlwaysOnChanged, isManagedStreamStatus, isPhotoResponse as isPhotoResponseFromCloud, isRtmpStreamStatus as isRtmpStreamStatusFromCloud } from
|
11
|
-
export * from
|
12
|
-
export * from
|
13
|
-
export * from
|
14
|
-
export * from
|
15
|
-
export * from
|
16
|
-
export * from
|
17
|
-
export * from
|
18
|
-
export * from
|
19
|
-
export * from
|
10
|
+
CapabilitiesUpdate, DataStream, CloudToAppMessage, TranslationData, ToolCall, StandardConnectionError, CustomMessage, ManagedStreamStatus, OutputStatus, MentraosSettingsUpdate, TranscriptionData, AudioChunk, PermissionError, PermissionErrorDetail, AudioPlayResponse, isAppConnectionAck, isAppConnectionError, isAppStopped, isSettingsUpdate, isCapabilitiesUpdate, isDataStream, isAudioChunk, isDashboardModeChanged, isDashboardAlwaysOnChanged, isManagedStreamStatus, isPhotoResponse as isPhotoResponseFromCloud, isRtmpStreamStatus as isRtmpStreamStatusFromCloud, } from "./types/messages/cloud-to-app";
|
11
|
+
export * from "./types/streams";
|
12
|
+
export * from "./types/layouts";
|
13
|
+
export * from "./types/dashboard";
|
14
|
+
export * from "./types/rtmp-stream";
|
15
|
+
export * from "./types/enums";
|
16
|
+
export * from "./types/models";
|
17
|
+
export * from "./types/user-session";
|
18
|
+
export * from "./types/webhooks";
|
19
|
+
export * from "./types/capabilities";
|
20
20
|
export * from "./app/index";
|
21
21
|
export * from "./logging/logger";
|
22
|
-
export { ButtonPress, HeadPosition, GlassesBatteryUpdate, PhoneBatteryUpdate, GlassesConnectionState, LocationUpdate, CalendarEvent, Vad, PhoneNotification, PhoneNotificationDismissed, StartApp, StopApp, ConnectionInit, DashboardState, OpenDashboard, GlassesToCloudMessage, PhotoResponse, RtmpStreamStatus, KeepAliveAck } from
|
23
|
-
export { ConnectionAck, ConnectionError, AuthError, DisplayEvent, AppStateChange, MicrophoneStateChange, CloudToGlassesMessage, PhotoRequestToGlasses, SettingsUpdate, StartRtmpStream, StopRtmpStream, KeepRtmpStreamAlive } from
|
24
|
-
export { AppConnectionInit, AppSubscriptionUpdate, RtmpStreamRequest, RtmpStreamStopRequest, AppToCloudMessage, PhotoRequest } from
|
25
|
-
export { TextWall, DoubleTextWall, DashboardCard, ReferenceCard, Layout, DisplayRequest, BitmapView, ClearView, } from
|
26
|
-
export { isButtonPress, isHeadPosition, isConnectionInit, isStartApp, isStopApp, isPhotoResponse as isPhotoResponseFromGlasses, isRtmpStreamStatus as isRtmpStreamStatusFromGlasses, isKeepAliveAck, isPhoneNotificationDismissed } from
|
27
|
-
export { isConnectionAck, isDisplayEvent, isAppStateChange, isPhotoRequest, isSettingsUpdate as isSettingsUpdateToGlasses, isStartRtmpStream, isStopRtmpStream, isKeepRtmpStreamAlive } from
|
28
|
-
export { isAppConnectionInit, isAppSubscriptionUpdate, isDisplayRequest, isRtmpStreamRequest, isRtmpStreamStopRequest, isPhotoRequest as isPhotoRequestFromApp } from
|
29
|
-
export { BaseAppSetting, AppSetting, AppSettings, AppConfig, validateAppConfig, ToolSchema, ToolParameterSchema } from
|
30
|
-
export { VideoConfig, AudioConfig, StreamConfig, StreamStatusHandler } from
|
31
|
-
export * from
|
32
|
-
export { PhotoData } from
|
22
|
+
export { ButtonPress, HeadPosition, GlassesBatteryUpdate, PhoneBatteryUpdate, GlassesConnectionState, LocationUpdate, CalendarEvent, Vad, PhoneNotification, PhoneNotificationDismissed, StartApp, StopApp, ConnectionInit, DashboardState, OpenDashboard, GlassesToCloudMessage, PhotoResponse, RtmpStreamStatus, KeepAliveAck, } from "./types/messages/glasses-to-cloud";
|
23
|
+
export { ConnectionAck, ConnectionError, AuthError, DisplayEvent, AppStateChange, MicrophoneStateChange, CloudToGlassesMessage, PhotoRequestToGlasses, SettingsUpdate, StartRtmpStream, StopRtmpStream, KeepRtmpStreamAlive, } from "./types/messages/cloud-to-glasses";
|
24
|
+
export { AppConnectionInit, AppSubscriptionUpdate, RtmpStreamRequest, RtmpStreamStopRequest, AppToCloudMessage, PhotoRequest, } from "./types/messages/app-to-cloud";
|
25
|
+
export { TextWall, DoubleTextWall, DashboardCard, ReferenceCard, Layout, DisplayRequest, BitmapView, ClearView, } from "./types/layouts";
|
26
|
+
export { isButtonPress, isHeadPosition, isConnectionInit, isStartApp, isStopApp, isPhotoResponse as isPhotoResponseFromGlasses, isRtmpStreamStatus as isRtmpStreamStatusFromGlasses, isKeepAliveAck, isPhoneNotificationDismissed, } from "./types/messages/glasses-to-cloud";
|
27
|
+
export { isConnectionAck, isDisplayEvent, isAppStateChange, isPhotoRequest, isSettingsUpdate as isSettingsUpdateToGlasses, isStartRtmpStream, isStopRtmpStream, isKeepRtmpStreamAlive, } from "./types/messages/cloud-to-glasses";
|
28
|
+
export { isAppConnectionInit, isAppSubscriptionUpdate, isDisplayRequest, isRtmpStreamRequest, isRtmpStreamStopRequest, isPhotoRequest as isPhotoRequestFromApp, } from "./types/messages/app-to-cloud";
|
29
|
+
export { BaseAppSetting, AppSetting, AppSettings, AppConfig, validateAppConfig, ToolSchema, ToolParameterSchema, } from "./types/models";
|
30
|
+
export { VideoConfig, AudioConfig, StreamConfig, StreamStatusHandler, } from "./types/rtmp-stream";
|
31
|
+
export * from "./app/session/modules";
|
32
|
+
export { PhotoData } from "./types/photo-data";
|
33
33
|
/**
|
34
34
|
* WebSocket error information
|
35
35
|
*/
|
@@ -38,7 +38,7 @@ export interface WebSocketError {
|
|
38
38
|
message: string;
|
39
39
|
details?: unknown;
|
40
40
|
}
|
41
|
-
import { Request } from
|
41
|
+
import { Request } from "express";
|
42
42
|
export interface AuthenticatedRequest extends Request {
|
43
43
|
authUserId?: string;
|
44
44
|
}
|
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,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,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
@@ -15,7 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
15
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
16
16
|
};
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
18
|
-
exports.validateAppConfig = exports.isPhotoRequestFromApp = exports.isRtmpStreamStopRequest = exports.isRtmpStreamRequest = exports.isDisplayRequest = exports.isAppSubscriptionUpdate = exports.isAppConnectionInit = exports.isKeepRtmpStreamAlive = exports.isStopRtmpStream = exports.isStartRtmpStream = exports.isSettingsUpdateToGlasses = exports.isPhotoRequest = exports.isAppStateChange = exports.isDisplayEvent = exports.isConnectionAck = exports.isPhoneNotificationDismissed = exports.isKeepAliveAck = exports.isRtmpStreamStatusFromGlasses = exports.isPhotoResponseFromGlasses = exports.isStopApp = exports.isStartApp = exports.isConnectionInit = exports.isHeadPosition = exports.isButtonPress = exports.isRtmpStreamStatusFromCloud = exports.isPhotoResponseFromCloud = exports.isManagedStreamStatus = exports.isDashboardAlwaysOnChanged = exports.isDashboardModeChanged = exports.isAudioChunk = exports.isDataStream = exports.isSettingsUpdate = exports.isAppStopped = exports.isAppConnectionError = exports.isAppConnectionAck = void 0;
|
18
|
+
exports.validateAppConfig = exports.isPhotoRequestFromApp = exports.isRtmpStreamStopRequest = exports.isRtmpStreamRequest = exports.isDisplayRequest = exports.isAppSubscriptionUpdate = exports.isAppConnectionInit = exports.isKeepRtmpStreamAlive = exports.isStopRtmpStream = exports.isStartRtmpStream = exports.isSettingsUpdateToGlasses = exports.isPhotoRequest = exports.isAppStateChange = exports.isDisplayEvent = exports.isConnectionAck = exports.isPhoneNotificationDismissed = exports.isKeepAliveAck = exports.isRtmpStreamStatusFromGlasses = exports.isPhotoResponseFromGlasses = exports.isStopApp = exports.isStartApp = exports.isConnectionInit = exports.isHeadPosition = exports.isButtonPress = exports.isRtmpStreamStatusFromCloud = exports.isPhotoResponseFromCloud = exports.isManagedStreamStatus = exports.isDashboardAlwaysOnChanged = exports.isDashboardModeChanged = exports.isAudioChunk = exports.isDataStream = exports.isCapabilitiesUpdate = exports.isSettingsUpdate = exports.isAppStopped = exports.isAppConnectionError = exports.isAppConnectionAck = void 0;
|
19
19
|
__exportStar(require("./types/token"), exports);
|
20
20
|
// Message type enums
|
21
21
|
__exportStar(require("./types/message-types"), exports);
|
@@ -35,6 +35,7 @@ Object.defineProperty(exports, "isAppConnectionAck", { enumerable: true, get: fu
|
|
35
35
|
Object.defineProperty(exports, "isAppConnectionError", { enumerable: true, get: function () { return cloud_to_app_1.isAppConnectionError; } });
|
36
36
|
Object.defineProperty(exports, "isAppStopped", { enumerable: true, get: function () { return cloud_to_app_1.isAppStopped; } });
|
37
37
|
Object.defineProperty(exports, "isSettingsUpdate", { enumerable: true, get: function () { return cloud_to_app_1.isSettingsUpdate; } });
|
38
|
+
Object.defineProperty(exports, "isCapabilitiesUpdate", { enumerable: true, get: function () { return cloud_to_app_1.isCapabilitiesUpdate; } });
|
38
39
|
Object.defineProperty(exports, "isDataStream", { enumerable: true, get: function () { return cloud_to_app_1.isDataStream; } });
|
39
40
|
Object.defineProperty(exports, "isAudioChunk", { enumerable: true, get: function () { return cloud_to_app_1.isAudioChunk; } });
|
40
41
|
Object.defineProperty(exports, "isDashboardModeChanged", { enumerable: true, get: function () { return cloud_to_app_1.isDashboardModeChanged; } });
|
package/dist/types/index.d.ts
CHANGED
@@ -1,30 +1,30 @@
|
|
1
|
-
export * from
|
2
|
-
export * from
|
3
|
-
export * from
|
4
|
-
export * from
|
5
|
-
export * from
|
6
|
-
export * from
|
1
|
+
export * from "./token";
|
2
|
+
export * from "./message-types";
|
3
|
+
export * from "./messages/base";
|
4
|
+
export * from "./messages/glasses-to-cloud";
|
5
|
+
export * from "./messages/cloud-to-glasses";
|
6
|
+
export * from "./messages/app-to-cloud";
|
7
7
|
export { AppConnectionAck, AppConnectionError, AppStopped, SettingsUpdate as AppSettingsUpdate, // Alias to avoid conflict with cloud-to-glasses SettingsUpdate
|
8
|
-
DataStream, CloudToAppMessage, AudioPlayResponse, TranslationData, ToolCall, StandardConnectionError, CustomMessage, ManagedStreamStatus, OutputStatus, MentraosSettingsUpdate, TranscriptionData, AudioChunk, PermissionError, PermissionErrorDetail, isAppConnectionAck, isAppConnectionError, isAppStopped, isSettingsUpdate, isDataStream, isAudioChunk, isAudioPlayResponse, isDashboardModeChanged, isDashboardAlwaysOnChanged, isManagedStreamStatus, isPhotoResponse as isPhotoResponseFromCloud, isRtmpStreamStatus as isRtmpStreamStatusFromCloud } from
|
9
|
-
export * from
|
10
|
-
export * from
|
11
|
-
export * from
|
12
|
-
export * from
|
13
|
-
export * from
|
14
|
-
export * from
|
15
|
-
export * from
|
16
|
-
export * from
|
17
|
-
export * from
|
18
|
-
export * from
|
19
|
-
export { ButtonPress, HeadPosition, GlassesBatteryUpdate, PhoneBatteryUpdate, GlassesConnectionState, LocationUpdate, CalendarEvent, Vad, PhoneNotification, PhoneNotificationDismissed, StartApp, StopApp, ConnectionInit, DashboardState, OpenDashboard, GlassesToCloudMessage, PhotoResponse, RtmpStreamStatus, KeepAliveAck } from
|
20
|
-
export { ConnectionAck, ConnectionError, AuthError, DisplayEvent, AppStateChange, MicrophoneStateChange, CloudToGlassesMessage, PhotoRequestToGlasses, AudioPlayRequestToGlasses, AudioStopRequestToGlasses, SettingsUpdate, StartRtmpStream, StopRtmpStream, KeepRtmpStreamAlive } from
|
21
|
-
export { AppConnectionInit, AppSubscriptionUpdate, AudioPlayRequest, AudioStopRequest, RtmpStreamRequest, RtmpStreamStopRequest, AppToCloudMessage, PhotoRequest } from
|
22
|
-
export { TextWall, DoubleTextWall, DashboardCard, ReferenceCard, Layout, DisplayRequest } from
|
23
|
-
export { isButtonPress, isHeadPosition, isConnectionInit, isStartApp, isStopApp, isPhotoResponse as isPhotoResponseFromGlasses, isRtmpStreamStatus as isRtmpStreamStatusFromGlasses, isKeepAliveAck } from
|
24
|
-
export { isConnectionAck, isDisplayEvent, isAppStateChange, isPhotoRequest, isAudioPlayRequestToGlasses, isAudioStopRequestToGlasses, isSettingsUpdate as isSettingsUpdateToGlasses, isStartRtmpStream, isStopRtmpStream, isKeepRtmpStreamAlive } from
|
25
|
-
export { isAppConnectionInit, isAppSubscriptionUpdate, isDisplayRequest, isAudioPlayRequest, isAudioStopRequest, isRtmpStreamRequest, isRtmpStreamStopRequest, isPhotoRequest as isPhotoRequestFromApp } from
|
26
|
-
export { BaseAppSetting, AppSetting, AppSettings, AppConfig, validateAppConfig, ToolSchema, ToolParameterSchema } from
|
27
|
-
export { VideoConfig, AudioConfig, StreamConfig, StreamStatusHandler } from
|
8
|
+
CapabilitiesUpdate, DataStream, CloudToAppMessage, AudioPlayResponse, TranslationData, ToolCall, StandardConnectionError, CustomMessage, ManagedStreamStatus, OutputStatus, MentraosSettingsUpdate, TranscriptionData, AudioChunk, PermissionError, PermissionErrorDetail, isAppConnectionAck, isAppConnectionError, isAppStopped, isSettingsUpdate, isCapabilitiesUpdate, isDataStream, isAudioChunk, isAudioPlayResponse, isDashboardModeChanged, isDashboardAlwaysOnChanged, isManagedStreamStatus, isPhotoResponse as isPhotoResponseFromCloud, isRtmpStreamStatus as isRtmpStreamStatusFromCloud, } from "./messages/cloud-to-app";
|
9
|
+
export * from "./streams";
|
10
|
+
export * from "./layouts";
|
11
|
+
export * from "./dashboard";
|
12
|
+
export * from "./rtmp-stream";
|
13
|
+
export * from "./enums";
|
14
|
+
export * from "./models";
|
15
|
+
export * from "./user-session";
|
16
|
+
export * from "./webhooks";
|
17
|
+
export * from "./capabilities";
|
18
|
+
export * from "./photo-data";
|
19
|
+
export { ButtonPress, HeadPosition, GlassesBatteryUpdate, PhoneBatteryUpdate, GlassesConnectionState, LocationUpdate, CalendarEvent, Vad, PhoneNotification, PhoneNotificationDismissed, StartApp, StopApp, ConnectionInit, DashboardState, OpenDashboard, GlassesToCloudMessage, PhotoResponse, RtmpStreamStatus, KeepAliveAck, } from "./messages/glasses-to-cloud";
|
20
|
+
export { ConnectionAck, ConnectionError, AuthError, DisplayEvent, AppStateChange, MicrophoneStateChange, CloudToGlassesMessage, PhotoRequestToGlasses, AudioPlayRequestToGlasses, AudioStopRequestToGlasses, SettingsUpdate, StartRtmpStream, StopRtmpStream, KeepRtmpStreamAlive, } from "./messages/cloud-to-glasses";
|
21
|
+
export { AppConnectionInit, AppSubscriptionUpdate, AudioPlayRequest, AudioStopRequest, RtmpStreamRequest, RtmpStreamStopRequest, AppToCloudMessage, PhotoRequest, } from "./messages/app-to-cloud";
|
22
|
+
export { TextWall, DoubleTextWall, DashboardCard, ReferenceCard, Layout, DisplayRequest, } from "./layouts";
|
23
|
+
export { isButtonPress, isHeadPosition, isConnectionInit, isStartApp, isStopApp, isPhotoResponse as isPhotoResponseFromGlasses, isRtmpStreamStatus as isRtmpStreamStatusFromGlasses, isKeepAliveAck, } from "./messages/glasses-to-cloud";
|
24
|
+
export { isConnectionAck, isDisplayEvent, isAppStateChange, isPhotoRequest, isAudioPlayRequestToGlasses, isAudioStopRequestToGlasses, isSettingsUpdate as isSettingsUpdateToGlasses, isStartRtmpStream, isStopRtmpStream, isKeepRtmpStreamAlive, } from "./messages/cloud-to-glasses";
|
25
|
+
export { isAppConnectionInit, isAppSubscriptionUpdate, isDisplayRequest, isAudioPlayRequest, isAudioStopRequest, isRtmpStreamRequest, isRtmpStreamStopRequest, isPhotoRequest as isPhotoRequestFromApp, } from "./messages/app-to-cloud";
|
26
|
+
export { BaseAppSetting, AppSetting, AppSettings, AppConfig, validateAppConfig, ToolSchema, ToolParameterSchema, } from "./models";
|
27
|
+
export { VideoConfig, AudioConfig, StreamConfig, StreamStatusHandler, } from "./rtmp-stream";
|
28
28
|
/**
|
29
29
|
* WebSocket error information
|
30
30
|
*/
|
@@ -33,8 +33,10 @@ export interface WebSocketError {
|
|
33
33
|
message: string;
|
34
34
|
details?: unknown;
|
35
35
|
}
|
36
|
-
import { Request } from
|
36
|
+
import { Request } from "express";
|
37
|
+
import { AppSession } from "src/app/session";
|
37
38
|
export interface AuthenticatedRequest extends Request {
|
38
39
|
authUserId?: string;
|
40
|
+
activeSession: AppSession;
|
39
41
|
}
|
40
42
|
//# 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,CAAC;AAGxB,cAAc,iBAAiB,CAAC;AAGhC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AAGxC,OAAO,EAEL,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,cAAc,IAAI,iBAAiB,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.js
CHANGED
@@ -15,7 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
15
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
16
16
|
};
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
18
|
-
exports.validateAppConfig = exports.isPhotoRequestFromApp = exports.isRtmpStreamStopRequest = exports.isRtmpStreamRequest = exports.isAudioStopRequest = exports.isAudioPlayRequest = exports.isDisplayRequest = exports.isAppSubscriptionUpdate = exports.isAppConnectionInit = exports.isKeepRtmpStreamAlive = exports.isStopRtmpStream = exports.isStartRtmpStream = exports.isSettingsUpdateToGlasses = exports.isAudioStopRequestToGlasses = exports.isAudioPlayRequestToGlasses = exports.isPhotoRequest = exports.isAppStateChange = exports.isDisplayEvent = exports.isConnectionAck = exports.isKeepAliveAck = exports.isRtmpStreamStatusFromGlasses = exports.isPhotoResponseFromGlasses = exports.isStopApp = exports.isStartApp = exports.isConnectionInit = exports.isHeadPosition = exports.isButtonPress = exports.isRtmpStreamStatusFromCloud = exports.isPhotoResponseFromCloud = exports.isManagedStreamStatus = exports.isDashboardAlwaysOnChanged = exports.isDashboardModeChanged = exports.isAudioPlayResponse = exports.isAudioChunk = exports.isDataStream = exports.isSettingsUpdate = exports.isAppStopped = exports.isAppConnectionError = exports.isAppConnectionAck = void 0;
|
18
|
+
exports.validateAppConfig = exports.isPhotoRequestFromApp = exports.isRtmpStreamStopRequest = exports.isRtmpStreamRequest = exports.isAudioStopRequest = exports.isAudioPlayRequest = exports.isDisplayRequest = exports.isAppSubscriptionUpdate = exports.isAppConnectionInit = exports.isKeepRtmpStreamAlive = exports.isStopRtmpStream = exports.isStartRtmpStream = exports.isSettingsUpdateToGlasses = exports.isAudioStopRequestToGlasses = exports.isAudioPlayRequestToGlasses = exports.isPhotoRequest = exports.isAppStateChange = exports.isDisplayEvent = exports.isConnectionAck = exports.isKeepAliveAck = exports.isRtmpStreamStatusFromGlasses = exports.isPhotoResponseFromGlasses = exports.isStopApp = exports.isStartApp = exports.isConnectionInit = exports.isHeadPosition = exports.isButtonPress = exports.isRtmpStreamStatusFromCloud = exports.isPhotoResponseFromCloud = exports.isManagedStreamStatus = exports.isDashboardAlwaysOnChanged = exports.isDashboardModeChanged = exports.isAudioPlayResponse = exports.isAudioChunk = exports.isDataStream = exports.isCapabilitiesUpdate = exports.isSettingsUpdate = exports.isAppStopped = exports.isAppConnectionError = exports.isAppConnectionAck = void 0;
|
19
19
|
__exportStar(require("./token"), exports);
|
20
20
|
// Message type enums
|
21
21
|
__exportStar(require("./message-types"), exports);
|
@@ -32,6 +32,7 @@ Object.defineProperty(exports, "isAppConnectionAck", { enumerable: true, get: fu
|
|
32
32
|
Object.defineProperty(exports, "isAppConnectionError", { enumerable: true, get: function () { return cloud_to_app_1.isAppConnectionError; } });
|
33
33
|
Object.defineProperty(exports, "isAppStopped", { enumerable: true, get: function () { return cloud_to_app_1.isAppStopped; } });
|
34
34
|
Object.defineProperty(exports, "isSettingsUpdate", { enumerable: true, get: function () { return cloud_to_app_1.isSettingsUpdate; } });
|
35
|
+
Object.defineProperty(exports, "isCapabilitiesUpdate", { enumerable: true, get: function () { return cloud_to_app_1.isCapabilitiesUpdate; } });
|
35
36
|
Object.defineProperty(exports, "isDataStream", { enumerable: true, get: function () { return cloud_to_app_1.isDataStream; } });
|
36
37
|
Object.defineProperty(exports, "isAudioChunk", { enumerable: true, get: function () { return cloud_to_app_1.isAudioChunk; } });
|
37
38
|
Object.defineProperty(exports, "isAudioPlayResponse", { enumerable: true, get: function () { return cloud_to_app_1.isAudioPlayResponse; } });
|
@@ -82,6 +82,7 @@ export declare enum CloudToAppMessageType {
|
|
82
82
|
CONNECTION_ERROR = "tpa_connection_error",
|
83
83
|
APP_STOPPED = "app_stopped",
|
84
84
|
SETTINGS_UPDATE = "settings_update",
|
85
|
+
CAPABILITIES_UPDATE = "capabilities_update",
|
85
86
|
DASHBOARD_MODE_CHANGED = "dashboard_mode_changed",
|
86
87
|
DASHBOARD_ALWAYS_ON_CHANGED = "dashboard_always_on_changed",
|
87
88
|
DATA_STREAM = "data_stream",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"message-types.d.ts","sourceRoot":"","sources":["../../src/types/message-types.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,oBAAY,yBAAyB;IAEnC,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IAIrC,SAAS,cAAuB;IAChC,QAAQ,aAAsB;IAE9B,eAAe,oBAAoB;IACnC,cAAc,mBAA4B;IAG1C,cAAc,mBAA4B;IAG1C,kBAAkB,uBAAgC;IAClD,cAAc,mBAAmB;IAajC,YAAY,iBAA0B;IACtC,aAAa,kBAA2B;IACxC,sBAAsB,2BAAoC;IAC1D,oBAAoB,yBAAkC;IACtD,wBAAwB,6BAAsC;IAC9D,eAAe,oBAA6B;IAC5C,eAAe,oBAA6B;IAC5C,GAAG,QAAiB;IACpB,kBAAkB,uBAAgC;IAClD,4BAA4B,iCAA0C;IACtE,cAAc,mBAA4B;IAC1C,gCAAgC,4BAA8C;IAC9E,kBAAkB,uBAAgC;IAClD,WAAW,gBAAyB;IACpC,mBAAmB,wBAAwB;CAC5C;AAED;;GAEG;AACH,oBAAY,yBAAyB;IAEnC,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;IACrC,UAAU,eAAe;IAGzB,aAAa,kBAAkB;IAC/B,gBAAgB,qBAAqB;IACrC,uBAAuB,4BAA4B;IACnD,aAAa,kBAAkB;IAC/B,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IACzC,eAAe,oBAAoB;IAGnC,iBAAiB,sBAAsB;IACvC,gBAAgB,qBAAqB;IACrC,sBAAsB,2BAA2B;IAGjD,qBAAqB,0BAA0B;IAC/C,0BAA0B,+BAA+B;IAGzD,iBAAiB,sBAAsB;IACvC,uBAAuB,4BAA4B;IAEnD,eAAe,oBAAoB;CACpC;AAED;;GAEG;AACH,oBAAY,qBAAqB;IAE/B,eAAe,wBAAwB;IACvC,mBAAmB,wBAAwB;IAC3C,qBAAqB,0BAA0B;IAG/C,eAAe,kBAAkB;IACjC,aAAa,kBAAkB;IAC/B,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IAGzC,mBAAmB,wBAAwB;IAC3C,gBAAgB,qBAAqB;IAGrC,sBAAsB,2BAA2B;IACjD,mBAAmB,wBAAwB;IAG3C,wBAAwB,6BAA6B;IACrD,qBAAqB,0BAA0B;IAC/C,uBAAuB,4BAA4B;IAGnD,qBAAqB,0BAA0B;IAC/C,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IACzC,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;CAClC;AAED;;GAEG;AACH,oBAAY,qBAAqB;IAE/B,cAAc,uBAAuB;IACrC,gBAAgB,yBAAyB;IAGzC,WAAW,gBAAgB;IAC3B,eAAe,oBAAoB;
|
1
|
+
{"version":3,"file":"message-types.d.ts","sourceRoot":"","sources":["../../src/types/message-types.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,oBAAY,yBAAyB;IAEnC,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IAIrC,SAAS,cAAuB;IAChC,QAAQ,aAAsB;IAE9B,eAAe,oBAAoB;IACnC,cAAc,mBAA4B;IAG1C,cAAc,mBAA4B;IAG1C,kBAAkB,uBAAgC;IAClD,cAAc,mBAAmB;IAajC,YAAY,iBAA0B;IACtC,aAAa,kBAA2B;IACxC,sBAAsB,2BAAoC;IAC1D,oBAAoB,yBAAkC;IACtD,wBAAwB,6BAAsC;IAC9D,eAAe,oBAA6B;IAC5C,eAAe,oBAA6B;IAC5C,GAAG,QAAiB;IACpB,kBAAkB,uBAAgC;IAClD,4BAA4B,iCAA0C;IACtE,cAAc,mBAA4B;IAC1C,gCAAgC,4BAA8C;IAC9E,kBAAkB,uBAAgC;IAClD,WAAW,gBAAyB;IACpC,mBAAmB,wBAAwB;CAC5C;AAED;;GAEG;AACH,oBAAY,yBAAyB;IAEnC,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;IACrC,UAAU,eAAe;IAGzB,aAAa,kBAAkB;IAC/B,gBAAgB,qBAAqB;IACrC,uBAAuB,4BAA4B;IACnD,aAAa,kBAAkB;IAC/B,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IACzC,eAAe,oBAAoB;IAGnC,iBAAiB,sBAAsB;IACvC,gBAAgB,qBAAqB;IACrC,sBAAsB,2BAA2B;IAGjD,qBAAqB,0BAA0B;IAC/C,0BAA0B,+BAA+B;IAGzD,iBAAiB,sBAAsB;IACvC,uBAAuB,4BAA4B;IAEnD,eAAe,oBAAoB;CACpC;AAED;;GAEG;AACH,oBAAY,qBAAqB;IAE/B,eAAe,wBAAwB;IACvC,mBAAmB,wBAAwB;IAC3C,qBAAqB,0BAA0B;IAG/C,eAAe,kBAAkB;IACjC,aAAa,kBAAkB;IAC/B,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IAGzC,mBAAmB,wBAAwB;IAC3C,gBAAgB,qBAAqB;IAGrC,sBAAsB,2BAA2B;IACjD,mBAAmB,wBAAwB;IAG3C,wBAAwB,6BAA6B;IACrD,qBAAqB,0BAA0B;IAC/C,uBAAuB,4BAA4B;IAGnD,qBAAqB,0BAA0B;IAC/C,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IACzC,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;CAClC;AAED;;GAEG;AACH,oBAAY,qBAAqB;IAE/B,cAAc,uBAAuB;IACrC,gBAAgB,yBAAyB;IAGzC,WAAW,gBAAgB;IAC3B,eAAe,oBAAoB;IACnC,mBAAmB,wBAAwB;IAG3C,sBAAsB,2BAA2B;IACjD,2BAA2B,gCAAgC;IAG3D,WAAW,gBAAgB;IAG3B,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;IAC3C,kBAAkB,uBAAuB;IACzC,qBAAqB,0BAA0B;IAE/C,eAAe,oBAAoB;IAGnC,gBAAgB,qBAAqB;IAGrC,cAAc,mBAAmB;IAGjC,oBAAoB,yBAAyB;IAC7C,eAAe,oBAAoB;IACnC,aAAa,kBAAkB;IAC/B,gBAAgB,qBAAqB;IACrC,2BAA2B,gCAAgC;CAC5D;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,oNAMrB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,UAAU,imBAcb,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,aAAa,uIAIhB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW,qjBAad,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,qBAAqB,wPAMxB,CAAC"}
|
@@ -118,6 +118,7 @@ var CloudToAppMessageType;
|
|
118
118
|
// Updates
|
119
119
|
CloudToAppMessageType["APP_STOPPED"] = "app_stopped";
|
120
120
|
CloudToAppMessageType["SETTINGS_UPDATE"] = "settings_update";
|
121
|
+
CloudToAppMessageType["CAPABILITIES_UPDATE"] = "capabilities_update";
|
121
122
|
// Dashboard updates
|
122
123
|
CloudToAppMessageType["DASHBOARD_MODE_CHANGED"] = "dashboard_mode_changed";
|
123
124
|
CloudToAppMessageType["DASHBOARD_ALWAYS_ON_CHANGED"] = "dashboard_always_on_changed";
|
@@ -148,7 +149,7 @@ exports.ControlActionTypes = [
|
|
148
149
|
GlassesToCloudMessageType.START_APP,
|
149
150
|
GlassesToCloudMessageType.STOP_APP,
|
150
151
|
GlassesToCloudMessageType.DASHBOARD_STATE,
|
151
|
-
GlassesToCloudMessageType.OPEN_DASHBOARD
|
152
|
+
GlassesToCloudMessageType.OPEN_DASHBOARD,
|
152
153
|
];
|
153
154
|
/**
|
154
155
|
* Event message types (subset of GlassesToCloudMessageType)
|
@@ -166,7 +167,7 @@ exports.EventTypes = [
|
|
166
167
|
GlassesToCloudMessageType.PHONE_NOTIFICATION_DISMISSED,
|
167
168
|
GlassesToCloudMessageType.CALENDAR_EVENT,
|
168
169
|
GlassesToCloudMessageType.MENTRAOS_SETTINGS_UPDATE_REQUEST,
|
169
|
-
GlassesToCloudMessageType.CORE_STATUS_UPDATE
|
170
|
+
GlassesToCloudMessageType.CORE_STATUS_UPDATE,
|
170
171
|
];
|
171
172
|
/**
|
172
173
|
* Response message types (subset of CloudToGlassesMessageType)
|
@@ -174,7 +175,7 @@ exports.EventTypes = [
|
|
174
175
|
exports.ResponseTypes = [
|
175
176
|
CloudToGlassesMessageType.CONNECTION_ACK,
|
176
177
|
CloudToGlassesMessageType.CONNECTION_ERROR,
|
177
|
-
CloudToGlassesMessageType.AUTH_ERROR
|
178
|
+
CloudToGlassesMessageType.AUTH_ERROR,
|
178
179
|
];
|
179
180
|
/**
|
180
181
|
* Update message types (subset of CloudToGlassesMessageType)
|
@@ -191,7 +192,7 @@ exports.UpdateTypes = [
|
|
191
192
|
CloudToGlassesMessageType.DASHBOARD_ALWAYS_ON_CHANGE,
|
192
193
|
CloudToGlassesMessageType.START_RTMP_STREAM,
|
193
194
|
CloudToGlassesMessageType.STOP_RTMP_STREAM,
|
194
|
-
CloudToGlassesMessageType.KEEP_RTMP_STREAM_ALIVE
|
195
|
+
CloudToGlassesMessageType.KEEP_RTMP_STREAM_ALIVE,
|
195
196
|
];
|
196
197
|
/**
|
197
198
|
* Dashboard message types
|
@@ -201,5 +202,5 @@ exports.DashboardMessageTypes = [
|
|
201
202
|
AppToCloudMessageType.DASHBOARD_MODE_CHANGE,
|
202
203
|
AppToCloudMessageType.DASHBOARD_SYSTEM_UPDATE,
|
203
204
|
CloudToAppMessageType.DASHBOARD_MODE_CHANGED,
|
204
|
-
CloudToAppMessageType.DASHBOARD_ALWAYS_ON_CHANGED
|
205
|
+
CloudToAppMessageType.DASHBOARD_ALWAYS_ON_CHANGED,
|
205
206
|
];
|