@elizaos/plugin-facewear 2.0.3-beta.5 → 2.0.3-beta.7

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 (191) hide show
  1. package/dist/actions/display-text.d.ts +4 -0
  2. package/dist/actions/display-text.d.ts.map +1 -0
  3. package/dist/actions/display-text.js +90 -0
  4. package/dist/actions/display-text.js.map +1 -0
  5. package/dist/actions/facewear-connect.d.ts +3 -0
  6. package/dist/actions/facewear-connect.d.ts.map +1 -0
  7. package/dist/actions/facewear-connect.js +70 -0
  8. package/dist/actions/facewear-connect.js.map +1 -0
  9. package/dist/actions/facewear-control.d.ts +4 -0
  10. package/dist/actions/facewear-control.d.ts.map +1 -0
  11. package/dist/actions/facewear-control.js +627 -0
  12. package/dist/actions/facewear-control.js.map +1 -0
  13. package/dist/actions/facewear-debug.d.ts +3 -0
  14. package/dist/actions/facewear-debug.d.ts.map +1 -0
  15. package/dist/actions/facewear-debug.js +62 -0
  16. package/dist/actions/facewear-debug.js.map +1 -0
  17. package/dist/actions/facewear-status.d.ts +4 -0
  18. package/dist/actions/facewear-status.d.ts.map +1 -0
  19. package/dist/actions/facewear-status.js +66 -0
  20. package/dist/actions/facewear-status.js.map +1 -0
  21. package/dist/actions/microphone.d.ts +4 -0
  22. package/dist/actions/microphone.d.ts.map +1 -0
  23. package/dist/actions/microphone.js +63 -0
  24. package/dist/actions/microphone.js.map +1 -0
  25. package/dist/actions/view-actions.d.ts +23 -0
  26. package/dist/actions/view-actions.d.ts.map +1 -0
  27. package/dist/actions/view-actions.js +314 -0
  28. package/dist/actions/view-actions.js.map +1 -0
  29. package/dist/actions/vision-query.d.ts +4 -0
  30. package/dist/actions/vision-query.d.ts.map +1 -0
  31. package/dist/actions/vision-query.js +41 -0
  32. package/dist/actions/vision-query.js.map +1 -0
  33. package/dist/actions/xr-view-actions.d.ts +14 -0
  34. package/dist/actions/xr-view-actions.d.ts.map +1 -0
  35. package/dist/actions/xr-view-actions.js +29 -0
  36. package/dist/actions/xr-view-actions.js.map +1 -0
  37. package/dist/components/FacewearSpatialView.d.ts +50 -0
  38. package/dist/components/FacewearSpatialView.d.ts.map +1 -0
  39. package/dist/components/FacewearSpatialView.js +129 -0
  40. package/dist/components/FacewearSpatialView.js.map +1 -0
  41. package/dist/components/FacewearView.d.ts +17 -0
  42. package/dist/components/FacewearView.d.ts.map +1 -0
  43. package/dist/components/FacewearView.js +88 -0
  44. package/dist/components/FacewearView.js.map +1 -0
  45. package/dist/components/SmartglassesPanelView.d.ts +22 -0
  46. package/dist/components/SmartglassesPanelView.d.ts.map +1 -0
  47. package/dist/components/SmartglassesPanelView.js +140 -0
  48. package/dist/components/SmartglassesPanelView.js.map +1 -0
  49. package/dist/components/SmartglassesSpatialView.d.ts +46 -0
  50. package/dist/components/SmartglassesSpatialView.d.ts.map +1 -0
  51. package/dist/components/SmartglassesSpatialView.js +240 -0
  52. package/dist/components/SmartglassesSpatialView.js.map +1 -0
  53. package/dist/components/facewear-profiles.d.ts +27 -0
  54. package/dist/components/facewear-profiles.d.ts.map +1 -0
  55. package/dist/components/facewear-profiles.js +40 -0
  56. package/dist/components/facewear-profiles.js.map +1 -0
  57. package/dist/devices/apple-vision-pro.d.ts +7 -0
  58. package/dist/devices/apple-vision-pro.d.ts.map +1 -0
  59. package/dist/devices/apple-vision-pro.js +21 -0
  60. package/dist/devices/apple-vision-pro.js.map +1 -0
  61. package/dist/devices/even-realities.d.ts +7 -0
  62. package/dist/devices/even-realities.d.ts.map +1 -0
  63. package/dist/devices/even-realities.js +13 -0
  64. package/dist/devices/even-realities.js.map +1 -0
  65. package/dist/devices/meta-quest.d.ts +5 -0
  66. package/dist/devices/meta-quest.d.ts.map +1 -0
  67. package/dist/devices/meta-quest.js +21 -0
  68. package/dist/devices/meta-quest.js.map +1 -0
  69. package/dist/devices/registry.d.ts +19 -0
  70. package/dist/devices/registry.d.ts.map +1 -0
  71. package/dist/devices/registry.js +96 -0
  72. package/dist/devices/registry.js.map +1 -0
  73. package/dist/devices/xreal.d.ts +7 -0
  74. package/dist/devices/xreal.d.ts.map +1 -0
  75. package/dist/devices/xreal.js +19 -0
  76. package/dist/devices/xreal.js.map +1 -0
  77. package/dist/index.d.ts +28 -0
  78. package/dist/index.d.ts.map +1 -0
  79. package/dist/index.js +260 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/protocol/smartglasses.d.ts +306 -0
  82. package/dist/protocol/smartglasses.d.ts.map +1 -0
  83. package/dist/protocol/smartglasses.js +1485 -0
  84. package/dist/protocol/smartglasses.js.map +1 -0
  85. package/dist/protocol/xr.d.ts +137 -0
  86. package/dist/protocol/xr.d.ts.map +1 -0
  87. package/dist/protocol/xr.js +18 -0
  88. package/dist/protocol/xr.js.map +1 -0
  89. package/dist/providers/facewear-context.d.ts +3 -0
  90. package/dist/providers/facewear-context.d.ts.map +1 -0
  91. package/dist/providers/facewear-context.js +59 -0
  92. package/dist/providers/facewear-context.js.map +1 -0
  93. package/dist/providers/smartglasses-status.d.ts +3 -0
  94. package/dist/providers/smartglasses-status.d.ts.map +1 -0
  95. package/dist/providers/smartglasses-status.js +33 -0
  96. package/dist/providers/smartglasses-status.js.map +1 -0
  97. package/dist/register-terminal-view.d.ts +21 -0
  98. package/dist/register-terminal-view.d.ts.map +1 -0
  99. package/dist/register-terminal-view.js +70 -0
  100. package/dist/register-terminal-view.js.map +1 -0
  101. package/dist/register.d.ts +8 -0
  102. package/dist/register.d.ts.map +1 -0
  103. package/dist/register.js +116 -0
  104. package/dist/register.js.map +1 -0
  105. package/dist/routes/connect.d.ts +3 -0
  106. package/dist/routes/connect.d.ts.map +1 -0
  107. package/dist/routes/connect.js +86 -0
  108. package/dist/routes/connect.js.map +1 -0
  109. package/dist/routes/device-config.d.ts +5 -0
  110. package/dist/routes/device-config.d.ts.map +1 -0
  111. package/dist/routes/device-config.js +56 -0
  112. package/dist/routes/device-config.js.map +1 -0
  113. package/dist/routes/simulator-route.d.ts +8 -0
  114. package/dist/routes/simulator-route.d.ts.map +1 -0
  115. package/dist/routes/simulator-route.js +32 -0
  116. package/dist/routes/simulator-route.js.map +1 -0
  117. package/dist/routes/status.d.ts +3 -0
  118. package/dist/routes/status.d.ts.map +1 -0
  119. package/dist/routes/status.js +34 -0
  120. package/dist/routes/status.js.map +1 -0
  121. package/dist/routes/view-host.d.ts +24 -0
  122. package/dist/routes/view-host.d.ts.map +1 -0
  123. package/dist/routes/view-host.js +339 -0
  124. package/dist/routes/view-host.js.map +1 -0
  125. package/dist/routes/views.d.ts +8 -0
  126. package/dist/routes/views.d.ts.map +1 -0
  127. package/dist/routes/views.js +31 -0
  128. package/dist/routes/views.js.map +1 -0
  129. package/dist/services/audio-pipeline.d.ts +20 -0
  130. package/dist/services/audio-pipeline.d.ts.map +1 -0
  131. package/dist/services/audio-pipeline.js +87 -0
  132. package/dist/services/audio-pipeline.js.map +1 -0
  133. package/dist/services/facewear-service.d.ts +26 -0
  134. package/dist/services/facewear-service.d.ts.map +1 -0
  135. package/dist/services/facewear-service.js +45 -0
  136. package/dist/services/facewear-service.js.map +1 -0
  137. package/dist/services/smartglasses-service.d.ts +244 -0
  138. package/dist/services/smartglasses-service.d.ts.map +1 -0
  139. package/dist/services/smartglasses-service.js +821 -0
  140. package/dist/services/smartglasses-service.js.map +1 -0
  141. package/dist/services/vision-pipeline.d.ts +16 -0
  142. package/dist/services/vision-pipeline.d.ts.map +1 -0
  143. package/dist/services/vision-pipeline.js +39 -0
  144. package/dist/services/vision-pipeline.js.map +1 -0
  145. package/dist/services/xr-session-service.d.ts +54 -0
  146. package/dist/services/xr-session-service.d.ts.map +1 -0
  147. package/dist/services/xr-session-service.js +345 -0
  148. package/dist/services/xr-session-service.js.map +1 -0
  149. package/dist/status-format.d.ts +15 -0
  150. package/dist/status-format.d.ts.map +1 -0
  151. package/dist/status-format.js +89 -0
  152. package/dist/status-format.js.map +1 -0
  153. package/dist/transport/even-bridge.d.ts +69 -0
  154. package/dist/transport/even-bridge.d.ts.map +1 -0
  155. package/dist/transport/even-bridge.js +510 -0
  156. package/dist/transport/even-bridge.js.map +1 -0
  157. package/dist/transport/mock.d.ts +42 -0
  158. package/dist/transport/mock.d.ts.map +1 -0
  159. package/dist/transport/mock.js +124 -0
  160. package/dist/transport/mock.js.map +1 -0
  161. package/dist/transport/noble.d.ts +62 -0
  162. package/dist/transport/noble.d.ts.map +1 -0
  163. package/dist/transport/noble.js +256 -0
  164. package/dist/transport/noble.js.map +1 -0
  165. package/dist/transport/types.d.ts +36 -0
  166. package/dist/transport/types.d.ts.map +1 -0
  167. package/dist/transport/types.js +1 -0
  168. package/dist/transport/types.js.map +1 -0
  169. package/dist/transport/web-bluetooth.d.ts +58 -0
  170. package/dist/transport/web-bluetooth.d.ts.map +1 -0
  171. package/dist/transport/web-bluetooth.js +164 -0
  172. package/dist/transport/web-bluetooth.js.map +1 -0
  173. package/dist/ui/FacewearAppView.d.ts +4 -0
  174. package/dist/ui/FacewearAppView.d.ts.map +1 -0
  175. package/dist/ui/FacewearAppView.js +257 -0
  176. package/dist/ui/FacewearAppView.js.map +1 -0
  177. package/dist/ui/SmartglassesView.d.ts +10 -0
  178. package/dist/ui/SmartglassesView.d.ts.map +1 -0
  179. package/dist/ui/SmartglassesView.helpers.d.ts +104 -0
  180. package/dist/ui/SmartglassesView.helpers.d.ts.map +1 -0
  181. package/dist/ui/SmartglassesView.helpers.js +261 -0
  182. package/dist/ui/SmartglassesView.helpers.js.map +1 -0
  183. package/dist/ui/SmartglassesView.js +1189 -0
  184. package/dist/ui/SmartglassesView.js.map +1 -0
  185. package/dist/ui/facewear-view-bundle.d.ts +5 -0
  186. package/dist/ui/facewear-view-bundle.d.ts.map +1 -0
  187. package/dist/ui/facewear-view-bundle.js +17 -0
  188. package/dist/ui/facewear-view-bundle.js.map +1 -0
  189. package/dist/views/bundle.js +2950 -0
  190. package/dist/views/bundle.js.map +1 -0
  191. package/package.json +5 -5
package/dist/index.js ADDED
@@ -0,0 +1,260 @@
1
+ import { displayFacewearTextAction } from "./actions/display-text.js";
2
+ import { facewearConnectAction } from "./actions/facewear-connect.js";
3
+ import { facewearControlAction } from "./actions/facewear-control.js";
4
+ import { facewearDebugAction } from "./actions/facewear-debug.js";
5
+ import { facewearStatusAction } from "./actions/facewear-status.js";
6
+ import { facewearMicrophoneAction } from "./actions/microphone.js";
7
+ import {
8
+ facewearCloseViewAction,
9
+ facewearListViewsAction,
10
+ facewearOpenViewAction,
11
+ facewearResizeViewAction,
12
+ facewearSwitchViewAction
13
+ } from "./actions/view-actions.js";
14
+ import { facewearQueryVisionAction } from "./actions/vision-query.js";
15
+ import { facewearContextProvider } from "./providers/facewear-context.js";
16
+ import { smartglassesStatusProvider } from "./providers/smartglasses-status.js";
17
+ import { connectRoute } from "./routes/connect.js";
18
+ import {
19
+ facewearDeviceRoute,
20
+ facewearDevicesRoute,
21
+ facewearStatusRoute
22
+ } from "./routes/device-config.js";
23
+ import { simulatorRoute } from "./routes/simulator-route.js";
24
+ import { statusRoute } from "./routes/status.js";
25
+ import { viewHostRoute } from "./routes/view-host.js";
26
+ import { viewsRoute } from "./routes/views.js";
27
+ import { FacewearService } from "./services/facewear-service.js";
28
+ import { SmartglassesService } from "./services/smartglasses-service.js";
29
+ import { XRSessionService } from "./services/xr-session-service.js";
30
+ const facewearPlugin = {
31
+ name: "@elizaos/plugin-facewear",
32
+ description: "Unified facewear plugin \u2014 Meta Quest 3, XReal, Even Realities G1/G2, Apple Vision Pro. WebXR streaming, BLE smartglasses, view panels, device management.",
33
+ services: [FacewearService, XRSessionService, SmartglassesService],
34
+ actions: [
35
+ facewearConnectAction,
36
+ facewearDebugAction,
37
+ facewearControlAction,
38
+ facewearStatusAction,
39
+ displayFacewearTextAction,
40
+ facewearMicrophoneAction,
41
+ facewearOpenViewAction,
42
+ facewearCloseViewAction,
43
+ facewearSwitchViewAction,
44
+ facewearListViewsAction,
45
+ facewearResizeViewAction,
46
+ facewearQueryVisionAction
47
+ ],
48
+ providers: [facewearContextProvider, smartglassesStatusProvider],
49
+ routes: [
50
+ statusRoute,
51
+ connectRoute,
52
+ viewsRoute,
53
+ viewHostRoute,
54
+ simulatorRoute,
55
+ facewearDevicesRoute,
56
+ facewearDeviceRoute,
57
+ facewearStatusRoute
58
+ ],
59
+ views: [
60
+ // ONE declaration → GUI + XR + TUI, all drawn from the single
61
+ // FacewearSpatialView source (via the FacewearView data wrapper).
62
+ // `modalities` is a plain literal here (index.ts is not in the view bundle),
63
+ // so no brand-new `@elizaos/core` runtime export reaches the bundle build.
64
+ {
65
+ id: "facewear",
66
+ path: "/apps/facewear",
67
+ label: "Facewear",
68
+ description: "Manage all connected XR devices and smartglasses \u2014 Meta Quest, XReal, Even Realities, Apple Vision Pro.",
69
+ icon: "Glasses",
70
+ heroImagePath: "assets/hero-facewear.png",
71
+ modalities: ["gui", "xr", "tui"],
72
+ bundlePath: "dist/views/bundle.js",
73
+ componentExport: "FacewearView",
74
+ tags: ["facewear", "xr", "smartglasses", "wearable"],
75
+ visibleInManager: true,
76
+ desktopTabEnabled: true,
77
+ capabilities: [
78
+ {
79
+ id: "connect-device",
80
+ description: "Connect to any supported facewear device."
81
+ },
82
+ {
83
+ id: "manage-views",
84
+ description: "Open and manage XR view panels on headsets."
85
+ },
86
+ {
87
+ id: "device-diagnostics",
88
+ description: "Run hardware diagnostics on connected devices."
89
+ },
90
+ {
91
+ id: "emulator",
92
+ description: "Launch the device emulator for any supported platform."
93
+ }
94
+ ]
95
+ },
96
+ // ONE declaration → GUI + XR + TUI, all drawn from the single
97
+ // SmartglassesSpatialView source (via the SmartglassesPanelView wrapper).
98
+ {
99
+ id: "smartglasses",
100
+ path: "/apps/smartglasses",
101
+ label: "Smartglasses",
102
+ description: "Pair, test, configure, and export diagnostics for a complete Even Realities headset.",
103
+ icon: "Glasses",
104
+ heroImagePath: "assets/hero-smartglasses.png",
105
+ modalities: ["gui", "xr", "tui"],
106
+ bundlePath: "dist/views/bundle.js",
107
+ componentExport: "SmartglassesPanelView",
108
+ tags: [
109
+ "facewear",
110
+ "smartglasses",
111
+ "wearable",
112
+ "bluetooth",
113
+ "wifi",
114
+ "hardware",
115
+ "even-realities"
116
+ ],
117
+ visibleInManager: true,
118
+ desktopTabEnabled: true,
119
+ capabilities: [
120
+ {
121
+ id: "connect-headset",
122
+ description: "Guide the user through whole-headset pairing and connection."
123
+ },
124
+ {
125
+ id: "run-hardware-check",
126
+ description: "Exercise display, serial, microphone, and settings paths and build a diagnostics report."
127
+ },
128
+ {
129
+ id: "guided-side-tap-audio-validation",
130
+ description: "Guide single-tap microphone enable, speech audio, and double-tap microphone disable validation."
131
+ },
132
+ {
133
+ id: "configure-wifi",
134
+ description: "Scan and configure headset Wi-Fi when a native bridge exposes Wi-Fi APIs."
135
+ }
136
+ ]
137
+ }
138
+ ],
139
+ app: {
140
+ navTabs: [
141
+ {
142
+ id: "facewear",
143
+ label: "Facewear",
144
+ icon: "Glasses",
145
+ path: "/apps/facewear",
146
+ componentExport: "@elizaos/plugin-facewear#FacewearView"
147
+ },
148
+ {
149
+ id: "smartglasses",
150
+ label: "Smartglasses",
151
+ icon: "Glasses",
152
+ path: "/apps/smartglasses",
153
+ componentExport: "@elizaos/plugin-facewear#SmartglassesPanelView"
154
+ }
155
+ ]
156
+ },
157
+ async dispose(runtime) {
158
+ await runtime.getService(FacewearService.serviceType)?.stop();
159
+ }
160
+ };
161
+ var index_default = facewearPlugin;
162
+ const smartglassesPlugin = facewearPlugin;
163
+ import { displayFacewearTextAction as displayFacewearTextAction2 } from "./actions/display-text.js";
164
+ import { facewearControlAction as facewearControlAction2 } from "./actions/facewear-control.js";
165
+ import { facewearStatusAction as facewearStatusAction2 } from "./actions/facewear-status.js";
166
+ import { facewearMicrophoneAction as facewearMicrophoneAction2 } from "./actions/microphone.js";
167
+ import { FacewearView } from "./components/FacewearView.js";
168
+ import { SmartglassesPanelView } from "./components/SmartglassesPanelView.js";
169
+ import {
170
+ DEVICE_REGISTRY,
171
+ getAllDeviceProfiles,
172
+ getDeviceProfile
173
+ } from "./devices/registry.js";
174
+ export * from "./protocol/smartglasses.js";
175
+ import { smartglassesStatusProvider as smartglassesStatusProvider2 } from "./providers/smartglasses-status.js";
176
+ import { AudioPipeline } from "./services/audio-pipeline.js";
177
+ import {
178
+ FACEWEAR_SERVICE_TYPE,
179
+ FacewearService as FacewearService2
180
+ } from "./services/facewear-service.js";
181
+ import {
182
+ FACEWEAR_AUTO_INIT_SETTING,
183
+ FACEWEAR_INIT_MODE_SETTING,
184
+ FACEWEAR_SCAN_TIMEOUT_SETTING,
185
+ FACEWEAR_SMARTGLASSES_TRANSPORT_SETTING,
186
+ getSmartglassesService,
187
+ SMARTGLASSES_AUDIO_EVENT,
188
+ SMARTGLASSES_AUTO_INIT_SETTING,
189
+ SMARTGLASSES_EVENT,
190
+ SMARTGLASSES_INIT_MODE_SETTING,
191
+ SMARTGLASSES_SCAN_TIMEOUT_SETTING,
192
+ SMARTGLASSES_SERVICE_NAME,
193
+ SMARTGLASSES_TRANSCRIPT_EVENT,
194
+ SMARTGLASSES_TRANSPORT_SETTING,
195
+ SmartglassesService as SmartglassesService2,
196
+ setSmartglassesAudioDecoderForRuntime,
197
+ setSmartglassesTransportForRuntime
198
+ } from "./services/smartglasses-service.js";
199
+ import { VisionPipeline } from "./services/vision-pipeline.js";
200
+ import {
201
+ XR_SERVICE_TYPE,
202
+ XR_WS_PORT_DEFAULT,
203
+ XRSessionService as XRSessionService2
204
+ } from "./services/xr-session-service.js";
205
+ import {
206
+ EvenBridgeTransport,
207
+ getGlobalEvenBridgeTransport
208
+ } from "./transport/even-bridge.js";
209
+ import { MockSmartglassesTransport } from "./transport/mock.js";
210
+ import { getNobleG1Transport, NobleG1Transport } from "./transport/noble.js";
211
+ import {
212
+ getWebBluetoothG1Transport,
213
+ WebBluetoothG1Transport
214
+ } from "./transport/web-bluetooth.js";
215
+ export {
216
+ AudioPipeline,
217
+ DEVICE_REGISTRY,
218
+ EvenBridgeTransport,
219
+ FACEWEAR_AUTO_INIT_SETTING,
220
+ FACEWEAR_INIT_MODE_SETTING,
221
+ FACEWEAR_SCAN_TIMEOUT_SETTING,
222
+ FACEWEAR_SERVICE_TYPE,
223
+ FACEWEAR_SMARTGLASSES_TRANSPORT_SETTING,
224
+ FacewearService2 as FacewearService,
225
+ FacewearView,
226
+ MockSmartglassesTransport,
227
+ NobleG1Transport,
228
+ SMARTGLASSES_AUDIO_EVENT,
229
+ SMARTGLASSES_AUTO_INIT_SETTING,
230
+ SMARTGLASSES_EVENT,
231
+ SMARTGLASSES_INIT_MODE_SETTING,
232
+ SMARTGLASSES_SCAN_TIMEOUT_SETTING,
233
+ SMARTGLASSES_SERVICE_NAME,
234
+ SMARTGLASSES_TRANSCRIPT_EVENT,
235
+ SMARTGLASSES_TRANSPORT_SETTING,
236
+ SmartglassesPanelView,
237
+ SmartglassesService2 as SmartglassesService,
238
+ VisionPipeline,
239
+ WebBluetoothG1Transport,
240
+ XRSessionService2 as XRSessionService,
241
+ XR_SERVICE_TYPE,
242
+ XR_WS_PORT_DEFAULT,
243
+ index_default as default,
244
+ displayFacewearTextAction2 as displaySmartglassesTextAction,
245
+ facewearPlugin,
246
+ getAllDeviceProfiles,
247
+ getDeviceProfile,
248
+ getGlobalEvenBridgeTransport,
249
+ getNobleG1Transport,
250
+ getSmartglassesService,
251
+ getWebBluetoothG1Transport,
252
+ setSmartglassesAudioDecoderForRuntime,
253
+ setSmartglassesTransportForRuntime,
254
+ facewearControlAction2 as smartglassesControlAction,
255
+ facewearMicrophoneAction2 as smartglassesMicrophoneAction,
256
+ smartglassesPlugin,
257
+ facewearStatusAction2 as smartglassesStatusAction,
258
+ smartglassesStatusProvider2 as smartglassesStatusProvider
259
+ };
260
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { IAgentRuntime, Plugin } from \"@elizaos/core\";\nimport { displayFacewearTextAction } from \"./actions/display-text.js\";\nimport { facewearConnectAction } from \"./actions/facewear-connect.js\";\nimport { facewearControlAction } from \"./actions/facewear-control.js\";\nimport { facewearDebugAction } from \"./actions/facewear-debug.js\";\nimport { facewearStatusAction } from \"./actions/facewear-status.js\";\nimport { facewearMicrophoneAction } from \"./actions/microphone.js\";\nimport {\n facewearCloseViewAction,\n facewearListViewsAction,\n facewearOpenViewAction,\n facewearResizeViewAction,\n facewearSwitchViewAction,\n} from \"./actions/view-actions.js\";\nimport { facewearQueryVisionAction } from \"./actions/vision-query.js\";\nimport { facewearContextProvider } from \"./providers/facewear-context.js\";\nimport { smartglassesStatusProvider } from \"./providers/smartglasses-status.js\";\nimport { connectRoute } from \"./routes/connect.js\";\nimport {\n facewearDeviceRoute,\n facewearDevicesRoute,\n facewearStatusRoute,\n} from \"./routes/device-config.js\";\nimport { simulatorRoute } from \"./routes/simulator-route.js\";\nimport { statusRoute } from \"./routes/status.js\";\nimport { viewHostRoute } from \"./routes/view-host.js\";\nimport { viewsRoute } from \"./routes/views.js\";\nimport { FacewearService } from \"./services/facewear-service.js\";\nimport { SmartglassesService } from \"./services/smartglasses-service.js\";\nimport { XRSessionService } from \"./services/xr-session-service.js\";\n\nexport const facewearPlugin: Plugin = {\n name: \"@elizaos/plugin-facewear\",\n description:\n \"Unified facewear plugin — Meta Quest 3, XReal, Even Realities G1/G2, Apple Vision Pro. WebXR streaming, BLE smartglasses, view panels, device management.\",\n\n services: [FacewearService, XRSessionService, SmartglassesService],\n actions: [\n facewearConnectAction,\n facewearDebugAction,\n facewearControlAction,\n facewearStatusAction,\n displayFacewearTextAction,\n facewearMicrophoneAction,\n facewearOpenViewAction,\n facewearCloseViewAction,\n facewearSwitchViewAction,\n facewearListViewsAction,\n facewearResizeViewAction,\n facewearQueryVisionAction,\n ],\n providers: [facewearContextProvider, smartglassesStatusProvider],\n routes: [\n statusRoute,\n connectRoute,\n viewsRoute,\n viewHostRoute,\n simulatorRoute,\n facewearDevicesRoute,\n facewearDeviceRoute,\n facewearStatusRoute,\n ],\n\n views: [\n // ONE declaration → GUI + XR + TUI, all drawn from the single\n // FacewearSpatialView source (via the FacewearView data wrapper).\n // `modalities` is a plain literal here (index.ts is not in the view bundle),\n // so no brand-new `@elizaos/core` runtime export reaches the bundle build.\n {\n id: \"facewear\",\n path: \"/apps/facewear\",\n label: \"Facewear\",\n description:\n \"Manage all connected XR devices and smartglasses — Meta Quest, XReal, Even Realities, Apple Vision Pro.\",\n icon: \"Glasses\",\n heroImagePath: \"assets/hero-facewear.png\",\n modalities: [\"gui\", \"xr\", \"tui\"],\n bundlePath: \"dist/views/bundle.js\",\n componentExport: \"FacewearView\",\n tags: [\"facewear\", \"xr\", \"smartglasses\", \"wearable\"],\n visibleInManager: true,\n desktopTabEnabled: true,\n capabilities: [\n {\n id: \"connect-device\",\n description: \"Connect to any supported facewear device.\",\n },\n {\n id: \"manage-views\",\n description: \"Open and manage XR view panels on headsets.\",\n },\n {\n id: \"device-diagnostics\",\n description: \"Run hardware diagnostics on connected devices.\",\n },\n {\n id: \"emulator\",\n description: \"Launch the device emulator for any supported platform.\",\n },\n ],\n },\n // ONE declaration → GUI + XR + TUI, all drawn from the single\n // SmartglassesSpatialView source (via the SmartglassesPanelView wrapper).\n {\n id: \"smartglasses\",\n path: \"/apps/smartglasses\",\n label: \"Smartglasses\",\n description:\n \"Pair, test, configure, and export diagnostics for a complete Even Realities headset.\",\n icon: \"Glasses\",\n heroImagePath: \"assets/hero-smartglasses.png\",\n modalities: [\"gui\", \"xr\", \"tui\"],\n bundlePath: \"dist/views/bundle.js\",\n componentExport: \"SmartglassesPanelView\",\n tags: [\n \"facewear\",\n \"smartglasses\",\n \"wearable\",\n \"bluetooth\",\n \"wifi\",\n \"hardware\",\n \"even-realities\",\n ],\n visibleInManager: true,\n desktopTabEnabled: true,\n capabilities: [\n {\n id: \"connect-headset\",\n description:\n \"Guide the user through whole-headset pairing and connection.\",\n },\n {\n id: \"run-hardware-check\",\n description:\n \"Exercise display, serial, microphone, and settings paths and build a diagnostics report.\",\n },\n {\n id: \"guided-side-tap-audio-validation\",\n description:\n \"Guide single-tap microphone enable, speech audio, and double-tap microphone disable validation.\",\n },\n {\n id: \"configure-wifi\",\n description:\n \"Scan and configure headset Wi-Fi when a native bridge exposes Wi-Fi APIs.\",\n },\n ],\n },\n ],\n\n app: {\n navTabs: [\n {\n id: \"facewear\",\n label: \"Facewear\",\n icon: \"Glasses\",\n path: \"/apps/facewear\",\n componentExport: \"@elizaos/plugin-facewear#FacewearView\",\n },\n {\n id: \"smartglasses\",\n label: \"Smartglasses\",\n icon: \"Glasses\",\n path: \"/apps/smartglasses\",\n componentExport: \"@elizaos/plugin-facewear#SmartglassesPanelView\",\n },\n ],\n },\n\n async dispose(runtime: IAgentRuntime) {\n await runtime\n .getService<FacewearService>(FacewearService.serviceType)\n ?.stop();\n },\n};\n\nexport default facewearPlugin;\nexport const smartglassesPlugin = facewearPlugin;\n\nexport { displayFacewearTextAction as displaySmartglassesTextAction } from \"./actions/display-text.js\";\n// Re-exports for backward compatibility\nexport { facewearControlAction as smartglassesControlAction } from \"./actions/facewear-control.js\";\nexport { facewearStatusAction as smartglassesStatusAction } from \"./actions/facewear-status.js\";\nexport { facewearMicrophoneAction as smartglassesMicrophoneAction } from \"./actions/microphone.js\";\n// Tri-modal view wrappers — the gui/xr/tui surfaces for the two own views. The\n// manifest declares these as the `componentExport` (bundle) + navTab targets.\nexport { FacewearView } from \"./components/FacewearView.js\";\nexport { SmartglassesPanelView } from \"./components/SmartglassesPanelView.js\";\nexport type {\n FacewearDeviceProfile,\n FacewearDeviceType,\n} from \"./devices/registry.js\";\nexport {\n DEVICE_REGISTRY,\n getAllDeviceProfiles,\n getDeviceProfile,\n} from \"./devices/registry.js\";\nexport * from \"./protocol/smartglasses.js\";\nexport type * from \"./protocol/xr.js\";\nexport { smartglassesStatusProvider } from \"./providers/smartglasses-status.js\";\nexport { AudioPipeline } from \"./services/audio-pipeline.js\";\nexport {\n FACEWEAR_SERVICE_TYPE,\n FacewearService,\n} from \"./services/facewear-service.js\";\nexport type {\n SmartglassesAudioDecoder,\n SmartglassesDisplayMode,\n SmartglassesRsvpOptions,\n SmartglassesStatus,\n SmartglassesWriteTarget,\n} from \"./services/smartglasses-service.js\";\nexport {\n FACEWEAR_AUTO_INIT_SETTING,\n FACEWEAR_INIT_MODE_SETTING,\n FACEWEAR_SCAN_TIMEOUT_SETTING,\n FACEWEAR_SMARTGLASSES_TRANSPORT_SETTING,\n getSmartglassesService,\n SMARTGLASSES_AUDIO_EVENT,\n SMARTGLASSES_AUTO_INIT_SETTING,\n SMARTGLASSES_EVENT,\n SMARTGLASSES_INIT_MODE_SETTING,\n SMARTGLASSES_SCAN_TIMEOUT_SETTING,\n SMARTGLASSES_SERVICE_NAME,\n SMARTGLASSES_TRANSCRIPT_EVENT,\n SMARTGLASSES_TRANSPORT_SETTING,\n SmartglassesService,\n setSmartglassesAudioDecoderForRuntime,\n setSmartglassesTransportForRuntime,\n} from \"./services/smartglasses-service.js\";\nexport { VisionPipeline } from \"./services/vision-pipeline.js\";\nexport {\n XR_SERVICE_TYPE,\n XR_WS_PORT_DEFAULT,\n XRSessionService,\n} from \"./services/xr-session-service.js\";\nexport {\n EvenBridgeTransport,\n getGlobalEvenBridgeTransport,\n} from \"./transport/even-bridge.js\";\nexport { MockSmartglassesTransport } from \"./transport/mock.js\";\nexport type {\n NobleAdapterLike,\n NobleCharacteristicLike,\n NobleG1TransportOptions,\n NoblePeripheralLike,\n} from \"./transport/noble.js\";\nexport { getNobleG1Transport, NobleG1Transport } from \"./transport/noble.js\";\nexport type {\n SmartglassesTransport,\n SmartglassesTransportFactory,\n SmartglassesWifiResult,\n} from \"./transport/types.js\";\nexport {\n getWebBluetoothG1Transport,\n WebBluetoothG1Transport,\n} from \"./transport/web-bluetooth.js\";\n"],"mappings":"AACA,SAAS,iCAAiC;AAC1C,SAAS,6BAA6B;AACtC,SAAS,6BAA6B;AACtC,SAAS,2BAA2B;AACpC,SAAS,4BAA4B;AACrC,SAAS,gCAAgC;AACzC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,iCAAiC;AAC1C,SAAS,+BAA+B;AACxC,SAAS,kCAAkC;AAC3C,SAAS,oBAAoB;AAC7B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,sBAAsB;AAC/B,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,2BAA2B;AACpC,SAAS,wBAAwB;AAE1B,MAAM,iBAAyB;AAAA,EACpC,MAAM;AAAA,EACN,aACE;AAAA,EAEF,UAAU,CAAC,iBAAiB,kBAAkB,mBAAmB;AAAA,EACjE,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,WAAW,CAAC,yBAAyB,0BAA0B;AAAA,EAC/D,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL;AAAA,MACE,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aACE;AAAA,MACF,MAAM;AAAA,MACN,eAAe;AAAA,MACf,YAAY,CAAC,OAAO,MAAM,KAAK;AAAA,MAC/B,YAAY;AAAA,MACZ,iBAAiB;AAAA,MACjB,MAAM,CAAC,YAAY,MAAM,gBAAgB,UAAU;AAAA,MACnD,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,cAAc;AAAA,QACZ;AAAA,UACE,IAAI;AAAA,UACJ,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,IAAI;AAAA,UACJ,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,IAAI;AAAA,UACJ,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,IAAI;AAAA,UACJ,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA,IAGA;AAAA,MACE,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aACE;AAAA,MACF,MAAM;AAAA,MACN,eAAe;AAAA,MACf,YAAY,CAAC,OAAO,MAAM,KAAK;AAAA,MAC/B,YAAY;AAAA,MACZ,iBAAiB;AAAA,MACjB,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,cAAc;AAAA,QACZ;AAAA,UACE,IAAI;AAAA,UACJ,aACE;AAAA,QACJ;AAAA,QACA;AAAA,UACE,IAAI;AAAA,UACJ,aACE;AAAA,QACJ;AAAA,QACA;AAAA,UACE,IAAI;AAAA,UACJ,aACE;AAAA,QACJ;AAAA,QACA;AAAA,UACE,IAAI;AAAA,UACJ,aACE;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,KAAK;AAAA,IACH,SAAS;AAAA,MACP;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,iBAAiB;AAAA,MACnB;AAAA,MACA;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,QAAQ,SAAwB;AACpC,UAAM,QACH,WAA4B,gBAAgB,WAAW,GACtD,KAAK;AAAA,EACX;AACF;AAEA,IAAO,gBAAQ;AACR,MAAM,qBAAqB;AAElC,SAAsC,6BAA7BA,kCAAkE;AAE3E,SAAkC,yBAAzBC,8BAA0D;AACnE,SAAiC,wBAAxBC,6BAAwD;AACjE,SAAqC,4BAA5BC,iCAAgE;AAGzE,SAAS,oBAAoB;AAC7B,SAAS,6BAA6B;AAKtC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,cAAc;AAEd,SAAS,8BAAAC,mCAAkC;AAC3C,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA,mBAAAC;AAAA,OACK;AAQP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,uBAAAC;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,sBAAsB;AAC/B;AAAA,EACE;AAAA,EACA;AAAA,EACA,oBAAAC;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,iCAAiC;AAO1C,SAAS,qBAAqB,wBAAwB;AAMtD;AAAA,EACE;AAAA,EACA;AAAA,OACK;","names":["displayFacewearTextAction","facewearControlAction","facewearStatusAction","facewearMicrophoneAction","smartglassesStatusProvider","FacewearService","SmartglassesService","XRSessionService"]}
@@ -0,0 +1,306 @@
1
+ export type GlassSide = "left" | "right";
2
+ export type G1ConnectionReadyMode = "lens-specific" | "official" | "android-f4";
3
+ export type SmartglassesAudioEncoding = "pcm16" | "lc3" | "unknown";
4
+ export declare const EVEN_G1_UART: {
5
+ readonly service: "6e400001-b5a3-f393-e0a9-e50e24dcca9e";
6
+ readonly tx: "6e400002-b5a3-f393-e0a9-e50e24dcca9e";
7
+ readonly rx: "6e400003-b5a3-f393-e0a9-e50e24dcca9e";
8
+ };
9
+ export declare enum G1Command {
10
+ StartAi = 245,
11
+ OpenMic = 14,
12
+ ReceiveMicData = 241,
13
+ Init = 77,
14
+ RightInit = 244,
15
+ Heartbeat = 37,
16
+ Battery = 44,
17
+ SendResult = 78,
18
+ QuickNote = 33,
19
+ Dashboard = 34,
20
+ Notification = 75,
21
+ DashboardContent = 6,
22
+ Navigation = 10,
23
+ TranslateSetup = 57,
24
+ TranslateStart = 80,
25
+ TranslateLanguages = 28,
26
+ TranslateOriginalText = 15,
27
+ TranslateTranslatedText = 13,
28
+ AppWhitelist = 4,
29
+ ExitFunction = 24,
30
+ SilentMode = 3,
31
+ Brightness = 1,
32
+ DashboardPosition = 38,
33
+ HeadUpAngle = 11,
34
+ GlassesWear = 39,
35
+ BmpData = 21,
36
+ BmpCrc = 22,
37
+ BmpEnd = 32,
38
+ Note = 30,
39
+ GetSerial = 52
40
+ }
41
+ export declare enum G1DashboardLayout {
42
+ Full = "full",
43
+ Dual = "dual",
44
+ Minimal = "minimal"
45
+ }
46
+ export declare enum G1WeatherIcon {
47
+ Nothing = 0,
48
+ Night = 1,
49
+ Clouds = 2,
50
+ Drizzle = 3,
51
+ HeavyDrizzle = 4,
52
+ Rain = 5,
53
+ HeavyRain = 6,
54
+ Thunder = 7,
55
+ Thunderstorm = 8,
56
+ Snow = 9,
57
+ Mist = 10,
58
+ Fog = 11,
59
+ Sand = 12,
60
+ Squalls = 13,
61
+ Tornado = 14,
62
+ FreezingRain = 15,
63
+ Sunny = 16
64
+ }
65
+ export declare enum G1TemperatureUnit {
66
+ Celsius = "celsius",
67
+ Fahrenheit = "fahrenheit"
68
+ }
69
+ export declare enum G1TimeFormat {
70
+ TwentyFourHour = "24h",
71
+ TwelveHour = "12h"
72
+ }
73
+ export declare enum G1NavigationTurn {
74
+ StraightDot = 1,
75
+ Straight = 2,
76
+ Right = 3,
77
+ Left = 4,
78
+ SlightRight = 5,
79
+ SlightLeft = 6,
80
+ StrongRight = 7,
81
+ StrongLeft = 8,
82
+ UTurnLeft = 9,
83
+ UTurnRight = 10,
84
+ Merge = 11,
85
+ SlightRightAtFork = 34,
86
+ SlightLeftAtFork = 35
87
+ }
88
+ export declare enum G1TranslateLanguage {
89
+ Chinese = 1,
90
+ English = 2,
91
+ French = 5,
92
+ Dutch = 9
93
+ }
94
+ export declare enum G1SubCommand {
95
+ Exit = 0,
96
+ PageControl = 1,
97
+ Start = 23,
98
+ Stop = 24
99
+ }
100
+ export declare enum G1MicStatus {
101
+ Disable = 0,
102
+ Enable = 1
103
+ }
104
+ export declare enum G1ResponseStatus {
105
+ Success = 201,
106
+ Failure = 202
107
+ }
108
+ export declare enum G1ScreenAction {
109
+ NewContent = 1
110
+ }
111
+ export declare enum G1AiStatus {
112
+ Displaying = 48,
113
+ DisplayComplete = 64,
114
+ ManualMode = 80,
115
+ NetworkError = 96
116
+ }
117
+ export declare enum G1TextStatus {
118
+ TextShow = 112
119
+ }
120
+ export declare enum G1SilentModeStatus {
121
+ Off = 10,
122
+ On = 12
123
+ }
124
+ export declare enum G1DashboardState {
125
+ Off = 0,
126
+ On = 1
127
+ }
128
+ export declare enum G1GlassesWearStatus {
129
+ Off = 0,
130
+ On = 1
131
+ }
132
+ export declare enum G1VoiceNoteSubCommand {
133
+ RequestAudioInfo = 1,
134
+ RequestAudioData = 2,
135
+ DeleteAudioStream = 4,
136
+ DeleteAll = 5
137
+ }
138
+ export declare enum G1InteractionCode {
139
+ DoubleTap = 0,
140
+ SingleTap = 1,
141
+ LongPress = 23,
142
+ StopAiRecording = 24,
143
+ SilentModeOn = 4,
144
+ SilentModeOff = 5,
145
+ OpenDashboardStart = 2,
146
+ CloseDashboardStart = 3,
147
+ OpenDashboardConfirm = 30,
148
+ CloseDashboardConfirm = 31
149
+ }
150
+ export interface DisplayPage {
151
+ pageNumber: number;
152
+ maxPages: number;
153
+ text: string;
154
+ screenStatus: number;
155
+ }
156
+ export interface G1NotificationPayload {
157
+ msgId?: number;
158
+ type?: number;
159
+ appIdentifier: string;
160
+ title: string;
161
+ subtitle?: string;
162
+ message: string;
163
+ displayName?: string;
164
+ timeS?: number;
165
+ date?: string;
166
+ }
167
+ export interface G1DashboardTimeWeatherPayload {
168
+ seqId?: number;
169
+ timestampMs?: number;
170
+ timezoneOffsetSeconds?: number;
171
+ temperatureInCelsius: number;
172
+ weatherIcon?: number;
173
+ temperatureUnit?: G1TemperatureUnit;
174
+ timeFormat?: G1TimeFormat;
175
+ }
176
+ export interface G1NavigationDirectionsPayload {
177
+ seqId: number;
178
+ totalDuration: string;
179
+ totalDistance: string;
180
+ direction: string;
181
+ distance: string;
182
+ speed: string;
183
+ directionTurn: number;
184
+ customX?: [number, number] | number[];
185
+ customY?: number;
186
+ }
187
+ export interface G1VoiceNoteEntry {
188
+ index: number;
189
+ timestamp: number;
190
+ crc: number;
191
+ }
192
+ export interface G1Event {
193
+ side: GlassSide;
194
+ raw: Uint8Array;
195
+ type: "state" | "dashboard" | "init" | "mic-response" | "mic-data" | "display-result" | "notification" | "voice-note-list" | "voice-note-audio" | "serial" | "battery-status" | "heartbeat" | "response" | "error" | "unknown";
196
+ code?: number;
197
+ label?: string;
198
+ micEnabled?: boolean;
199
+ micRequested?: boolean;
200
+ responseStatus?: number;
201
+ responseOk?: boolean;
202
+ stateCategory?: "interaction" | "physical" | "battery" | "device";
203
+ stateName?: string;
204
+ audioData?: Uint8Array;
205
+ audioEncoding?: SmartglassesAudioEncoding;
206
+ /**
207
+ * Decoded 16-bit PCM bytes. Direct G1 0xF1 microphone notifications are LC3
208
+ * and are exposed through audioData instead.
209
+ */
210
+ audioPcm?: Uint8Array;
211
+ sequence?: number;
212
+ syncId?: number;
213
+ subcommand?: number;
214
+ displaySeq?: number;
215
+ totalPackages?: number;
216
+ currentPackage?: number;
217
+ screenStatus?: number;
218
+ charPosition?: number;
219
+ pageNumber?: number;
220
+ maxPages?: number;
221
+ text?: string;
222
+ notificationId?: number;
223
+ notificationChunk?: Uint8Array;
224
+ voiceNotes?: G1VoiceNoteEntry[];
225
+ serialNumber?: string;
226
+ totalPackets?: number;
227
+ currentPacket?: number;
228
+ noteIndex?: number;
229
+ batteryPercent?: number;
230
+ batteryFlags?: number;
231
+ batteryVoltageMv?: number;
232
+ }
233
+ export type G1MicrophoneInteractionAction = "enable" | "disable";
234
+ export declare function microphoneActionForInteractionEvent(event: Pick<G1Event, "type" | "label">): G1MicrophoneInteractionAction | null;
235
+ export declare const G1_DISPLAY: {
236
+ displayWidthPx: number;
237
+ charsPerLine: number;
238
+ linesPerPage: number;
239
+ maxTextLength: number;
240
+ maxPayloadBytes: number;
241
+ };
242
+ export declare const G1_BMP: {
243
+ width: number;
244
+ height: number;
245
+ bitsPerPixel: number;
246
+ };
247
+ export declare function measureG1DisplayText(text: string): number;
248
+ export declare function formatDisplayLines(text: string, options?: number | {
249
+ charsPerLine?: number;
250
+ maxWidthPx?: number;
251
+ }): string[];
252
+ export declare function paginateDisplayText(text: string, options?: {
253
+ charsPerLine?: number;
254
+ linesPerPage?: number;
255
+ }): DisplayPage[];
256
+ export declare function encodeTextPacket(page: DisplayPage, seq?: number): Uint8Array;
257
+ export declare function encodeTextPackets(page: DisplayPage, seq?: number): Uint8Array[];
258
+ export declare function encodeMicCommand(enabled: boolean): Uint8Array;
259
+ export declare function encodeHeartbeat(seq: number): Uint8Array;
260
+ export declare function encodeBatteryStatusRequest(): Uint8Array;
261
+ export declare function encodeConnectionReady(side: GlassSide, mode?: G1ConnectionReadyMode): Uint8Array;
262
+ export declare function encodeStartAi(subcommand: G1SubCommand, param?: Uint8Array): Uint8Array;
263
+ export declare function encodeExitFunction(): Uint8Array;
264
+ export declare function encodeGetSerial(): Uint8Array;
265
+ export declare function encodeClearScreen(): Uint8Array;
266
+ export declare function encodeSilentMode(enabled: boolean): Uint8Array;
267
+ export declare function encodeBrightness(level: number, auto?: boolean): Uint8Array;
268
+ export declare function encodeDashboard(state: G1DashboardState | boolean, position?: number): Uint8Array;
269
+ export declare function encodeDashboardPosition(height: number, depth: number, seqId?: number): Uint8Array;
270
+ export declare function encodeDashboardLayout(layout: G1DashboardLayout): Uint8Array;
271
+ export declare function encodeDashboardCalendarItem(payload: {
272
+ name: string;
273
+ time: string;
274
+ location: string;
275
+ }): Uint8Array;
276
+ export declare function encodeDashboardTimeWeather(payload: G1DashboardTimeWeatherPayload): Uint8Array;
277
+ export declare function encodeHeadUpAngle(angle: number): Uint8Array;
278
+ export declare function encodeG1Setup(payload: string | Record<string, unknown> | unknown[]): Uint8Array[];
279
+ export declare function encodeNavigationInit(seqId: number): Uint8Array;
280
+ export declare function encodeNavigationDirections(payload: G1NavigationDirectionsPayload): Uint8Array;
281
+ export declare function encodeNavigationPrimaryImage(image: ArrayLike<number>, overlay: ArrayLike<number>, seqId?: number): Uint8Array[];
282
+ export declare function encodeNavigationSecondaryImage(image: ArrayLike<number>, overlay: ArrayLike<number>, seqId?: number): Uint8Array[];
283
+ export declare function encodeNavigationPoller(seqId: number, pollerSeqId: number): Uint8Array;
284
+ export declare function encodeNavigationEnd(seqId: number): Uint8Array;
285
+ export declare function encodeTranslateSetup(): Uint8Array;
286
+ export declare function encodeTranslateStart(): Uint8Array;
287
+ export declare function encodeTranslateLanguages(fromLanguage: number, toLanguage: number): Uint8Array;
288
+ export declare function encodeTranslateText(kind: "original" | "translated", text: string, syncId: number): Uint8Array;
289
+ export declare function encodeGlassesWear(enabled: boolean): Uint8Array;
290
+ export declare function encodeAppWhitelist(whitelist: string | Record<string, unknown> | unknown[]): Uint8Array[];
291
+ export declare function encodeNoteDelete(noteNumber: number): Uint8Array;
292
+ export declare function encodeNoteAdd(noteNumber: number, title: string, text: string, version?: number): Uint8Array;
293
+ export declare function encodeVoiceNoteFetch(noteIndex: number, syncId: number): Uint8Array;
294
+ export declare function encodeVoiceNoteList(syncId: number): Uint8Array;
295
+ export declare function encodeVoiceNoteDelete(noteIndex: number, syncId: number): Uint8Array;
296
+ export declare function encodeVoiceNoteDeleteAll(syncId: number): Uint8Array;
297
+ export declare function encodeNotification(payload: G1NotificationPayload): Uint8Array[];
298
+ export declare function encodeBmpTransfer(imageData: Uint8Array): Uint8Array[];
299
+ export declare function encodeG1MonochromeBmp(pixels: ArrayLike<number> | Uint8Array, options?: {
300
+ width?: number;
301
+ height?: number;
302
+ threshold?: number;
303
+ }): Uint8Array;
304
+ export declare function parseG1Notification(side: GlassSide, data: Uint8Array): G1Event;
305
+ export declare function pcm16ToFloat32(bytes: Uint8Array): Float32Array;
306
+ //# sourceMappingURL=smartglasses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smartglasses.d.ts","sourceRoot":"","sources":["../../src/protocol/smartglasses.ts"],"names":[],"mappings":"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"}