@elizaos/plugin-xr 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.
- package/dist/actions/xr-query-vision.d.ts +3 -0
- package/dist/actions/xr-query-vision.d.ts.map +1 -0
- package/dist/actions/xr-query-vision.js +39 -0
- package/dist/actions/xr-query-vision.js.map +1 -0
- package/dist/actions/xr-view-actions.d.ts +18 -0
- package/dist/actions/xr-view-actions.d.ts.map +1 -0
- package/dist/actions/xr-view-actions.js +304 -0
- package/dist/actions/xr-view-actions.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/protocol.d.ts +124 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +18 -0
- package/dist/protocol.js.map +1 -0
- package/dist/providers/xr-context.d.ts +3 -0
- package/dist/providers/xr-context.d.ts.map +1 -0
- package/dist/providers/xr-context.js +34 -0
- package/dist/providers/xr-context.js.map +1 -0
- package/dist/routes/xr-connect.d.ts +3 -0
- package/dist/routes/xr-connect.d.ts.map +1 -0
- package/{src/routes/xr-connect.ts → dist/routes/xr-connect.js} +12 -15
- package/dist/routes/xr-connect.js.map +1 -0
- package/dist/routes/xr-simulator-route.d.ts +8 -0
- package/dist/routes/xr-simulator-route.d.ts.map +1 -0
- package/{src/routes/xr-simulator-route.ts → dist/routes/xr-simulator-route.js} +10 -16
- package/dist/routes/xr-simulator-route.js.map +1 -0
- package/dist/routes/xr-status.d.ts +3 -0
- package/dist/routes/xr-status.d.ts.map +1 -0
- package/{src/routes/xr-status.ts → dist/routes/xr-status.js} +13 -15
- package/dist/routes/xr-status.js.map +1 -0
- package/dist/routes/xr-view-host.d.ts +24 -0
- package/dist/routes/xr-view-host.d.ts.map +1 -0
- package/{src/routes/xr-view-host.ts → dist/routes/xr-view-host.js} +22 -59
- package/dist/routes/xr-view-host.js.map +1 -0
- package/dist/routes/xr-views.d.ts +8 -0
- package/dist/routes/xr-views.d.ts.map +1 -0
- package/dist/routes/xr-views.js +31 -0
- package/dist/routes/xr-views.js.map +1 -0
- package/dist/services/audio-pipeline.d.ts +20 -0
- package/dist/services/audio-pipeline.d.ts.map +1 -0
- package/{src/services/audio-pipeline.ts → dist/services/audio-pipeline.js} +25 -58
- package/dist/services/audio-pipeline.js.map +1 -0
- package/dist/services/vision-pipeline.d.ts +16 -0
- package/dist/services/vision-pipeline.d.ts.map +1 -0
- package/dist/services/vision-pipeline.js +39 -0
- package/dist/services/vision-pipeline.js.map +1 -0
- package/dist/services/xr-session-service.d.ts +50 -0
- package/dist/services/xr-session-service.d.ts.map +1 -0
- package/{src/services/xr-session-service.ts → dist/services/xr-session-service.js} +85 -194
- package/dist/services/xr-session-service.js.map +1 -0
- package/package.json +9 -4
- package/AGENTS.md +0 -151
- package/CLAUDE.md +0 -151
- package/simulator/bun.lock +0 -159
- package/simulator/package.json +0 -28
- package/simulator/src/emulator.ts +0 -174
- package/simulator/src/mock-agent.ts +0 -233
- package/simulator/src/node.ts +0 -9
- package/simulator/src/playwright-fixture.ts +0 -169
- package/simulator/src/types.ts +0 -51
- package/simulator/tsconfig.json +0 -13
- package/simulator/vite.config.ts +0 -25
- package/src/__tests__/audio-pipeline.test.ts +0 -129
- package/src/__tests__/protocol.test.ts +0 -53
- package/src/__tests__/routes-e2e.test.ts +0 -276
- package/src/__tests__/vision-pipeline.test.ts +0 -73
- package/src/__tests__/xr-bundle-coverage.test.ts +0 -303
- package/src/__tests__/xr-feature-parity.test.ts +0 -524
- package/src/__tests__/xr-functional-parity.test.ts +0 -522
- package/src/__tests__/xr-view-host-http.test.ts +0 -239
- package/src/__tests__/xr-view-host.test.ts +0 -174
- package/src/actions/xr-query-vision.ts +0 -64
- package/src/actions/xr-view-actions.ts +0 -386
- package/src/index.ts +0 -55
- package/src/protocol.ts +0 -126
- package/src/providers/xr-context.ts +0 -49
- package/src/routes/xr-views.ts +0 -43
- package/src/services/vision-pipeline.ts +0 -57
- package/tsconfig.build.json +0 -9
- package/tsconfig.json +0 -30
- package/vitest.config.ts +0 -21
package/AGENTS.md
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
# @elizaos/plugin-xr
|
|
2
|
-
|
|
3
|
-
WebXR audio/video streaming for elizaOS — Quest 3 and XReal glasses.
|
|
4
|
-
|
|
5
|
-
## Purpose / role
|
|
6
|
-
|
|
7
|
-
Adds a WebXR streaming surface to an Eliza agent: a WebSocket server accepts
|
|
8
|
-
connections from XR headsets (Quest 3, XReal, or a browser simulator), pipes
|
|
9
|
-
microphone audio through the runtime's TRANSCRIPTION model, and routes the
|
|
10
|
-
transcript through the standard message pipeline. Voice responses are generated
|
|
11
|
-
via the TEXT_TO_SPEECH model and sent back as binary audio frames. The plugin
|
|
12
|
-
is opt-in — register `xrPlugin` in your character's plugins array.
|
|
13
|
-
|
|
14
|
-
## Plugin surface
|
|
15
|
-
|
|
16
|
-
**Service**
|
|
17
|
-
- `XRSessionService` (`xr-session`) — WebSocket server on port 31338 (default).
|
|
18
|
-
Manages per-connection lifecycle, delegates audio to `AudioPipeline` and
|
|
19
|
-
camera frames to `VisionPipeline`, routes transcripts into the agent message
|
|
20
|
-
pipeline, and sends TTS audio back to the headset.
|
|
21
|
-
|
|
22
|
-
**Actions**
|
|
23
|
-
- `XR_QUERY_VISION` — describes what the user's XR camera currently sees
|
|
24
|
-
(calls `VisionPipeline.describeFrame` → `ModelType.IMAGE_DESCRIPTION`).
|
|
25
|
-
Only validates when a recent camera frame exists.
|
|
26
|
-
- `XR_OPEN_VIEW` — opens a named view panel on the headset (sends
|
|
27
|
-
`view_open` control message).
|
|
28
|
-
- `XR_CLOSE_VIEW` — closes a named view (or all views if no id given).
|
|
29
|
-
- `XR_SWITCH_VIEW` — brings a view to the foreground without closing others.
|
|
30
|
-
- `XR_LIST_VIEWS` — enumerates views with `viewType: "xr"` from all loaded
|
|
31
|
-
plugins and optionally sends the catalog to the device.
|
|
32
|
-
- `XR_RESIZE_VIEW` — resizes/repositions the active panel (`scale`,
|
|
33
|
-
`distance`, `fullscreen` options).
|
|
34
|
-
|
|
35
|
-
**Provider**
|
|
36
|
-
- `XR_SESSION` (`xr-context.ts`) — injects connected device list and camera
|
|
37
|
-
state into the agent context block when at least one headset is connected.
|
|
38
|
-
|
|
39
|
-
**Routes** (all under `/api/xr/`)
|
|
40
|
-
- `GET /xr/status` — JSON list of connected sessions and camera-frame state.
|
|
41
|
-
- `GET /xr/connect` — HTML page with QR code for pairing a headset.
|
|
42
|
-
- `GET /xr/views` — JSON list of all `viewType: "xr"` views registered by
|
|
43
|
-
loaded plugins, plus active connections.
|
|
44
|
-
- `GET /xr/view-host/:id` — self-contained HTML shell that dynamically imports
|
|
45
|
-
a plugin view bundle and renders it with an XR-optimised chrome.
|
|
46
|
-
- `GET /xr/simulator.js` — serves the built WebXR emulator bundle (only
|
|
47
|
-
available after `bun run build:all`).
|
|
48
|
-
|
|
49
|
-
## Layout
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
plugins/plugin-xr/
|
|
53
|
-
src/
|
|
54
|
-
index.ts Plugin entry — exports xrPlugin and public types
|
|
55
|
-
protocol.ts Wire types: XRClientControl, XRServerControl,
|
|
56
|
-
XRBinaryHeader, XRTTSAudioHeader; encode/decode helpers
|
|
57
|
-
actions/
|
|
58
|
-
xr-query-vision.ts XR_QUERY_VISION action
|
|
59
|
-
xr-view-actions.ts XR_OPEN/CLOSE/SWITCH/LIST/RESIZE_VIEW actions
|
|
60
|
-
providers/
|
|
61
|
-
xr-context.ts XR_SESSION provider
|
|
62
|
-
services/
|
|
63
|
-
xr-session-service.ts XRSessionService (WebSocket server, main orchestrator)
|
|
64
|
-
audio-pipeline.ts AudioPipeline — buffers audio chunks, flushes to
|
|
65
|
-
TRANSCRIPTION model after 2 s or 1.5 s silence
|
|
66
|
-
vision-pipeline.ts VisionPipeline — stores latest camera frame (max age
|
|
67
|
-
10 s), calls IMAGE_DESCRIPTION model on demand
|
|
68
|
-
routes/
|
|
69
|
-
xr-status.ts GET /xr/status
|
|
70
|
-
xr-connect.ts GET /xr/connect
|
|
71
|
-
xr-views.ts GET /xr/views
|
|
72
|
-
xr-view-host.ts GET /xr/view-host/:id
|
|
73
|
-
xr-simulator-route.ts GET /xr/simulator.js
|
|
74
|
-
__tests__/
|
|
75
|
-
audio-pipeline.test.ts
|
|
76
|
-
protocol.test.ts
|
|
77
|
-
vision-pipeline.test.ts
|
|
78
|
-
xr-bundle-coverage.test.ts
|
|
79
|
-
xr-feature-parity.test.ts
|
|
80
|
-
xr-functional-parity.test.ts
|
|
81
|
-
xr-view-host.test.ts
|
|
82
|
-
xr-view-host-http.test.ts
|
|
83
|
-
simulator/ Browser-side WebXR emulator (Vite build)
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
## Commands
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
bun run --cwd plugins/plugin-xr typecheck
|
|
90
|
-
bun run --cwd plugins/plugin-xr lint
|
|
91
|
-
bun run --cwd plugins/plugin-xr test
|
|
92
|
-
bun run --cwd plugins/plugin-xr build
|
|
93
|
-
bun run --cwd plugins/plugin-xr build:all # also builds simulator/
|
|
94
|
-
bun run --cwd plugins/plugin-xr simulator:build
|
|
95
|
-
bun run --cwd plugins/plugin-xr simulator:watch
|
|
96
|
-
bun run --cwd plugins/plugin-xr clean
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## Config / env vars
|
|
100
|
-
|
|
101
|
-
| Var | Default | Required | Purpose |
|
|
102
|
-
|-----|---------|----------|---------|
|
|
103
|
-
| `XR_WS_PORT` | `31338` | no | WebSocket server port |
|
|
104
|
-
| `XR_AGENT_URL` | `http://localhost:<agent-port>` | no | Public base URL sent to the headset for view bundles |
|
|
105
|
-
| `XR_APP_URL` | derived from `VITE_PORT` | no | URL shown on the `/xr/connect` pairing page |
|
|
106
|
-
|
|
107
|
-
The plugin sets `config: { XR_WS_PORT: 31338 }` in the Plugin object so the
|
|
108
|
-
runtime exposes it via `runtime.getSetting("XR_WS_PORT")`.
|
|
109
|
-
|
|
110
|
-
The agent must have a TRANSCRIPTION model and TEXT_TO_SPEECH model configured
|
|
111
|
-
(e.g., via `@elizaos/plugin-openai` or a local inference plugin) for audio
|
|
112
|
-
streaming to work. IMAGE_DESCRIPTION is required for `XR_QUERY_VISION`.
|
|
113
|
-
|
|
114
|
-
## How to extend
|
|
115
|
-
|
|
116
|
-
**Add an action** — create `src/actions/<name>.ts`, implement `Action` from
|
|
117
|
-
`@elizaos/core`, get `XRSessionService` via
|
|
118
|
-
`runtime.getService<XRSessionService>(XR_SERVICE_TYPE)`, then add the import
|
|
119
|
-
and the object to the `actions` array in `src/index.ts`.
|
|
120
|
-
|
|
121
|
-
**Add a provider** — create `src/providers/<name>.ts`, implement `Provider`,
|
|
122
|
-
add to `providers` array in `src/index.ts`.
|
|
123
|
-
|
|
124
|
-
**Add a route** — create `src/routes/<name>.ts`, implement `Route`, add to
|
|
125
|
-
`routes` array in `src/index.ts`.
|
|
126
|
-
|
|
127
|
-
**Expose a view in XR** — in any other plugin, add a `views` array entry with
|
|
128
|
-
`viewType: "xr"`. `XR_LIST_VIEWS` and `GET /xr/views` collect views with this
|
|
129
|
-
field across all loaded plugins at runtime.
|
|
130
|
-
|
|
131
|
-
## Conventions / gotchas
|
|
132
|
-
|
|
133
|
-
- **WebXR requires HTTPS on device.** The `/xr/connect` page warns when the
|
|
134
|
-
URL is plain HTTP. Use a local tunnel (e.g., `cloudflared`) and set
|
|
135
|
-
`XR_APP_URL` to the HTTPS tunnel URL.
|
|
136
|
-
- **Binary frame framing** is defined in `src/protocol.ts`: 4-byte big-endian
|
|
137
|
-
header length, then UTF-8 JSON header, then raw payload. Use
|
|
138
|
-
`encodeBinaryFrame` / `decodeBinaryFrame` from that module — do not
|
|
139
|
-
reimplement the framing.
|
|
140
|
-
- **Audio buffering** — `AudioPipeline` accumulates chunks and flushes after
|
|
141
|
-
2 000 ms of audio or 1 500 ms of silence. Chunks shorter than 512 bytes are
|
|
142
|
-
dropped. `pcm-f32` encoding (ScriptProcessorNode fallback) is wrapped in a
|
|
143
|
-
WAV header before being passed to TRANSCRIPTION.
|
|
144
|
-
- **Simulator bundle** — `simulator/` is a separate Vite project. Run
|
|
145
|
-
`bun run build:all` (or `simulator:build`) before the `/xr/simulator.js`
|
|
146
|
-
route will serve anything. The route returns 404 until the bundle exists.
|
|
147
|
-
- **`XR_AGENT_URL`** must be a reachable URL from inside the XR headset
|
|
148
|
-
browser when loading view bundles. `localhost` will only work when testing
|
|
149
|
-
on the same machine via the browser simulator.
|
|
150
|
-
- See repo root `AGENTS.md` for repo-wide architecture rules, logger
|
|
151
|
-
conventions, ESM requirements, and naming standards.
|
package/CLAUDE.md
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
# @elizaos/plugin-xr
|
|
2
|
-
|
|
3
|
-
WebXR audio/video streaming for elizaOS — Quest 3 and XReal glasses.
|
|
4
|
-
|
|
5
|
-
## Purpose / role
|
|
6
|
-
|
|
7
|
-
Adds a WebXR streaming surface to an Eliza agent: a WebSocket server accepts
|
|
8
|
-
connections from XR headsets (Quest 3, XReal, or a browser simulator), pipes
|
|
9
|
-
microphone audio through the runtime's TRANSCRIPTION model, and routes the
|
|
10
|
-
transcript through the standard message pipeline. Voice responses are generated
|
|
11
|
-
via the TEXT_TO_SPEECH model and sent back as binary audio frames. The plugin
|
|
12
|
-
is opt-in — register `xrPlugin` in your character's plugins array.
|
|
13
|
-
|
|
14
|
-
## Plugin surface
|
|
15
|
-
|
|
16
|
-
**Service**
|
|
17
|
-
- `XRSessionService` (`xr-session`) — WebSocket server on port 31338 (default).
|
|
18
|
-
Manages per-connection lifecycle, delegates audio to `AudioPipeline` and
|
|
19
|
-
camera frames to `VisionPipeline`, routes transcripts into the agent message
|
|
20
|
-
pipeline, and sends TTS audio back to the headset.
|
|
21
|
-
|
|
22
|
-
**Actions**
|
|
23
|
-
- `XR_QUERY_VISION` — describes what the user's XR camera currently sees
|
|
24
|
-
(calls `VisionPipeline.describeFrame` → `ModelType.IMAGE_DESCRIPTION`).
|
|
25
|
-
Only validates when a recent camera frame exists.
|
|
26
|
-
- `XR_OPEN_VIEW` — opens a named view panel on the headset (sends
|
|
27
|
-
`view_open` control message).
|
|
28
|
-
- `XR_CLOSE_VIEW` — closes a named view (or all views if no id given).
|
|
29
|
-
- `XR_SWITCH_VIEW` — brings a view to the foreground without closing others.
|
|
30
|
-
- `XR_LIST_VIEWS` — enumerates views with `viewType: "xr"` from all loaded
|
|
31
|
-
plugins and optionally sends the catalog to the device.
|
|
32
|
-
- `XR_RESIZE_VIEW` — resizes/repositions the active panel (`scale`,
|
|
33
|
-
`distance`, `fullscreen` options).
|
|
34
|
-
|
|
35
|
-
**Provider**
|
|
36
|
-
- `XR_SESSION` (`xr-context.ts`) — injects connected device list and camera
|
|
37
|
-
state into the agent context block when at least one headset is connected.
|
|
38
|
-
|
|
39
|
-
**Routes** (all under `/api/xr/`)
|
|
40
|
-
- `GET /xr/status` — JSON list of connected sessions and camera-frame state.
|
|
41
|
-
- `GET /xr/connect` — HTML page with QR code for pairing a headset.
|
|
42
|
-
- `GET /xr/views` — JSON list of all `viewType: "xr"` views registered by
|
|
43
|
-
loaded plugins, plus active connections.
|
|
44
|
-
- `GET /xr/view-host/:id` — self-contained HTML shell that dynamically imports
|
|
45
|
-
a plugin view bundle and renders it with an XR-optimised chrome.
|
|
46
|
-
- `GET /xr/simulator.js` — serves the built WebXR emulator bundle (only
|
|
47
|
-
available after `bun run build:all`).
|
|
48
|
-
|
|
49
|
-
## Layout
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
plugins/plugin-xr/
|
|
53
|
-
src/
|
|
54
|
-
index.ts Plugin entry — exports xrPlugin and public types
|
|
55
|
-
protocol.ts Wire types: XRClientControl, XRServerControl,
|
|
56
|
-
XRBinaryHeader, XRTTSAudioHeader; encode/decode helpers
|
|
57
|
-
actions/
|
|
58
|
-
xr-query-vision.ts XR_QUERY_VISION action
|
|
59
|
-
xr-view-actions.ts XR_OPEN/CLOSE/SWITCH/LIST/RESIZE_VIEW actions
|
|
60
|
-
providers/
|
|
61
|
-
xr-context.ts XR_SESSION provider
|
|
62
|
-
services/
|
|
63
|
-
xr-session-service.ts XRSessionService (WebSocket server, main orchestrator)
|
|
64
|
-
audio-pipeline.ts AudioPipeline — buffers audio chunks, flushes to
|
|
65
|
-
TRANSCRIPTION model after 2 s or 1.5 s silence
|
|
66
|
-
vision-pipeline.ts VisionPipeline — stores latest camera frame (max age
|
|
67
|
-
10 s), calls IMAGE_DESCRIPTION model on demand
|
|
68
|
-
routes/
|
|
69
|
-
xr-status.ts GET /xr/status
|
|
70
|
-
xr-connect.ts GET /xr/connect
|
|
71
|
-
xr-views.ts GET /xr/views
|
|
72
|
-
xr-view-host.ts GET /xr/view-host/:id
|
|
73
|
-
xr-simulator-route.ts GET /xr/simulator.js
|
|
74
|
-
__tests__/
|
|
75
|
-
audio-pipeline.test.ts
|
|
76
|
-
protocol.test.ts
|
|
77
|
-
vision-pipeline.test.ts
|
|
78
|
-
xr-bundle-coverage.test.ts
|
|
79
|
-
xr-feature-parity.test.ts
|
|
80
|
-
xr-functional-parity.test.ts
|
|
81
|
-
xr-view-host.test.ts
|
|
82
|
-
xr-view-host-http.test.ts
|
|
83
|
-
simulator/ Browser-side WebXR emulator (Vite build)
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
## Commands
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
bun run --cwd plugins/plugin-xr typecheck
|
|
90
|
-
bun run --cwd plugins/plugin-xr lint
|
|
91
|
-
bun run --cwd plugins/plugin-xr test
|
|
92
|
-
bun run --cwd plugins/plugin-xr build
|
|
93
|
-
bun run --cwd plugins/plugin-xr build:all # also builds simulator/
|
|
94
|
-
bun run --cwd plugins/plugin-xr simulator:build
|
|
95
|
-
bun run --cwd plugins/plugin-xr simulator:watch
|
|
96
|
-
bun run --cwd plugins/plugin-xr clean
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## Config / env vars
|
|
100
|
-
|
|
101
|
-
| Var | Default | Required | Purpose |
|
|
102
|
-
|-----|---------|----------|---------|
|
|
103
|
-
| `XR_WS_PORT` | `31338` | no | WebSocket server port |
|
|
104
|
-
| `XR_AGENT_URL` | `http://localhost:<agent-port>` | no | Public base URL sent to the headset for view bundles |
|
|
105
|
-
| `XR_APP_URL` | derived from `VITE_PORT` | no | URL shown on the `/xr/connect` pairing page |
|
|
106
|
-
|
|
107
|
-
The plugin sets `config: { XR_WS_PORT: 31338 }` in the Plugin object so the
|
|
108
|
-
runtime exposes it via `runtime.getSetting("XR_WS_PORT")`.
|
|
109
|
-
|
|
110
|
-
The agent must have a TRANSCRIPTION model and TEXT_TO_SPEECH model configured
|
|
111
|
-
(e.g., via `@elizaos/plugin-openai` or a local inference plugin) for audio
|
|
112
|
-
streaming to work. IMAGE_DESCRIPTION is required for `XR_QUERY_VISION`.
|
|
113
|
-
|
|
114
|
-
## How to extend
|
|
115
|
-
|
|
116
|
-
**Add an action** — create `src/actions/<name>.ts`, implement `Action` from
|
|
117
|
-
`@elizaos/core`, get `XRSessionService` via
|
|
118
|
-
`runtime.getService<XRSessionService>(XR_SERVICE_TYPE)`, then add the import
|
|
119
|
-
and the object to the `actions` array in `src/index.ts`.
|
|
120
|
-
|
|
121
|
-
**Add a provider** — create `src/providers/<name>.ts`, implement `Provider`,
|
|
122
|
-
add to `providers` array in `src/index.ts`.
|
|
123
|
-
|
|
124
|
-
**Add a route** — create `src/routes/<name>.ts`, implement `Route`, add to
|
|
125
|
-
`routes` array in `src/index.ts`.
|
|
126
|
-
|
|
127
|
-
**Expose a view in XR** — in any other plugin, add a `views` array entry with
|
|
128
|
-
`viewType: "xr"`. `XR_LIST_VIEWS` and `GET /xr/views` collect views with this
|
|
129
|
-
field across all loaded plugins at runtime.
|
|
130
|
-
|
|
131
|
-
## Conventions / gotchas
|
|
132
|
-
|
|
133
|
-
- **WebXR requires HTTPS on device.** The `/xr/connect` page warns when the
|
|
134
|
-
URL is plain HTTP. Use a local tunnel (e.g., `cloudflared`) and set
|
|
135
|
-
`XR_APP_URL` to the HTTPS tunnel URL.
|
|
136
|
-
- **Binary frame framing** is defined in `src/protocol.ts`: 4-byte big-endian
|
|
137
|
-
header length, then UTF-8 JSON header, then raw payload. Use
|
|
138
|
-
`encodeBinaryFrame` / `decodeBinaryFrame` from that module — do not
|
|
139
|
-
reimplement the framing.
|
|
140
|
-
- **Audio buffering** — `AudioPipeline` accumulates chunks and flushes after
|
|
141
|
-
2 000 ms of audio or 1 500 ms of silence. Chunks shorter than 512 bytes are
|
|
142
|
-
dropped. `pcm-f32` encoding (ScriptProcessorNode fallback) is wrapped in a
|
|
143
|
-
WAV header before being passed to TRANSCRIPTION.
|
|
144
|
-
- **Simulator bundle** — `simulator/` is a separate Vite project. Run
|
|
145
|
-
`bun run build:all` (or `simulator:build`) before the `/xr/simulator.js`
|
|
146
|
-
route will serve anything. The route returns 404 until the bundle exists.
|
|
147
|
-
- **`XR_AGENT_URL`** must be a reachable URL from inside the XR headset
|
|
148
|
-
browser when loading view bundles. `localhost` will only work when testing
|
|
149
|
-
on the same machine via the browser simulator.
|
|
150
|
-
- See repo root `AGENTS.md` for repo-wide architecture rules, logger
|
|
151
|
-
conventions, ESM requirements, and naming standards.
|
package/simulator/bun.lock
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"lockfileVersion": 1,
|
|
3
|
-
"configVersion": 1,
|
|
4
|
-
"workspaces": {
|
|
5
|
-
"": {
|
|
6
|
-
"name": "@elizaos/plugin-xr-simulator",
|
|
7
|
-
"dependencies": {
|
|
8
|
-
"iwer": "^2.1.1",
|
|
9
|
-
"ws": "^8.18.0",
|
|
10
|
-
},
|
|
11
|
-
"devDependencies": {
|
|
12
|
-
"@playwright/test": "^1.48.0",
|
|
13
|
-
"@types/node": "^25.0.3",
|
|
14
|
-
"@types/ws": "^8.5.10",
|
|
15
|
-
"typescript": "^5.5.0",
|
|
16
|
-
"vite": "^5.4.0",
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
"packages": {
|
|
21
|
-
"@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.21.5", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ=="],
|
|
22
|
-
|
|
23
|
-
"@esbuild/android-arm": ["@esbuild/android-arm@0.21.5", "", { "os": "android", "cpu": "arm" }, "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg=="],
|
|
24
|
-
|
|
25
|
-
"@esbuild/android-arm64": ["@esbuild/android-arm64@0.21.5", "", { "os": "android", "cpu": "arm64" }, "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A=="],
|
|
26
|
-
|
|
27
|
-
"@esbuild/android-x64": ["@esbuild/android-x64@0.21.5", "", { "os": "android", "cpu": "x64" }, "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA=="],
|
|
28
|
-
|
|
29
|
-
"@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.21.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ=="],
|
|
30
|
-
|
|
31
|
-
"@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.21.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw=="],
|
|
32
|
-
|
|
33
|
-
"@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.21.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g=="],
|
|
34
|
-
|
|
35
|
-
"@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.21.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ=="],
|
|
36
|
-
|
|
37
|
-
"@esbuild/linux-arm": ["@esbuild/linux-arm@0.21.5", "", { "os": "linux", "cpu": "arm" }, "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA=="],
|
|
38
|
-
|
|
39
|
-
"@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.21.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q=="],
|
|
40
|
-
|
|
41
|
-
"@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.21.5", "", { "os": "linux", "cpu": "ia32" }, "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg=="],
|
|
42
|
-
|
|
43
|
-
"@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg=="],
|
|
44
|
-
|
|
45
|
-
"@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg=="],
|
|
46
|
-
|
|
47
|
-
"@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.21.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w=="],
|
|
48
|
-
|
|
49
|
-
"@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA=="],
|
|
50
|
-
|
|
51
|
-
"@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.21.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A=="],
|
|
52
|
-
|
|
53
|
-
"@esbuild/linux-x64": ["@esbuild/linux-x64@0.21.5", "", { "os": "linux", "cpu": "x64" }, "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ=="],
|
|
54
|
-
|
|
55
|
-
"@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.21.5", "", { "os": "none", "cpu": "x64" }, "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg=="],
|
|
56
|
-
|
|
57
|
-
"@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.21.5", "", { "os": "openbsd", "cpu": "x64" }, "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow=="],
|
|
58
|
-
|
|
59
|
-
"@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.21.5", "", { "os": "sunos", "cpu": "x64" }, "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg=="],
|
|
60
|
-
|
|
61
|
-
"@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.21.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A=="],
|
|
62
|
-
|
|
63
|
-
"@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.21.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA=="],
|
|
64
|
-
|
|
65
|
-
"@esbuild/win32-x64": ["@esbuild/win32-x64@0.21.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw=="],
|
|
66
|
-
|
|
67
|
-
"@playwright/test": ["@playwright/test@1.60.0", "", { "dependencies": { "playwright": "1.60.0" }, "bin": { "playwright": "cli.js" } }, "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag=="],
|
|
68
|
-
|
|
69
|
-
"@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.60.4", "", { "os": "android", "cpu": "arm" }, "sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ=="],
|
|
70
|
-
|
|
71
|
-
"@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.60.4", "", { "os": "android", "cpu": "arm64" }, "sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw=="],
|
|
72
|
-
|
|
73
|
-
"@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.60.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA=="],
|
|
74
|
-
|
|
75
|
-
"@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.60.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg=="],
|
|
76
|
-
|
|
77
|
-
"@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.60.4", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g=="],
|
|
78
|
-
|
|
79
|
-
"@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.60.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw=="],
|
|
80
|
-
|
|
81
|
-
"@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.60.4", "", { "os": "linux", "cpu": "arm" }, "sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA=="],
|
|
82
|
-
|
|
83
|
-
"@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.60.4", "", { "os": "linux", "cpu": "arm" }, "sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w=="],
|
|
84
|
-
|
|
85
|
-
"@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.60.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg=="],
|
|
86
|
-
|
|
87
|
-
"@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.60.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A=="],
|
|
88
|
-
|
|
89
|
-
"@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.60.4", "", { "os": "linux", "cpu": "none" }, "sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ=="],
|
|
90
|
-
|
|
91
|
-
"@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.60.4", "", { "os": "linux", "cpu": "none" }, "sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw=="],
|
|
92
|
-
|
|
93
|
-
"@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.60.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg=="],
|
|
94
|
-
|
|
95
|
-
"@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.60.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A=="],
|
|
96
|
-
|
|
97
|
-
"@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.60.4", "", { "os": "linux", "cpu": "none" }, "sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA=="],
|
|
98
|
-
|
|
99
|
-
"@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.60.4", "", { "os": "linux", "cpu": "none" }, "sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw=="],
|
|
100
|
-
|
|
101
|
-
"@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.60.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ=="],
|
|
102
|
-
|
|
103
|
-
"@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.60.4", "", { "os": "linux", "cpu": "x64" }, "sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ=="],
|
|
104
|
-
|
|
105
|
-
"@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.60.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg=="],
|
|
106
|
-
|
|
107
|
-
"@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.60.4", "", { "os": "openbsd", "cpu": "x64" }, "sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA=="],
|
|
108
|
-
|
|
109
|
-
"@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.60.4", "", { "os": "none", "cpu": "arm64" }, "sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg=="],
|
|
110
|
-
|
|
111
|
-
"@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.60.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw=="],
|
|
112
|
-
|
|
113
|
-
"@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.60.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA=="],
|
|
114
|
-
|
|
115
|
-
"@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.60.4", "", { "os": "win32", "cpu": "x64" }, "sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw=="],
|
|
116
|
-
|
|
117
|
-
"@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.60.4", "", { "os": "win32", "cpu": "x64" }, "sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw=="],
|
|
118
|
-
|
|
119
|
-
"@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="],
|
|
120
|
-
|
|
121
|
-
"@types/node": ["@types/node@25.9.0", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-AOQwYUNolgy3VosiRqXrACUXTN8nJUtPl7FJXMqZVyxiiCLhQuG3jXKvCS1ALr+Y2OmZhzzLVlYPEqJaiqkaJQ=="],
|
|
122
|
-
|
|
123
|
-
"@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="],
|
|
124
|
-
|
|
125
|
-
"esbuild": ["esbuild@0.21.5", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.21.5", "@esbuild/android-arm": "0.21.5", "@esbuild/android-arm64": "0.21.5", "@esbuild/android-x64": "0.21.5", "@esbuild/darwin-arm64": "0.21.5", "@esbuild/darwin-x64": "0.21.5", "@esbuild/freebsd-arm64": "0.21.5", "@esbuild/freebsd-x64": "0.21.5", "@esbuild/linux-arm": "0.21.5", "@esbuild/linux-arm64": "0.21.5", "@esbuild/linux-ia32": "0.21.5", "@esbuild/linux-loong64": "0.21.5", "@esbuild/linux-mips64el": "0.21.5", "@esbuild/linux-ppc64": "0.21.5", "@esbuild/linux-riscv64": "0.21.5", "@esbuild/linux-s390x": "0.21.5", "@esbuild/linux-x64": "0.21.5", "@esbuild/netbsd-x64": "0.21.5", "@esbuild/openbsd-x64": "0.21.5", "@esbuild/sunos-x64": "0.21.5", "@esbuild/win32-arm64": "0.21.5", "@esbuild/win32-ia32": "0.21.5", "@esbuild/win32-x64": "0.21.5" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw=="],
|
|
126
|
-
|
|
127
|
-
"fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
|
|
128
|
-
|
|
129
|
-
"gl-matrix": ["gl-matrix@3.4.4", "", {}, "sha512-latSnyDNt/8zYUB6VIJ6PCh2jBjJX6gnDsoCZ7LyW7GkqrD51EWwa9qCoGixj8YqBtETQK/xY7OmpTF8xz1DdQ=="],
|
|
130
|
-
|
|
131
|
-
"iwer": ["iwer@2.2.1", "", { "dependencies": { "gl-matrix": "^3.4.3", "webxr-layers-polyfill": "^1.1.0" } }, "sha512-TBGgUlOpYsJpYmBCDRrW2KDHC70XZeFrlOwlDNiso+dp83wwRyCLaeN50/qo4JRIKyn08+cD6iaw5+t+D7U+uQ=="],
|
|
132
|
-
|
|
133
|
-
"nanoid": ["nanoid@3.3.12", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ=="],
|
|
134
|
-
|
|
135
|
-
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
|
|
136
|
-
|
|
137
|
-
"playwright": ["playwright@1.60.0", "", { "dependencies": { "playwright-core": "1.60.0" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": { "playwright": "cli.js" } }, "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA=="],
|
|
138
|
-
|
|
139
|
-
"playwright-core": ["playwright-core@1.60.0", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA=="],
|
|
140
|
-
|
|
141
|
-
"postcss": ["postcss@8.5.14", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg=="],
|
|
142
|
-
|
|
143
|
-
"rollup": ["rollup@4.60.4", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.60.4", "@rollup/rollup-android-arm64": "4.60.4", "@rollup/rollup-darwin-arm64": "4.60.4", "@rollup/rollup-darwin-x64": "4.60.4", "@rollup/rollup-freebsd-arm64": "4.60.4", "@rollup/rollup-freebsd-x64": "4.60.4", "@rollup/rollup-linux-arm-gnueabihf": "4.60.4", "@rollup/rollup-linux-arm-musleabihf": "4.60.4", "@rollup/rollup-linux-arm64-gnu": "4.60.4", "@rollup/rollup-linux-arm64-musl": "4.60.4", "@rollup/rollup-linux-loong64-gnu": "4.60.4", "@rollup/rollup-linux-loong64-musl": "4.60.4", "@rollup/rollup-linux-ppc64-gnu": "4.60.4", "@rollup/rollup-linux-ppc64-musl": "4.60.4", "@rollup/rollup-linux-riscv64-gnu": "4.60.4", "@rollup/rollup-linux-riscv64-musl": "4.60.4", "@rollup/rollup-linux-s390x-gnu": "4.60.4", "@rollup/rollup-linux-x64-gnu": "4.60.4", "@rollup/rollup-linux-x64-musl": "4.60.4", "@rollup/rollup-openbsd-x64": "4.60.4", "@rollup/rollup-openharmony-arm64": "4.60.4", "@rollup/rollup-win32-arm64-msvc": "4.60.4", "@rollup/rollup-win32-ia32-msvc": "4.60.4", "@rollup/rollup-win32-x64-gnu": "4.60.4", "@rollup/rollup-win32-x64-msvc": "4.60.4", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g=="],
|
|
144
|
-
|
|
145
|
-
"source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
|
|
146
|
-
|
|
147
|
-
"typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
|
|
148
|
-
|
|
149
|
-
"undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="],
|
|
150
|
-
|
|
151
|
-
"vite": ["vite@5.4.21", "", { "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", "rollup": "^4.20.0" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || >=20.0.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" }, "optionalPeers": ["@types/node", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser"], "bin": { "vite": "bin/vite.js" } }, "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw=="],
|
|
152
|
-
|
|
153
|
-
"webxr-layers-polyfill": ["webxr-layers-polyfill@1.1.0", "", { "dependencies": { "gl-matrix": "^3.4.3" } }, "sha512-GqWE6IFlut8a1Lnh9t1RPnOXud1rZ7wLPvWp7mqTDOYtgorXqlNMhEnI9EqjU33grBx0v3jm0Oc13opkAdmgMQ=="],
|
|
154
|
-
|
|
155
|
-
"ws": ["ws@8.20.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w=="],
|
|
156
|
-
|
|
157
|
-
"playwright/fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="],
|
|
158
|
-
}
|
|
159
|
-
}
|
package/simulator/package.json
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@elizaos/plugin-xr-simulator",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"private": true,
|
|
5
|
-
"type": "module",
|
|
6
|
-
"description": "WebXR device emulator and Playwright fixtures for plugin-xr development and testing",
|
|
7
|
-
"main": "./src/node.ts",
|
|
8
|
-
"exports": {
|
|
9
|
-
".": "./src/node.ts",
|
|
10
|
-
"./emulator": "./dist/emulator.js"
|
|
11
|
-
},
|
|
12
|
-
"scripts": {
|
|
13
|
-
"build": "vite build",
|
|
14
|
-
"build:watch": "vite build --watch",
|
|
15
|
-
"typecheck": "tsgo --noEmit"
|
|
16
|
-
},
|
|
17
|
-
"dependencies": {
|
|
18
|
-
"iwer": "^2.1.1",
|
|
19
|
-
"ws": "^8.18.0"
|
|
20
|
-
},
|
|
21
|
-
"devDependencies": {
|
|
22
|
-
"@playwright/test": "^1.48.0",
|
|
23
|
-
"@types/node": "^25.0.3",
|
|
24
|
-
"@types/ws": "^8.5.10",
|
|
25
|
-
"typescript": "^5.5.0",
|
|
26
|
-
"vite": "^8.0.13"
|
|
27
|
-
}
|
|
28
|
-
}
|