@mentra/sdk 1.1.20 → 2.0.0
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/{tpa → app}/index.d.ts.map +1 -1
- package/dist/{tpa → app}/index.js +2 -2
- package/dist/{tpa → app}/server/index.d.ts +21 -21
- package/dist/app/server/index.d.ts.map +1 -0
- package/dist/{tpa → app}/server/index.js +21 -21
- package/dist/{tpa → app}/session/api-client.d.ts +1 -1
- package/dist/{tpa → app}/session/api-client.d.ts.map +1 -1
- package/dist/{tpa → app}/session/api-client.js +2 -2
- package/dist/{tpa → app}/session/dashboard.d.ts +9 -9
- package/dist/{tpa → app}/session/dashboard.d.ts.map +1 -1
- package/dist/{tpa → app}/session/dashboard.js +10 -10
- package/dist/{tpa → app}/session/events.d.ts +1 -1
- package/dist/{tpa → app}/session/events.d.ts.map +1 -1
- package/dist/{tpa → app}/session/events.js +1 -1
- package/dist/{tpa → app}/session/index.d.ts +38 -38
- package/dist/{tpa → app}/session/index.d.ts.map +1 -1
- package/dist/{tpa → app}/session/index.js +118 -118
- package/dist/{tpa → app}/session/layouts.d.ts +2 -2
- package/dist/{tpa → app}/session/layouts.d.ts.map +1 -1
- package/dist/{tpa → app}/session/layouts.js +4 -4
- package/dist/{tpa → app}/session/modules/streaming.d.ts +5 -5
- package/dist/{tpa → app}/session/modules/streaming.d.ts.map +1 -1
- package/dist/{tpa → app}/session/modules/streaming.js +7 -7
- package/dist/{tpa → app}/session/settings.d.ts +3 -3
- package/dist/{tpa → app}/session/settings.d.ts.map +1 -1
- package/dist/{tpa → app}/session/settings.js +5 -7
- package/dist/app/token/index.d.ts +7 -0
- package/dist/app/token/index.d.ts.map +1 -0
- package/dist/{tpa → app}/token/index.js +2 -2
- package/dist/{tpa → app}/token/utils.d.ts +6 -6
- package/dist/{tpa → app}/token/utils.d.ts.map +1 -1
- package/dist/{tpa → app}/token/utils.js +6 -6
- package/dist/{tpa → app}/webview/index.d.ts +3 -3
- package/dist/{tpa → app}/webview/index.d.ts.map +1 -1
- package/dist/{tpa → app}/webview/index.js +4 -4
- package/dist/examples/rtmp-streaming-example.js +6 -6
- package/dist/index.d.ts +39 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +76 -16
- package/dist/types/capabilities.d.ts +1 -1
- package/dist/types/capabilities.js +1 -1
- package/dist/types/dashboard/index.d.ts +9 -9
- package/dist/types/enums.d.ts +2 -2
- package/dist/types/enums.js +8 -8
- package/dist/types/index.d.ts +6 -6
- package/dist/types/index.js +24 -24
- package/dist/types/layouts.d.ts +2 -2
- package/dist/types/message-types.d.ts +18 -18
- package/dist/types/message-types.js +47 -47
- package/dist/types/messages/app-to-cloud.d.ts +146 -0
- package/dist/types/messages/{tpa-to-cloud.d.ts.map → app-to-cloud.d.ts.map} +1 -1
- package/dist/types/messages/{tpa-to-cloud.js → app-to-cloud.js} +18 -18
- package/dist/types/messages/{cloud-to-tpa.d.ts → cloud-to-app.d.ts} +52 -52
- package/dist/types/messages/{cloud-to-tpa.d.ts.map → cloud-to-app.d.ts.map} +1 -1
- package/dist/types/messages/{cloud-to-tpa.js → cloud-to-app.js} +22 -22
- package/dist/types/models.d.ts +7 -7
- package/dist/types/models.js +3 -3
- package/dist/types/streams.d.ts +2 -2
- package/dist/types/streams.js +2 -2
- package/dist/types/token.d.ts +7 -7
- package/dist/types/token.js +2 -2
- package/dist/types/webhooks.d.ts +8 -8
- package/dist/types/webhooks.js +3 -3
- package/package.json +1 -1
- package/dist/tpa/server/index.d.ts.map +0 -1
- package/dist/tpa/token/index.d.ts +0 -7
- package/dist/tpa/token/index.d.ts.map +0 -1
- package/dist/types/messages/tpa-to-cloud.d.ts +0 -146
- /package/dist/{tpa → app}/index.d.ts +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
// src/index.ts
|
3
|
-
// export {
|
4
|
-
// export type {
|
3
|
+
// export { AppSession as AppClient } from './session';
|
4
|
+
// export type { AppSessionConfig as AppClientConfig } from './session';
|
5
5
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
6
6
|
if (k2 === undefined) k2 = k;
|
7
7
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
@@ -1,19 +1,19 @@
|
|
1
1
|
/**
|
2
|
-
* 🚀
|
2
|
+
* 🚀 App Server Module
|
3
3
|
*
|
4
|
-
* Creates and manages a server for Third Party Apps (
|
4
|
+
* Creates and manages a server for Third Party Apps (Apps) in the AugmentOS ecosystem.
|
5
5
|
* Handles webhook endpoints, session management, and cleanup.
|
6
6
|
*/
|
7
7
|
import { type Express } from 'express';
|
8
|
-
import {
|
8
|
+
import { AppSession } from '../session/index';
|
9
9
|
import { ToolCall } from '../../types';
|
10
10
|
import { Logger } from 'pino';
|
11
11
|
/**
|
12
|
-
* 🔧 Configuration options for
|
12
|
+
* 🔧 Configuration options for App Server
|
13
13
|
*
|
14
14
|
* @example
|
15
15
|
* ```typescript
|
16
|
-
* const config:
|
16
|
+
* const config: AppServerConfig = {
|
17
17
|
* packageName: 'org.example.myapp',
|
18
18
|
* apiKey: 'your_api_key',
|
19
19
|
* port: 7010,
|
@@ -21,8 +21,8 @@ import { Logger } from 'pino';
|
|
21
21
|
* };
|
22
22
|
* ```
|
23
23
|
*/
|
24
|
-
export interface
|
25
|
-
/** 📦 Unique identifier for your
|
24
|
+
export interface AppServerConfig {
|
25
|
+
/** 📦 Unique identifier for your App (e.g., 'org.company.appname') must match what you specified at https://console.mentra.glass */
|
26
26
|
packageName: string;
|
27
27
|
/** 🔑 API key for authentication with AugmentOS Cloud */
|
28
28
|
apiKey: string;
|
@@ -42,13 +42,13 @@ export interface TpaServerConfig {
|
|
42
42
|
* This must be a strong, unique secret
|
43
43
|
*/
|
44
44
|
cookieSecret?: string;
|
45
|
-
/**
|
46
|
-
|
45
|
+
/** App instructions string shown to the user */
|
46
|
+
appInstructions?: string;
|
47
47
|
}
|
48
48
|
/**
|
49
|
-
* 🎯
|
49
|
+
* 🎯 App Server Implementation
|
50
50
|
*
|
51
|
-
* Base class for creating
|
51
|
+
* Base class for creating App servers. Handles:
|
52
52
|
* - 🔄 Session lifecycle management
|
53
53
|
* - 📡 Webhook endpoints for AugmentOS Cloud
|
54
54
|
* - 📂 Static file serving
|
@@ -57,8 +57,8 @@ export interface TpaServerConfig {
|
|
57
57
|
*
|
58
58
|
* @example
|
59
59
|
* ```typescript
|
60
|
-
* class MyAppServer extends
|
61
|
-
* protected async onSession(session:
|
60
|
+
* class MyAppServer extends AppServer {
|
61
|
+
* protected async onSession(session: AppSession, sessionId: string, userId: string) {
|
62
62
|
* // Handle new user sessions here
|
63
63
|
* session.events.onTranscription((data) => {
|
64
64
|
* session.layouts.showTextWall(data.text);
|
@@ -75,7 +75,7 @@ export interface TpaServerConfig {
|
|
75
75
|
* await server.start();
|
76
76
|
* ```
|
77
77
|
*/
|
78
|
-
export declare class
|
78
|
+
export declare class AppServer {
|
79
79
|
private config;
|
80
80
|
/** Express app instance */
|
81
81
|
private app;
|
@@ -83,21 +83,21 @@ export declare class TpaServer {
|
|
83
83
|
private activeSessions;
|
84
84
|
/** Array of cleanup handlers to run on shutdown */
|
85
85
|
private cleanupHandlers;
|
86
|
-
/**
|
87
|
-
private
|
86
|
+
/** App instructions string shown to the user */
|
87
|
+
private appInstructions;
|
88
88
|
readonly logger: Logger;
|
89
|
-
constructor(config:
|
89
|
+
constructor(config: AppServerConfig);
|
90
90
|
getExpressApp(): Express;
|
91
91
|
/**
|
92
92
|
* 👥 Session Handler
|
93
|
-
* Override this method to handle new
|
93
|
+
* Override this method to handle new App sessions.
|
94
94
|
* This is where you implement your app's core functionality.
|
95
95
|
*
|
96
|
-
* @param session -
|
96
|
+
* @param session - App session instance for the user
|
97
97
|
* @param sessionId - Unique identifier for this session
|
98
98
|
* @param userId - User's identifier
|
99
99
|
*/
|
100
|
-
protected onSession(session:
|
100
|
+
protected onSession(session: AppSession, sessionId: string, userId: string): Promise<void>;
|
101
101
|
/**
|
102
102
|
* 👥 Stop Handler
|
103
103
|
* Override this method to handle stop requests.
|
@@ -130,7 +130,7 @@ export declare class TpaServer {
|
|
130
130
|
*/
|
131
131
|
stop(): void;
|
132
132
|
/**
|
133
|
-
* 🔐 Generate a
|
133
|
+
* 🔐 Generate a App token for a user
|
134
134
|
* This should be called when handling a session webhook request.
|
135
135
|
*
|
136
136
|
* @param userId - User identifier
|
@@ -0,0 +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;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAQL,QAAQ,EACT,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAI9B;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,oIAAoI;IACpI,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE3B,iEAAiE;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,SAAS;IAYR,OAAO,CAAC,MAAM;IAX1B,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAU;IACrB,+CAA+C;IAC/C,OAAO,CAAC,cAAc,CAAiC;IACvD,mDAAmD;IACnD,OAAO,CAAC,eAAe,CAAyB;IAChD,gDAAgD;IAChD,OAAO,CAAC,eAAe,CAAuB;IAE9C,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEX,MAAM,EAAE,eAAe;IAuCpC,aAAa,IAAI,OAAO;IAI/B;;;;;;;;OAQG;cACa,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhG;;;;;;;;OAQG;cACa,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxF;;;;;;;OAOG;cACa,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAM3E;;;;;OAKG;IACI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY7B;;;OAGG;IACI,IAAI,IAAI,IAAI;IAMnB;;;;;;;;KAQC;IACD,SAAS,CAAC,aAAa,CACrB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM;IAYT;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAItD;;;OAGG;IACH,OAAO,CAAC,YAAY;IAoCpB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;YACW,oBAAoB;IA6DlC;;OAEG;YACW,iBAAiB;IAgB/B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAyD7B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAQtB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAKrB;;;OAGG;IACH,OAAO,CAAC,OAAO;CAWhB"}
|
@@ -3,23 +3,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.
|
6
|
+
exports.AppServer = void 0;
|
7
7
|
/**
|
8
|
-
* 🚀
|
8
|
+
* 🚀 App Server Module
|
9
9
|
*
|
10
|
-
* Creates and manages a server for Third Party Apps (
|
10
|
+
* Creates and manages a server for Third Party Apps (Apps) in the AugmentOS ecosystem.
|
11
11
|
* Handles webhook endpoints, session management, and cleanup.
|
12
12
|
*/
|
13
13
|
const express_1 = __importDefault(require("express"));
|
14
14
|
const path_1 = __importDefault(require("path"));
|
15
|
-
const
|
15
|
+
const index_1 = require("../session/index");
|
16
16
|
const webview_1 = require("../webview");
|
17
17
|
const types_1 = require("../../types");
|
18
18
|
const logger_1 = require("../../logging/logger");
|
19
19
|
/**
|
20
|
-
* 🎯
|
20
|
+
* 🎯 App Server Implementation
|
21
21
|
*
|
22
|
-
* Base class for creating
|
22
|
+
* Base class for creating App servers. Handles:
|
23
23
|
* - 🔄 Session lifecycle management
|
24
24
|
* - 📡 Webhook endpoints for AugmentOS Cloud
|
25
25
|
* - 📂 Static file serving
|
@@ -28,8 +28,8 @@ const logger_1 = require("../../logging/logger");
|
|
28
28
|
*
|
29
29
|
* @example
|
30
30
|
* ```typescript
|
31
|
-
* class MyAppServer extends
|
32
|
-
* protected async onSession(session:
|
31
|
+
* class MyAppServer extends AppServer {
|
32
|
+
* protected async onSession(session: AppSession, sessionId: string, userId: string) {
|
33
33
|
* // Handle new user sessions here
|
34
34
|
* session.events.onTranscription((data) => {
|
35
35
|
* session.layouts.showTextWall(data.text);
|
@@ -46,15 +46,15 @@ const logger_1 = require("../../logging/logger");
|
|
46
46
|
* await server.start();
|
47
47
|
* ```
|
48
48
|
*/
|
49
|
-
class
|
49
|
+
class AppServer {
|
50
50
|
constructor(config) {
|
51
51
|
this.config = config;
|
52
52
|
/** Map of active user sessions by sessionId */
|
53
53
|
this.activeSessions = new Map();
|
54
54
|
/** Array of cleanup handlers to run on shutdown */
|
55
55
|
this.cleanupHandlers = [];
|
56
|
-
/**
|
57
|
-
this.
|
56
|
+
/** App instructions string shown to the user */
|
57
|
+
this.appInstructions = null;
|
58
58
|
// Set defaults and merge with provided config
|
59
59
|
this.config = {
|
60
60
|
port: 7010,
|
@@ -63,7 +63,7 @@ class TpaServer {
|
|
63
63
|
healthCheck: true,
|
64
64
|
...config
|
65
65
|
};
|
66
|
-
this.logger = logger_1.logger.child({
|
66
|
+
this.logger = logger_1.logger.child({ app: this.config.packageName, packageName: this.config.packageName, service: 'app-server' });
|
67
67
|
// Initialize Express app
|
68
68
|
this.app = (0, express_1.default)();
|
69
69
|
this.app.use(express_1.default.json());
|
@@ -75,7 +75,7 @@ class TpaServer {
|
|
75
75
|
packageName: this.config.packageName,
|
76
76
|
cookieSecret: this.config.cookieSecret || `AOS_${this.config.packageName}_${this.config.apiKey.substring(0, 8)}`
|
77
77
|
}));
|
78
|
-
this.
|
78
|
+
this.appInstructions = config.appInstructions || null;
|
79
79
|
// Setup server features
|
80
80
|
this.setupWebhook();
|
81
81
|
this.setupSettingsEndpoint();
|
@@ -91,10 +91,10 @@ class TpaServer {
|
|
91
91
|
}
|
92
92
|
/**
|
93
93
|
* 👥 Session Handler
|
94
|
-
* Override this method to handle new
|
94
|
+
* Override this method to handle new App sessions.
|
95
95
|
* This is where you implement your app's core functionality.
|
96
96
|
*
|
97
|
-
* @param session -
|
97
|
+
* @param session - App session instance for the user
|
98
98
|
* @param sessionId - Unique identifier for this session
|
99
99
|
* @param userId - User's identifier
|
100
100
|
*/
|
@@ -143,7 +143,7 @@ class TpaServer {
|
|
143
143
|
start() {
|
144
144
|
return new Promise((resolve) => {
|
145
145
|
this.app.listen(this.config.port, () => {
|
146
|
-
this.logger.info(`🎯
|
146
|
+
this.logger.info(`🎯 App server running at http://localhost:${this.config.port}`);
|
147
147
|
if (this.config.publicDir) {
|
148
148
|
this.logger.info(`📂 Serving static files from ${this.config.publicDir}`);
|
149
149
|
}
|
@@ -161,7 +161,7 @@ class TpaServer {
|
|
161
161
|
process.exit(0);
|
162
162
|
}
|
163
163
|
/**
|
164
|
-
* 🔐 Generate a
|
164
|
+
* 🔐 Generate a App token for a user
|
165
165
|
* This should be called when handling a session webhook request.
|
166
166
|
*
|
167
167
|
* @param userId - User identifier
|
@@ -261,12 +261,12 @@ class TpaServer {
|
|
261
261
|
async handleSessionRequest(request, res) {
|
262
262
|
const { sessionId, userId, augmentOSWebsocketUrl } = request;
|
263
263
|
this.logger.info({ userId }, `🗣️ Received session request for user ${userId}, session ${sessionId}\n\n`);
|
264
|
-
// Create new
|
265
|
-
const session = new
|
264
|
+
// Create new App session
|
265
|
+
const session = new index_1.AppSession({
|
266
266
|
packageName: this.config.packageName,
|
267
267
|
apiKey: this.config.apiKey,
|
268
268
|
augmentOSWebsocketUrl, // The websocket URL for the specific AugmentOS server that this userSession is connecting to.
|
269
|
-
|
269
|
+
appServer: this,
|
270
270
|
userId,
|
271
271
|
});
|
272
272
|
// Setup session event handlers
|
@@ -433,4 +433,4 @@ class TpaServer {
|
|
433
433
|
this.cleanupHandlers.forEach(handler => handler());
|
434
434
|
}
|
435
435
|
}
|
436
|
-
exports.
|
436
|
+
exports.AppServer = AppServer;
|
@@ -21,7 +21,7 @@ export declare class ApiClient {
|
|
21
21
|
/**
|
22
22
|
* Create a new API client
|
23
23
|
*
|
24
|
-
* @param packageName
|
24
|
+
* @param packageName App package name
|
25
25
|
* @param wsUrl WebSocket URL (optional, can be set later)
|
26
26
|
* @param userId User ID (optional, for authenticated requests)
|
27
27
|
*/
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/app/session/api-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgBjE;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAqB;IAEnC;;;;;;OAMG;gBACS,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAShE;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIpC;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B;;;;;OAKG;IACG,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;CA+BtC"}
|
@@ -37,7 +37,7 @@ class ApiClient {
|
|
37
37
|
/**
|
38
38
|
* Create a new API client
|
39
39
|
*
|
40
|
-
* @param packageName
|
40
|
+
* @param packageName App package name
|
41
41
|
* @param wsUrl WebSocket URL (optional, can be set later)
|
42
42
|
* @param userId User ID (optional, for authenticated requests)
|
43
43
|
*/
|
@@ -77,7 +77,7 @@ class ApiClient {
|
|
77
77
|
if (!this.userId) {
|
78
78
|
throw new Error('User ID is required for fetching settings');
|
79
79
|
}
|
80
|
-
const url = `${this.baseUrl}/
|
80
|
+
const url = `${this.baseUrl}/appsettings/user/${this.packageName}`;
|
81
81
|
try {
|
82
82
|
const response = await fetch(url, {
|
83
83
|
method: 'GET',
|
@@ -1,21 +1,21 @@
|
|
1
1
|
/**
|
2
2
|
* Dashboard API Implementation
|
3
3
|
*
|
4
|
-
* Provides dashboard functionality for
|
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
7
|
import { DashboardAPI, DashboardContentAPI, DashboardMode, DashboardSystemAPI } from '../../types/dashboard';
|
8
8
|
import { EventManager } from './events';
|
9
|
-
import type {
|
10
|
-
import {
|
9
|
+
import type { AppSession } from './index';
|
10
|
+
import { AppToCloudMessage } from 'src/types';
|
11
11
|
/**
|
12
|
-
* Implementation of DashboardSystemAPI interface for system dashboard
|
12
|
+
* Implementation of DashboardSystemAPI interface for system dashboard App
|
13
13
|
*/
|
14
14
|
export declare class DashboardSystemManager implements DashboardSystemAPI {
|
15
15
|
private session;
|
16
16
|
private packageName;
|
17
17
|
private send;
|
18
|
-
constructor(session:
|
18
|
+
constructor(session: AppSession, packageName: string, send: (message: any) => void);
|
19
19
|
setTopLeft(content: string): void;
|
20
20
|
setTopRight(content: string): void;
|
21
21
|
setBottomLeft(content: string): void;
|
@@ -24,7 +24,7 @@ export declare class DashboardSystemManager implements DashboardSystemAPI {
|
|
24
24
|
private updateSystemSection;
|
25
25
|
}
|
26
26
|
/**
|
27
|
-
* Implementation of DashboardContentAPI interface for all
|
27
|
+
* Implementation of DashboardContentAPI interface for all Apps
|
28
28
|
*/
|
29
29
|
export declare class DashboardContentManager implements DashboardContentAPI {
|
30
30
|
private session;
|
@@ -32,7 +32,7 @@ export declare class DashboardContentManager implements DashboardContentAPI {
|
|
32
32
|
private send;
|
33
33
|
private events;
|
34
34
|
private currentMode;
|
35
|
-
constructor(session:
|
35
|
+
constructor(session: AppSession, packageName: string, send: (message: any) => void, events: EventManager);
|
36
36
|
write(content: string, targets?: DashboardMode[]): void;
|
37
37
|
writeToMain(content: string): void;
|
38
38
|
writeToExpanded(content: string): void;
|
@@ -42,11 +42,11 @@ export declare class DashboardContentManager implements DashboardContentAPI {
|
|
42
42
|
}
|
43
43
|
/**
|
44
44
|
* Dashboard Manager - Main class that manages dashboard functionality
|
45
|
-
* Each
|
45
|
+
* Each AppSession instance gets its own DashboardManager instance
|
46
46
|
*/
|
47
47
|
export declare class DashboardManager implements DashboardAPI {
|
48
48
|
readonly content: DashboardContentAPI;
|
49
49
|
readonly system?: DashboardSystemAPI;
|
50
|
-
constructor(session:
|
50
|
+
constructor(session: AppSession, send: (message: AppToCloudMessage) => void);
|
51
51
|
}
|
52
52
|
//# sourceMappingURL=dashboard.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/
|
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;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAO9C;;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;CAW5B;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,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,aAAa,EAAyB,GAAG,IAAI;IAY7E,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;CAe5E"}
|
@@ -7,7 +7,7 @@ exports.DashboardManager = exports.DashboardContentManager = exports.DashboardSy
|
|
7
7
|
/**
|
8
8
|
* Dashboard API Implementation
|
9
9
|
*
|
10
|
-
* Provides dashboard functionality for
|
10
|
+
* Provides dashboard functionality for Apps, allowing them to write content
|
11
11
|
* to the dashboard and respond to dashboard mode changes.
|
12
12
|
*/
|
13
13
|
// import { systemApps } from '../../constants';
|
@@ -18,7 +18,7 @@ const dotenv_1 = __importDefault(require("dotenv"));
|
|
18
18
|
dotenv_1.default.config();
|
19
19
|
const SYSTEM_DASHBOARD_PACKAGE_NAME = process.env.SYSTEM_DASHBOARD_PACKAGE_NAME || 'system.augmentos.dashboard';
|
20
20
|
/**
|
21
|
-
* Implementation of DashboardSystemAPI interface for system dashboard
|
21
|
+
* Implementation of DashboardSystemAPI interface for system dashboard App
|
22
22
|
*/
|
23
23
|
class DashboardSystemManager {
|
24
24
|
constructor(session, packageName, send) {
|
@@ -40,7 +40,7 @@ class DashboardSystemManager {
|
|
40
40
|
}
|
41
41
|
setViewMode(mode) {
|
42
42
|
const message = {
|
43
|
-
type: message_types_1.
|
43
|
+
type: message_types_1.AppToCloudMessageType.DASHBOARD_MODE_CHANGE,
|
44
44
|
packageName: this.packageName,
|
45
45
|
sessionId: `${this.session.getSessionId()}-${this.packageName}`,
|
46
46
|
mode,
|
@@ -50,7 +50,7 @@ class DashboardSystemManager {
|
|
50
50
|
}
|
51
51
|
updateSystemSection(section, content) {
|
52
52
|
const message = {
|
53
|
-
type: message_types_1.
|
53
|
+
type: message_types_1.AppToCloudMessageType.DASHBOARD_SYSTEM_UPDATE,
|
54
54
|
packageName: this.packageName,
|
55
55
|
sessionId: `${this.session.getSessionId()}-${this.packageName}`,
|
56
56
|
section,
|
@@ -62,7 +62,7 @@ class DashboardSystemManager {
|
|
62
62
|
}
|
63
63
|
exports.DashboardSystemManager = DashboardSystemManager;
|
64
64
|
/**
|
65
|
-
* Implementation of DashboardContentAPI interface for all
|
65
|
+
* Implementation of DashboardContentAPI interface for all Apps
|
66
66
|
*/
|
67
67
|
class DashboardContentManager {
|
68
68
|
// private alwaysOnEnabled: boolean = false;
|
@@ -75,7 +75,7 @@ class DashboardContentManager {
|
|
75
75
|
}
|
76
76
|
write(content, targets = [dashboard_1.DashboardMode.MAIN]) {
|
77
77
|
const message = {
|
78
|
-
type: message_types_1.
|
78
|
+
type: message_types_1.AppToCloudMessageType.DASHBOARD_CONTENT_UPDATE,
|
79
79
|
packageName: this.packageName,
|
80
80
|
sessionId: `${this.session.getSessionId()}-${this.packageName}`,
|
81
81
|
content,
|
@@ -89,7 +89,7 @@ class DashboardContentManager {
|
|
89
89
|
}
|
90
90
|
writeToExpanded(content) {
|
91
91
|
const message = {
|
92
|
-
type: message_types_1.
|
92
|
+
type: message_types_1.AppToCloudMessageType.DASHBOARD_CONTENT_UPDATE,
|
93
93
|
packageName: this.packageName,
|
94
94
|
sessionId: `${this.session.getSessionId()}-${this.packageName}`,
|
95
95
|
content,
|
@@ -128,15 +128,15 @@ class DashboardContentManager {
|
|
128
128
|
exports.DashboardContentManager = DashboardContentManager;
|
129
129
|
/**
|
130
130
|
* Dashboard Manager - Main class that manages dashboard functionality
|
131
|
-
* Each
|
131
|
+
* Each AppSession instance gets its own DashboardManager instance
|
132
132
|
*/
|
133
133
|
class DashboardManager {
|
134
134
|
constructor(session, send) {
|
135
135
|
const packageName = session.getPackageName();
|
136
136
|
const events = session.events;
|
137
|
-
// Create content API (available to all
|
137
|
+
// Create content API (available to all Apps)
|
138
138
|
this.content = new DashboardContentManager(session, packageName, send, events);
|
139
|
-
// Add system API if this is the system dashboard
|
139
|
+
// Add system API if this is the system dashboard App
|
140
140
|
if (packageName === SYSTEM_DASHBOARD_PACKAGE_NAME) {
|
141
141
|
session.logger.info({ service: "SDK:DashboardManager" }, 'Initializing system dashboard manager');
|
142
142
|
this.system = new DashboardSystemManager(session, packageName, send);
|
@@ -4,7 +4,7 @@
|
|
4
4
|
import EventEmitter from 'events';
|
5
5
|
import { StreamType, ExtendedStreamType, AppSettings, WebSocketError, ButtonPress, HeadPosition, PhoneNotification, TranscriptionData, TranslationData, GlassesBatteryUpdate, PhoneBatteryUpdate, GlassesConnectionState, LocationUpdate, Vad, NotificationDismissed, AudioChunk, CalendarEvent, VpsCoordinates, CustomMessage, RtmpStreamStatus, PhotoTaken } from '../../types';
|
6
6
|
import { DashboardMode } from '../../types/dashboard';
|
7
|
-
import { PermissionErrorDetail } from '../../types/messages/cloud-to-
|
7
|
+
import { PermissionErrorDetail } from '../../types/messages/cloud-to-app';
|
8
8
|
/** 🎯 Type-safe event handler function */
|
9
9
|
type Handler<T> = (data: T) => void;
|
10
10
|
/** 🔄 System events not tied to streams */
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/app/session/events.ts"],"names":[],"mappings":"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"}
|
@@ -227,7 +227,7 @@ class EventManager {
|
|
227
227
|
const handlersArray = Array.from(handlers);
|
228
228
|
// console.log(`((())) HandlersArray: ${JSON.stringify(handlersArray)}`);
|
229
229
|
// Execute each handler in isolated try/catch to prevent one handler
|
230
|
-
// from crashing the entire
|
230
|
+
// from crashing the entire App
|
231
231
|
handlersArray.forEach(handler => {
|
232
232
|
try {
|
233
233
|
handler(data);
|