@elizaos/plugin-facewear 2.0.3-beta.6 → 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
@@ -0,0 +1,4 @@
1
+ import { type Action } from "@elizaos/core";
2
+ export declare const displaySmartglassesTextAction: Action;
3
+ export declare const displayFacewearTextAction: Action;
4
+ //# sourceMappingURL=display-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display-text.d.ts","sourceRoot":"","sources":["../../src/actions/display-text.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EAQZ,MAAM,eAAe,CAAC;AAuDvB,eAAO,MAAM,6BAA6B,EAAE,MAuD3C,CAAC;AAGF,eAAO,MAAM,yBAAyB,QAAgC,CAAC"}
@@ -0,0 +1,90 @@
1
+ import {
2
+ parseJSONObjectFromText
3
+ } from "@elizaos/core";
4
+ import {
5
+ getSmartglassesService
6
+ } from "../services/smartglasses-service.js";
7
+ function displayParamsFromMessage(message) {
8
+ const content = message.content;
9
+ const raw = content?.text ?? "";
10
+ const parsed = parseJSONObjectFromText(raw);
11
+ if (parsed) {
12
+ return {
13
+ text: typeof parsed.text === "string" ? parsed.text : null,
14
+ mode: normalizeMode(parsed.mode),
15
+ pageHoldMs: optionalNonNegativeNumber(parsed.pageHoldMs),
16
+ completionDelayMs: optionalNonNegativeNumber(parsed.completionDelayMs)
17
+ };
18
+ }
19
+ return { text: raw.trim() || null };
20
+ }
21
+ function optionalNonNegativeNumber(value) {
22
+ if (value === void 0) return void 0;
23
+ const parsed = typeof value === "number" ? value : Number(value);
24
+ if (!Number.isFinite(parsed) || parsed < 0) return void 0;
25
+ return parsed;
26
+ }
27
+ function normalizeMode(value) {
28
+ if (typeof value !== "string") return void 0;
29
+ const normalized = value.trim().toLowerCase();
30
+ if (normalized === "text" || normalized === "text_show" || normalized === "direct")
31
+ return "text";
32
+ if (normalized === "ai" || normalized === "even_ai" || normalized === "stream")
33
+ return "ai";
34
+ return void 0;
35
+ }
36
+ function actionErrorMessage(error) {
37
+ return error instanceof Error ? error.message : String(error);
38
+ }
39
+ const displaySmartglassesTextAction = {
40
+ name: "SMARTGLASSES_DISPLAY_TEXT",
41
+ similes: ["DISPLAY_ON_GLASSES", "EVEN_DISPLAY_TEXT", "SHOW_ON_SMARTGLASSES"],
42
+ description: "Display text on connected Even Realities G1/G2 smartglasses, wrapping text into five-line pages and sending the correct G1 display packets. JSON input may include mode, pageHoldMs, and completionDelayMs.",
43
+ descriptionCompressed: "smartglasses-display-text: show wrapped text on Even G1/G2 display",
44
+ contexts: ["smartglasses", "wearable", "display"],
45
+ validate: async (runtime) => Boolean(getSmartglassesService(runtime)),
46
+ handler: async (runtime, message, _state, _options, callback) => {
47
+ const service = getSmartglassesService(runtime);
48
+ if (!service)
49
+ return { success: false, text: "Smartglasses service not loaded" };
50
+ const { text, mode, pageHoldMs, completionDelayMs } = displayParamsFromMessage(message);
51
+ if (!text) return { success: false, text: "No display text provided" };
52
+ let result;
53
+ try {
54
+ result = await service.displayText(text, {
55
+ mode,
56
+ pageHoldMs,
57
+ completionDelayMs
58
+ });
59
+ } catch (error) {
60
+ const response2 = `Smartglasses display command failed: ${actionErrorMessage(error)}`;
61
+ await callback?.({ text: response2 });
62
+ return {
63
+ success: false,
64
+ text: response2,
65
+ values: {
66
+ error: actionErrorMessage(error)
67
+ }
68
+ };
69
+ }
70
+ const response = `Displayed ${result.pages} page${result.pages === 1 ? "" : "s"} on smartglasses.`;
71
+ await callback?.({ text: response });
72
+ return {
73
+ success: true,
74
+ text: response,
75
+ values: {
76
+ ...result,
77
+ mode: mode ?? "ai",
78
+ pageHoldMs,
79
+ completionDelayMs
80
+ }
81
+ };
82
+ },
83
+ examples: []
84
+ };
85
+ const displayFacewearTextAction = displaySmartglassesTextAction;
86
+ export {
87
+ displayFacewearTextAction,
88
+ displaySmartglassesTextAction
89
+ };
90
+ //# sourceMappingURL=display-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actions/display-text.ts"],"sourcesContent":["import {\n type Action,\n type ActionResult,\n type HandlerCallback,\n type HandlerOptions,\n type IAgentRuntime,\n type Memory,\n parseJSONObjectFromText,\n type State,\n} from \"@elizaos/core\";\nimport {\n getSmartglassesService,\n type SmartglassesDisplayMode,\n} from \"../services/smartglasses-service.js\";\n\nfunction displayParamsFromMessage(message: Memory): {\n text: string | null;\n mode?: SmartglassesDisplayMode;\n pageHoldMs?: number;\n completionDelayMs?: number;\n} {\n const content = message.content as { text?: string } | undefined;\n const raw = content?.text ?? \"\";\n const parsed = parseJSONObjectFromText(raw) as Record<string, unknown> | null;\n if (parsed) {\n return {\n text: typeof parsed.text === \"string\" ? parsed.text : null,\n mode: normalizeMode(parsed.mode),\n pageHoldMs: optionalNonNegativeNumber(parsed.pageHoldMs),\n completionDelayMs: optionalNonNegativeNumber(parsed.completionDelayMs),\n };\n }\n return { text: raw.trim() || null };\n}\n\nfunction optionalNonNegativeNumber(value: unknown): number | undefined {\n if (value === undefined) return undefined;\n const parsed = typeof value === \"number\" ? value : Number(value);\n if (!Number.isFinite(parsed) || parsed < 0) return undefined;\n return parsed;\n}\n\nfunction normalizeMode(value: unknown): SmartglassesDisplayMode | undefined {\n if (typeof value !== \"string\") return undefined;\n const normalized = value.trim().toLowerCase();\n if (\n normalized === \"text\" ||\n normalized === \"text_show\" ||\n normalized === \"direct\"\n )\n return \"text\";\n if (\n normalized === \"ai\" ||\n normalized === \"even_ai\" ||\n normalized === \"stream\"\n )\n return \"ai\";\n return undefined;\n}\n\nfunction actionErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nexport const displaySmartglassesTextAction: Action = {\n name: \"SMARTGLASSES_DISPLAY_TEXT\",\n similes: [\"DISPLAY_ON_GLASSES\", \"EVEN_DISPLAY_TEXT\", \"SHOW_ON_SMARTGLASSES\"],\n description:\n \"Display text on connected Even Realities G1/G2 smartglasses, wrapping text into five-line pages and sending the correct G1 display packets. JSON input may include mode, pageHoldMs, and completionDelayMs.\",\n descriptionCompressed:\n \"smartglasses-display-text: show wrapped text on Even G1/G2 display\",\n contexts: [\"smartglasses\", \"wearable\", \"display\"],\n validate: async (runtime: IAgentRuntime) =>\n Boolean(getSmartglassesService(runtime)),\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State,\n _options?: HandlerOptions,\n callback?: HandlerCallback,\n ): Promise<ActionResult> => {\n const service = getSmartglassesService(runtime);\n if (!service)\n return { success: false, text: \"Smartglasses service not loaded\" };\n const { text, mode, pageHoldMs, completionDelayMs } =\n displayParamsFromMessage(message);\n if (!text) return { success: false, text: \"No display text provided\" };\n let result: { pages: number };\n try {\n result = await service.displayText(text, {\n mode,\n pageHoldMs,\n completionDelayMs,\n });\n } catch (error) {\n const response = `Smartglasses display command failed: ${actionErrorMessage(error)}`;\n await callback?.({ text: response });\n return {\n success: false,\n text: response,\n values: {\n error: actionErrorMessage(error),\n },\n };\n }\n const response = `Displayed ${result.pages} page${result.pages === 1 ? \"\" : \"s\"} on smartglasses.`;\n await callback?.({ text: response });\n return {\n success: true,\n text: response,\n values: {\n ...result,\n mode: mode ?? \"ai\",\n pageHoldMs,\n completionDelayMs,\n },\n };\n },\n examples: [],\n};\n\n// Alias for facewear plugin consumers\nexport const displayFacewearTextAction = displaySmartglassesTextAction;\n"],"mappings":"AAAA;AAAA,EAOE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,OAEK;AAEP,SAAS,yBAAyB,SAKhC;AACA,QAAM,UAAU,QAAQ;AACxB,QAAM,MAAM,SAAS,QAAQ;AAC7B,QAAM,SAAS,wBAAwB,GAAG;AAC1C,MAAI,QAAQ;AACV,WAAO;AAAA,MACL,MAAM,OAAO,OAAO,SAAS,WAAW,OAAO,OAAO;AAAA,MACtD,MAAM,cAAc,OAAO,IAAI;AAAA,MAC/B,YAAY,0BAA0B,OAAO,UAAU;AAAA,MACvD,mBAAmB,0BAA0B,OAAO,iBAAiB;AAAA,IACvE;AAAA,EACF;AACA,SAAO,EAAE,MAAM,IAAI,KAAK,KAAK,KAAK;AACpC;AAEA,SAAS,0BAA0B,OAAoC;AACrE,MAAI,UAAU,OAAW,QAAO;AAChC,QAAM,SAAS,OAAO,UAAU,WAAW,QAAQ,OAAO,KAAK;AAC/D,MAAI,CAAC,OAAO,SAAS,MAAM,KAAK,SAAS,EAAG,QAAO;AACnD,SAAO;AACT;AAEA,SAAS,cAAc,OAAqD;AAC1E,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAM,aAAa,MAAM,KAAK,EAAE,YAAY;AAC5C,MACE,eAAe,UACf,eAAe,eACf,eAAe;AAEf,WAAO;AACT,MACE,eAAe,QACf,eAAe,aACf,eAAe;AAEf,WAAO;AACT,SAAO;AACT;AAEA,SAAS,mBAAmB,OAAwB;AAClD,SAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D;AAEO,MAAM,gCAAwC;AAAA,EACnD,MAAM;AAAA,EACN,SAAS,CAAC,sBAAsB,qBAAqB,sBAAsB;AAAA,EAC3E,aACE;AAAA,EACF,uBACE;AAAA,EACF,UAAU,CAAC,gBAAgB,YAAY,SAAS;AAAA,EAChD,UAAU,OAAO,YACf,QAAQ,uBAAuB,OAAO,CAAC;AAAA,EACzC,SAAS,OACP,SACA,SACA,QACA,UACA,aAC0B;AAC1B,UAAM,UAAU,uBAAuB,OAAO;AAC9C,QAAI,CAAC;AACH,aAAO,EAAE,SAAS,OAAO,MAAM,kCAAkC;AACnE,UAAM,EAAE,MAAM,MAAM,YAAY,kBAAkB,IAChD,yBAAyB,OAAO;AAClC,QAAI,CAAC,KAAM,QAAO,EAAE,SAAS,OAAO,MAAM,2BAA2B;AACrE,QAAI;AACJ,QAAI;AACF,eAAS,MAAM,QAAQ,YAAY,MAAM;AAAA,QACvC;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH,SAAS,OAAO;AACd,YAAMA,YAAW,wCAAwC,mBAAmB,KAAK,CAAC;AAClF,YAAM,WAAW,EAAE,MAAMA,UAAS,CAAC;AACnC,aAAO;AAAA,QACL,SAAS;AAAA,QACT,MAAMA;AAAA,QACN,QAAQ;AAAA,UACN,OAAO,mBAAmB,KAAK;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AACA,UAAM,WAAW,aAAa,OAAO,KAAK,QAAQ,OAAO,UAAU,IAAI,KAAK,GAAG;AAC/E,UAAM,WAAW,EAAE,MAAM,SAAS,CAAC;AACnC,WAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,GAAG;AAAA,QACH,MAAM,QAAQ;AAAA,QACd;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU,CAAC;AACb;AAGO,MAAM,4BAA4B;","names":["response"]}
@@ -0,0 +1,3 @@
1
+ import type { Action } from "@elizaos/core";
2
+ export declare const facewearConnectAction: Action;
3
+ //# sourceMappingURL=facewear-connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facewear-connect.d.ts","sourceRoot":"","sources":["../../src/actions/facewear-connect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKP,MAAM,eAAe,CAAC;AAUvB,eAAO,MAAM,qBAAqB,EAAE,MA4EnC,CAAC"}
@@ -0,0 +1,70 @@
1
+ import {
2
+ DEVICE_REGISTRY
3
+ } from "../devices/registry.js";
4
+ import {
5
+ FACEWEAR_SERVICE_TYPE
6
+ } from "../services/facewear-service.js";
7
+ const facewearConnectAction = {
8
+ name: "FACEWEAR_CONNECT",
9
+ description: "Show connection instructions for a facewear device (Meta Quest, XReal, Even Realities, Apple Vision Pro).",
10
+ similes: [
11
+ "CONNECT_GLASSES",
12
+ "CONNECT_HEADSET",
13
+ "PAIR_DEVICE",
14
+ "CONNECT_FACEWEAR"
15
+ ],
16
+ examples: [
17
+ [
18
+ { name: "{{user1}}", content: { text: "How do I connect my Quest 3?" } },
19
+ {
20
+ name: "{{user2}}",
21
+ content: {
22
+ text: "To connect your Meta Quest 3, open a browser in VR, navigate to the pairing URL, and tap Allow on the camera/mic prompts."
23
+ }
24
+ }
25
+ ]
26
+ ],
27
+ validate: async (_runtime, _message) => true,
28
+ handler: async (runtime, message, _state, _options, callback) => {
29
+ const text = (message.content.text ?? "").toLowerCase();
30
+ let deviceType = "meta-quest";
31
+ if (text.includes("xreal") || text.includes("air")) deviceType = "xreal";
32
+ else if (text.includes("even") || text.includes("g1") || text.includes("g2"))
33
+ deviceType = "even-realities";
34
+ else if (text.includes("vision") || text.includes("apple") || text.includes("avp"))
35
+ deviceType = "apple-vision-pro";
36
+ const profile = DEVICE_REGISTRY[deviceType];
37
+ const svc = runtime.getService(FACEWEAR_SERVICE_TYPE);
38
+ const connected = svc?.getConnectedDevices() ?? [];
39
+ let instructions = `**${profile.displayName}** (${profile.manufacturer})
40
+
41
+ `;
42
+ if (profile.connectionType === "ble") {
43
+ instructions += "**Connection method:** Bluetooth BLE\n";
44
+ instructions += "1. Enable Bluetooth on your phone/computer\n";
45
+ instructions += "2. Put on your Even Realities glasses\n";
46
+ instructions += "3. The elizaOS agent will auto-detect via Noble BLE or Web Bluetooth\n";
47
+ instructions += "4. For native Android: install the Even Realities companion app\n";
48
+ } else {
49
+ instructions += "**Connection method:** WebXR over WebSocket\n";
50
+ instructions += "1. Start the elizaOS agent (this server)\n";
51
+ instructions += "2. Visit `/api/xr/connect` for the QR code + pairing URL\n";
52
+ instructions += "3. Open the URL on your headset browser\n";
53
+ instructions += "4. Allow camera and microphone when prompted\n";
54
+ if (profile.nativeAppPath) {
55
+ instructions += `5. For native APK: see \`${profile.nativeAppPath}/README.md\`
56
+ `;
57
+ }
58
+ }
59
+ if (connected.length > 0) {
60
+ instructions += `
61
+ **Currently connected:** ${connected.map((d) => d.deviceType ?? d.kind).join(", ")}`;
62
+ }
63
+ await callback?.({ text: instructions });
64
+ return { success: true };
65
+ }
66
+ };
67
+ export {
68
+ facewearConnectAction
69
+ };
70
+ //# sourceMappingURL=facewear-connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actions/facewear-connect.ts"],"sourcesContent":["import type {\n Action,\n HandlerCallback,\n IAgentRuntime,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport {\n DEVICE_REGISTRY,\n type FacewearDeviceType,\n} from \"../devices/registry.js\";\nimport {\n FACEWEAR_SERVICE_TYPE,\n type FacewearService,\n} from \"../services/facewear-service.js\";\n\nexport const facewearConnectAction: Action = {\n name: \"FACEWEAR_CONNECT\",\n description:\n \"Show connection instructions for a facewear device (Meta Quest, XReal, Even Realities, Apple Vision Pro).\",\n similes: [\n \"CONNECT_GLASSES\",\n \"CONNECT_HEADSET\",\n \"PAIR_DEVICE\",\n \"CONNECT_FACEWEAR\",\n ],\n examples: [\n [\n { name: \"{{user1}}\", content: { text: \"How do I connect my Quest 3?\" } },\n {\n name: \"{{user2}}\",\n content: {\n text: \"To connect your Meta Quest 3, open a browser in VR, navigate to the pairing URL, and tap Allow on the camera/mic prompts.\",\n },\n },\n ],\n ],\n validate: async (_runtime: IAgentRuntime, _message: Memory) => true,\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined,\n _options: Record<string, unknown> | undefined,\n callback?: HandlerCallback,\n ) => {\n const text = (message.content.text ?? \"\").toLowerCase();\n let deviceType: FacewearDeviceType = \"meta-quest\";\n if (text.includes(\"xreal\") || text.includes(\"air\")) deviceType = \"xreal\";\n else if (\n text.includes(\"even\") ||\n text.includes(\"g1\") ||\n text.includes(\"g2\")\n )\n deviceType = \"even-realities\";\n else if (\n text.includes(\"vision\") ||\n text.includes(\"apple\") ||\n text.includes(\"avp\")\n )\n deviceType = \"apple-vision-pro\";\n\n const profile = DEVICE_REGISTRY[deviceType];\n const svc = runtime.getService<FacewearService>(FACEWEAR_SERVICE_TYPE);\n const connected = svc?.getConnectedDevices() ?? [];\n\n let instructions = `**${profile.displayName}** (${profile.manufacturer})\\n\\n`;\n if (profile.connectionType === \"ble\") {\n instructions += \"**Connection method:** Bluetooth BLE\\n\";\n instructions += \"1. Enable Bluetooth on your phone/computer\\n\";\n instructions += \"2. Put on your Even Realities glasses\\n\";\n instructions +=\n \"3. The elizaOS agent will auto-detect via Noble BLE or Web Bluetooth\\n\";\n instructions +=\n \"4. For native Android: install the Even Realities companion app\\n\";\n } else {\n instructions += \"**Connection method:** WebXR over WebSocket\\n\";\n instructions += \"1. Start the elizaOS agent (this server)\\n\";\n instructions +=\n \"2. Visit `/api/xr/connect` for the QR code + pairing URL\\n\";\n instructions += \"3. Open the URL on your headset browser\\n\";\n instructions += \"4. Allow camera and microphone when prompted\\n\";\n if (profile.nativeAppPath) {\n instructions += `5. For native APK: see \\`${profile.nativeAppPath}/README.md\\`\\n`;\n }\n }\n if (connected.length > 0) {\n instructions += `\\n**Currently connected:** ${connected.map((d) => d.deviceType ?? d.kind).join(\", \")}`;\n }\n\n await callback?.({ text: instructions });\n return { success: true };\n },\n};\n"],"mappings":"AAOA;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,OAEK;AAEA,MAAM,wBAAgC;AAAA,EAC3C,MAAM;AAAA,EACN,aACE;AAAA,EACF,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR;AAAA,MACE,EAAE,MAAM,aAAa,SAAS,EAAE,MAAM,+BAA+B,EAAE;AAAA,MACvE;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU,OAAO,UAAyB,aAAqB;AAAA,EAC/D,SAAS,OACP,SACA,SACA,QACA,UACA,aACG;AACH,UAAM,QAAQ,QAAQ,QAAQ,QAAQ,IAAI,YAAY;AACtD,QAAI,aAAiC;AACrC,QAAI,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,KAAK,EAAG,cAAa;AAAA,aAE/D,KAAK,SAAS,MAAM,KACpB,KAAK,SAAS,IAAI,KAClB,KAAK,SAAS,IAAI;AAElB,mBAAa;AAAA,aAEb,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,OAAO,KACrB,KAAK,SAAS,KAAK;AAEnB,mBAAa;AAEf,UAAM,UAAU,gBAAgB,UAAU;AAC1C,UAAM,MAAM,QAAQ,WAA4B,qBAAqB;AACrE,UAAM,YAAY,KAAK,oBAAoB,KAAK,CAAC;AAEjD,QAAI,eAAe,KAAK,QAAQ,WAAW,OAAO,QAAQ,YAAY;AAAA;AAAA;AACtE,QAAI,QAAQ,mBAAmB,OAAO;AACpC,sBAAgB;AAChB,sBAAgB;AAChB,sBAAgB;AAChB,sBACE;AACF,sBACE;AAAA,IACJ,OAAO;AACL,sBAAgB;AAChB,sBAAgB;AAChB,sBACE;AACF,sBAAgB;AAChB,sBAAgB;AAChB,UAAI,QAAQ,eAAe;AACzB,wBAAgB,4BAA4B,QAAQ,aAAa;AAAA;AAAA,MACnE;AAAA,IACF;AACA,QAAI,UAAU,SAAS,GAAG;AACxB,sBAAgB;AAAA,2BAA8B,UAAU,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;AAAA,IACvG;AAEA,UAAM,WAAW,EAAE,MAAM,aAAa,CAAC;AACvC,WAAO,EAAE,SAAS,KAAK;AAAA,EACzB;AACF;","names":[]}
@@ -0,0 +1,4 @@
1
+ import { type Action } from "@elizaos/core";
2
+ export declare const smartglassesControlAction: Action;
3
+ export declare const facewearControlAction: Action;
4
+ //# sourceMappingURL=facewear-control.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facewear-control.d.ts","sourceRoot":"","sources":["../../src/actions/facewear-control.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EAQZ,MAAM,eAAe,CAAC;AAoavB,eAAO,MAAM,yBAAyB,EAAE,MAgavC,CAAC;AAGF,eAAO,MAAM,qBAAqB,QAA4B,CAAC"}