feat(android): simulate an incoming call or SMS on an emulator
Summary
Adds a telephony command that simulates an incoming call or SMS on an Android emulator. For example, to check that video playback pauses when a call comes in.
agent-device telephony call 5551234
agent-device telephony cancel 5551234
agent-device telephony sms 5551234 "Your code is 1234"
Node: client.command.telephony({ action, number, text }).
Android sends each event through the emulator console (adb emu gsm …, adb emu sms send …). adb exits 0 even when the console answers KO, so a refusal fails with COMMAND_FAILED and reason: telephony-console-refused. Physical Android devices refuse with unsupported-device-kind. Every other platform and provider, Appium and Limrun included, refuses. Fold now shares the same runEmulatorConsole call, so its console calls get the same 10 s timeout.
63 files, +1342/-32. Over the 1,000-line budget; most of it is tests and per-platform refusals.
Validation
pnpm check:affected --runpasses onec046fd9ewith a local, unpushed fix for main's broken typecheck (declarations.ts:558).- Live run on a Pixel 9 Pro XL AVD (Android 17), local adb executor only: call shows the incoming-call UI, cancel ends it, accept with no call is refused, and a two-line SMS with backslashes arrives verbatim. Output is in this comment.
Open risks:
- Not run on a remote or provider ADB executor, or on a physical device.
- The emulator drops emoji and other non-BMP SMS characters. This is documented, not refused.
- iOS Smoke Tests failed on
6f1807b13with the sameAPP_NOT_RUNNINGast3/limrun-ios-alert-actions.