@mentra/sdk 1.1.19

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.
Files changed (101) hide show
  1. package/README.md +102 -0
  2. package/dist/constants/index.d.ts +14 -0
  3. package/dist/constants/index.d.ts.map +1 -0
  4. package/dist/constants/index.js +16 -0
  5. package/dist/examples/rtmp-streaming-example.d.ts +2 -0
  6. package/dist/examples/rtmp-streaming-example.d.ts.map +1 -0
  7. package/dist/examples/rtmp-streaming-example.js +102 -0
  8. package/dist/index.d.ts +4 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +33 -0
  11. package/dist/logging/logger.d.ts +3 -0
  12. package/dist/logging/logger.d.ts.map +1 -0
  13. package/dist/logging/logger.js +79 -0
  14. package/dist/tpa/index.d.ts +6 -0
  15. package/dist/tpa/index.d.ts.map +1 -0
  16. package/dist/tpa/index.js +24 -0
  17. package/dist/tpa/server/index.d.ts +193 -0
  18. package/dist/tpa/server/index.d.ts.map +1 -0
  19. package/dist/tpa/server/index.js +436 -0
  20. package/dist/tpa/session/api-client.d.ts +49 -0
  21. package/dist/tpa/session/api-client.d.ts.map +1 -0
  22. package/dist/tpa/session/api-client.js +101 -0
  23. package/dist/tpa/session/dashboard.d.ts +52 -0
  24. package/dist/tpa/session/dashboard.d.ts.map +1 -0
  25. package/dist/tpa/session/dashboard.js +149 -0
  26. package/dist/tpa/session/events.d.ts +178 -0
  27. package/dist/tpa/session/events.d.ts.map +1 -0
  28. package/dist/tpa/session/events.js +294 -0
  29. package/dist/tpa/session/index.d.ts +391 -0
  30. package/dist/tpa/session/index.d.ts.map +1 -0
  31. package/dist/tpa/session/index.js +1452 -0
  32. package/dist/tpa/session/layouts.d.ts +150 -0
  33. package/dist/tpa/session/layouts.d.ts.map +1 -0
  34. package/dist/tpa/session/layouts.js +282 -0
  35. package/dist/tpa/session/modules/streaming.d.ts +100 -0
  36. package/dist/tpa/session/modules/streaming.d.ts.map +1 -0
  37. package/dist/tpa/session/modules/streaming.js +270 -0
  38. package/dist/tpa/session/settings.d.ts +202 -0
  39. package/dist/tpa/session/settings.d.ts.map +1 -0
  40. package/dist/tpa/session/settings.js +361 -0
  41. package/dist/tpa/token/index.d.ts +7 -0
  42. package/dist/tpa/token/index.d.ts.map +1 -0
  43. package/dist/tpa/token/index.js +22 -0
  44. package/dist/tpa/token/utils.d.ts +69 -0
  45. package/dist/tpa/token/utils.d.ts.map +1 -0
  46. package/dist/tpa/token/utils.js +144 -0
  47. package/dist/tpa/webview/index.d.ts +47 -0
  48. package/dist/tpa/webview/index.d.ts.map +1 -0
  49. package/dist/tpa/webview/index.js +344 -0
  50. package/dist/types/dashboard/index.d.ts +128 -0
  51. package/dist/types/dashboard/index.d.ts.map +1 -0
  52. package/dist/types/dashboard/index.js +12 -0
  53. package/dist/types/enums.d.ts +57 -0
  54. package/dist/types/enums.d.ts.map +1 -0
  55. package/dist/types/enums.js +72 -0
  56. package/dist/types/index.d.ts +38 -0
  57. package/dist/types/index.d.ts.map +1 -0
  58. package/dist/types/index.js +87 -0
  59. package/dist/types/layouts.d.ts +51 -0
  60. package/dist/types/layouts.d.ts.map +1 -0
  61. package/dist/types/layouts.js +3 -0
  62. package/dist/types/message-types.d.ts +109 -0
  63. package/dist/types/message-types.d.ts.map +1 -0
  64. package/dist/types/message-types.js +189 -0
  65. package/dist/types/messages/base.d.ts +12 -0
  66. package/dist/types/messages/base.d.ts.map +1 -0
  67. package/dist/types/messages/base.js +3 -0
  68. package/dist/types/messages/cloud-to-glasses.d.ts +126 -0
  69. package/dist/types/messages/cloud-to-glasses.d.ts.map +1 -0
  70. package/dist/types/messages/cloud-to-glasses.js +60 -0
  71. package/dist/types/messages/cloud-to-tpa.d.ts +228 -0
  72. package/dist/types/messages/cloud-to-tpa.d.ts.map +1 -0
  73. package/dist/types/messages/cloud-to-tpa.js +61 -0
  74. package/dist/types/messages/glasses-to-cloud.d.ts +219 -0
  75. package/dist/types/messages/glasses-to-cloud.d.ts.map +1 -0
  76. package/dist/types/messages/glasses-to-cloud.js +88 -0
  77. package/dist/types/messages/tpa-to-cloud.d.ts +146 -0
  78. package/dist/types/messages/tpa-to-cloud.d.ts.map +1 -0
  79. package/dist/types/messages/tpa-to-cloud.js +67 -0
  80. package/dist/types/models.d.ts +165 -0
  81. package/dist/types/models.d.ts.map +1 -0
  82. package/dist/types/models.js +84 -0
  83. package/dist/types/rtmp-stream.d.ts +68 -0
  84. package/dist/types/rtmp-stream.d.ts.map +1 -0
  85. package/dist/types/rtmp-stream.js +3 -0
  86. package/dist/types/streams.d.ts +138 -0
  87. package/dist/types/streams.d.ts.map +1 -0
  88. package/dist/types/streams.js +251 -0
  89. package/dist/types/token.d.ts +41 -0
  90. package/dist/types/token.d.ts.map +1 -0
  91. package/dist/types/token.js +7 -0
  92. package/dist/types/user-session.d.ts +73 -0
  93. package/dist/types/user-session.d.ts.map +1 -0
  94. package/dist/types/user-session.js +17 -0
  95. package/dist/types/webhooks.d.ts +107 -0
  96. package/dist/types/webhooks.d.ts.map +1 -0
  97. package/dist/types/webhooks.js +55 -0
  98. package/dist/utils/resource-tracker.d.ts +94 -0
  99. package/dist/utils/resource-tracker.d.ts.map +1 -0
  100. package/dist/utils/resource-tracker.js +153 -0
  101. package/package.json +50 -0
@@ -0,0 +1,391 @@
1
+ import { EventManager, EventData } from './events';
2
+ import { LayoutManager } from './layouts';
3
+ import { SettingsManager } from './settings';
4
+ import { StreamingModule } from './modules/streaming';
5
+ import { ExtendedStreamType, ButtonPress, HeadPosition, PhoneNotification, TranscriptionData, TranslationData, AppSettings, AppSetting, TpaConfig, VpsCoordinates, PhotoTaken } from '../../types';
6
+ import { DashboardAPI } from '../../types/dashboard';
7
+ import { Logger } from 'pino';
8
+ import { TpaServer } from '../server';
9
+ /**
10
+ * โš™๏ธ Configuration options for TPA Session
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const config: TpaSessionConfig = {
15
+ * packageName: 'org.example.myapp',
16
+ * apiKey: 'your_api_key',
17
+ * // Auto-reconnection is enabled by default
18
+ * // autoReconnect: true
19
+ * };
20
+ * ```
21
+ */
22
+ export interface TpaSessionConfig {
23
+ /** ๐Ÿ“ฆ Unique identifier for your TPA (e.g., 'org.company.appname') */
24
+ packageName: string;
25
+ /** ๐Ÿ”‘ API key for authentication with AugmentOS Cloud */
26
+ apiKey: string;
27
+ /** ๐Ÿ”Œ WebSocket server URL (default: 'ws://localhost:7002/tpa-ws') */
28
+ augmentOSWebsocketUrl?: string;
29
+ /** ๐Ÿ”„ Automatically attempt to reconnect on disconnect (default: true) */
30
+ autoReconnect?: boolean;
31
+ /** ๐Ÿ” Maximum number of reconnection attempts (default: 3) */
32
+ maxReconnectAttempts?: number;
33
+ /** โฑ๏ธ Base delay between reconnection attempts in ms (default: 1000) */
34
+ reconnectDelay?: number;
35
+ userId: string;
36
+ tpaServer: TpaServer;
37
+ }
38
+ /**
39
+ * ๐Ÿš€ TPA Session Implementation
40
+ *
41
+ * Manages a live connection between your TPA and AugmentOS Cloud.
42
+ * Provides interfaces for:
43
+ * - ๐ŸŽฎ Event handling (transcription, head position, etc.)
44
+ * - ๐Ÿ“ฑ Display management in AR view
45
+ * - ๐Ÿ”Œ Connection lifecycle
46
+ * - ๐Ÿ”„ Automatic reconnection
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const session = new TpaSession({
51
+ * packageName: 'org.example.myapp',
52
+ * apiKey: 'your_api_key'
53
+ * });
54
+ *
55
+ * // Handle events
56
+ * session.onTranscription((data) => {
57
+ * session.layouts.showTextWall(data.text);
58
+ * });
59
+ *
60
+ * // Connect to cloud
61
+ * await session.connect('session_123');
62
+ * ```
63
+ */
64
+ export declare class TpaSession {
65
+ private config;
66
+ /** WebSocket connection to AugmentOS Cloud */
67
+ private ws;
68
+ /** Current session identifier */
69
+ private sessionId;
70
+ /** Number of reconnection attempts made */
71
+ private reconnectAttempts;
72
+ /** Active event subscriptions */
73
+ private subscriptions;
74
+ /** Resource tracker for automatic cleanup */
75
+ private resources;
76
+ /** Internal settings storage - use public settings API instead */
77
+ private settingsData;
78
+ /** TPA configuration loaded from tpa_config.json */
79
+ private tpaConfig;
80
+ /** Whether to update subscriptions when settings change */
81
+ private shouldUpdateSubscriptionsOnSettingsChange;
82
+ /** Custom subscription handler for settings-based subscriptions */
83
+ private subscriptionSettingsHandler?;
84
+ /** Settings that should trigger subscription updates when changed */
85
+ private subscriptionUpdateTriggers;
86
+ /** Pending photo requests waiting for responses */
87
+ private pendingPhotoRequests;
88
+ /** Pending user discovery requests waiting for responses */
89
+ private pendingUserDiscoveryRequests;
90
+ /** Pending direct message requests waiting for responses */
91
+ private pendingDirectMessages;
92
+ /** ๐ŸŽฎ Event management interface */
93
+ readonly events: EventManager;
94
+ /** ๐Ÿ“ฑ Layout management interface */
95
+ readonly layouts: LayoutManager;
96
+ /** โš™๏ธ Settings management interface */
97
+ readonly settings: SettingsManager;
98
+ /** ๐Ÿ“Š Dashboard management interface */
99
+ readonly dashboard: DashboardAPI;
100
+ /** ๐Ÿ“น RTMP streaming interface */
101
+ readonly streaming: StreamingModule;
102
+ readonly tpaServer: TpaServer;
103
+ readonly logger: Logger;
104
+ readonly userId: string;
105
+ /** Dedicated emitter for TPA-to-TPA events */
106
+ private tpaEvents;
107
+ constructor(config: TpaSessionConfig);
108
+ /**
109
+ * Get the current session ID
110
+ * @returns The current session ID or 'unknown-session-id' if not connected
111
+ */
112
+ getSessionId(): string;
113
+ /**
114
+ * Get the package name for this TPA
115
+ * @returns The package name
116
+ */
117
+ getPackageName(): string;
118
+ /**
119
+ * ๐ŸŽค Listen for speech transcription events
120
+ * @param handler - Function to handle transcription data
121
+ * @returns Cleanup function to remove the handler
122
+ */
123
+ onTranscription(handler: (data: TranscriptionData) => void): () => void;
124
+ /**
125
+ * ๐ŸŒ Listen for speech transcription events in a specific language
126
+ * @param language - Language code (e.g., "en-US")
127
+ * @param handler - Function to handle transcription data
128
+ * @returns Cleanup function to remove the handler
129
+ * @throws Error if language code is invalid
130
+ */
131
+ onTranscriptionForLanguage(language: string, handler: (data: TranscriptionData) => void): () => void;
132
+ /**
133
+ * ๐ŸŒ Listen for speech translation events for a specific language pair
134
+ * @param sourceLanguage - Source language code (e.g., "es-ES")
135
+ * @param targetLanguage - Target language code (e.g., "en-US")
136
+ * @param handler - Function to handle translation data
137
+ * @returns Cleanup function to remove the handler
138
+ * @throws Error if language codes are invalid
139
+ */
140
+ onTranslationForLanguage(sourceLanguage: string, targetLanguage: string, handler: (data: TranslationData) => void): () => void;
141
+ /**
142
+ * ๐Ÿ‘ค Listen for head position changes
143
+ * @param handler - Function to handle head position updates
144
+ * @returns Cleanup function to remove the handler
145
+ */
146
+ onHeadPosition(handler: (data: HeadPosition) => void): () => void;
147
+ /**
148
+ * ๐Ÿ”˜ Listen for hardware button press events
149
+ * @param handler - Function to handle button events
150
+ * @returns Cleanup function to remove the handler
151
+ */
152
+ onButtonPress(handler: (data: ButtonPress) => void): () => void;
153
+ /**
154
+ * ๐Ÿ“ฑ Listen for phone notification events
155
+ * @param handler - Function to handle notifications
156
+ * @returns Cleanup function to remove the handler
157
+ */
158
+ onPhoneNotifications(handler: (data: PhoneNotification) => void): () => void;
159
+ /**
160
+ * ๐Ÿ“ก Listen for VPS coordinates updates
161
+ * @param handler - Function to handle VPS coordinates
162
+ * @returns Cleanup function to remove the handler
163
+ */
164
+ onVpsCoordinates(handler: (data: VpsCoordinates) => void): () => void;
165
+ /**
166
+ * ๐Ÿ“ธ Listen for photo responses
167
+ * @param handler - Function to handle photo response data
168
+ * @returns Cleanup function to remove the handler
169
+ */
170
+ onPhotoTaken(handler: (data: PhotoTaken) => void): () => void;
171
+ /**
172
+ * ๐Ÿ“ฌ Subscribe to a specific event stream
173
+ * @param type - Type of event to subscribe to
174
+ */
175
+ subscribe(type: ExtendedStreamType): void;
176
+ /**
177
+ * ๐Ÿ“ญ Unsubscribe from a specific event stream
178
+ * @param type - Type of event to unsubscribe from
179
+ */
180
+ unsubscribe(type: ExtendedStreamType): void;
181
+ /**
182
+ * ๐ŸŽฏ Generic event listener (pub/sub style)
183
+ * @param event - Event name to listen for
184
+ * @param handler - Event handler function
185
+ */
186
+ on<T extends ExtendedStreamType>(event: T, handler: (data: EventData<T>) => void): () => void;
187
+ /**
188
+ * ๐Ÿš€ Connect to AugmentOS Cloud
189
+ * @param sessionId - Unique session identifier
190
+ * @returns Promise that resolves when connected
191
+ */
192
+ connect(sessionId: string): Promise<void>;
193
+ /**
194
+ * ๐Ÿ‘‹ Disconnect from AugmentOS Cloud
195
+ */
196
+ disconnect(): void;
197
+ /**
198
+ * ๐Ÿ“ธ Request a photo from the connected glasses
199
+ * @param options - Optional configuration for the photo request
200
+ * @returns Promise that resolves with the URL to the captured photo
201
+ */
202
+ requestPhoto(options?: {
203
+ saveToGallery?: boolean;
204
+ }): Promise<string>;
205
+ /**
206
+ * ๐Ÿ› ๏ธ Get all current user settings
207
+ * @returns A copy of the current settings array
208
+ * @deprecated Use session.settings.getAll() instead
209
+ */
210
+ getSettings(): AppSettings;
211
+ /**
212
+ * ๐Ÿ” Get a specific setting value by key
213
+ * @param key The setting key to look for
214
+ * @returns The setting's value, or undefined if not found
215
+ * @deprecated Use session.settings.get(key) instead
216
+ */
217
+ getSetting<T>(key: string): T | undefined;
218
+ /**
219
+ * โš™๏ธ Configure settings-based subscription updates
220
+ * This allows TPAs to automatically update their subscriptions when certain settings change
221
+ * @param options Configuration options for settings-based subscriptions
222
+ */
223
+ setSubscriptionSettings(options: {
224
+ updateOnChange: string[];
225
+ handler: (settings: AppSettings) => ExtendedStreamType[];
226
+ }): void;
227
+ /**
228
+ * ๐Ÿ”„ Update subscriptions based on current settings
229
+ * Called automatically when relevant settings change
230
+ */
231
+ private updateSubscriptionsFromSettings;
232
+ /**
233
+ * ๐Ÿงช For testing: Update settings locally
234
+ * In normal operation, settings come from the cloud
235
+ * @param newSettings The new settings to apply
236
+ */
237
+ updateSettingsForTesting(newSettings: AppSettings): void;
238
+ /**
239
+ * ๐Ÿ“ Load configuration from a JSON file
240
+ * @param jsonData JSON string containing TPA configuration
241
+ * @returns The loaded configuration
242
+ * @throws Error if the configuration is invalid
243
+ */
244
+ loadConfigFromJson(jsonData: string): TpaConfig;
245
+ /**
246
+ * ๐Ÿ“‹ Get the loaded TPA configuration
247
+ * @returns The current TPA configuration or null if not loaded
248
+ */
249
+ getConfig(): TpaConfig | null;
250
+ /**
251
+ * ๐Ÿ”Œ Get the WebSocket server URL for this session
252
+ * @returns The WebSocket server URL used by this session
253
+ */
254
+ getServerUrl(): string | undefined;
255
+ getHttpsServerUrl(): string | undefined;
256
+ private static convertToHttps;
257
+ /**
258
+ * ๐Ÿ” Get default settings from the TPA configuration
259
+ * @returns Array of settings with default values
260
+ * @throws Error if configuration is not loaded
261
+ */
262
+ getDefaultSettings(): AppSettings;
263
+ /**
264
+ * ๐Ÿ” Get setting schema from configuration
265
+ * @param key Setting key to look up
266
+ * @returns The setting schema or undefined if not found
267
+ */
268
+ getSettingSchema(key: string): AppSetting | undefined;
269
+ /**
270
+ * ๐Ÿ“จ Handle incoming messages from cloud
271
+ */
272
+ private handleMessage;
273
+ /**
274
+ * ๐Ÿงช Validate incoming message structure
275
+ * @param message - Message to validate
276
+ * @returns boolean indicating if the message is valid
277
+ */
278
+ private validateMessage;
279
+ /**
280
+ * ๐Ÿ“ฆ Handle binary message data (audio or video)
281
+ * @param buffer - Binary data as ArrayBuffer
282
+ */
283
+ private handleBinaryMessage;
284
+ /**
285
+ * ๐Ÿงน Sanitize event data to prevent crashes from malformed data
286
+ * @param streamType - The type of stream data
287
+ * @param data - The potentially unsafe data to sanitize
288
+ * @returns Sanitized data safe for processing
289
+ */
290
+ private sanitizeEventData;
291
+ /**
292
+ * ๐Ÿ” Send connection initialization message
293
+ */
294
+ private sendConnectionInit;
295
+ /**
296
+ * ๐Ÿ“ Update subscription list with cloud
297
+ */
298
+ private updateSubscriptions;
299
+ /**
300
+ * ๐Ÿ”„ Handle reconnection with exponential backoff
301
+ */
302
+ private handleReconnection;
303
+ /**
304
+ * ๐Ÿ“ค Send message to cloud with validation and error handling
305
+ * @throws {Error} If WebSocket is not connected
306
+ */
307
+ private send;
308
+ /**
309
+ * Fetch the onboarding instructions for this session from the backend.
310
+ * @returns Promise resolving to the instructions string or null
311
+ */
312
+ getInstructions(): Promise<string | null>;
313
+ /**
314
+ * ๐Ÿ‘ฅ Discover other users currently using the same TPA
315
+ * @param includeProfiles - Whether to include user profile information
316
+ * @returns Promise that resolves with list of active users
317
+ */
318
+ discoverTpaUsers(domain: string, includeProfiles?: boolean): Promise<any>;
319
+ /**
320
+ * ๐Ÿ” Check if a specific user is currently active
321
+ * @param userId - User ID to check for
322
+ * @returns Promise that resolves with boolean indicating if user is active
323
+ */
324
+ isUserActive(userId: string): Promise<boolean>;
325
+ /**
326
+ * ๐Ÿ“Š Get user count for this TPA
327
+ * @returns Promise that resolves with number of active users
328
+ */
329
+ getUserCount(domain: string): Promise<number>;
330
+ /**
331
+ * ๐Ÿ“ข Send broadcast message to all users with same TPA active
332
+ * @param payload - Message payload to send
333
+ * @param roomId - Optional room ID for room-based messaging
334
+ * @returns Promise that resolves when message is sent
335
+ */
336
+ broadcastToTpaUsers(payload: any, roomId?: string): Promise<void>;
337
+ /**
338
+ * ๐Ÿ“ค Send direct message to specific user
339
+ * @param targetUserId - User ID to send message to
340
+ * @param payload - Message payload to send
341
+ * @returns Promise that resolves with success status
342
+ */
343
+ sendDirectMessage(targetUserId: string, payload: any): Promise<boolean>;
344
+ /**
345
+ * ๐Ÿ  Join a communication room for group messaging
346
+ * @param roomId - Room ID to join
347
+ * @param roomConfig - Optional room configuration
348
+ * @returns Promise that resolves when room is joined
349
+ */
350
+ joinTpaRoom(roomId: string, roomConfig?: {
351
+ maxUsers?: number;
352
+ isPrivate?: boolean;
353
+ metadata?: any;
354
+ }): Promise<void>;
355
+ /**
356
+ * ๐Ÿšช Leave a communication room
357
+ * @param roomId - Room ID to leave
358
+ * @returns Promise that resolves when room is left
359
+ */
360
+ leaveTpaRoom(roomId: string): Promise<void>;
361
+ /**
362
+ * ๐Ÿ“จ Listen for messages from other TPA users
363
+ * @param handler - Function to handle incoming messages
364
+ * @returns Cleanup function to remove the handler
365
+ */
366
+ onTpaMessage(handler: (message: any) => void): () => void;
367
+ /**
368
+ * ๐Ÿ‘‹ Listen for user join events
369
+ * @param handler - Function to handle user join events
370
+ * @returns Cleanup function to remove the handler
371
+ */
372
+ onTpaUserJoined(handler: (data: any) => void): () => void;
373
+ /**
374
+ * ๐Ÿšช Listen for user leave events
375
+ * @param handler - Function to handle user leave events
376
+ * @returns Cleanup function to remove the handler
377
+ */
378
+ onTpaUserLeft(handler: (data: any) => void): () => void;
379
+ /**
380
+ * ๐Ÿ  Listen for room update events
381
+ * @param handler - Function to handle room updates
382
+ * @returns Cleanup function to remove the handler
383
+ */
384
+ onTpaRoomUpdated(handler: (data: any) => void): () => void;
385
+ /**
386
+ * ๐Ÿ”ง Generate unique message ID
387
+ * @returns Unique message identifier
388
+ */
389
+ private generateMessageId;
390
+ }
391
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tpa/session/index.ts"],"names":[],"mappings":"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"}