feat(revyl): add the Revyl device-cloud provider plugin
Summary
Adds Revyl cloud iOS simulators and Android emulators as the separately published plugin @agent-device/revyl (packages/provider-revyl), built on the v2 provider-plugin contract.
agent-device plugins add @agent-device/revyl
export REVYL_API_KEY=...
agent-device connect revyl --platform ios --provider-app https://apps.example.com/MyApp-simulator.zip
agent-device open com.example.app && agent-device snapshot -i
The plugin drives Revyl through its device-proxy HTTP API, without Appium. It rents a device on the first device command. Each session id is derived from its lease, so release, recovery and shutdown can always name the device to stop. An unconfirmed stop keeps the lease and reports provider-cleanup-pending with the session ids.
Supported: snapshot, screenshot, click, press, fill, scroll, open, close, home, and back on Android. Every other command refuses with a typed reason.
Outside the plugin, the change does two things:
- It moves Limrun's iOS AX-tree reader to
@agent-device/capture-kit/ios-ax-tree, because Revyl answers iOS in the same shape. - It adds a
revyl-ios-treesnapshot producer. Android snapshots stayappium-source, because Revyl returns the same uiautomator page source.
kill -9 recovery comes from #4108, now on main.
Validation
pnpm check:affected --runpassed at every pushed head. Unit tests run against a fake backend; root tests cover connect and the registry close.- Live on the real backend, iOS and Android, from a packed install. This covers the happy paths, Ctrl-C during
start_device,kill -9with #4108, and a failing/stopretried at lease expiry: https://github.com/callstack/agent-device/pull/4092#issuecomment-6531241364 and, at 86c4c7f, https://github.com/callstack/agent-device/pull/4092#issuecomment-6534644237
🤖 Generated with Claude Code