feat(revyl): add the Revyl device-cloud provider plugin

Merged
TH
12h ago
+8478-381

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-tree snapshot producer. Android snapshots stay appium-source, because Revyl returns the same uiautomator page source.

kill -9 recovery comes from #4108, now on main.

Validation

🤖 Generated with Claude Code