Developer Preview 0.3.0.dev2: This page documents the unchanged SDK 0.2.0 base contract. For the unified adapter, optional simulated motion and current installation commands, use the current quickstart and bundled docs. No real hardware or production integration is enabled.
Version, error and capability matrices
All operations are synthetic. This is not a hardware support list. Every capability requires exact host permission; capture/recording also requires explicit consent. See templates/matrices.json for machine-readable rows.
SDK 0.2.0 / wire contract 1.0. Accept 1.0; reject 1.1/2.0. No implicit downgrade/fallback.
| Capability.operation | Request fields | Response fields | Capture consent | Physical |
|---|---|---|---|---|
| MicrophoneAudioInput.sample | sample_rate, frames | audio_base64, sample_rate, channels, codec | True | BLOCKED_EXTERNAL |
| SpeakerAudioOutput.play | audio_base64, sample_rate, channels, codec | accepted | False | BLOCKED_EXTERNAL |
| Camera.snapshot | width, height, format | width, height, format, pixels_base64 | True | BLOCKED_EXTERNAL |
| Display.present | text | accepted | False | BLOCKED_EXTERNAL |
| UserControls.poll | {} | control | False | BLOCKED_EXTERNAL |
| Sensors.read | sensor_type | sensor_type, values | True | BLOCKED_EXTERNAL |
| Recording.start | retention_seconds | recording, retained_bytes | True | BLOCKED_EXTERNAL |
| Recording.stop | {} | recording, retained_bytes | True | BLOCKED_EXTERNAL |
| Recording.status | {} | recording, retained_bytes | True | BLOCKED_EXTERNAL |
| BasicDeviceStatus.read | {} | connected, battery_percent | False | BLOCKED_EXTERNAL |
| ConnectivityEvents.poll | {} | state | False | BLOCKED_EXTERNAL |
Error enums
- unsupported: Declared operation cannot be performed; no fallback.
- unavailable: Resource unavailable; actual completion may be uncertain.
- cancelled: Cancellation reported; host still distinguishes confirmed stop.
- timeout: Deadline exceeded; no automatic replay.
- invalid_request: Bounded request rejected.
- none: Success only.
Host lifecycle outcomes
queued → dispatched → completed/failed/unknown. Cancellation before dispatch is cancelled; after dispatch remote stop is unconfirmed. Expired before dispatch never executes. Reconnect uses fresh epoch; no automatic replay.
Platform evidence
Linux: offline source/protocol tests only. Windows/macOS: NOT_RUN for this kit release. iOS/Android/native toolchains and real hardware: BLOCKED_EXTERNAL.