@houwert/conductor 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/commands/assert-not-visible.js +3 -1
  2. package/dist/commands/assert-visible.js +3 -1
  3. package/dist/commands/back.js +4 -0
  4. package/dist/commands/capture-ui.js +4 -2
  5. package/dist/commands/clipboard.js +9 -0
  6. package/dist/commands/crashes.js +5 -0
  7. package/dist/commands/delete-device.js +6 -1
  8. package/dist/commands/download-app.js +4 -0
  9. package/dist/commands/erase-text.js +2 -1
  10. package/dist/commands/focused.js +3 -1
  11. package/dist/commands/foreground-app.js +2 -1
  12. package/dist/commands/gestures.js +7 -0
  13. package/dist/commands/hide-keyboard.js +4 -0
  14. package/dist/commands/inspect.js +4 -3
  15. package/dist/commands/install-app.js +11 -0
  16. package/dist/commands/launch-app.js +6 -0
  17. package/dist/commands/list-apps.js +5 -0
  18. package/dist/commands/list-devices.js +16 -0
  19. package/dist/commands/memory.js +5 -0
  20. package/dist/commands/press-key.js +32 -4
  21. package/dist/commands/profile.js +5 -0
  22. package/dist/commands/screenshot.js +3 -1
  23. package/dist/commands/scroll-until-visible.js +3 -1
  24. package/dist/commands/scroll.js +2 -1
  25. package/dist/commands/start-device.js +60 -3
  26. package/dist/commands/stop-app.js +4 -0
  27. package/dist/commands/stop-device.js +8 -3
  28. package/dist/commands/swipe.js +2 -1
  29. package/dist/commands/tap.js +9 -6
  30. package/dist/commands/uninstall-app.js +4 -0
  31. package/dist/commands/web-targets.js +84 -0
  32. package/dist/commands/workspace.js +4 -1
  33. package/dist/daemon/log-collector.js +9 -1
  34. package/dist/daemon/server.js +70 -50
  35. package/dist/drivers/bootstrap.js +12 -0
  36. package/dist/drivers/flow-runner.js +38 -8
  37. package/dist/drivers/ios.js +5 -2
  38. package/dist/drivers/log-sources/metro-discovery.js +56 -2
  39. package/dist/drivers/log-sources/vega.js +77 -0
  40. package/dist/drivers/metro-cdp.js +11 -3
  41. package/dist/drivers/vega/automation-client.js +79 -0
  42. package/dist/drivers/vega/cli.js +199 -0
  43. package/dist/drivers/vega/connection.js +48 -0
  44. package/dist/drivers/vega/input.js +100 -0
  45. package/dist/drivers/vega/page-source-parser.js +229 -0
  46. package/dist/drivers/vega.js +165 -0
  47. package/dist/enum-options.js +15 -3
  48. package/dist/index.js +46 -2
  49. package/dist/runner.js +31 -0
  50. package/package.json +1 -1
  51. package/skills/conductor-device-interact/SKILL.md +4 -3
  52. package/skills/conductor-device-setup/SKILL.md +59 -28
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: conductor-device-setup
3
- description: Boot, list, and manage devices and app installs for the conductor CLI — iOS simulators, Android emulators, tvOS simulators, and Playwright web browsers — plus sessions, the warm-driver daemon, and the parallel device pool. Use when starting or stopping a simulator/emulator/browser, installing or launching an app, setting up the web driver, keeping the driver warm, or coordinating multiple devices for parallel agents.
3
+ description: Boot, list, and manage devices and app installs for the conductor CLI — iOS simulators, Android emulators, tvOS simulators, Vega (Amazon Fire TV) virtual devices, and Playwright web browsers — plus sessions, the warm-driver daemon, and the parallel device pool. Use when starting or stopping a simulator/emulator/browser, attaching to a Vega VVD, installing or launching an app, setting up the web driver, attaching to an already-running browser over CDP (e.g. an Electron app / its webviews), keeping the driver warm, or coordinating multiple devices for parallel agents.
4
4
  ---
5
5
 
6
6
  # Conductor — device & app setup
@@ -19,27 +19,58 @@ conductor list-apps # installed app ids / package names
19
19
 
20
20
  ## Devices
21
21
 
22
- | Command | Purpose |
23
- |---|---|
24
- | `conductor start-device --platform <ios\|android\|tvos\|web>` | Boot a simulator/emulator or start the web driver |
25
- | `conductor start-device --os-version <n> --device-type <name>` | Pick OS version + device type (creates if needed) |
26
- | `conductor stop-device [<name-or-id>] [--all]` | Shut down device(s) |
27
- | `conductor delete-device <name-or-id> [--all]` | Delete simulator(s)/AVD(s)/web session(s) |
28
- | `conductor set-location --lat <n> --lng <n>` | Set GPS coordinates |
29
- | `conductor set-orientation <portrait\|landscape>` | Set orientation |
30
- | `conductor set-viewport [<w> <h>] [--preset mobile\|tablet\|desktop]` | Resize web viewport (web only) |
31
- | `conductor install-web [--check] [browser]` | Install a Playwright browser (chromium/firefox/webkit); `--check` = status |
22
+ | Command | Purpose |
23
+ | --------------------------------------------------------------------- | -------------------------------------------------------------------------- |
24
+ | `conductor start-device --platform <ios\|android\|tvos\|web\|vega>` | Boot a simulator/emulator, start the web driver, or attach to a Vega VVD |
25
+ | `conductor start-device --os-version <n> --device-type <name>` | Pick OS version + device type (creates if needed) |
26
+ | `conductor stop-device [<name-or-id>] [--all]` | Shut down device(s) |
27
+ | `conductor delete-device <name-or-id> [--all]` | Delete simulator(s)/AVD(s)/web session(s) |
28
+ | `conductor set-location --lat <n> --lng <n>` | Set GPS coordinates |
29
+ | `conductor set-orientation <portrait\|landscape>` | Set orientation |
30
+ | `conductor set-viewport [<w> <h>] [--preset mobile\|tablet\|desktop]` | Resize web viewport (web only) |
31
+ | `conductor install-web [--check] [browser]` | Install a Playwright browser (chromium/firefox/webkit); `--check` = status |
32
+
33
+ ### Attach to an existing browser (CDP)
34
+
35
+ Instead of launching its own browser, the web driver can attach to one that's
36
+ already running and exposes CDP over a remote-debugging port — e.g. an Electron
37
+ app started with `--remote-debugging-port`, where each window / webview is a
38
+ separate page target you can drive independently.
39
+
40
+ | Command | Purpose |
41
+ | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
42
+ | `conductor web-targets --cdp-url <url>` | List the controllable page targets the browser exposes (id, url, title) + a paste-ready bind command for each |
43
+ | `conductor --device web:<browser>:<label> --cdp-url <url> --cdp-target <id> <cmd>` | Bind a session to one target; the attachment persists so later commands for that `--device` don't need the flags |
44
+
45
+ Use a distinct fully-qualified `--device web:chromium:<label>` per target (a bare
46
+ `web` gets an auto-generated sub-id instead). Each target is its own session, so
47
+ several webviews can be driven concurrently. Only `type=page` targets are
48
+ controllable. See [Web testing → Attaching to an existing browser](../../../docs/web.md).
49
+
50
+ ### Vega (Amazon Fire TV)
51
+
52
+ Vega is a React Native OS driven through Amazon's own `vega`/`kepler` CLI (not
53
+ adb/simctl) — install the Vega SDK and put the CLI on `PATH` (or set
54
+ `CONDUCTOR_VEGA_CLI`). `conductor start-device --platform vega` boots a Vega
55
+ Virtual Device (VVD) via `vega virtual-device start` (or attaches if one is
56
+ already running); pass `--name <vvd>` to pick a specific one. Devices show up in
57
+ `list-devices` as `vega:<serial>`. The VVD's
58
+ **developer mode** must be on for input, and the automation toolkit attaches at
59
+ app launch — so launch the app under test via conductor. Navigate with the D-pad
60
+ (`press-key "Remote Dpad …"` / `"Remote Dpad Center"`); coordinate `tap-on` also
61
+ works. Unsupported on Vega: deep links (`open-link`), `set-location`, gestures,
62
+ screen recording, clipboard, `clear-state`/`uninstall-app`.
32
63
 
33
64
  ## App lifecycle
34
65
 
35
- | Command | Purpose |
36
- |---|---|
37
- | `conductor install-app <path>` | Install .app / .ipa / .apk |
38
- | `conductor launch-app <appId>` | Launch app (saved to session); `--no-stop-app`, `--argument key=value` |
39
- | `conductor stop-app [<appId>]` | Stop app |
40
- | `conductor uninstall-app <appId>` | Uninstall app |
41
- | `conductor copy-app <bundleId> --from <id> --to <id>` | Copy an installed app between iOS simulators |
42
- | `conductor download-app <appId> --output <path>` | Download installed app binary |
66
+ | Command | Purpose |
67
+ | ----------------------------------------------------- | ---------------------------------------------------------------------- |
68
+ | `conductor install-app <path>` | Install .app / .ipa / .apk |
69
+ | `conductor launch-app <appId>` | Launch app (saved to session); `--no-stop-app`, `--argument key=value` |
70
+ | `conductor stop-app [<appId>]` | Stop app |
71
+ | `conductor uninstall-app <appId>` | Uninstall app |
72
+ | `conductor copy-app <bundleId> --from <id> --to <id>` | Copy an installed app between iOS simulators |
73
+ | `conductor download-app <appId> --output <path>` | Download installed app binary |
43
74
 
44
75
  ### ⚠️ Destructive flags — ask the user first
45
76
 
@@ -54,15 +85,15 @@ you genuinely need one, ask the human first.
54
85
  A **session** remembers the last device + app so you don't re-specify them.
55
86
  Parallel agents each get their own `--session <name>` so they don't collide.
56
87
 
57
- | Command | Purpose |
58
- |---|---|
59
- | `conductor session [--clear] [--list]` | Show, clear, or list sessions |
60
- | `conductor daemon-start` | Start the per-session background daemon (keeps the driver warm — do this for any multi-step session) |
61
- | `conductor daemon-status` | Show daemon status |
62
- | `conductor daemon-stop [--all]` | Stop this session's daemon (`--all` = every session) |
63
- | `conductor device-pool --list` | List devices + pool status |
64
- | `conductor device-pool --acquire` | Claim a free device (prints id) |
65
- | `conductor device-pool --release <id>` | Release a device back to the pool |
88
+ | Command | Purpose |
89
+ | -------------------------------------- | ---------------------------------------------------------------------------------------------------- |
90
+ | `conductor session [--clear] [--list]` | Show, clear, or list sessions |
91
+ | `conductor daemon-start` | Start the per-session background daemon (keeps the driver warm — do this for any multi-step session) |
92
+ | `conductor daemon-status` | Show daemon status |
93
+ | `conductor daemon-stop [--all]` | Stop this session's daemon (`--all` = every session) |
94
+ | `conductor device-pool --list` | List devices + pool status |
95
+ | `conductor device-pool --acquire` | Claim a free device (prints id) |
96
+ | `conductor device-pool --release <id>` | Release a device back to the pool |
66
97
 
67
98
  Don't leave a daemon running when you're done — `daemon-stop` it.
68
99