@swmansion/argent 0.30.2-next.1 → 0.30.2-next.2

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.
package/dist/cli-cmds.mjs CHANGED
@@ -9696,6 +9696,21 @@ var FAILURE_CODES = {
9696
9696
  VEGA_ALREADY_RUNNING: "VEGA_ALREADY_RUNNING",
9697
9697
  VEGA_SCREENSHOT_FAILED: "VEGA_SCREENSHOT_FAILED",
9698
9698
  VEGA_TEXT_INVALID: "VEGA_TEXT_INVALID",
9699
+ HARMONY_DISABLED: "HARMONY_DISABLED",
9700
+ HARMONY_HDC_NOT_FOUND: "HARMONY_HDC_NOT_FOUND",
9701
+ HARMONY_EMULATOR_NOT_FOUND: "HARMONY_EMULATOR_NOT_FOUND",
9702
+ HARMONY_EMULATOR_COMMAND_FAILED: "HARMONY_EMULATOR_COMMAND_FAILED",
9703
+ HARMONY_HDC_COMMAND_FAILED: "HARMONY_HDC_COMMAND_FAILED",
9704
+ HARMONY_DEVICE_ID_INVALID: "HARMONY_DEVICE_ID_INVALID",
9705
+ HARMONY_DEVICE_UNREACHABLE: "HARMONY_DEVICE_UNREACHABLE",
9706
+ HARMONY_SHELL_NO_STATUS: "HARMONY_SHELL_NO_STATUS",
9707
+ HARMONY_FILE_TRANSFER_FAILED: "HARMONY_FILE_TRANSFER_FAILED",
9708
+ HARMONY_UITEST_FAILED: "HARMONY_UITEST_FAILED",
9709
+ HARMONY_DISPLAY_UNREADABLE: "HARMONY_DISPLAY_UNREADABLE",
9710
+ HARMONY_SCREEN_OFF: "HARMONY_SCREEN_OFF",
9711
+ HARMONY_ABILITY_START_FAILED: "HARMONY_ABILITY_START_FAILED",
9712
+ HARMONY_ABILITY_STOP_FAILED: "HARMONY_ABILITY_STOP_FAILED",
9713
+ HARMONY_REINSTALL_FAILED: "HARMONY_REINSTALL_FAILED",
9699
9714
  ANDROID_ADB_NOT_FOUND: "ANDROID_ADB_NOT_FOUND",
9700
9715
  ANDROID_EMULATOR_NOT_FOUND: "ANDROID_EMULATOR_NOT_FOUND",
9701
9716
  ANDROID_ADB_COMMAND_FAILED: "ANDROID_ADB_COMMAND_FAILED",
@@ -9933,6 +9948,12 @@ var FAILURE_CODES = {
9933
9948
  BOOT_ANDROID_FIRST_FRAME_TIMEOUT: "BOOT_ANDROID_FIRST_FRAME_TIMEOUT",
9934
9949
  BOOT_ANDROID_PACKAGE_MANAGER_UNAVAILABLE: "BOOT_ANDROID_PACKAGE_MANAGER_UNAVAILABLE",
9935
9950
  BOOT_ANDROID_COLD_BOOT_FAILED: "BOOT_ANDROID_COLD_BOOT_FAILED",
9951
+ BOOT_HARMONY_INSTANCE_NOT_FOUND: "BOOT_HARMONY_INSTANCE_NOT_FOUND",
9952
+ BOOT_HARMONY_TARGET_LIST_FAILED: "BOOT_HARMONY_TARGET_LIST_FAILED",
9953
+ BOOT_HARMONY_STOP_FAILED: "BOOT_HARMONY_STOP_FAILED",
9954
+ BOOT_HARMONY_STOP_TIMEOUT: "BOOT_HARMONY_STOP_TIMEOUT",
9955
+ BOOT_HARMONY_MANAGER_EXITED: "BOOT_HARMONY_MANAGER_EXITED",
9956
+ BOOT_HARMONY_START_FAILED: "BOOT_HARMONY_START_FAILED",
9936
9957
  /**
9937
9958
  * External device providers
9938
9959
  * @see [external-devices.ts](../../tool-server/src/utils/external-devices.ts)
@@ -9962,6 +9983,8 @@ var FAILURE_COMMANDS = [
9962
9983
  "adb",
9963
9984
  "emulator",
9964
9985
  "vega",
9986
+ "hdc",
9987
+ "deveco_emulator",
9965
9988
  "xcrun_simctl",
9966
9989
  "xctrace",
9967
9990
  "native_devtools",
@@ -31077,6 +31100,10 @@ var FLAG_REGISTRY = [
31077
31100
  name: "microinteractions",
31078
31101
  description: "Amplify device actions with matching animations of the host window, so what happens on the guest is also visible on the desktop. Purely cosmetic, macOS only, and never affects whether the underlying action succeeds. Off by default."
31079
31102
  },
31103
+ {
31104
+ name: "harmonyos",
31105
+ description: "HarmonyOS support: list, boot and drive HarmonyOS phones and DevEco Studio emulators over `hdc`. Off by default while the platform is experimental."
31106
+ },
31080
31107
  {
31081
31108
  name: "video-watermark",
31082
31109
  description: "Overlay the argent corner watermark on recorded screen videos. On by default; turn it off with `argent disable video-watermark`.",
@@ -34796,6 +34823,7 @@ var PLATFORMS = [
34796
34823
  "android",
34797
34824
  "chromium",
34798
34825
  "vega",
34826
+ "harmony",
34799
34827
  "tvos",
34800
34828
  "android-tv"
34801
34829
  ];
@@ -35549,7 +35577,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
35549
35577
  var SESSION_ID2 = randomUUID5();
35550
35578
  function readCliVersion() {
35551
35579
  if (true) {
35552
- return "0.30.2-next.1";
35580
+ return "0.30.2-next.2";
35553
35581
  }
35554
35582
  return "0.0.0";
35555
35583
  }
package/dist/client.js CHANGED
@@ -7790,6 +7790,10 @@ var FLAG_REGISTRY = [
7790
7790
  name: "microinteractions",
7791
7791
  description: "Amplify device actions with matching animations of the host window, so what happens on the guest is also visible on the desktop. Purely cosmetic, macOS only, and never affects whether the underlying action succeeds. Off by default."
7792
7792
  },
7793
+ {
7794
+ name: "harmonyos",
7795
+ description: "HarmonyOS support: list, boot and drive HarmonyOS phones and DevEco Studio emulators over `hdc`. Off by default while the platform is experimental."
7796
+ },
7793
7797
  {
7794
7798
  name: "video-watermark",
7795
7799
  description: "Overlay the argent corner watermark on recorded screen videos. On by default; turn it off with `argent disable video-watermark`.",
@@ -8896,6 +8900,21 @@ var FAILURE_CODES = {
8896
8900
  VEGA_ALREADY_RUNNING: "VEGA_ALREADY_RUNNING",
8897
8901
  VEGA_SCREENSHOT_FAILED: "VEGA_SCREENSHOT_FAILED",
8898
8902
  VEGA_TEXT_INVALID: "VEGA_TEXT_INVALID",
8903
+ HARMONY_DISABLED: "HARMONY_DISABLED",
8904
+ HARMONY_HDC_NOT_FOUND: "HARMONY_HDC_NOT_FOUND",
8905
+ HARMONY_EMULATOR_NOT_FOUND: "HARMONY_EMULATOR_NOT_FOUND",
8906
+ HARMONY_EMULATOR_COMMAND_FAILED: "HARMONY_EMULATOR_COMMAND_FAILED",
8907
+ HARMONY_HDC_COMMAND_FAILED: "HARMONY_HDC_COMMAND_FAILED",
8908
+ HARMONY_DEVICE_ID_INVALID: "HARMONY_DEVICE_ID_INVALID",
8909
+ HARMONY_DEVICE_UNREACHABLE: "HARMONY_DEVICE_UNREACHABLE",
8910
+ HARMONY_SHELL_NO_STATUS: "HARMONY_SHELL_NO_STATUS",
8911
+ HARMONY_FILE_TRANSFER_FAILED: "HARMONY_FILE_TRANSFER_FAILED",
8912
+ HARMONY_UITEST_FAILED: "HARMONY_UITEST_FAILED",
8913
+ HARMONY_DISPLAY_UNREADABLE: "HARMONY_DISPLAY_UNREADABLE",
8914
+ HARMONY_SCREEN_OFF: "HARMONY_SCREEN_OFF",
8915
+ HARMONY_ABILITY_START_FAILED: "HARMONY_ABILITY_START_FAILED",
8916
+ HARMONY_ABILITY_STOP_FAILED: "HARMONY_ABILITY_STOP_FAILED",
8917
+ HARMONY_REINSTALL_FAILED: "HARMONY_REINSTALL_FAILED",
8899
8918
  ANDROID_ADB_NOT_FOUND: "ANDROID_ADB_NOT_FOUND",
8900
8919
  ANDROID_EMULATOR_NOT_FOUND: "ANDROID_EMULATOR_NOT_FOUND",
8901
8920
  ANDROID_ADB_COMMAND_FAILED: "ANDROID_ADB_COMMAND_FAILED",
@@ -9133,6 +9152,12 @@ var FAILURE_CODES = {
9133
9152
  BOOT_ANDROID_FIRST_FRAME_TIMEOUT: "BOOT_ANDROID_FIRST_FRAME_TIMEOUT",
9134
9153
  BOOT_ANDROID_PACKAGE_MANAGER_UNAVAILABLE: "BOOT_ANDROID_PACKAGE_MANAGER_UNAVAILABLE",
9135
9154
  BOOT_ANDROID_COLD_BOOT_FAILED: "BOOT_ANDROID_COLD_BOOT_FAILED",
9155
+ BOOT_HARMONY_INSTANCE_NOT_FOUND: "BOOT_HARMONY_INSTANCE_NOT_FOUND",
9156
+ BOOT_HARMONY_TARGET_LIST_FAILED: "BOOT_HARMONY_TARGET_LIST_FAILED",
9157
+ BOOT_HARMONY_STOP_FAILED: "BOOT_HARMONY_STOP_FAILED",
9158
+ BOOT_HARMONY_STOP_TIMEOUT: "BOOT_HARMONY_STOP_TIMEOUT",
9159
+ BOOT_HARMONY_MANAGER_EXITED: "BOOT_HARMONY_MANAGER_EXITED",
9160
+ BOOT_HARMONY_START_FAILED: "BOOT_HARMONY_START_FAILED",
9136
9161
  /**
9137
9162
  * External device providers
9138
9163
  * @see [external-devices.ts](../../tool-server/src/utils/external-devices.ts)
@@ -15804,6 +15804,21 @@ var FAILURE_CODES = {
15804
15804
  VEGA_ALREADY_RUNNING: "VEGA_ALREADY_RUNNING",
15805
15805
  VEGA_SCREENSHOT_FAILED: "VEGA_SCREENSHOT_FAILED",
15806
15806
  VEGA_TEXT_INVALID: "VEGA_TEXT_INVALID",
15807
+ HARMONY_DISABLED: "HARMONY_DISABLED",
15808
+ HARMONY_HDC_NOT_FOUND: "HARMONY_HDC_NOT_FOUND",
15809
+ HARMONY_EMULATOR_NOT_FOUND: "HARMONY_EMULATOR_NOT_FOUND",
15810
+ HARMONY_EMULATOR_COMMAND_FAILED: "HARMONY_EMULATOR_COMMAND_FAILED",
15811
+ HARMONY_HDC_COMMAND_FAILED: "HARMONY_HDC_COMMAND_FAILED",
15812
+ HARMONY_DEVICE_ID_INVALID: "HARMONY_DEVICE_ID_INVALID",
15813
+ HARMONY_DEVICE_UNREACHABLE: "HARMONY_DEVICE_UNREACHABLE",
15814
+ HARMONY_SHELL_NO_STATUS: "HARMONY_SHELL_NO_STATUS",
15815
+ HARMONY_FILE_TRANSFER_FAILED: "HARMONY_FILE_TRANSFER_FAILED",
15816
+ HARMONY_UITEST_FAILED: "HARMONY_UITEST_FAILED",
15817
+ HARMONY_DISPLAY_UNREADABLE: "HARMONY_DISPLAY_UNREADABLE",
15818
+ HARMONY_SCREEN_OFF: "HARMONY_SCREEN_OFF",
15819
+ HARMONY_ABILITY_START_FAILED: "HARMONY_ABILITY_START_FAILED",
15820
+ HARMONY_ABILITY_STOP_FAILED: "HARMONY_ABILITY_STOP_FAILED",
15821
+ HARMONY_REINSTALL_FAILED: "HARMONY_REINSTALL_FAILED",
15807
15822
  ANDROID_ADB_NOT_FOUND: "ANDROID_ADB_NOT_FOUND",
15808
15823
  ANDROID_EMULATOR_NOT_FOUND: "ANDROID_EMULATOR_NOT_FOUND",
15809
15824
  ANDROID_ADB_COMMAND_FAILED: "ANDROID_ADB_COMMAND_FAILED",
@@ -16041,6 +16056,12 @@ var FAILURE_CODES = {
16041
16056
  BOOT_ANDROID_FIRST_FRAME_TIMEOUT: "BOOT_ANDROID_FIRST_FRAME_TIMEOUT",
16042
16057
  BOOT_ANDROID_PACKAGE_MANAGER_UNAVAILABLE: "BOOT_ANDROID_PACKAGE_MANAGER_UNAVAILABLE",
16043
16058
  BOOT_ANDROID_COLD_BOOT_FAILED: "BOOT_ANDROID_COLD_BOOT_FAILED",
16059
+ BOOT_HARMONY_INSTANCE_NOT_FOUND: "BOOT_HARMONY_INSTANCE_NOT_FOUND",
16060
+ BOOT_HARMONY_TARGET_LIST_FAILED: "BOOT_HARMONY_TARGET_LIST_FAILED",
16061
+ BOOT_HARMONY_STOP_FAILED: "BOOT_HARMONY_STOP_FAILED",
16062
+ BOOT_HARMONY_STOP_TIMEOUT: "BOOT_HARMONY_STOP_TIMEOUT",
16063
+ BOOT_HARMONY_MANAGER_EXITED: "BOOT_HARMONY_MANAGER_EXITED",
16064
+ BOOT_HARMONY_START_FAILED: "BOOT_HARMONY_START_FAILED",
16044
16065
  /**
16045
16066
  * External device providers
16046
16067
  * @see [external-devices.ts](../../tool-server/src/utils/external-devices.ts)
@@ -16070,6 +16091,8 @@ var FAILURE_COMMANDS = [
16070
16091
  "adb",
16071
16092
  "emulator",
16072
16093
  "vega",
16094
+ "hdc",
16095
+ "deveco_emulator",
16073
16096
  "xcrun_simctl",
16074
16097
  "xctrace",
16075
16098
  "native_devtools",
@@ -16122,6 +16145,7 @@ var PLATFORMS = [
16122
16145
  "android",
16123
16146
  "chromium",
16124
16147
  "vega",
16148
+ "harmony",
16125
16149
  "tvos",
16126
16150
  "android-tv"
16127
16151
  ];
@@ -16875,7 +16899,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
16875
16899
  var SESSION_ID = randomUUID4();
16876
16900
  function readCliVersion() {
16877
16901
  if (true) {
16878
- return "0.30.2-next.1";
16902
+ return "0.30.2-next.2";
16879
16903
  }
16880
16904
  return "0.0.0";
16881
16905
  }
@@ -25155,6 +25155,21 @@ var FAILURE_CODES = {
25155
25155
  VEGA_ALREADY_RUNNING: "VEGA_ALREADY_RUNNING",
25156
25156
  VEGA_SCREENSHOT_FAILED: "VEGA_SCREENSHOT_FAILED",
25157
25157
  VEGA_TEXT_INVALID: "VEGA_TEXT_INVALID",
25158
+ HARMONY_DISABLED: "HARMONY_DISABLED",
25159
+ HARMONY_HDC_NOT_FOUND: "HARMONY_HDC_NOT_FOUND",
25160
+ HARMONY_EMULATOR_NOT_FOUND: "HARMONY_EMULATOR_NOT_FOUND",
25161
+ HARMONY_EMULATOR_COMMAND_FAILED: "HARMONY_EMULATOR_COMMAND_FAILED",
25162
+ HARMONY_HDC_COMMAND_FAILED: "HARMONY_HDC_COMMAND_FAILED",
25163
+ HARMONY_DEVICE_ID_INVALID: "HARMONY_DEVICE_ID_INVALID",
25164
+ HARMONY_DEVICE_UNREACHABLE: "HARMONY_DEVICE_UNREACHABLE",
25165
+ HARMONY_SHELL_NO_STATUS: "HARMONY_SHELL_NO_STATUS",
25166
+ HARMONY_FILE_TRANSFER_FAILED: "HARMONY_FILE_TRANSFER_FAILED",
25167
+ HARMONY_UITEST_FAILED: "HARMONY_UITEST_FAILED",
25168
+ HARMONY_DISPLAY_UNREADABLE: "HARMONY_DISPLAY_UNREADABLE",
25169
+ HARMONY_SCREEN_OFF: "HARMONY_SCREEN_OFF",
25170
+ HARMONY_ABILITY_START_FAILED: "HARMONY_ABILITY_START_FAILED",
25171
+ HARMONY_ABILITY_STOP_FAILED: "HARMONY_ABILITY_STOP_FAILED",
25172
+ HARMONY_REINSTALL_FAILED: "HARMONY_REINSTALL_FAILED",
25158
25173
  ANDROID_ADB_NOT_FOUND: "ANDROID_ADB_NOT_FOUND",
25159
25174
  ANDROID_EMULATOR_NOT_FOUND: "ANDROID_EMULATOR_NOT_FOUND",
25160
25175
  ANDROID_ADB_COMMAND_FAILED: "ANDROID_ADB_COMMAND_FAILED",
@@ -25392,6 +25407,12 @@ var FAILURE_CODES = {
25392
25407
  BOOT_ANDROID_FIRST_FRAME_TIMEOUT: "BOOT_ANDROID_FIRST_FRAME_TIMEOUT",
25393
25408
  BOOT_ANDROID_PACKAGE_MANAGER_UNAVAILABLE: "BOOT_ANDROID_PACKAGE_MANAGER_UNAVAILABLE",
25394
25409
  BOOT_ANDROID_COLD_BOOT_FAILED: "BOOT_ANDROID_COLD_BOOT_FAILED",
25410
+ BOOT_HARMONY_INSTANCE_NOT_FOUND: "BOOT_HARMONY_INSTANCE_NOT_FOUND",
25411
+ BOOT_HARMONY_TARGET_LIST_FAILED: "BOOT_HARMONY_TARGET_LIST_FAILED",
25412
+ BOOT_HARMONY_STOP_FAILED: "BOOT_HARMONY_STOP_FAILED",
25413
+ BOOT_HARMONY_STOP_TIMEOUT: "BOOT_HARMONY_STOP_TIMEOUT",
25414
+ BOOT_HARMONY_MANAGER_EXITED: "BOOT_HARMONY_MANAGER_EXITED",
25415
+ BOOT_HARMONY_START_FAILED: "BOOT_HARMONY_START_FAILED",
25395
25416
  /**
25396
25417
  * External device providers
25397
25418
  * @see [external-devices.ts](../../tool-server/src/utils/external-devices.ts)
@@ -25421,6 +25442,8 @@ var FAILURE_COMMANDS = [
25421
25442
  "adb",
25422
25443
  "emulator",
25423
25444
  "vega",
25445
+ "hdc",
25446
+ "deveco_emulator",
25424
25447
  "xcrun_simctl",
25425
25448
  "xctrace",
25426
25449
  "native_devtools",
@@ -27406,6 +27429,7 @@ var PLATFORMS = [
27406
27429
  "android",
27407
27430
  "chromium",
27408
27431
  "vega",
27432
+ "harmony",
27409
27433
  "tvos",
27410
27434
  "android-tv"
27411
27435
  ];
@@ -1,6 +1,6 @@
1
1
  export interface ArgentToolArgs {
2
2
  "await-screen-idle": {
3
- /** Target device id from `list-devices` (iOS UDID, Android serial, or Chromium id). */
3
+ /** Target device id from `list-devices` (iOS UDID, Android serial, HarmonyOS id, or Chromium id). */
4
4
  udid: string;
5
5
  /** Max time to wait for the screen to settle before giving up (default 3000). */
6
6
  timeoutMs?: number;
@@ -10,7 +10,7 @@ export interface ArgentToolArgs {
10
10
  minStableMs?: number;
11
11
  };
12
12
  "await-ui-element": {
13
- /** Target device id from `list-devices` (iOS UDID, Android serial, or Chromium id). */
13
+ /** Target device id from `list-devices` (iOS UDID, Android serial, HarmonyOS id, or Chromium id). */
14
14
  udid: string;
15
15
  /** What to wait for. `exists`: selector is anywhere in the tree. `visible`: selector is present with a non-zero on-screen frame. `hidden`: selector is absent or zero-area. `text`: the first visible match in reading order (topmost), falling back to the first match overall if none is visible, contains (or, with textMatch `equals`, exactly matches) expectedText. If a loose selector hits several elements, only that one is checked, so narrow it to target the intended element. */
16
16
  condition: "exists" | "visible" | "hidden" | "text";
@@ -27,7 +27,7 @@ export interface ArgentToolArgs {
27
27
  expectedText?: string;
28
28
  /** For condition `text`: how expectedText is compared. `contains` (default) is a case-insensitive substring; `equals` is a case-insensitive full-string match. */
29
29
  textMatch?: "contains" | "equals";
30
- /** Optional iOS app bundle id, passed to the describe fallback (see `describe`). Ignored on Android / Chromium, and on physical iOS. */
30
+ /** Optional iOS app bundle id, passed to the describe fallback (see `describe`). Ignored on every other platform, including physical iOS. */
31
31
  bundleId?: string;
32
32
  /** Max time to wait for the condition before giving up (default 5000). */
33
33
  timeoutMs?: number;
@@ -39,21 +39,23 @@ export interface ArgentToolArgs {
39
39
  timeoutSeconds?: number;
40
40
  };
41
41
  "boot-device": {
42
- /** iOS: simulator UDID to boot (from `list-devices`). Provide exactly one of `udid`, `avdName`, `vvdImage`, or `electronAppPath`. */
42
+ /** iOS: simulator UDID to boot (from `list-devices`). Provide exactly one of `udid`, `avdName`, `vvdImage`, `harmonyInstance`, or `electronAppPath`. */
43
43
  udid?: string;
44
- /** Android: AVD name to launch a new emulator from (from `list-devices` → `avds[].name`). Provide exactly one of `udid`, `avdName`, `vvdImage`, or `electronAppPath`. */
44
+ /** Android: AVD name to launch a new emulator from (from `list-devices` → `avds[].name`). Provide exactly one of `udid`, `avdName`, `vvdImage`, `harmonyInstance`, or `electronAppPath`. */
45
45
  avdName?: string;
46
- /** Vega (Fire TV): VVD image to boot: the `vvdImage` of a Vega device from `list-devices` (e.g. `tv`). Starts the single SDK-managed Vega Virtual Device. Provide exactly one of `udid`, `avdName`, `vvdImage`, or `electronAppPath`. */
46
+ /** Vega (Fire TV): VVD image to boot: the `vvdImage` of a Vega device from `list-devices` (e.g. `tv`). Starts the single SDK-managed Vega Virtual Device. Provide exactly one of `udid`, `avdName`, `vvdImage`, `harmonyInstance`, or `electronAppPath`. */
47
47
  vvdImage?: string;
48
- /** Android/Vega: overall budget for the boot sequence. Default 480000 (8 min) on Android, 120000 (2 min) on Vega. Clamped to [30s, 15min]. Ignored on iOS. */
48
+ /** HarmonyOS: emulator instance to start: the `name` of a `kind: "emulator"` device from `list-devices` (e.g. `Phone_1`); the `harmony-emulator-<name>` id that entry reports as its `udid` is accepted too. Provide exactly one of `udid`, `avdName`, `vvdImage`, `harmonyInstance`, or `electronAppPath`. */
49
+ harmonyInstance?: string;
50
+ /** Android/Vega/HarmonyOS: overall budget for the boot sequence. Default 480000 (8 min) on Android, 120000 (2 min) on Vega, 180000 (3 min) on HarmonyOS, where with `force` it spans the shutdown as well as the boot. Clamped to [30s, 15min]. Ignored on iOS. */
49
51
  bootTimeoutMs?: number;
50
- /** Shut down and re-boot the device even if already running. */
52
+ /** Shut down and re-boot the device even if already running. On HarmonyOS it is also what ties an already-running instance to the `hdc` connect key it registered under, since the emulator manager never reports one: without it the instance is left alone and the payload names the instance rather than a key (`list-devices` lists the keys, but not which instance each belongs to). Ignored for Electron, which always spawns a fresh process. */
51
53
  force?: boolean;
52
- /** Android only: boot the emulator with audio output enabled. Defaults to false: argent boots emulators MUTED so several agent-driven devices don't all play sound on the host machine; pass `true` when the task involves playing, hearing, or testing audio. Takes effect at boot: if the emulator is already running muted, add `force: true` to reboot it with sound. A boot snapshot saved in the other audio mode can't be reused, so the first boot after toggling is a slower cold boot. The `boot-sound` argent flag flips this default to true. Ignored on iOS/Vega/Electron, which argent never mutes. */
54
+ /** Android only: boot the emulator with audio output enabled. Defaults to false: argent boots emulators MUTED so several agent-driven devices don't all play sound on the host machine; pass `true` when the task involves playing, hearing, or testing audio. Takes effect at boot: if the emulator is already running muted, add `force: true` to reboot it with sound. A boot snapshot saved in the other audio mode can't be reused, so the first boot after toggling is a slower cold boot. The `boot-sound` argent flag flips this default to true. Ignored on iOS/Vega/HarmonyOS/Electron, which argent never mutes. */
53
55
  sound?: boolean;
54
- /** iOS only: boot the simulator core WITHOUT opening its GUI window (Simulator.app, or Device Hub on Xcode 27+). The device still streams via simulator-server; used by Argent Lens. Set the `ARGENT_SIMULATOR_NO_WINDOW` env var (1/true/yes) to force this host-wide without passing the flag per call (the iOS analog of `ARGENT_EMULATOR_NO_WINDOW`). Ignored on Android/Vega/Electron, which have no equivalent GUI step. */
56
+ /** iOS only: boot the simulator core WITHOUT opening its GUI window (Simulator.app, or Device Hub on Xcode 27+). The device still streams via simulator-server; used by Argent Lens. Set the `ARGENT_SIMULATOR_NO_WINDOW` env var (1/true/yes) to force this host-wide without passing the flag per call (the iOS analog of `ARGENT_EMULATOR_NO_WINDOW`). Ignored on Android/Vega/HarmonyOS/Electron, which have no equivalent GUI step. */
55
57
  headless?: boolean;
56
- /** Electron: path to the Electron app to launch. Either a packaged .app bundle / executable, or a project directory whose package.json points the Electron binary at the entry script. Mutually exclusive with udid/avdName. */
58
+ /** Electron: path to the Electron app to launch. Either a packaged .app bundle / executable, or a project directory whose package.json points the Electron binary at the entry script. Provide exactly one of `udid`, `avdName`, `vvdImage`, `harmonyInstance`, or `electronAppPath`. */
57
59
  electronAppPath?: string;
58
60
  /** Electron-only: CDP remote-debugging port to expose. Defaults to a free port; the resulting device id is `chromium-cdp-<port>`. */
59
61
  electronPort?: number;
@@ -61,7 +63,7 @@ export interface ArgentToolArgs {
61
63
  electronArgs?: Array<string>;
62
64
  };
63
65
  button: {
64
- /** Target device id from `list-devices` (iOS UDID or Android serial). */
66
+ /** Target device id from `list-devices` (iOS UDID, HarmonyOS id, or Android serial). */
65
67
  udid: string;
66
68
  /** Hardware button to press */
67
69
  button: "home" | "back" | "power" | "volumeUp" | "volumeDown" | "appSwitch" | "actionButton";
@@ -179,9 +181,9 @@ export interface ArgentToolArgs {
179
181
  device_id: string;
180
182
  };
181
183
  describe: {
182
- /** Target device id from `list-devices` (iOS UDID, Android serial, Vega serial, or Chromium id). */
184
+ /** Target device id from `list-devices` (iOS UDID, Android serial, Vega serial, HarmonyOS id, or Chromium id). */
183
185
  udid: string;
184
- /** Optional app bundle ID. Used as a target hint on iOS when the AX-service returns no elements and the describe tool falls back to native-devtools inspection. If omitted, the fallback auto-detects the frontmost connected app. Ignored on Android / Chromium, and on a physical iOS device. */
186
+ /** Optional app bundle ID. Used as a target hint on iOS when the AX-service returns no elements and the describe tool falls back to native-devtools inspection. If omitted, the fallback auto-detects the frontmost connected app. Ignored on every other platform, including a physical iOS device. */
185
187
  bundleId?: string;
186
188
  };
187
189
  "dismiss-update": {
@@ -320,7 +322,7 @@ export interface ArgentToolArgs {
320
322
  momentum?: boolean;
321
323
  };
322
324
  "gesture-pinch": {
323
- /** Target device id from `list-devices` (iOS UDID or Android serial). */
325
+ /** Target device id from `list-devices` (iOS UDID, HarmonyOS id, or Android serial). */
324
326
  udid: string;
325
327
  /** Center of pinch, horizontal: normalized 0.0–1.0 (fraction of screen width, not pixels) */
326
328
  centerX: number;
@@ -336,7 +338,7 @@ export interface ArgentToolArgs {
336
338
  endCenterY?: number;
337
339
  /** Axis angle in degrees along which the fingers are placed (default 0 = horizontal). */
338
340
  angle?: number;
339
- /** Total gesture duration in milliseconds (default 300) */
341
+ /** Total gesture duration in milliseconds (default 300). On HarmonyOS the device runs the whole move itself and takes this as wall-clock time, clamped to the 1–15000ms range `uinput` accepts. */
340
342
  durationMs?: number;
341
343
  };
342
344
  "gesture-rotate": {
@@ -374,7 +376,7 @@ export interface ArgentToolArgs {
374
376
  durationMs?: number;
375
377
  };
376
378
  "gesture-swipe": {
377
- /** Target device id from `list-devices` (iOS UDID or Android serial). */
379
+ /** Target device id from `list-devices` (iOS UDID, HarmonyOS id, or Android serial). */
378
380
  udid: string;
379
381
  /** Start x: normalized 0.0–1.0 (not pixels; same as tap) */
380
382
  fromX: number;
@@ -390,31 +392,31 @@ export interface ArgentToolArgs {
390
392
  momentum?: boolean;
391
393
  };
392
394
  "gesture-tap": {
393
- /** Target device id from `list-devices` (iOS UDID, Android serial, or Chromium id). */
395
+ /** Target device id from `list-devices` (iOS UDID, Android serial, HarmonyOS id, or Chromium id). */
394
396
  udid: string;
395
397
  /** Normalized horizontal position 0.0–1.0 (left=0, right=1), not pixels */
396
398
  x: number;
397
399
  /** Normalized vertical position 0.0–1.0 (top=0, bottom=1), not pixels */
398
400
  y: number;
399
- /** Number of taps/clicks dispatched as ONE multi-tap gesture (2 = double-tap / double-click). The taps land inside the OS double-tap window; on Chromium each click carries an escalating CDP clickCount so dblclick actually fires; on physical iOS 2 is the native double-tap and higher counts land as separate taps. Default 1. */
401
+ /** Number of taps/clicks dispatched as ONE multi-tap gesture (2 = double-tap / double-click). The taps land inside the OS double-tap window; on Chromium each click carries an escalating CDP clickCount so dblclick actually fires; on physical iOS 2 is the native double-tap and higher counts land as separate taps. On HarmonyOS only 2 is one gesture; 3 or more are separate injections a device round trip apart, which the OS reads as single taps. Default 1. */
400
402
  clickCount?: number;
401
403
  };
402
404
  keyboard: {
403
- /** Target device id from `list-devices` (iOS UDID, Android serial, Vega serial, or Chromium id). */
405
+ /** Target device id from `list-devices` (iOS UDID, Android serial, Vega serial, HarmonyOS id, or Chromium id). */
404
406
  udid: string;
405
407
  /** Text to type character by character. Cannot be combined with `key` in one call (one call per action); to type and then press a key, put two `keyboard` steps in one `run-sequence`. Handles uppercase and common punctuation. To type a credential without its plaintext ever entering your context, use a secret placeholder: `{{secret:<NAME>}}`, e.g. text: "{{secret:APP_PASSWORD}}". The value is resolved on the machine running the tool-server, from the first source that defines the name: the `ARGENT_SECRET_<NAME>` environment variable, `.argent/secrets.env` in the project, the project's `.env.local` / `.env` (only their `ARGENT_SECRET_`-prefixed keys), then `~/.argent/secrets.env`. Nothing else on the host is reachable. Placeholders can be embedded in longer text and are never echoed back resolved. If the secret you need is not set, the failure lists the available names and every source it looked in; ask the user to add it to one of them (a secrets file applies immediately; an env var needs a restart), NEVER ask the user to paste the secret value into the conversation. */
406
408
  text?: string;
407
- /** Named key to press: enter, escape, backspace, tab, space, arrow-up, arrow-down, arrow-left, arrow-right, f1-f12. Cannot be combined with `text` in one call: one call per action; to type and then press a key, put two `keyboard` steps in one `run-sequence`. Not supported on TV targets; move focus with `tv-remote` (up/down/left/right) instead. Physical iOS: only `enter` and `backspace`. */
409
+ /** Named key to press: enter, escape, backspace, tab, space, arrow-up, arrow-down, arrow-left, arrow-right, f1-f12. Cannot be combined with `text` in one call: one call per action; to type and then press a key, put two `keyboard` steps in one `run-sequence`. Not supported on TV targets; move focus with `tv-remote` (up/down/left/right) instead. Physical iOS: only `enter` and `backspace`. HarmonyOS: only enter (return), backspace (delete), space, arrow-left and arrow-right; any other key fails with 400 KEYBOARD_KEY_UNSUPPORTED. */
408
410
  key?: string;
409
- /** Delay in ms between key presses (default 50). Ignored on Android phones/tablets (typed via `adb input text`, which has no per-key cadence), on Vega (text/keys injected in a single shot), on TV targets (Apple TV / Android TV type the whole string at the daemon's own cadence), and on physical iOS. */
411
+ /** Delay in ms between key presses (default 50). Ignored on Android phones/tablets (typed via `adb input text`, which has no per-key cadence), on HarmonyOS (`uitest uiInput text` types the whole string in one shot), on Vega (text/keys injected in a single shot), on TV targets (Apple TV / Android TV type the whole string at the daemon's own cadence), and on physical iOS. */
410
412
  delayMs?: number;
411
413
  };
412
414
  "launch-app": {
413
- /** Target device id from `list-devices` (iOS UDID, Android serial, or Chromium id). */
415
+ /** Target device id from `list-devices` (iOS UDID, Android serial, HarmonyOS id, or Chromium id). */
414
416
  udid: string;
415
- /** App identifier. iOS: bundle id (e.g. com.apple.MobileSMS). Android: package name from build.gradle `applicationId` (e.g. com.android.settings). Chromium: any tag matching the same alphabet (letters, digits, '.', '_' and '-'); the call is a no-op since the renderer is already running. */
417
+ /** App identifier. iOS: bundle id (e.g. com.apple.MobileSMS). Android: package name from build.gradle `applicationId` (e.g. com.android.settings). HarmonyOS: bundle name as listed by `bm dump -a` (e.g. com.huawei.hmos.calculator). Chromium: any tag matching the same alphabet (letters, digits, '.', '_' and '-'); the call is a no-op since the renderer is already running. */
416
418
  bundleId: string;
417
- /** Android-only: fully-qualified Activity name (e.g. `.MainActivity` or `com.example/com.example.MainActivity`). If omitted on Android, the app's default launcher activity is used. Ignored on iOS / Chromium. */
419
+ /** Android-only: fully-qualified Activity name (e.g. `.MainActivity` or `com.example/com.example.MainActivity`). If omitted on Android, the app's default launcher activity is used. Ignored on iOS / Chromium / HarmonyOS (a HarmonyOS ability is resolved from the bundle's own `abilityInfos`). */
418
420
  activity?: string;
419
421
  /** Apple simulators and physical iPhones: arguments passed to the app process at launch, e.g. `["-FeatureFlag", "YES"]` to override UserDefaults. A running app is relaunched to apply them. Ignored on other targets. */
420
422
  launchArgs?: Array<string>;
@@ -545,7 +547,7 @@ export interface ArgentToolArgs {
545
547
  maxDepth?: number;
546
548
  };
547
549
  "open-url": {
548
- /** Target device id from `list-devices` (iOS UDID, Android serial, or Chromium id). */
550
+ /** Target device id from `list-devices` (iOS UDID, Android serial, HarmonyOS id, or Chromium id). */
549
551
  udid: string;
550
552
  /** URL or scheme to open (e.g. https://example.com, messages://, tel:555, geo:37.0,-122.0). For Chromium this navigates the renderer. */
551
553
  url: string;
@@ -745,19 +747,19 @@ export interface ArgentToolArgs {
745
747
  device_id: string;
746
748
  };
747
749
  "reinstall-app": {
748
- /** Target device id from `list-devices` (iOS UDID or Android serial). */
750
+ /** Target device id from `list-devices` (iOS UDID, HarmonyOS id, or Android serial). */
749
751
  udid: string;
750
- /** App identifier that matches the bundle at `appPath`. iOS: bundle id (used to uninstall first). Android: package name (used to uninstall first; the install itself identifies the app from the APK). Vega: interactive component app id (e.g. com.example.app.main), used to uninstall first. */
752
+ /** App identifier that matches the bundle at `appPath`. iOS: bundle id (used to uninstall first). Android: package name (used to uninstall first; the install itself identifies the app from the APK). Vega: interactive component app id (e.g. com.example.app.main), used to uninstall first. HarmonyOS: bundle name, which must match `app.bundleName` in the `.hap`. */
751
753
  bundleId: string;
752
- /** Path to the app bundle. iOS: `.app` directory (e.g. ./build/.../MyApp.app). Android: `.apk` file (e.g. android/app/build/outputs/apk/debug/app-debug.apk). Vega: `.vpkg` file. Relative paths are resolved from the current working directory. */
754
+ /** Path to the app bundle. iOS: `.app` directory (e.g. ./build/.../MyApp.app). Android: `.apk` file (e.g. android/app/build/outputs/apk/debug/app-debug.apk). Vega: `.vpkg` file. HarmonyOS: `.hap` file. Relative paths are resolved from the current working directory. */
753
755
  appPath: string;
754
756
  };
755
757
  "restart-app": {
756
- /** Target device id from `list-devices` (iOS UDID or Android serial). */
758
+ /** Target device id from `list-devices` (iOS UDID, HarmonyOS id, or Android serial). */
757
759
  udid: string;
758
- /** App identifier. iOS: bundle id. Android: package name. */
760
+ /** App identifier. iOS: bundle id. Android: package name. HarmonyOS: bundle name. */
759
761
  bundleId: string;
760
- /** Android-only: relaunch a non-launcher Activity (e.g. `.SettingsActivity` or `com.example/com.example.SettingsActivity`). If omitted, the app's default launcher activity is used. Ignored on iOS. */
762
+ /** Android-only: relaunch a non-launcher Activity (e.g. `.SettingsActivity` or `com.example/com.example.SettingsActivity`). If omitted, the app's default launcher activity is used. Ignored on iOS / HarmonyOS. */
761
763
  activity?: string;
762
764
  /** Apple simulators and physical iPhones: arguments passed to the app process at launch, e.g. `["-FeatureFlag", "YES"]` to override UserDefaults. Ignored on other targets. */
763
765
  launchArgs?: Array<string>;
@@ -769,7 +771,7 @@ export interface ArgentToolArgs {
769
771
  orientation: "Portrait" | "LandscapeLeft" | "LandscapeRight" | "PortraitUpsideDown";
770
772
  };
771
773
  "run-sequence": {
772
- /** Target device id from `list-devices` (iOS UDID, Android serial, Vega serial, or Chromium id), shared across all steps. */
774
+ /** Target device id from `list-devices` (iOS UDID, Android serial, Vega serial, HarmonyOS id, or Chromium id), shared across all steps. */
773
775
  udid: string;
774
776
  /** Ordered list of interaction steps to execute sequentially */
775
777
  steps: Array<{
@@ -798,11 +800,11 @@ export interface ArgentToolArgs {
798
800
  udid: string;
799
801
  };
800
802
  screenshot: {
801
- /** Target device id from `list-devices` (iOS UDID, Android serial, Apple TV UDID, Vega serial, or Chromium id). */
803
+ /** Target device id from `list-devices` (iOS UDID, Android serial, Apple TV UDID, Vega serial, HarmonyOS id, or Chromium id). */
802
804
  udid: string;
803
- /** Orientation override for the screenshot (rotates the captured image after Page.captureScreenshot on Chromium). On Android the capture already follows the device's rotation. Ignored on physical iPhones. */
805
+ /** Orientation override for the screenshot (rotates the captured image after Page.captureScreenshot on Chromium). On Android the capture already follows the device's rotation. Rejected on HarmonyOS, which captures the display in its current orientation and has no override. Ignored on physical iPhones. */
804
806
  rotation?: "Portrait" | "LandscapeLeft" | "LandscapeRight" | "PortraitUpsideDown";
805
- /** Scale factor (0.01-1.0). Defaults to ARGENT_SCREENSHOT_SCALE env var, or 0.25 if unset for iOS/Android. On a local Apple TV simulator, an Android TV or Vega, with neither set, the capture is downscaled to a 576 px long side (0.15 of a 4K capture); an Android TV whose form factor or display size cannot be read in time keeps 0.25. On Chromium the default is 1.0 (no downscale); pass <1 to opt in. Downscaling on Chromium requires the optional `sharp` dependency. */
807
+ /** Scale factor (0.01-1.0). Defaults to ARGENT_SCREENSHOT_SCALE env var, or 0.25 if unset for iOS/Android/HarmonyOS. On a local Apple TV simulator, an Android TV or Vega, with neither set, the capture is downscaled to a 576 px long side (0.15 of a 4K capture); an Android TV whose form factor or display size cannot be read in time keeps 0.25. On Chromium the default is 1.0 (no downscale); pass <1 to opt in. Downscaling on Chromium requires the optional `sharp` dependency. */
806
808
  scale?: number;
807
809
  /** Default true. Set false only when capturing a full-resolution PNG (scale: 1.0) to save as a baseline/current for screenshot-diff. The file is still written, but the image bytes are not attached to the agent context. */
808
810
  includeImageInContext?: boolean;
@@ -814,13 +816,13 @@ export interface ArgentToolArgs {
814
816
  baselinePath?: string;
815
817
  /** Path to the current PNG file. Required unless captureCurrent is true. */
816
818
  currentPath?: string;
817
- /** Target device id from `list-devices` (iOS UDID or Android serial). */
819
+ /** Target device id from `list-devices` (iOS UDID, HarmonyOS id, or Android serial). */
818
820
  udid: string;
819
821
  /** Capture the baseline screenshot live at full resolution before diffing. Cannot be combined with captureCurrent. */
820
822
  captureBaseline?: boolean;
821
823
  /** Capture the current screenshot live at full resolution before diffing. Cannot be combined with captureBaseline. */
822
824
  captureCurrent?: boolean;
823
- /** Orientation override for live baseline/current captures. Ignored on physical iPhones. */
825
+ /** Orientation override for live baseline/current captures. Rejected on HarmonyOS, which captures the display in its current orientation and has no override. Ignored on physical iPhones. */
824
826
  rotation?: "Portrait" | "LandscapeLeft" | "LandscapeRight" | "PortraitUpsideDown";
825
827
  /** Directory where diff artifacts should be written. Optional: defaults to a temp directory; the diff images are returned in the result either way. */
826
828
  outputDir?: string;