@mentra/sdk 2.1.2 → 2.1.4

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 (60) hide show
  1. package/dist/app/session/events.d.ts +3 -2
  2. package/dist/app/session/events.d.ts.map +1 -1
  3. package/dist/app/session/events.js +3 -0
  4. package/dist/app/session/index.d.ts +8 -1
  5. package/dist/app/session/index.d.ts.map +1 -1
  6. package/dist/app/session/index.js +9 -0
  7. package/dist/app/session/layouts.d.ts +71 -14
  8. package/dist/app/session/layouts.d.ts.map +1 -1
  9. package/dist/app/session/layouts.js +114 -31
  10. package/dist/app/session/modules/audio.d.ts +2 -2
  11. package/dist/app/session/modules/audio.d.ts.map +1 -1
  12. package/dist/app/session/modules/audio.js +21 -17
  13. package/dist/app/session/modules/camera-managed-extension.d.ts +3 -1
  14. package/dist/app/session/modules/camera-managed-extension.d.ts.map +1 -1
  15. package/dist/app/session/modules/camera-managed-extension.js +26 -18
  16. package/dist/app/session/modules/camera.d.ts +4 -4
  17. package/dist/app/session/modules/camera.d.ts.map +1 -1
  18. package/dist/app/session/modules/camera.js +28 -22
  19. package/dist/app/session/modules/location.d.ts +3 -3
  20. package/dist/app/session/modules/location.d.ts.map +1 -1
  21. package/dist/app/session/modules/location.js +8 -5
  22. package/dist/examples/managed-rtmp-streaming-example.js +3 -0
  23. package/dist/examples/managed-rtmp-streaming-with-restream-example.d.ts +11 -0
  24. package/dist/examples/managed-rtmp-streaming-with-restream-example.d.ts.map +1 -0
  25. package/dist/examples/managed-rtmp-streaming-with-restream-example.js +124 -0
  26. package/dist/index.d.ts +6 -4
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +5 -1
  29. package/dist/types/enums.d.ts +3 -1
  30. package/dist/types/enums.d.ts.map +1 -1
  31. package/dist/types/enums.js +2 -0
  32. package/dist/types/index.d.ts +2 -2
  33. package/dist/types/index.d.ts.map +1 -1
  34. package/dist/types/layouts.d.ts +16 -1
  35. package/dist/types/layouts.d.ts.map +1 -1
  36. package/dist/types/message-types.d.ts +2 -2
  37. package/dist/types/message-types.d.ts.map +1 -1
  38. package/dist/types/message-types.js +3 -3
  39. package/dist/types/messages/app-to-cloud.d.ts +11 -0
  40. package/dist/types/messages/app-to-cloud.d.ts.map +1 -1
  41. package/dist/types/messages/cloud-to-app.d.ts +19 -0
  42. package/dist/types/messages/cloud-to-app.d.ts.map +1 -1
  43. package/dist/types/messages/glasses-to-cloud.d.ts +8 -4
  44. package/dist/types/messages/glasses-to-cloud.d.ts.map +1 -1
  45. package/dist/types/messages/glasses-to-cloud.js +3 -3
  46. package/dist/types/models.d.ts +1 -0
  47. package/dist/types/models.d.ts.map +1 -1
  48. package/dist/types/models.js +1 -0
  49. package/dist/types/streams.d.ts +1 -1
  50. package/dist/types/streams.d.ts.map +1 -1
  51. package/dist/types/streams.js +2 -2
  52. package/dist/types/user-session.d.ts +8 -8
  53. package/dist/types/user-session.d.ts.map +1 -1
  54. package/dist/utils/animation-utils.d.ts +206 -0
  55. package/dist/utils/animation-utils.d.ts.map +1 -0
  56. package/dist/utils/animation-utils.js +340 -0
  57. package/dist/utils/bitmap-utils.d.ts +149 -0
  58. package/dist/utils/bitmap-utils.d.ts.map +1 -0
  59. package/dist/utils/bitmap-utils.js +465 -0
  60. package/package.json +2 -1
@@ -2,7 +2,7 @@
2
2
  * 🎮 Event Manager Module
3
3
  */
4
4
  import EventEmitter from 'events';
5
- import { StreamType, ExtendedStreamType, AppSettings, WebSocketError, ButtonPress, HeadPosition, PhoneNotification, TranscriptionData, TranslationData, GlassesBatteryUpdate, PhoneBatteryUpdate, GlassesConnectionState, LocationUpdate, Vad, NotificationDismissed, AudioChunk, CalendarEvent, VpsCoordinates, CustomMessage, RtmpStreamStatus, PhotoTaken, ManagedStreamStatus } from '../../types';
5
+ import { StreamType, ExtendedStreamType, AppSettings, WebSocketError, ButtonPress, HeadPosition, PhoneNotification, TranscriptionData, TranslationData, GlassesBatteryUpdate, PhoneBatteryUpdate, GlassesConnectionState, LocationUpdate, Vad, AudioChunk, CalendarEvent, VpsCoordinates, CustomMessage, RtmpStreamStatus, PhotoTaken, ManagedStreamStatus, PhoneNotificationDismissed } from '../../types';
6
6
  import { DashboardMode } from '../../types/dashboard';
7
7
  import { PermissionErrorDetail } from '../../types/messages/cloud-to-app';
8
8
  /** 🎯 Type-safe event handler function */
@@ -52,7 +52,7 @@ export interface StreamDataTypes {
52
52
  [StreamType.LOCATION_UPDATE]: LocationUpdate;
53
53
  [StreamType.CALENDAR_EVENT]: CalendarEvent;
54
54
  [StreamType.VAD]: Vad;
55
- [StreamType.NOTIFICATION_DISMISSED]: NotificationDismissed;
55
+ [StreamType.PHONE_NOTIFICATION_DISMISSED]: PhoneNotificationDismissed;
56
56
  [StreamType.AUDIO_CHUNK]: AudioChunk;
57
57
  [StreamType.VIDEO]: ArrayBuffer;
58
58
  [StreamType.RTMP_STREAM_STATUS]: RtmpStreamStatus;
@@ -96,6 +96,7 @@ export declare class EventManager {
96
96
  onHeadPosition(handler: Handler<HeadPosition>): () => void;
97
97
  onButtonPress(handler: Handler<ButtonPress>): () => void;
98
98
  onPhoneNotifications(handler: Handler<PhoneNotification>): () => void;
99
+ onPhoneNotificationDismissed(handler: Handler<PhoneNotificationDismissed>): () => void;
99
100
  onGlassesBattery(handler: Handler<GlassesBatteryUpdate>): () => void;
100
101
  onPhoneBattery(handler: Handler<PhoneBatteryUpdate>): () => void;
101
102
  onVoiceActivity(handler: Handler<Vad>): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/app/session/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/app/session/events.ts"],"names":[],"mappings":"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"}
@@ -71,6 +71,9 @@ class EventManager {
71
71
  onPhoneNotifications(handler) {
72
72
  return this.addHandler(types_1.StreamType.PHONE_NOTIFICATION, handler);
73
73
  }
74
+ onPhoneNotificationDismissed(handler) {
75
+ return this.addHandler(types_1.StreamType.PHONE_NOTIFICATION_DISMISSED, handler);
76
+ }
74
77
  onGlassesBattery(handler) {
75
78
  return this.addHandler(types_1.StreamType.GLASSES_BATTERY_UPDATE, handler);
76
79
  }
@@ -4,7 +4,7 @@ import { SettingsManager } from './settings';
4
4
  import { LocationManager } from './modules/location';
5
5
  import { CameraModule } from './modules/camera';
6
6
  import { AudioManager } from './modules/audio';
7
- import { ExtendedStreamType, ButtonPress, HeadPosition, PhoneNotification, TranscriptionData, TranslationData, AppSettings, AppSetting, AppConfig, VpsCoordinates, PhotoTaken, SubscriptionRequest, Capabilities } from '../../types';
7
+ import { ExtendedStreamType, ButtonPress, HeadPosition, PhoneNotification, PhoneNotificationDismissed, TranscriptionData, TranslationData, AppSettings, AppSetting, AppConfig, VpsCoordinates, PhotoTaken, SubscriptionRequest, Capabilities } from '../../types';
8
8
  import { DashboardAPI } from '../../types/dashboard';
9
9
  import { Logger } from 'pino';
10
10
  import { AppServer } from '../server';
@@ -167,6 +167,13 @@ export declare class AppSession {
167
167
  * @deprecated Use session.events.onPhoneNotifications() instead
168
168
  */
169
169
  onPhoneNotifications(handler: (data: PhoneNotification) => void): () => void;
170
+ /**
171
+ * 📱 Listen for phone notification dismissed events
172
+ * @param handler - Function to handle notification dismissal data
173
+ * @returns Cleanup function to remove the handler
174
+ * @deprecated Use session.events.onPhoneNotificationDismissed() instead
175
+ */
176
+ onPhoneNotificationDismissed(handler: (data: PhoneNotificationDismissed) => void): () => void;
170
177
  /**
171
178
  * 📡 Listen for VPS coordinates updates
172
179
  * @param handler - Function to handle VPS coordinates
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/session/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/session/index.ts"],"names":[],"mappings":"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"}
@@ -239,6 +239,15 @@ class AppSession {
239
239
  onPhoneNotifications(handler) {
240
240
  return this.events.onPhoneNotifications(handler);
241
241
  }
242
+ /**
243
+ * 📱 Listen for phone notification dismissed events
244
+ * @param handler - Function to handle notification dismissal data
245
+ * @returns Cleanup function to remove the handler
246
+ * @deprecated Use session.events.onPhoneNotificationDismissed() instead
247
+ */
248
+ onPhoneNotificationDismissed(handler) {
249
+ return this.events.onPhoneNotificationDismissed(handler);
250
+ }
242
251
  /**
243
252
  * 📡 Listen for VPS coordinates updates
244
253
  * @param handler - Function to handle VPS coordinates
@@ -15,7 +15,7 @@
15
15
  * layouts.showReferenceCard('Weather', 'Sunny and 75°F');
16
16
  * ```
17
17
  */
18
- import { DisplayRequest, ViewType } from '../../types';
18
+ import { DisplayRequest, ViewType } from "../../types";
19
19
  export declare class LayoutManager {
20
20
  private packageName;
21
21
  private sendMessage;
@@ -109,21 +109,24 @@ export declare class LayoutManager {
109
109
  durationMs?: number;
110
110
  }): void;
111
111
  /**
112
- * 📇 Shows a bitmap
113
- *
114
- * @param data - base64 encoded bitmap data
115
- * @param options - Optional parameters (view, duration)
116
- *
117
- * @example
118
- * ```typescript
119
- * layouts.showBitmapView(
120
- * yourBase64EncodedBitmapDataString
121
- * );
122
- * ```
123
- */
112
+ * 📇 Shows a bitmap
113
+ *
114
+ * Uses the proven animation system internally for proper L/R eye synchronization.
115
+ * This ensures single bitmap displays work consistently with the same
116
+ * hardware-optimized timing as animations.
117
+ *
118
+ * @param data - hex or base64 encoded bitmap data
119
+ * @param options - Optional parameters (view, duration)
120
+ *
121
+ * @example
122
+ * ```typescript
123
+ * layouts.showBitmapView(
124
+ * yourHexOrBase64EncodedBitmapDataString
125
+ * );
126
+ * ```
127
+ */
124
128
  showBitmapView(data: string, options?: {
125
129
  view?: ViewType;
126
- durationMs?: number;
127
130
  }): void;
128
131
  /**
129
132
  * 📊 Shows a dashboard card with left and right text
@@ -146,5 +149,59 @@ export declare class LayoutManager {
146
149
  view?: ViewType;
147
150
  durationMs?: number;
148
151
  }): void;
152
+ /**
153
+ * 🧹 Clears the display
154
+ *
155
+ * Best for:
156
+ * - Clearing previous content
157
+ * - Resetting display state
158
+ * - Starting fresh
159
+ *
160
+ * @param options - Optional parameters (view)
161
+ *
162
+ * @example
163
+ * ```typescript
164
+ * layouts.clearView();
165
+ * layouts.clearView({ view: ViewType.DASHBOARD });
166
+ * ```
167
+ */
168
+ clearView(options?: {
169
+ view?: ViewType;
170
+ }): void;
171
+ /**
172
+ * 🎬 Shows an animated sequence of bitmap images (iOS-controlled timing)
173
+ *
174
+ * Sends complete animation package to iOS for device-controlled timing.
175
+ * This provides superior performance and synchronization by letting
176
+ * the device control the display timing directly.
177
+ *
178
+ * Best for:
179
+ * - Smooth high-performance animations
180
+ * - Precise timing control
181
+ * - Synchronized left/right display
182
+ * - EvenDemo-quality performance
183
+ *
184
+ * @param bitmapDataArray - Array of bitmap data strings (hex or base64 encoded)
185
+ * @param intervalMs - Time between frames in milliseconds (default: 1650ms)
186
+ * @param repeat - Whether to loop the animation continuously (default: false)
187
+ * @param options - Optional parameters (view)
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * // Device-controlled animation (recommended)
192
+ * const frames = ['hexdata1', 'hexdata2', 'hexdata3'];
193
+ * layouts.showBitmapAnimation(frames, 1650, true);
194
+ *
195
+ * // Single-cycle animation
196
+ * layouts.showBitmapAnimation(loadingFrames, 1650, false);
197
+ * ```
198
+ *
199
+ * @returns Animation controller object with stop() method
200
+ */
201
+ showBitmapAnimation(bitmapDataArray: string[], intervalMs?: number, repeat?: boolean, options?: {
202
+ view?: ViewType;
203
+ }): {
204
+ stop: () => void;
205
+ };
149
206
  }
150
207
  //# sourceMappingURL=layouts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../../src/app/session/layouts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,cAAc,EAOd,QAAQ,EAGT,MAAM,aAAa,CAAC;AAErB,qBAAa,aAAa;IAQtB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IARrB;;;;;OAKG;gBAEO,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI;IAGxD;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAmG1B;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAC;IAuCnD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAcpD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,iBAAiB,CACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAclD;;;;;;;;;;;;KAYC;IACH,cAAc,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAapD;;;;;;;;;;;;;;;;OAgBG;IACH,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;CAarD"}
1
+ {"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../../src/app/session/layouts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,cAAc,EAOd,QAAQ,EAKT,MAAM,aAAa,CAAC;AAErB,qBAAa,aAAa;IAQtB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IARrB;;;;;OAKG;gBAEO,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI;IAGxD;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAoH1B;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAuCpD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAYpD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,iBAAiB,CACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAYpD;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE;IAQ1D;;;;;;;;;;;;;;;;OAgBG;IACH,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAgBpD;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE;IAOvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,mBAAmB,CACjB,eAAe,EAAE,MAAM,EAAE,EACzB,UAAU,GAAE,MAAa,EACzB,MAAM,GAAE,OAAe,EACvB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE,GAC5B;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE;CAiCxB"}
@@ -51,7 +51,7 @@ class LayoutManager {
51
51
  // Layout-specific validations
52
52
  switch (layout.layoutType) {
53
53
  case types_1.LayoutType.TEXT_WALL:
54
- if (typeof layout.text !== 'string') {
54
+ if (typeof layout.text !== "string") {
55
55
  throw new Error("TextWall layout must have a text property");
56
56
  }
57
57
  // Ensure text is not too long (prevent performance issues)
@@ -61,41 +61,45 @@ class LayoutManager {
61
61
  break;
62
62
  case types_1.LayoutType.DOUBLE_TEXT_WALL:
63
63
  const doubleText = layout;
64
- if (typeof doubleText.topText !== 'string') {
64
+ if (typeof doubleText.topText !== "string") {
65
65
  throw new Error("DoubleTextWall layout must have a topText property");
66
66
  }
67
- if (typeof doubleText.bottomText !== 'string') {
67
+ if (typeof doubleText.bottomText !== "string") {
68
68
  throw new Error("DoubleTextWall layout must have a bottomText property");
69
69
  }
70
70
  break;
71
71
  case types_1.LayoutType.REFERENCE_CARD:
72
72
  const refCard = layout;
73
- if (typeof refCard.title !== 'string') {
73
+ if (typeof refCard.title !== "string") {
74
74
  throw new Error("ReferenceCard layout must have a title property");
75
75
  }
76
- if (typeof refCard.text !== 'string') {
76
+ if (typeof refCard.text !== "string") {
77
77
  throw new Error("ReferenceCard layout must have a text property");
78
78
  }
79
79
  break;
80
80
  case types_1.LayoutType.DASHBOARD_CARD:
81
81
  const dashCard = layout;
82
- if (typeof dashCard.leftText !== 'string') {
82
+ if (typeof dashCard.leftText !== "string") {
83
83
  throw new Error("DashboardCard layout must have a leftText property");
84
84
  }
85
- if (typeof dashCard.rightText !== 'string') {
85
+ if (typeof dashCard.rightText !== "string") {
86
86
  throw new Error("DashboardCard layout must have a rightText property");
87
87
  }
88
88
  break;
89
89
  case types_1.LayoutType.BITMAP_VIEW:
90
90
  const bitmapView = layout;
91
- if (typeof bitmapView.data !== 'string') {
91
+ if (typeof bitmapView.data !== "string") {
92
92
  throw new Error("BitmapView layout must have a data property");
93
93
  }
94
94
  // Check if data is too large (prevent OOM errors)
95
- if (bitmapView.data.length > 1000000) { // 1MB limit
95
+ if (bitmapView.data.length > 1000000) {
96
+ // 1MB limit
96
97
  throw new Error("Bitmap data is too large (>1MB), please reduce size");
97
98
  }
98
99
  break;
100
+ case types_1.LayoutType.CLEAR_VIEW:
101
+ // ClearView has no additional validation needed
102
+ break;
99
103
  }
100
104
  // Validate view type
101
105
  if (view !== types_1.ViewType.MAIN && view !== types_1.ViewType.DASHBOARD) {
@@ -104,7 +108,7 @@ class LayoutManager {
104
108
  }
105
109
  // Validate duration if provided
106
110
  if (durationMs !== undefined) {
107
- if (typeof durationMs !== 'number' || durationMs < 0) {
111
+ if (typeof durationMs !== "number" || durationMs < 0) {
108
112
  console.warn(`Invalid duration: ${durationMs}, ignoring`);
109
113
  durationMs = undefined;
110
114
  }
@@ -112,12 +116,12 @@ class LayoutManager {
112
116
  // Create the display request with validated data
113
117
  return {
114
118
  timestamp: new Date(),
115
- sessionId: '', // Will be filled by session
119
+ sessionId: "", // Will be filled by session
116
120
  type: types_1.AppToCloudMessageType.DISPLAY_REQUEST,
117
121
  packageName: this.packageName,
118
122
  view,
119
123
  layout,
120
- durationMs
124
+ durationMs,
121
125
  };
122
126
  }
123
127
  catch (error) {
@@ -151,14 +155,14 @@ class LayoutManager {
151
155
  console.warn("showTextWall called with null/undefined text");
152
156
  }
153
157
  // Ensure text is a string
154
- if (typeof text !== 'string') {
158
+ if (typeof text !== "string") {
155
159
  text = String(text); // Convert to string
156
160
  console.warn("showTextWall: Non-string input converted to string");
157
161
  }
158
162
  // Create layout with validated text
159
163
  const layout = {
160
164
  layoutType: types_1.LayoutType.TEXT_WALL,
161
- text
165
+ text,
162
166
  };
163
167
  // Create and send display event with error handling
164
168
  try {
@@ -200,7 +204,7 @@ class LayoutManager {
200
204
  const layout = {
201
205
  layoutType: types_1.LayoutType.DOUBLE_TEXT_WALL,
202
206
  topText,
203
- bottomText
207
+ bottomText,
204
208
  };
205
209
  this.sendMessage(this.createDisplayEvent(layout, options?.view, options?.durationMs));
206
210
  }
@@ -229,29 +233,33 @@ class LayoutManager {
229
233
  const layout = {
230
234
  layoutType: types_1.LayoutType.REFERENCE_CARD,
231
235
  title,
232
- text
236
+ text,
233
237
  };
234
238
  this.sendMessage(this.createDisplayEvent(layout, options?.view, options?.durationMs));
235
239
  }
236
240
  /**
237
- * 📇 Shows a bitmap
238
- *
239
- * @param data - base64 encoded bitmap data
240
- * @param options - Optional parameters (view, duration)
241
- *
242
- * @example
243
- * ```typescript
244
- * layouts.showBitmapView(
245
- * yourBase64EncodedBitmapDataString
246
- * );
247
- * ```
248
- */
241
+ * 📇 Shows a bitmap
242
+ *
243
+ * Uses the proven animation system internally for proper L/R eye synchronization.
244
+ * This ensures single bitmap displays work consistently with the same
245
+ * hardware-optimized timing as animations.
246
+ *
247
+ * @param data - hex or base64 encoded bitmap data
248
+ * @param options - Optional parameters (view, duration)
249
+ *
250
+ * @example
251
+ * ```typescript
252
+ * layouts.showBitmapView(
253
+ * yourHexOrBase64EncodedBitmapDataString
254
+ * );
255
+ * ```
256
+ */
249
257
  showBitmapView(data, options) {
250
258
  const layout = {
251
259
  layoutType: types_1.LayoutType.BITMAP_VIEW,
252
- data
260
+ data: data,
253
261
  };
254
- this.sendMessage(this.createDisplayEvent(layout, options?.view, options?.durationMs));
262
+ this.sendMessage(this.createDisplayEvent(layout, options?.view));
255
263
  }
256
264
  /**
257
265
  * 📊 Shows a dashboard card with left and right text
@@ -274,9 +282,84 @@ class LayoutManager {
274
282
  const layout = {
275
283
  layoutType: types_1.LayoutType.DASHBOARD_CARD,
276
284
  leftText,
277
- rightText
285
+ rightText,
278
286
  };
279
287
  this.sendMessage(this.createDisplayEvent(layout, options?.view || types_1.ViewType.DASHBOARD, options?.durationMs));
280
288
  }
289
+ /**
290
+ * 🧹 Clears the display
291
+ *
292
+ * Best for:
293
+ * - Clearing previous content
294
+ * - Resetting display state
295
+ * - Starting fresh
296
+ *
297
+ * @param options - Optional parameters (view)
298
+ *
299
+ * @example
300
+ * ```typescript
301
+ * layouts.clearView();
302
+ * layouts.clearView({ view: ViewType.DASHBOARD });
303
+ * ```
304
+ */
305
+ clearView(options) {
306
+ const layout = {
307
+ layoutType: types_1.LayoutType.CLEAR_VIEW,
308
+ };
309
+ this.sendMessage(this.createDisplayEvent(layout, options?.view));
310
+ }
311
+ /**
312
+ * 🎬 Shows an animated sequence of bitmap images (iOS-controlled timing)
313
+ *
314
+ * Sends complete animation package to iOS for device-controlled timing.
315
+ * This provides superior performance and synchronization by letting
316
+ * the device control the display timing directly.
317
+ *
318
+ * Best for:
319
+ * - Smooth high-performance animations
320
+ * - Precise timing control
321
+ * - Synchronized left/right display
322
+ * - EvenDemo-quality performance
323
+ *
324
+ * @param bitmapDataArray - Array of bitmap data strings (hex or base64 encoded)
325
+ * @param intervalMs - Time between frames in milliseconds (default: 1650ms)
326
+ * @param repeat - Whether to loop the animation continuously (default: false)
327
+ * @param options - Optional parameters (view)
328
+ *
329
+ * @example
330
+ * ```typescript
331
+ * // Device-controlled animation (recommended)
332
+ * const frames = ['hexdata1', 'hexdata2', 'hexdata3'];
333
+ * layouts.showBitmapAnimation(frames, 1650, true);
334
+ *
335
+ * // Single-cycle animation
336
+ * layouts.showBitmapAnimation(loadingFrames, 1650, false);
337
+ * ```
338
+ *
339
+ * @returns Animation controller object with stop() method
340
+ */
341
+ showBitmapAnimation(bitmapDataArray, intervalMs = 1650, repeat = false, options) {
342
+ // Validation
343
+ if (!Array.isArray(bitmapDataArray) || bitmapDataArray.length === 0) {
344
+ throw new Error("showBitmapAnimation requires a non-empty array of bitmap data");
345
+ }
346
+ // Send complete animation package to iOS for device-controlled timing
347
+ const layout = {
348
+ layoutType: types_1.LayoutType.BITMAP_ANIMATION,
349
+ frames: bitmapDataArray,
350
+ interval: intervalMs,
351
+ repeat: repeat,
352
+ };
353
+ this.sendMessage(this.createDisplayEvent(layout, options?.view));
354
+ console.log(`🎬 Sent batched animation to iOS: ${bitmapDataArray.length} frames at ${intervalMs}ms${repeat ? " (repeating)" : ""}`);
355
+ // Return controller for compatibility
356
+ return {
357
+ stop: () => {
358
+ // Send stop command to iOS
359
+ this.clearView();
360
+ console.log("🛑 Animation stop requested");
361
+ },
362
+ };
363
+ }
281
364
  }
282
365
  exports.LayoutManager = LayoutManager;
@@ -4,8 +4,8 @@
4
4
  * Audio functionality for App Sessions.
5
5
  * Handles audio playback on connected glasses.
6
6
  */
7
- import { AudioPlayResponse } from '../../../types';
8
- import { Logger } from 'pino';
7
+ import { AudioPlayResponse } from "../../../types";
8
+ import { Logger } from "pino";
9
9
  /**
10
10
  * Options for audio playback
11
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../../../src/app/session/modules/audio.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,iBAAiB,EAGlB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAC,CAAM;IACtB,OAAO,CAAC,MAAM,CAAS;IAEvB,uDAAuD;IACvD,OAAO,CAAC,oBAAoB,CAGvB;IAEL;;;;;;;;OAQG;gBACS,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAYhH;;;;;;;;;;;;;OAaG;IACG,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA0DpE;;;;;;;;OAQG;IACH,SAAS,IAAI,IAAI;IAoBjB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,eAAe,CAAC;IA4C/E;;;;;;;;OAQG;IACH,uBAAuB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IA4B1D;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAO9C;;;OAGG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;;OAGG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAIhC;;;;OAIG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAW9C;;;OAGG;IACH,sBAAsB,IAAI,MAAM;IAmBhC;;;;OAIG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAK3C;;;;OAIG;IACH,iBAAiB,IAAI;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE;CAI/C"}
1
+ {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../../../src/app/session/modules/audio.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,iBAAiB,EAGlB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAC,CAAM;IACtB,OAAO,CAAC,MAAM,CAAS;IAEvB,uDAAuD;IACvD,OAAO,CAAC,oBAAoB,CAMxB;IAEJ;;;;;;;;OAQG;gBAED,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,EAC5B,OAAO,CAAC,EAAE,GAAG,EACb,MAAM,CAAC,EAAE,MAAM;IAajB;;;;;;;;;;;;;OAaG;IACG,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAqEpE;;;;;;;;OAQG;IACH,SAAS,IAAI,IAAI;IAqBjB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,KAAK,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,eAAe,CAAC;IA+C3B;;;;;;;;OAQG;IACH,uBAAuB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAkC1D;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAO9C;;;OAGG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;;OAGG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAIhC;;;;OAIG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAW9C;;;OAGG;IACH,sBAAsB,IAAI,MAAM;IAyBhC;;;;OAIG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAK3C;;;;OAIG;IACH,iBAAiB,IAAI;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE;CAI/C"}
@@ -71,7 +71,7 @@ class AudioManager {
71
71
  try {
72
72
  // Validate input
73
73
  if (!options.audioUrl) {
74
- reject(new Error('audioUrl must be provided'));
74
+ reject("audioUrl must be provided");
75
75
  return;
76
76
  }
77
77
  // Generate unique request ID
@@ -87,7 +87,7 @@ class AudioManager {
87
87
  timestamp: new Date(),
88
88
  audioUrl: options.audioUrl,
89
89
  volume: options.volume ?? 1.0,
90
- stopOtherAudio: options.stopOtherAudio ?? true
90
+ stopOtherAudio: options.stopOtherAudio ?? true,
91
91
  };
92
92
  // Send request to cloud
93
93
  this.send(message);
@@ -97,7 +97,9 @@ class AudioManager {
97
97
  // Use session's resource tracker for automatic cleanup
98
98
  this.session.resources.setTimeout(() => {
99
99
  if (this.pendingAudioRequests.has(requestId)) {
100
- this.pendingAudioRequests.get(requestId).reject(new Error('Audio play request timed out'));
100
+ this.pendingAudioRequests
101
+ .get(requestId)
102
+ .reject("Audio play request timed out");
101
103
  this.pendingAudioRequests.delete(requestId);
102
104
  this.logger.warn({ requestId }, `🔊 Audio play request timed out`);
103
105
  }
@@ -107,7 +109,9 @@ class AudioManager {
107
109
  // Fallback to regular setTimeout if session not available
108
110
  setTimeout(() => {
109
111
  if (this.pendingAudioRequests.has(requestId)) {
110
- this.pendingAudioRequests.get(requestId).reject(new Error('Audio play request timed out'));
112
+ this.pendingAudioRequests
113
+ .get(requestId)
114
+ .reject("Audio play request timed out");
111
115
  this.pendingAudioRequests.delete(requestId);
112
116
  this.logger.warn({ requestId }, `🔊 Audio play request timed out`);
113
117
  }
@@ -116,7 +120,7 @@ class AudioManager {
116
120
  }
117
121
  catch (error) {
118
122
  const errorMessage = error instanceof Error ? error.message : String(error);
119
- reject(new Error(`Failed to play audio: ${errorMessage}`));
123
+ reject(`Failed to play audio: ${errorMessage}`);
120
124
  }
121
125
  });
122
126
  }
@@ -136,7 +140,7 @@ class AudioManager {
136
140
  type: types_1.AppToCloudMessageType.AUDIO_STOP_REQUEST,
137
141
  packageName: this.packageName,
138
142
  sessionId: this.sessionId,
139
- timestamp: new Date()
143
+ timestamp: new Date(),
140
144
  };
141
145
  // Send request to cloud (one-way, no response expected)
142
146
  this.send(message);
@@ -172,24 +176,24 @@ class AudioManager {
172
176
  async speak(text, options = {}) {
173
177
  // Validate input
174
178
  if (!text) {
175
- throw new Error('text must be provided');
179
+ throw new Error("text must be provided");
176
180
  }
177
181
  // Get the HTTPS server URL from the session
178
182
  const baseUrl = this.session?.getHttpsServerUrl?.();
179
183
  if (!baseUrl) {
180
- throw new Error('Cannot determine server URL for TTS endpoint');
184
+ throw new Error("Cannot determine server URL for TTS endpoint");
181
185
  }
182
186
  // Build query parameters for the TTS endpoint
183
187
  const queryParams = new URLSearchParams();
184
- queryParams.append('text', text);
188
+ queryParams.append("text", text);
185
189
  if (options.voice_id) {
186
- queryParams.append('voice_id', options.voice_id);
190
+ queryParams.append("voice_id", options.voice_id);
187
191
  }
188
192
  if (options.model_id) {
189
- queryParams.append('model_id', options.model_id);
193
+ queryParams.append("model_id", options.model_id);
190
194
  }
191
195
  if (options.voice_settings) {
192
- queryParams.append('voice_settings', JSON.stringify(options.voice_settings));
196
+ queryParams.append("voice_settings", JSON.stringify(options.voice_settings));
193
197
  }
194
198
  // Construct the TTS URL
195
199
  const ttsUrl = `${baseUrl}/api/tts?${queryParams.toString()}`;
@@ -197,7 +201,7 @@ class AudioManager {
197
201
  // Use the existing playAudio method to play the TTS audio
198
202
  return this.playAudio({
199
203
  audioUrl: ttsUrl,
200
- volume: options.volume
204
+ volume: options.volume,
201
205
  });
202
206
  }
203
207
  // =====================================
@@ -219,14 +223,14 @@ class AudioManager {
219
223
  pendingRequest.resolve({
220
224
  success: response.success,
221
225
  error: response.error,
222
- duration: response.duration
226
+ duration: response.duration,
223
227
  });
224
228
  // Clean up
225
229
  this.pendingAudioRequests.delete(response.requestId);
226
230
  this.logger.info({
227
231
  requestId: response.requestId,
228
232
  success: response.success,
229
- duration: response.duration
233
+ duration: response.duration,
230
234
  }, `🔊 Audio play response received`);
231
235
  }
232
236
  else {
@@ -269,7 +273,7 @@ class AudioManager {
269
273
  cancelAudioRequest(requestId) {
270
274
  const pendingRequest = this.pendingAudioRequests.get(requestId);
271
275
  if (pendingRequest) {
272
- pendingRequest.reject(new Error('Audio request cancelled'));
276
+ pendingRequest.reject("Audio request cancelled");
273
277
  this.pendingAudioRequests.delete(requestId);
274
278
  this.logger.info({ requestId }, `🔊 Audio request cancelled`);
275
279
  return true;
@@ -283,7 +287,7 @@ class AudioManager {
283
287
  cancelAllAudioRequests() {
284
288
  const count = this.pendingAudioRequests.size;
285
289
  this.pendingAudioRequests.forEach((request, requestId) => {
286
- request.reject(new Error('Audio request cancelled due to cleanup'));
290
+ request.reject("Audio request cancelled due to cleanup");
287
291
  this.logger.debug({ requestId }, `🔊 Audio request cancelled during cleanup`);
288
292
  });
289
293
  this.pendingAudioRequests.clear();