@mentra/sdk 2.1.27 → 2.1.29-beta.1

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 (95) hide show
  1. package/dist/app/session/api-client.d.ts.map +1 -1
  2. package/dist/app/session/dashboard.d.ts +5 -8
  3. package/dist/app/session/dashboard.d.ts.map +1 -1
  4. package/dist/app/session/events.d.ts +10 -4
  5. package/dist/app/session/events.d.ts.map +1 -1
  6. package/dist/app/session/index.d.ts +64 -4
  7. package/dist/app/session/index.d.ts.map +1 -1
  8. package/dist/app/session/modules/audio.d.ts +33 -4
  9. package/dist/app/session/modules/audio.d.ts.map +1 -1
  10. package/dist/app/session/modules/camera-managed-extension.d.ts +2 -3
  11. package/dist/app/session/modules/camera-managed-extension.d.ts.map +1 -1
  12. package/dist/app/session/modules/camera.d.ts +11 -10
  13. package/dist/app/session/modules/camera.d.ts.map +1 -1
  14. package/dist/app/session/modules/led.d.ts +141 -0
  15. package/dist/app/session/modules/led.d.ts.map +1 -0
  16. package/dist/app/session/modules/location.d.ts +1 -2
  17. package/dist/app/session/modules/location.d.ts.map +1 -1
  18. package/dist/app/session/modules/simple-storage.d.ts +22 -1
  19. package/dist/app/session/modules/simple-storage.d.ts.map +1 -1
  20. package/dist/display-utils.d.ts +989 -0
  21. package/dist/display-utils.d.ts.map +1 -0
  22. package/dist/display-utils.js +1197 -0
  23. package/dist/display-utils.js.map +17 -0
  24. package/dist/index.d.ts +7 -7
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +5427 -112
  27. package/dist/index.js.map +45 -0
  28. package/dist/logging/logger.d.ts +1 -1
  29. package/dist/logging/logger.d.ts.map +1 -1
  30. package/dist/types/capabilities.d.ts +3 -0
  31. package/dist/types/capabilities.d.ts.map +1 -1
  32. package/dist/types/index.d.ts +4 -14
  33. package/dist/types/index.d.ts.map +1 -1
  34. package/dist/types/message-types.d.ts +8 -1
  35. package/dist/types/message-types.d.ts.map +1 -1
  36. package/dist/types/messages/app-to-cloud.d.ts +49 -3
  37. package/dist/types/messages/app-to-cloud.d.ts.map +1 -1
  38. package/dist/types/messages/cloud-to-app.d.ts +18 -6
  39. package/dist/types/messages/cloud-to-app.d.ts.map +1 -1
  40. package/dist/types/messages/cloud-to-glasses.d.ts +30 -2
  41. package/dist/types/messages/cloud-to-glasses.d.ts.map +1 -1
  42. package/dist/types/messages/glasses-to-cloud.d.ts +24 -1
  43. package/dist/types/messages/glasses-to-cloud.d.ts.map +1 -1
  44. package/dist/types/rtmp-stream.d.ts +1 -1
  45. package/dist/types/rtmp-stream.d.ts.map +1 -1
  46. package/dist/types/streams.d.ts +31 -2
  47. package/dist/types/streams.d.ts.map +1 -1
  48. package/package.json +34 -11
  49. package/dist/app/index.js +0 -24
  50. package/dist/app/server/index.js +0 -658
  51. package/dist/app/session/api-client.js +0 -101
  52. package/dist/app/session/dashboard.js +0 -149
  53. package/dist/app/session/events.js +0 -315
  54. package/dist/app/session/index.js +0 -1573
  55. package/dist/app/session/layouts.js +0 -372
  56. package/dist/app/session/modules/audio.js +0 -321
  57. package/dist/app/session/modules/camera-managed-extension.js +0 -310
  58. package/dist/app/session/modules/camera.js +0 -607
  59. package/dist/app/session/modules/index.js +0 -19
  60. package/dist/app/session/modules/location.js +0 -61
  61. package/dist/app/session/modules/simple-storage.js +0 -232
  62. package/dist/app/session/settings.js +0 -358
  63. package/dist/app/token/index.js +0 -22
  64. package/dist/app/token/utils.js +0 -144
  65. package/dist/app/webview/index.js +0 -382
  66. package/dist/constants/index.js +0 -16
  67. package/dist/constants/log-messages/color.js +0 -14
  68. package/dist/constants/log-messages/logos.js +0 -48
  69. package/dist/constants/log-messages/updates.js +0 -55
  70. package/dist/constants/log-messages/warning.js +0 -89
  71. package/dist/examples/managed-rtmp-streaming-example.js +0 -158
  72. package/dist/examples/managed-rtmp-streaming-with-restream-example.js +0 -124
  73. package/dist/examples/rtmp-streaming-example.js +0 -102
  74. package/dist/logging/logger.js +0 -79
  75. package/dist/types/capabilities.js +0 -9
  76. package/dist/types/dashboard/index.js +0 -12
  77. package/dist/types/enums.js +0 -75
  78. package/dist/types/index.js +0 -101
  79. package/dist/types/layouts.js +0 -3
  80. package/dist/types/message-types.js +0 -212
  81. package/dist/types/messages/app-to-cloud.js +0 -95
  82. package/dist/types/messages/base.js +0 -3
  83. package/dist/types/messages/cloud-to-app.js +0 -78
  84. package/dist/types/messages/cloud-to-glasses.js +0 -68
  85. package/dist/types/messages/glasses-to-cloud.js +0 -140
  86. package/dist/types/models.js +0 -101
  87. package/dist/types/photo-data.js +0 -2
  88. package/dist/types/rtmp-stream.js +0 -3
  89. package/dist/types/streams.js +0 -306
  90. package/dist/types/token.js +0 -7
  91. package/dist/types/webhooks.js +0 -28
  92. package/dist/utils/animation-utils.js +0 -340
  93. package/dist/utils/bitmap-utils.js +0 -475
  94. package/dist/utils/permissions-utils.js +0 -263
  95. package/dist/utils/resource-tracker.js +0 -153
@@ -0,0 +1,141 @@
1
+ /**
2
+ * 💡 LED Control Module
3
+ *
4
+ * Provides RGB LED control functionality for App Sessions.
5
+ * Controls the RGB LEDs on smart glasses with custom colors and timing patterns.
6
+ */
7
+ import { LedColor } from "../../../types";
8
+ import { Logger } from "pino";
9
+ /**
10
+ * Options for LED control
11
+ */
12
+ export interface LedControlOptions {
13
+ /** LED color */
14
+ color?: LedColor;
15
+ /** LED on duration in milliseconds */
16
+ ontime?: number;
17
+ /** LED off duration in milliseconds */
18
+ offtime?: number;
19
+ /** Number of on/off cycles */
20
+ count?: number;
21
+ }
22
+ /**
23
+ * 💡 LED Control Module Implementation
24
+ *
25
+ * Provides methods for controlling LEDs on smart glasses.
26
+ * Supports both low-level on/off control and higher-level pattern methods.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * // General LED control
31
+ * await session.led.turnOn({ color: 'red', ontime: 1000, count: 1 });
32
+ *
33
+ * // Blink green LED
34
+ * await session.led.blink('green', 500, 500, 5);
35
+ *
36
+ * // Turn off all LEDs
37
+ * await session.led.turnOff();
38
+ * ```
39
+ */
40
+ export declare class LedModule {
41
+ private session;
42
+ private packageName;
43
+ private sessionId;
44
+ private logger;
45
+ /**
46
+ * Create a new LedModule
47
+ *
48
+ * @param session - Reference to the parent AppSession
49
+ * @param packageName - The App package name
50
+ * @param sessionId - The current session ID
51
+ * @param logger - Logger instance for debugging
52
+ */
53
+ constructor(session: any, packageName: string, sessionId: string, logger?: Logger);
54
+ /**
55
+ * 💡 Turn on an LED with specified timing parameters
56
+ *
57
+ * @param options - LED control options (color, timing, count)
58
+ * @returns Promise that resolves immediately after sending the command
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * // Solid red for 2 seconds
63
+ * await session.led.turnOn({ color: 'red', ontime: 2000, count: 1 });
64
+ *
65
+ * // Blink white 3 times
66
+ * await session.led.turnOn({ color: 'white', ontime: 500, offtime: 500, count: 3 });
67
+ * ```
68
+ */
69
+ turnOn(options: LedControlOptions): Promise<void>;
70
+ /**
71
+ * 💡 Turn off all LEDs
72
+ *
73
+ * @returns Promise that resolves immediately after sending the command
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * await session.led.turnOff();
78
+ * ```
79
+ */
80
+ turnOff(): Promise<void>;
81
+ /**
82
+ * 💡 Get available LED capabilities
83
+ *
84
+ * @returns Array of available LED configurations
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * const capabilities = session.led.getCapabilities();
89
+ * console.log('Available LEDs:', capabilities);
90
+ * ```
91
+ */
92
+ getCapabilities(): Array<{
93
+ id: string;
94
+ purpose: string;
95
+ isFullColor: boolean;
96
+ color?: string;
97
+ position?: string;
98
+ }>;
99
+ /**
100
+ * 💡 Blink an LED with specified timing
101
+ *
102
+ * @param color - LED color to use
103
+ * @param ontime - How long LED stays on (ms)
104
+ * @param offtime - How long LED stays off (ms)
105
+ * @param count - Number of blink cycles
106
+ * @returns Promise that resolves immediately after sending the command
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * // Blink red LED 5 times (500ms on, 500ms off)
111
+ * await session.led.blink('red', 500, 500, 5);
112
+ * ```
113
+ */
114
+ blink(color: LedColor, ontime: number, offtime: number, count: number): Promise<void>;
115
+ /**
116
+ * 💡 Solid LED mode - LED stays on continuously for specified duration
117
+ *
118
+ * Creates a solid LED effect with no off time, perfect for continuous illumination.
119
+ *
120
+ * @param color - LED color to use
121
+ * @param duration - How long LED stays on (ms)
122
+ * @returns Promise that resolves when the command is sent
123
+ *
124
+ * @example
125
+ * ```typescript
126
+ * // Solid red LED for 5 seconds
127
+ * await session.led.solid('red', 5000);
128
+ *
129
+ * // Solid white LED for 30 seconds
130
+ * await session.led.solid('white', 30000);
131
+ * ```
132
+ */
133
+ solid(color: LedColor, duration: number): Promise<void>;
134
+ /**
135
+ * Clean up LED module
136
+ *
137
+ * @internal
138
+ */
139
+ cleanup(): void;
140
+ }
141
+ //# sourceMappingURL=led.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"led.d.ts","sourceRoot":"","sources":["../../../../src/app/session/modules/led.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAA8C,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AACpF,OAAO,EAAC,MAAM,EAAC,MAAM,MAAM,CAAA;AAE3B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB;IAChB,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,MAAM,CAAQ;IAEtB;;;;;;;OAOG;gBACS,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAWjF;;;;;;;;;;;;;;OAcG;IACG,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCvD;;;;;;;;;OASG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4B9B;;;;;;;;;;OAUG;IACH,eAAe,IAAI,KAAK,CAAC;QACvB,EAAE,EAAE,MAAM,CAAA;QACV,OAAO,EAAE,MAAM,CAAA;QACf,WAAW,EAAE,OAAO,CAAA;QACpB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAC;IAUF;;;;;;;;;;;;;;OAcG;IACG,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3F;;;;;;;;;;;;;;;;;OAiBG;IACG,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa7D;;;;OAIG;IACH,OAAO,IAAI,IAAI;CAGhB"}
@@ -2,9 +2,8 @@ import { AppSession } from "..";
2
2
  import { LocationUpdate } from "../../../types";
3
3
  export declare class LocationManager {
4
4
  private session;
5
- private send;
6
5
  private lastLocationCleanupHandler;
7
- constructor(session: AppSession, send: (message: any) => void);
6
+ constructor(session: AppSession);
8
7
  subscribeToStream(options: {
9
8
  accuracy: "standard" | "high" | "realtime" | "tenMeters" | "hundredMeters" | "kilometer" | "threeKilometers" | "reduced";
10
9
  }, handler: (data: LocationUpdate) => void): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../../../../src/app/session/modules/location.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAEL,cAAc,EAEf,MAAM,gBAAgB,CAAC;AAExB,qBAAa,eAAe;IAIxB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IAJd,OAAO,CAAC,0BAA0B,CAAwB;gBAGhD,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI;IAI/B,iBAAiB,CACtB,OAAO,EAAE;QACP,QAAQ,EACJ,UAAU,GACV,MAAM,GACN,UAAU,GACV,WAAW,GACX,eAAe,GACf,WAAW,GACX,iBAAiB,GACjB,SAAS,CAAC;KACf,EACD,OAAO,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,GACtC,MAAM,IAAI;IAkBN,qBAAqB,IAAI,IAAI;IAUvB,iBAAiB,CAAC,OAAO,EAAE;QACtC,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,cAAc,CAAC;CA+B5B"}
1
+ {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../../../../src/app/session/modules/location.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,UAAU,EAAC,MAAM,IAAI,CAAA;AAC7B,OAAO,EAAwB,cAAc,EAAwB,MAAM,gBAAgB,CAAA;AAE3F,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,0BAA0B,CAAuB;gBAE7C,OAAO,EAAE,UAAU;IAKxB,iBAAiB,CACtB,OAAO,EAAE;QACP,QAAQ,EACJ,UAAU,GACV,MAAM,GACN,UAAU,GACV,WAAW,GACX,eAAe,GACf,WAAW,GACX,iBAAiB,GACjB,SAAS,CAAA;KACd,EACD,OAAO,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,GACtC,MAAM,IAAI;IAcN,qBAAqB,IAAI,IAAI;IAUvB,iBAAiB,CAAC,OAAO,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,cAAc,CAAC;CA4BrF"}
@@ -1,10 +1,15 @@
1
1
  /**
2
2
  * Simple Storage SDK Module for MentraOS Apps
3
3
  * Provides localStorage-like API with cloud synchronization
4
+ *
5
+ * Mental Model: App server RAM = source of truth, MongoDB = crash recovery backup
6
+ * - User interactions read/write to RAM instantly
7
+ * - Changes are debounced and batched to MongoDB (3s idle / 10s max)
8
+ * - On disconnect, pending writes are flushed automatically
4
9
  */
5
10
  import { AppSession } from "..";
6
11
  /**
7
- * Key-value storage with local caching and cloud sync
12
+ * Key-value storage with local caching and debounced cloud sync
8
13
  * Data is isolated by userId and packageName
9
14
  */
10
15
  export declare class SimpleStorage {
@@ -13,12 +18,28 @@ export declare class SimpleStorage {
13
18
  private userId;
14
19
  private packageName;
15
20
  private baseUrl;
21
+ private pendingWrites;
22
+ private debounceTimer?;
23
+ private maxWaitTimer?;
24
+ private firstWriteTime?;
25
+ private static readonly MAX_VALUE_SIZE;
26
+ private static readonly DEBOUNCE_MS;
27
+ private static readonly MAX_WAIT_MS;
16
28
  constructor(appSession: AppSession);
17
29
  private getBaseUrl;
18
30
  private getAuthHeaders;
19
31
  private fetchStorageFromCloud;
20
32
  get(key: string): Promise<string | undefined>;
21
33
  set(key: string, value: string): Promise<void>;
34
+ /**
35
+ * Schedule flush with debounce (3s idle) and max wait (10s)
36
+ */
37
+ private scheduleFlush;
38
+ /**
39
+ * Flush pending writes immediately
40
+ * Called by: debounce timeout, max wait timeout, disconnect, or explicit flush()
41
+ */
42
+ flush(): Promise<void>;
22
43
  delete(key: string): Promise<boolean>;
23
44
  clear(): Promise<boolean>;
24
45
  keys(): Promise<string[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"simple-storage.d.ts","sourceRoot":"","sources":["../../../../src/app/session/modules/simple-storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAGhC;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAEZ,UAAU,EAAE,UAAU;IAQlC,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,cAAc;YASR,qBAAqB;IA8BtB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAe7C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqCrC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IA6BzB,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAazB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAavB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAarC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAa7C,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAgCtE"}
1
+ {"version":3,"file":"simple-storage.d.ts","sourceRoot":"","sources":["../../../../src/app/session/modules/simple-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAC,UAAU,EAAC,MAAM,IAAI,CAAA;AAc7B;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,OAAO,CAAQ;IAGvB,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,YAAY,CAAC,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAC,CAAQ;IAG/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAU;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAQ;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEhC,UAAU,EAAE,UAAU;IAQlC,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,cAAc;YASR,qBAAqB;IAwBtB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgB7C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B3D;;OAEG;IACH,OAAO,CAAC,aAAa;IA2CrB;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6CtB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsCrC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAuBzB,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAazB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAavB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAarC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAa7C,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CA8BtE"}