@mentra/sdk 2.1.24 → 2.1.27
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 -0
- package/dist/app/server/index.d.ts.map +1 -1
- package/dist/app/server/index.js +48 -26
- package/dist/app/session/dashboard.d.ts +7 -7
- package/dist/app/session/dashboard.d.ts.map +1 -1
- package/dist/app/session/dashboard.js +12 -12
- package/dist/app/session/events.d.ts +3 -1
- package/dist/app/session/events.d.ts.map +1 -1
- package/dist/app/session/events.js +12 -2
- package/dist/app/session/index.d.ts +1 -1
- package/dist/app/session/index.d.ts.map +1 -1
- package/dist/app/session/index.js +12 -7
- package/dist/app/session/modules/audio.js +1 -1
- package/dist/app/session/modules/camera.d.ts +17 -0
- package/dist/app/session/modules/camera.d.ts.map +1 -1
- package/dist/app/session/modules/camera.js +27 -0
- package/dist/app/session/modules/location.d.ts.map +1 -1
- package/dist/app/session/modules/location.js +3 -0
- package/dist/constants/log-messages/color.d.ts +5 -0
- package/dist/constants/log-messages/color.d.ts.map +1 -0
- package/dist/constants/log-messages/color.js +14 -0
- package/dist/constants/log-messages/logos.d.ts +4 -0
- package/dist/constants/log-messages/logos.d.ts.map +1 -0
- package/dist/constants/log-messages/logos.js +48 -0
- package/dist/constants/{messages.d.ts → log-messages/updates.d.ts} +2 -3
- package/dist/constants/log-messages/updates.d.ts.map +1 -0
- package/dist/constants/log-messages/updates.js +55 -0
- package/dist/constants/log-messages/warning.d.ts +8 -0
- package/dist/constants/log-messages/warning.d.ts.map +1 -0
- package/dist/constants/log-messages/warning.js +89 -0
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -15
- package/dist/logging/logger.d.ts +2 -1
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/types/enums.d.ts +0 -20
- package/dist/types/enums.d.ts.map +1 -1
- package/dist/types/enums.js +2 -25
- package/dist/types/index.d.ts +1 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -2
- package/dist/types/layouts.d.ts +3 -3
- package/dist/types/layouts.d.ts.map +1 -1
- package/dist/types/message-types.d.ts +6 -4
- package/dist/types/message-types.d.ts.map +1 -1
- package/dist/types/message-types.js +13 -13
- package/dist/types/messages/base.d.ts.map +1 -1
- package/dist/types/messages/cloud-to-app.d.ts +9 -0
- package/dist/types/messages/cloud-to-app.d.ts.map +1 -1
- package/dist/types/messages/cloud-to-glasses.d.ts +15 -8
- package/dist/types/messages/cloud-to-glasses.d.ts.map +1 -1
- package/dist/types/messages/glasses-to-cloud.d.ts +99 -9
- package/dist/types/messages/glasses-to-cloud.d.ts.map +1 -1
- package/dist/types/messages/glasses-to-cloud.js +45 -1
- package/dist/types/models.d.ts.map +1 -1
- package/dist/types/streams.js +1 -1
- package/dist/types/webhooks.d.ts +4 -51
- package/dist/types/webhooks.d.ts.map +1 -1
- package/dist/types/webhooks.js +0 -27
- package/dist/utils/permissions-utils.d.ts +8 -0
- package/dist/utils/permissions-utils.d.ts.map +1 -0
- package/dist/utils/permissions-utils.js +263 -0
- package/package.json +4 -1
- package/dist/constants/messages.d.ts.map +0 -1
- package/dist/constants/messages.js +0 -57
- package/dist/types/user-session.d.ts +0 -73
- package/dist/types/user-session.d.ts.map +0 -1
- package/dist/types/user-session.js +0 -17
|
@@ -29,6 +29,8 @@ export interface AppServerConfig {
|
|
|
29
29
|
apiKey: string;
|
|
30
30
|
/** 🌐 Port number for the server (default: 7010) */
|
|
31
31
|
port?: number;
|
|
32
|
+
/** Cloud API URL (default: 'api.mentra.glass') */
|
|
33
|
+
cloudApiUrl?: string;
|
|
32
34
|
/** 🛣️ [DEPRECATED] do not set: The SDK will automatically expose an endpoint at '/webhook' */
|
|
33
35
|
webhookPath?: string;
|
|
34
36
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/server/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/server/index.ts"],"names":[],"mappings":"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"}
|
package/dist/app/server/index.js
CHANGED
|
@@ -15,7 +15,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
15
15
|
const fs_1 = __importDefault(require("fs"));
|
|
16
16
|
const index_1 = require("../session/index");
|
|
17
17
|
const webview_1 = require("../webview");
|
|
18
|
-
const
|
|
18
|
+
const updates_1 = require("../../constants/log-messages/updates");
|
|
19
19
|
const types_1 = require("../../types");
|
|
20
20
|
const logger_1 = require("../../logging/logger");
|
|
21
21
|
const axios_1 = __importDefault(require("axios"));
|
|
@@ -180,23 +180,22 @@ class AppServer {
|
|
|
180
180
|
}
|
|
181
181
|
// this.logger.debug(`Developer is using SDK version: ${currentVersion}`);
|
|
182
182
|
// Fetch latest SDK version from the API endpoint
|
|
183
|
-
let latest =
|
|
183
|
+
let latest = null;
|
|
184
184
|
try {
|
|
185
|
-
const cloudHost =
|
|
186
|
-
|
|
187
|
-
const response = await axios_1.default.get(`https://${cloudHost}/api/sdk/version`);
|
|
185
|
+
const cloudHost = "api.mentra.glass";
|
|
186
|
+
const response = await axios_1.default.get(`https://${cloudHost}/api/sdk/version`, { timeout: 3000 });
|
|
188
187
|
if (response.data && response.data.success && response.data.data) {
|
|
189
|
-
latest = response.data.data.latest;
|
|
188
|
+
latest = response.data.data.latest;
|
|
190
189
|
}
|
|
191
190
|
}
|
|
192
|
-
catch
|
|
193
|
-
this.logger.debug(
|
|
191
|
+
catch {
|
|
192
|
+
this.logger.debug("Failed to fetch latest SDK version - skipping version check (offline or API unavailable)");
|
|
194
193
|
}
|
|
195
194
|
if (currentVersion === "not-found") {
|
|
196
195
|
this.logger.warn(`⚠️ @mentra/sdk not found in your project dependencies. Please install it with: npm install @mentra/sdk`);
|
|
197
196
|
}
|
|
198
197
|
else if (latest && latest !== currentVersion) {
|
|
199
|
-
this.logger.warn((0,
|
|
198
|
+
this.logger.warn((0, updates_1.newSDKUpdate)(latest));
|
|
200
199
|
}
|
|
201
200
|
}
|
|
202
201
|
catch (err) {
|
|
@@ -254,11 +253,11 @@ class AppServer {
|
|
|
254
253
|
try {
|
|
255
254
|
const webhookRequest = req.body;
|
|
256
255
|
// Handle session request
|
|
257
|
-
if (
|
|
256
|
+
if (webhookRequest.type === types_1.WebhookRequestType.SESSION_REQUEST) {
|
|
258
257
|
await this.handleSessionRequest(webhookRequest, res);
|
|
259
258
|
}
|
|
260
259
|
// Handle stop request
|
|
261
|
-
else if (
|
|
260
|
+
else if (webhookRequest.type === types_1.WebhookRequestType.STOP_REQUEST) {
|
|
262
261
|
await this.handleStopRequest(webhookRequest, res);
|
|
263
262
|
}
|
|
264
263
|
// Unknown webhook type
|
|
@@ -356,7 +355,8 @@ class AppServer {
|
|
|
356
355
|
else if (info.permanent === true) {
|
|
357
356
|
this.logger.info(`🛑 Permanent disconnection detected for session ${sessionId}, calling onStop`);
|
|
358
357
|
// Keep track of the original session before removal
|
|
359
|
-
const session = this.activeSessions.get(sessionId);
|
|
358
|
+
// const session = this.activeSessions.get(sessionId);
|
|
359
|
+
const _session = this.activeSessions.get(sessionId);
|
|
360
360
|
// Call onStop with a reconnection failure reason
|
|
361
361
|
this.onStop(sessionId, userId, `Connection permanently lost: ${info.reason}`).catch((error) => {
|
|
362
362
|
this.logger.error(error, `❌ Error in onStop handler for permanent disconnection:`);
|
|
@@ -439,7 +439,7 @@ class AppServer {
|
|
|
439
439
|
// Find all active sessions for this user
|
|
440
440
|
const userSessions = [];
|
|
441
441
|
// Look through all active sessions
|
|
442
|
-
this.activeSessions.forEach((session,
|
|
442
|
+
this.activeSessions.forEach((session, _sessionId) => {
|
|
443
443
|
// Check if the session has this userId (not directly accessible)
|
|
444
444
|
// We're relying on the webhook handler to have already verified this
|
|
445
445
|
if (session.userId === userIdForSettings) {
|
|
@@ -533,18 +533,12 @@ class AppServer {
|
|
|
533
533
|
});
|
|
534
534
|
this.app.post("/photo-upload", upload.single("photo"), async (req, res) => {
|
|
535
535
|
try {
|
|
536
|
-
const { requestId, type } = req.body;
|
|
536
|
+
const { requestId, type, success, errorCode, errorMessage } = req.body;
|
|
537
537
|
const photoFile = req.file;
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
this.logger.error({ requestId }, "No photo file in upload");
|
|
541
|
-
return res.status(400).json({
|
|
542
|
-
success: false,
|
|
543
|
-
error: "No photo file provided",
|
|
544
|
-
});
|
|
545
|
-
}
|
|
538
|
+
console.log("Received photo response: ", req.body);
|
|
539
|
+
this.logger.info({ requestId, type, success, errorCode }, `📸 Received photo response: ${requestId} (type: ${type})`);
|
|
546
540
|
if (!requestId) {
|
|
547
|
-
this.logger.error("No requestId in photo
|
|
541
|
+
this.logger.error("No requestId in photo response");
|
|
548
542
|
return res.status(400).json({
|
|
549
543
|
success: false,
|
|
550
544
|
error: "No requestId provided",
|
|
@@ -559,6 +553,34 @@ class AppServer {
|
|
|
559
553
|
error: "No active session found for this photo request",
|
|
560
554
|
});
|
|
561
555
|
}
|
|
556
|
+
// Handle error response (no photo file, but has error info)
|
|
557
|
+
if (type === "photo_error" || success === false) {
|
|
558
|
+
// Create error response object
|
|
559
|
+
const errorResponse = {
|
|
560
|
+
requestId,
|
|
561
|
+
success: false,
|
|
562
|
+
error: {
|
|
563
|
+
code: errorCode || "UNKNOWN_ERROR",
|
|
564
|
+
message: errorMessage || "Unknown error occurred",
|
|
565
|
+
},
|
|
566
|
+
};
|
|
567
|
+
// Deliver error to the session (logging happens in camera module)
|
|
568
|
+
session.camera.handlePhotoError(errorResponse);
|
|
569
|
+
// Respond to ASG client
|
|
570
|
+
return res.json({
|
|
571
|
+
success: true,
|
|
572
|
+
requestId,
|
|
573
|
+
message: "Photo error received successfully",
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
// Handle successful photo upload
|
|
577
|
+
if (!photoFile) {
|
|
578
|
+
this.logger.error({ requestId }, "No photo file in successful upload");
|
|
579
|
+
return res.status(400).json({
|
|
580
|
+
success: false,
|
|
581
|
+
error: "No photo file provided for successful upload",
|
|
582
|
+
});
|
|
583
|
+
}
|
|
562
584
|
// Create photo data object
|
|
563
585
|
const photoData = {
|
|
564
586
|
buffer: photoFile.buffer,
|
|
@@ -578,10 +600,10 @@ class AppServer {
|
|
|
578
600
|
});
|
|
579
601
|
}
|
|
580
602
|
catch (error) {
|
|
581
|
-
this.logger.error(error, "❌ Error handling photo
|
|
603
|
+
this.logger.error(error, "❌ Error handling photo response");
|
|
582
604
|
res.status(500).json({
|
|
583
605
|
success: false,
|
|
584
|
-
error: "Internal server error processing photo
|
|
606
|
+
error: "Internal server error processing photo response",
|
|
585
607
|
});
|
|
586
608
|
}
|
|
587
609
|
});
|
|
@@ -602,7 +624,7 @@ class AppServer {
|
|
|
602
624
|
* Find session that has a pending photo request for the given requestId
|
|
603
625
|
*/
|
|
604
626
|
findSessionByPhotoRequestId(requestId) {
|
|
605
|
-
for (const [
|
|
627
|
+
for (const [_sessionId, session] of this.activeSessions) {
|
|
606
628
|
if (session.camera.hasPhotoPendingRequest(requestId)) {
|
|
607
629
|
return session;
|
|
608
630
|
}
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* Provides dashboard functionality for Apps, allowing them to write content
|
|
5
5
|
* to the dashboard and respond to dashboard mode changes.
|
|
6
6
|
*/
|
|
7
|
-
import { DashboardAPI, DashboardContentAPI, DashboardMode, DashboardSystemAPI } from
|
|
8
|
-
import { EventManager } from
|
|
9
|
-
import type { AppSession } from
|
|
10
|
-
import { AppToCloudMessage } from
|
|
7
|
+
import { DashboardAPI, DashboardContentAPI, DashboardMode, DashboardSystemAPI } from "../../types/dashboard";
|
|
8
|
+
import { EventManager } from "./events";
|
|
9
|
+
import type { AppSession } from "./index";
|
|
10
|
+
import { AppToCloudMessage } from "../../types";
|
|
11
11
|
/**
|
|
12
12
|
* Implementation of DashboardSystemAPI interface for system dashboard App
|
|
13
13
|
*/
|
|
@@ -36,9 +36,9 @@ export declare class DashboardContentManager implements DashboardContentAPI {
|
|
|
36
36
|
write(content: string, targets?: DashboardMode[]): void;
|
|
37
37
|
writeToMain(content: string): void;
|
|
38
38
|
writeToExpanded(content: string): void;
|
|
39
|
-
getCurrentMode(): Promise<DashboardMode |
|
|
40
|
-
onModeChange(callback: (mode: DashboardMode |
|
|
41
|
-
setCurrentMode(mode: DashboardMode |
|
|
39
|
+
getCurrentMode(): Promise<DashboardMode | "none">;
|
|
40
|
+
onModeChange(callback: (mode: DashboardMode | "none") => void): () => void;
|
|
41
|
+
setCurrentMode(mode: DashboardMode | "none"): void;
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
44
|
* Dashboard Manager - Main class that manages dashboard functionality
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/app/session/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAInB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/app/session/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAInB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQhD;;GAEG;AACH,qBAAa,sBAAuB,YAAW,kBAAkB;IAE7D,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,IAAI;gBAFJ,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI;IAGtC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrC,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAWtC,OAAO,CAAC,mBAAmB;CAc5B;AAED;;GAEG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IAK/D,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM;IAPhB,OAAO,CAAC,WAAW,CAAkC;gBAI3C,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,EAC5B,MAAM,EAAE,YAAY;IAG9B,KAAK,CACH,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,aAAa,EAAyB,GAC9C,IAAI;IAYP,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAgBhC,cAAc,IAAI,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC;IAQvD,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;IAe1E,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI;CASnD;AAED;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACnD,SAAgB,OAAO,EAAE,mBAAmB,CAAC;IAC7C,SAAgB,MAAM,CAAC,EAAE,kBAAkB,CAAC;gBAEhC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI;CA0B5E"}
|
|
@@ -16,7 +16,7 @@ const message_types_1 = require("../../types/message-types");
|
|
|
16
16
|
const dotenv_1 = __importDefault(require("dotenv"));
|
|
17
17
|
// Load environment variables from .env file
|
|
18
18
|
dotenv_1.default.config();
|
|
19
|
-
const SYSTEM_DASHBOARD_PACKAGE_NAME = process.env.SYSTEM_DASHBOARD_PACKAGE_NAME ||
|
|
19
|
+
const SYSTEM_DASHBOARD_PACKAGE_NAME = process.env.SYSTEM_DASHBOARD_PACKAGE_NAME || "system.augmentos.dashboard";
|
|
20
20
|
/**
|
|
21
21
|
* Implementation of DashboardSystemAPI interface for system dashboard App
|
|
22
22
|
*/
|
|
@@ -27,16 +27,16 @@ class DashboardSystemManager {
|
|
|
27
27
|
this.send = send;
|
|
28
28
|
}
|
|
29
29
|
setTopLeft(content) {
|
|
30
|
-
this.updateSystemSection(
|
|
30
|
+
this.updateSystemSection("topLeft", content);
|
|
31
31
|
}
|
|
32
32
|
setTopRight(content) {
|
|
33
|
-
this.updateSystemSection(
|
|
33
|
+
this.updateSystemSection("topRight", content);
|
|
34
34
|
}
|
|
35
35
|
setBottomLeft(content) {
|
|
36
|
-
this.updateSystemSection(
|
|
36
|
+
this.updateSystemSection("bottomLeft", content);
|
|
37
37
|
}
|
|
38
38
|
setBottomRight(content) {
|
|
39
|
-
this.updateSystemSection(
|
|
39
|
+
this.updateSystemSection("bottomRight", content);
|
|
40
40
|
}
|
|
41
41
|
setViewMode(mode) {
|
|
42
42
|
const message = {
|
|
@@ -44,7 +44,7 @@ class DashboardSystemManager {
|
|
|
44
44
|
packageName: this.packageName,
|
|
45
45
|
sessionId: `${this.session.getSessionId()}-${this.packageName}`,
|
|
46
46
|
mode,
|
|
47
|
-
timestamp: new Date()
|
|
47
|
+
timestamp: new Date(),
|
|
48
48
|
};
|
|
49
49
|
this.send(message);
|
|
50
50
|
}
|
|
@@ -55,7 +55,7 @@ class DashboardSystemManager {
|
|
|
55
55
|
sessionId: `${this.session.getSessionId()}-${this.packageName}`,
|
|
56
56
|
section,
|
|
57
57
|
content,
|
|
58
|
-
timestamp: new Date()
|
|
58
|
+
timestamp: new Date(),
|
|
59
59
|
};
|
|
60
60
|
this.send(message);
|
|
61
61
|
}
|
|
@@ -71,7 +71,7 @@ class DashboardContentManager {
|
|
|
71
71
|
this.packageName = packageName;
|
|
72
72
|
this.send = send;
|
|
73
73
|
this.events = events;
|
|
74
|
-
this.currentMode =
|
|
74
|
+
this.currentMode = "none";
|
|
75
75
|
}
|
|
76
76
|
write(content, targets = [dashboard_1.DashboardMode.MAIN]) {
|
|
77
77
|
const message = {
|
|
@@ -80,7 +80,7 @@ class DashboardContentManager {
|
|
|
80
80
|
sessionId: `${this.session.getSessionId()}-${this.packageName}`,
|
|
81
81
|
content,
|
|
82
82
|
modes: targets,
|
|
83
|
-
timestamp: new Date()
|
|
83
|
+
timestamp: new Date(),
|
|
84
84
|
};
|
|
85
85
|
this.send(message);
|
|
86
86
|
}
|
|
@@ -94,7 +94,7 @@ class DashboardContentManager {
|
|
|
94
94
|
sessionId: `${this.session.getSessionId()}-${this.packageName}`,
|
|
95
95
|
content,
|
|
96
96
|
modes: [dashboard_1.DashboardMode.EXPANDED],
|
|
97
|
-
timestamp: new Date()
|
|
97
|
+
timestamp: new Date(),
|
|
98
98
|
};
|
|
99
99
|
this.send(message);
|
|
100
100
|
}
|
|
@@ -122,7 +122,7 @@ class DashboardContentManager {
|
|
|
122
122
|
// Internal methods to update state
|
|
123
123
|
setCurrentMode(mode) {
|
|
124
124
|
this.currentMode = mode;
|
|
125
|
-
this.events.emit(
|
|
125
|
+
this.events.emit("dashboard_mode_change", { mode });
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
exports.DashboardContentManager = DashboardContentManager;
|
|
@@ -138,7 +138,7 @@ class DashboardManager {
|
|
|
138
138
|
this.content = new DashboardContentManager(session, packageName, send, events);
|
|
139
139
|
// Add system API if this is the system dashboard App
|
|
140
140
|
if (packageName === SYSTEM_DASHBOARD_PACKAGE_NAME) {
|
|
141
|
-
session.logger.info({ service: "SDK:DashboardManager" },
|
|
141
|
+
session.logger.info({ service: "SDK:DashboardManager" }, "Initializing system dashboard manager");
|
|
142
142
|
this.system = new DashboardSystemManager(session, packageName, send);
|
|
143
143
|
}
|
|
144
144
|
else {
|
|
@@ -76,11 +76,13 @@ export type EventData<T extends EventType> = T extends keyof StreamDataTypes ? S
|
|
|
76
76
|
export declare class EventManager {
|
|
77
77
|
private subscribe;
|
|
78
78
|
private unsubscribe;
|
|
79
|
+
private packageName;
|
|
80
|
+
private baseUrl;
|
|
79
81
|
private emitter;
|
|
80
82
|
private handlers;
|
|
81
83
|
private lastLanguageTranscriptioCleanupHandler;
|
|
82
84
|
private lastLanguageTranslationCleanupHandler;
|
|
83
|
-
constructor(subscribe: (type: ExtendedStreamType) => void, unsubscribe: (type: ExtendedStreamType) => void);
|
|
85
|
+
constructor(subscribe: (type: ExtendedStreamType) => void, unsubscribe: (type: ExtendedStreamType) => void, packageName: string, baseUrl: string);
|
|
84
86
|
onTranscription(handler: Handler<TranscriptionData>): () => void;
|
|
85
87
|
/**
|
|
86
88
|
* 🎤 Listen for transcription events in a specific language
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/app/session/events.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,cAAc,EAEd,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,GAAG,EACH,UAAU,EACV,aAAa,EACb,cAAc,EAKd,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,mBAAmB,EACnB,0BAA0B,EAC1B,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/app/session/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,10 +9,13 @@ exports.EventManager = void 0;
|
|
|
9
9
|
*/
|
|
10
10
|
const events_1 = __importDefault(require("events"));
|
|
11
11
|
const types_1 = require("../../types");
|
|
12
|
+
const permissions_utils_1 = require("../../utils/permissions-utils");
|
|
12
13
|
class EventManager {
|
|
13
|
-
constructor(subscribe, unsubscribe) {
|
|
14
|
+
constructor(subscribe, unsubscribe, packageName, baseUrl) {
|
|
14
15
|
this.subscribe = subscribe;
|
|
15
16
|
this.unsubscribe = unsubscribe;
|
|
17
|
+
this.packageName = packageName;
|
|
18
|
+
this.baseUrl = baseUrl;
|
|
16
19
|
this.emitter = new events_1.default();
|
|
17
20
|
this.handlers = new Map();
|
|
18
21
|
this.lastLanguageTranscriptioCleanupHandler = () => { };
|
|
@@ -20,7 +23,8 @@ class EventManager {
|
|
|
20
23
|
}
|
|
21
24
|
// Convenience handlers for common event types
|
|
22
25
|
onTranscription(handler) {
|
|
23
|
-
//
|
|
26
|
+
// Only make the API call if we have a base URL (server-side environment)
|
|
27
|
+
(0, permissions_utils_1.microPhoneWarnLog)(this.baseUrl, this.packageName, this.onTranscription.name);
|
|
24
28
|
return this.addHandler((0, types_1.createTranscriptionStream)("en-US"), handler);
|
|
25
29
|
}
|
|
26
30
|
/**
|
|
@@ -51,6 +55,7 @@ class EventManager {
|
|
|
51
55
|
* @throws Error if language codes are invalid
|
|
52
56
|
*/
|
|
53
57
|
ontranslationForLanguage(sourceLanguage, targetLanguage, handler) {
|
|
58
|
+
(0, permissions_utils_1.microPhoneWarnLog)(this.baseUrl || "", this.packageName, this.ontranslationForLanguage.name);
|
|
54
59
|
if (!(0, types_1.isValidLanguageCode)(sourceLanguage)) {
|
|
55
60
|
throw new Error(`Invalid source language code: ${sourceLanguage}`);
|
|
56
61
|
}
|
|
@@ -81,6 +86,7 @@ class EventManager {
|
|
|
81
86
|
return this.addHandler(types_1.StreamType.PHONE_BATTERY_UPDATE, handler);
|
|
82
87
|
}
|
|
83
88
|
onVoiceActivity(handler) {
|
|
89
|
+
(0, permissions_utils_1.microPhoneWarnLog)(this.baseUrl || "", this.packageName, this.onVoiceActivity.name);
|
|
84
90
|
return this.addHandler(types_1.StreamType.VAD, handler);
|
|
85
91
|
}
|
|
86
92
|
onLocation(handler) {
|
|
@@ -196,6 +202,10 @@ class EventManager {
|
|
|
196
202
|
* Use this for stream types without specific handler methods
|
|
197
203
|
*/
|
|
198
204
|
on(type, handler) {
|
|
205
|
+
// Check permissions for specific stream types
|
|
206
|
+
if (type === types_1.StreamType.CALENDAR_EVENT) {
|
|
207
|
+
(0, permissions_utils_1.calendarWarnLog)(this.baseUrl, this.packageName, "on");
|
|
208
|
+
}
|
|
199
209
|
return this.addHandler(type, handler);
|
|
200
210
|
}
|
|
201
211
|
/**
|
|
@@ -348,7 +348,7 @@ export declare class AppSession {
|
|
|
348
348
|
* @param roomId - Optional room ID for room-based messaging
|
|
349
349
|
* @returns Promise that resolves when message is sent
|
|
350
350
|
*/
|
|
351
|
-
broadcastToAppUsers(payload: any,
|
|
351
|
+
broadcastToAppUsers(payload: any, _roomId?: string): Promise<void>;
|
|
352
352
|
/**
|
|
353
353
|
* 📤 Send direct message to specific user
|
|
354
354
|
* @param targetUserId - User ID to send message to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/session/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/session/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAYL,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,0BAA0B,EAC1B,iBAAiB,EACjB,eAAe,EAcf,WAAW,EACX,UAAU,EACV,SAAS,EAGT,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,YAAY,EAEb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAYtC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0EAA0E;IAC1E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8DAA8D;IAC9D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;CACtB;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,UAAU;IAqET,OAAO,CAAC,MAAM;IApE1B,6CAA6C;IAC7C,OAAO,CAAC,EAAE,CAA0B;IACpC,iCAAiC;IACjC,OAAO,CAAC,SAAS,CAAuB;IACxC,2CAA2C;IAC3C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,iCAAiC;IACjC,OAAO,CAAC,aAAa,CAAiC;IACtD,4CAA4C;IAC5C,OAAO,CAAC,WAAW,CAAyC;IAC5D,6CAA6C;IAC7C,OAAO,CAAC,SAAS,CAAyB;IAC1C,kEAAkE;IAClE,OAAO,CAAC,YAAY,CAAmB;IACvC,oDAAoD;IACpD,OAAO,CAAC,SAAS,CAA0B;IAC3C,2DAA2D;IAC3D,OAAO,CAAC,yCAAyC,CAAS;IAC1D,mEAAmE;IACnE,OAAO,CAAC,2BAA2B,CAAC,CAEV;IAC1B,qEAAqE;IACrE,OAAO,CAAC,0BAA0B,CAAgB;IAClD,4DAA4D;IAC5D,OAAO,CAAC,4BAA4B,CAMhC;IACJ,4DAA4D;IAC5D,OAAO,CAAC,qBAAqB,CAMzB;IAEJ,oCAAoC;IACpC,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,qCAAqC;IACrC,SAAgB,OAAO,EAAE,aAAa,CAAC;IACvC,uCAAuC;IACvC,SAAgB,QAAQ,EAAE,eAAe,CAAC;IAC1C,wCAAwC;IACxC,SAAgB,SAAS,EAAE,YAAY,CAAC;IACxC,uCAAuC;IACvC,SAAgB,QAAQ,EAAE,eAAe,CAAC;IAC1C,mDAAmD;IACnD,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,4CAA4C;IAC5C,SAAgB,KAAK,EAAE,YAAY,CAAC;IACpC,4CAA4C;IAC5C,SAAgB,aAAa,EAAE,aAAa,CAAC;IAE7C,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,wDAAwD;IACjD,YAAY,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEhD,8CAA8C;IAC9C,OAAO,CAAC,SAAS,CAAsB;gBAEnB,MAAM,EAAE,gBAAgB;IA+I5C;;;OAGG;IACH,YAAY,IAAI,MAAM;IAItB;;;OAGG;IACH,cAAc,IAAI,MAAM;IAQxB;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI;IAIvE;;;;;;;OAOG;IACH,0BAA0B,CACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,EAC1C,6BAA6B,UAAQ,GACpC,MAAM,IAAI;IAQb;;;;;;;;OAQG;IACH,wBAAwB,CACtB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,GACvC,MAAM,IAAI;IAQb;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI;IAIjE;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI;IAI/D;;;;;OAKG;IACH,oBAAoB,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI;IAS5E;;;;;OAKG;IACH,4BAA4B,CAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,GAClD,MAAM,IAAI;IAIb;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI;IAKrE;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAS7D;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IA6BzC;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IAqB3C;;;;OAIG;IACH,EAAE,CAAC,CAAC,SAAS,kBAAkB,EAC7B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,GACpC,MAAM,IAAI;IAQb;;;;OAIG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqV/C;;OAEG;IACH,UAAU,IAAI,IAAI;IAqBlB;;;;OAIG;IACH,WAAW,IAAI,WAAW;IAI1B;;;;;OAKG;IACH,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIzC;;;;OAIG;IACH,uBAAuB,CAAC,OAAO,EAAE;QAC/B,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,kBAAkB,EAAE,CAAC;KAC1D,GAAG,IAAI;IAWR;;;OAGG;IACH,OAAO,CAAC,+BAA+B;IA8BvC;;;;OAIG;IACH,wBAAwB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAexD;;;;;OAKG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;IAiB/C;;;OAGG;IACH,SAAS,IAAI,SAAS,GAAG,IAAI;IAI7B;;;OAGG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAI3B,iBAAiB,IAAI,MAAM,GAAG,SAAS;IAO9C,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B;;;;OAIG;IACH,kBAAkB,IAAI,WAAW;IAkBjC;;;;OAIG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAerD;;OAEG;IACH,OAAO,CAAC,aAAa;IA6VrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAoBvB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAkC3B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAyDzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;YACW,kBAAkB;IAiFhC;;;OAGG;IACH,OAAO,CAAC,IAAI;IA2DZ;;;OAGG;IACU,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgBtD;;;;OAIG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,eAAe,UAAQ,GACtB,OAAO,CAAC,GAAG,CAAC;IAkCf;;;;OAIG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUpD;;;OAGG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUnD;;;;;OAKG;IACG,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBxE;;;;;OAKG;IACG,iBAAiB,CACrB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,GAAG,GACX,OAAO,CAAC,OAAO,CAAC;IAuCnB;;;;;OAKG;IACG,WAAW,CACf,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,GAAG,CAAC;KAChB,GACA,OAAO,CAAC,IAAI,CAAC;IAmBhB;;;;OAIG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBjD;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAKzD;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAKzD;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAKvD;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAK1D;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAG1B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEhD;;;;;;;;;;;;GAYG;AACH,qBAAa,UAAW,SAAQ,UAAU;gBAC5B,MAAM,EAAE,gBAAgB;CASrC;AAGD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -25,6 +25,7 @@ const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
|
25
25
|
// Import the cloud-to-app specific type guards
|
|
26
26
|
const cloud_to_app_1 = require("../../types/messages/cloud-to-app");
|
|
27
27
|
const simple_storage_1 = require("./modules/simple-storage");
|
|
28
|
+
const permissions_utils_1 = require("../../utils/permissions-utils");
|
|
28
29
|
// List of event types that should never be subscribed to as streams
|
|
29
30
|
const APP_TO_APP_EVENT_TYPES = [
|
|
30
31
|
"app_message_received",
|
|
@@ -135,7 +136,7 @@ class AppSession {
|
|
|
135
136
|
this.logger.error(error, `⚠️ [${this.config.packageName}] Invalid WebSocket URL format: ${this.config.mentraOSWebsocketUrl}`);
|
|
136
137
|
}
|
|
137
138
|
}
|
|
138
|
-
this.events = new events_1.EventManager(this.subscribe.bind(this), this.unsubscribe.bind(this));
|
|
139
|
+
this.events = new events_1.EventManager(this.subscribe.bind(this), this.unsubscribe.bind(this), this.config.packageName, this.getHttpsServerUrl() || "");
|
|
139
140
|
this.layouts = new layouts_1.LayoutManager(config.packageName, this.send.bind(this));
|
|
140
141
|
// Initialize settings manager with all necessary parameters, including subscribeFn for MentraOS settings
|
|
141
142
|
this.settings = new settings_1.SettingsManager(this.settingsData, this.config.packageName, this.config.mentraOSWebsocketUrl, this.sessionId ?? undefined, async (streams) => {
|
|
@@ -242,6 +243,7 @@ class AppSession {
|
|
|
242
243
|
* @deprecated Use session.events.onPhoneNotifications() instead
|
|
243
244
|
*/
|
|
244
245
|
onPhoneNotifications(handler) {
|
|
246
|
+
(0, permissions_utils_1.readNotificationWarnLog)(this.getHttpsServerUrl() || "", this.getPackageName(), "onPhoneNotifications");
|
|
245
247
|
return this.events.onPhoneNotifications(handler);
|
|
246
248
|
}
|
|
247
249
|
/**
|
|
@@ -875,7 +877,7 @@ class AppSession {
|
|
|
875
877
|
}
|
|
876
878
|
else if ((0, types_1.isSettingsUpdate)(message)) {
|
|
877
879
|
// Store previous settings to check for changes
|
|
878
|
-
const
|
|
880
|
+
const _prevSettings = [...this.settingsData];
|
|
879
881
|
// Update internal settings storage
|
|
880
882
|
this.settingsData = message.settings || [];
|
|
881
883
|
// Update the settings manager with the new settings
|
|
@@ -1023,7 +1025,7 @@ class AppSession {
|
|
|
1023
1025
|
else if ((0, cloud_to_app_1.isPhotoResponse)(message)) {
|
|
1024
1026
|
// Legacy photo response handling - now photos come directly via webhook
|
|
1025
1027
|
// This branch can be removed in the future as all photos now go through /photo-upload
|
|
1026
|
-
this.logger.warn("Received legacy photo response - photos should now come via /photo-upload webhook");
|
|
1028
|
+
this.logger.warn({ message }, "Received legacy photo response - photos should now come via /photo-upload webhook");
|
|
1027
1029
|
}
|
|
1028
1030
|
// Handle unrecognized message types gracefully
|
|
1029
1031
|
else {
|
|
@@ -1113,7 +1115,7 @@ class AppSession {
|
|
|
1113
1115
|
}
|
|
1114
1116
|
// For specific stream types, perform targeted sanitization
|
|
1115
1117
|
switch (streamType) {
|
|
1116
|
-
case types_1.StreamType.TRANSCRIPTION:
|
|
1118
|
+
case types_1.StreamType.TRANSCRIPTION: {
|
|
1117
1119
|
// Ensure text field exists and is a string
|
|
1118
1120
|
if (typeof data.text !== "string") {
|
|
1119
1121
|
return {
|
|
@@ -1124,7 +1126,8 @@ class AppSession {
|
|
|
1124
1126
|
};
|
|
1125
1127
|
}
|
|
1126
1128
|
break;
|
|
1127
|
-
|
|
1129
|
+
}
|
|
1130
|
+
case types_1.StreamType.HEAD_POSITION: {
|
|
1128
1131
|
// Ensure position data has required numeric fields
|
|
1129
1132
|
// Handle HeadPosition - Note the property position instead of x,y,z
|
|
1130
1133
|
const pos = data;
|
|
@@ -1132,7 +1135,8 @@ class AppSession {
|
|
|
1132
1135
|
return { position: "up", timestamp: new Date() };
|
|
1133
1136
|
}
|
|
1134
1137
|
break;
|
|
1135
|
-
|
|
1138
|
+
}
|
|
1139
|
+
case types_1.StreamType.BUTTON_PRESS: {
|
|
1136
1140
|
// Ensure button type is valid
|
|
1137
1141
|
const btn = data;
|
|
1138
1142
|
if (!btn.buttonId || !btn.pressType) {
|
|
@@ -1143,6 +1147,7 @@ class AppSession {
|
|
|
1143
1147
|
};
|
|
1144
1148
|
}
|
|
1145
1149
|
break;
|
|
1150
|
+
}
|
|
1146
1151
|
}
|
|
1147
1152
|
return data;
|
|
1148
1153
|
}
|
|
@@ -1388,7 +1393,7 @@ class AppSession {
|
|
|
1388
1393
|
* @param roomId - Optional room ID for room-based messaging
|
|
1389
1394
|
* @returns Promise that resolves when message is sent
|
|
1390
1395
|
*/
|
|
1391
|
-
async broadcastToAppUsers(payload,
|
|
1396
|
+
async broadcastToAppUsers(payload, _roomId) {
|
|
1392
1397
|
try {
|
|
1393
1398
|
const messageId = this.generateMessageId();
|
|
1394
1399
|
const message = {
|
|
@@ -94,7 +94,7 @@ class AudioManager {
|
|
|
94
94
|
// Set timeout to avoid hanging promises
|
|
95
95
|
const timeoutMs = 60000; // 60 seconds
|
|
96
96
|
if (this.session && this.session.resources) {
|
|
97
|
-
// Use session's resource tracker for automatic
|
|
97
|
+
// Use session's resource tracker for automatic cleeanup
|
|
98
98
|
this.session.resources.setTimeout(() => {
|
|
99
99
|
if (this.pendingAudioRequests.has(requestId)) {
|
|
100
100
|
this.pendingAudioRequests
|
|
@@ -117,6 +117,23 @@ export declare class CameraModule {
|
|
|
117
117
|
* @internal This method is used internally by AppSession
|
|
118
118
|
*/
|
|
119
119
|
handlePhotoReceived(photoData: PhotoData): void;
|
|
120
|
+
/**
|
|
121
|
+
* ❌ Handle photo error from /photo-upload endpoint
|
|
122
|
+
*
|
|
123
|
+
* This method is called internally when a photo error response is received.
|
|
124
|
+
* It rejects the corresponding pending promise with the error information.
|
|
125
|
+
*
|
|
126
|
+
* @param errorResponse - The error response received
|
|
127
|
+
* @internal This method is used internally by AppSession
|
|
128
|
+
*/
|
|
129
|
+
handlePhotoError(errorResponse: {
|
|
130
|
+
requestId: string;
|
|
131
|
+
success: false;
|
|
132
|
+
error: {
|
|
133
|
+
code: string;
|
|
134
|
+
message: string;
|
|
135
|
+
};
|
|
136
|
+
}): void;
|
|
120
137
|
/**
|
|
121
138
|
* 🔍 Check if there's a pending photo request for the given request ID
|
|
122
139
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../../src/app/session/modules/camera.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,SAAS,EAIT,gBAAgB,EAEhB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../../src/app/session/modules/camera.ts"],"names":[],"mappings":"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"}
|