setSimDevice
Change the simulated glasses device model to drive display capability and device identity. Use it to test both branches of capability-gated features headless, confirming graceful degradation when no display exists.
Instructions
Switch the simulated glasses DEVICE MODEL — one of the eight simulatable models: rayban_meta, oakley_meta_hstn, oakley_meta_vanguard, rayban_meta_optics, meta_glasses (camera + audio, NO display), rayban_display (display + Neural Band), and the EXPERIMENTAL Android XR pair — android_xr_audio_glasses (camera + audio, no display) and android_xr_display_glasses (adds a display, driven by the temple touchpad, panel 450x394 rather than Meta's 600x600 square). The selected device's capability profile drives glasses.display.isAvailable on the connected app, so this is how an agent tests BOTH branches of a capability-gated feature headless: set rayban_display to exercise the display path (glasses.display.show renders), set any no-display model to verify the graceful degradation (the app's isAvailable guard declines; show() no-ops). The model identity ALSO surfaces to the app as glasses.device.type (and in the assistant's glasses-state context), so per-model polish — e.g. an Oakley-specific default voice — is testable by switching between models that share the same capability profile. Mirrors the sim's device dropdown — the change persists on the session AND is pushed live to a connected app (the gate flips without a reconnect), and a device_changed event lands in getEventLog(filter:'lifecycle'). USE before driving a display flow to pin which device you're testing; pair with getDisplayState / injectInput. DON'T USE for the camera scene (setSimVideo) or voice (injectTranscript).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| device | Yes | The device model to simulate. Display-capable: 'rayban_display' (Meta, Neural Band, 600x600 panel) and 'android_xr_display_glasses' (Android XR, temple touchpad, 450x394 panel) — on both, glasses.display.isAvailable → true and display trees render. The Meta no-display models — 'rayban_meta' (Gen 1/2), 'oakley_meta_hstn', 'oakley_meta_vanguard', 'rayban_meta_optics' (prescription-first Gen 2), 'meta_glasses' (the 2026 Meta-branded line) — share the camera+audio profile but carry distinct identities (glasses.device.type). The two android_xr models switch the session's VENDOR, which is how you check the same code path under a second vendor — but ONLY on an Android session: switching an iOS session onto an android_xr device is REFUSED (vendor_platform_unsupported), because a projected activity is an Android activity and no iOS transport can exist. The brilliant models switch vendor on either platform. A new session defaults to its vendor's default model (rayban_meta for meta). | |
| sessionId | Yes |