@swmansion/argent 0.32.1-next.0 → 0.32.1-next.10

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 (43) hide show
  1. package/dist/cli-cmds.mjs +46 -6
  2. package/dist/client.js +12 -0
  3. package/dist/installer.mjs +19 -7
  4. package/dist/mcp-server.mjs +13 -1
  5. package/dist/tool-args.generated.d.ts +183 -178
  6. package/dist/tool-server.cjs +4572 -3776
  7. package/package.json +1 -1
  8. package/rules/argent.md +19 -183
  9. package/skills/argent-android-emulator-setup/SKILL.md +5 -13
  10. package/skills/argent-create-e2e/SKILL.md +1 -1
  11. package/skills/argent-create-e2e/references/e2e-yaml.md +16 -17
  12. package/skills/argent-create-e2e/references/live-authoring.md +26 -65
  13. package/skills/argent-create-e2e/references/reliability-and-recovery.md +8 -8
  14. package/skills/argent-device-interact/SKILL.md +65 -367
  15. package/skills/argent-device-interact/references/chromium.md +4 -19
  16. package/skills/argent-device-interact/references/foldables.md +8 -0
  17. package/skills/argent-device-interact/references/harmonyos.md +13 -50
  18. package/skills/argent-ios-device-interact/SKILL.md +0 -1
  19. package/skills/argent-ios-device-setup/SKILL.md +1 -1
  20. package/skills/argent-ios-simulator-setup/SKILL.md +3 -9
  21. package/skills/argent-lens/SKILL.md +20 -75
  22. package/skills/argent-metro-debugger/SKILL.md +35 -101
  23. package/skills/argent-native-profiler/SKILL.md +23 -92
  24. package/skills/argent-qa-e2e/SKILL.md +5 -5
  25. package/skills/argent-react-native-app-workflow/SKILL.md +34 -203
  26. package/skills/argent-react-native-optimization/SKILL.md +10 -26
  27. package/skills/argent-react-native-optimization/references/fix-reference.md +11 -11
  28. package/skills/argent-react-native-optimization/references/lint-rules.md +4 -5
  29. package/skills/argent-react-native-optimization/references/semantic-checklist.md +2 -2
  30. package/skills/argent-react-native-profiler/SKILL.md +46 -110
  31. package/skills/argent-screen-recording/SKILL.md +18 -37
  32. package/skills/argent-screenshot-diff/SKILL.md +8 -52
  33. package/skills/argent-settings-permissions/SKILL.md +15 -117
  34. package/skills/argent-test-ui-flow/SKILL.md +20 -90
  35. package/skills/argent-tv-interact/SKILL.md +12 -37
  36. package/skills/argent-tv-interact/references/vega.md +23 -0
  37. package/agents/argent-environment-inspector.md +0 -107
  38. package/agents/references/quality-control-checklist.md +0 -45
  39. package/skills/argent-device-interact/references/gesture-examples.md +0 -114
  40. package/skills/argent-device-interact/references/secrets.md +0 -23
  41. package/skills/argent-metro-debugger/references/failure-scenarios.md +0 -14
  42. package/skills/argent-metro-debugger/references/source-maps.md +0 -27
  43. package/skills/argent-react-native-profiler/references/diagnostic-tools.md +0 -101
package/dist/cli-cmds.mjs CHANGED
@@ -10550,15 +10550,21 @@ var FAILURE_CODES = {
10550
10550
  ANDROID_LAUNCH_AM_START_FAILED: "ANDROID_LAUNCH_AM_START_FAILED",
10551
10551
  ANDROID_OPEN_URL_FAILED: "ANDROID_OPEN_URL_FAILED",
10552
10552
  ANDROID_REINSTALL_INSTALL_FAILED: "ANDROID_REINSTALL_INSTALL_FAILED",
10553
+ ANDROID_REINSTALL_UNINSTALL_FAILED: "ANDROID_REINSTALL_UNINSTALL_FAILED",
10553
10554
  ANDROID_RESTART_FAILED: "ANDROID_RESTART_FAILED",
10554
10555
  ANDROID_SETTINGS_PERMISSION_FAILED: "ANDROID_SETTINGS_PERMISSION_FAILED",
10555
10556
  IOS_LAUNCH_SIMCTL_FAILED: "IOS_LAUNCH_SIMCTL_FAILED",
10556
10557
  IOS_OPEN_URL_FAILED: "IOS_OPEN_URL_FAILED",
10557
10558
  IOS_REINSTALL_INSTALL_FAILED: "IOS_REINSTALL_INSTALL_FAILED",
10559
+ IOS_REINSTALL_UNINSTALL_FAILED: "IOS_REINSTALL_UNINSTALL_FAILED",
10558
10560
  IOS_RESTART_LAUNCH_FAILED: "IOS_RESTART_LAUNCH_FAILED",
10561
+ IOS_RESTART_TERMINATE_FAILED: "IOS_RESTART_TERMINATE_FAILED",
10562
+ IOS_TERMINATE_APP_FAILED: "IOS_TERMINATE_APP_FAILED",
10559
10563
  IOS_SETTINGS_PERMISSION_FAILED: "IOS_SETTINGS_PERMISSION_FAILED",
10560
10564
  IOS_SHAKE_FAILED: "IOS_SHAKE_FAILED",
10561
10565
  ANDROID_SHAKE_FAILED: "ANDROID_SHAKE_FAILED",
10566
+ STOP_METRO_PORT_PROBE_FAILED: "STOP_METRO_PORT_PROBE_FAILED",
10567
+ STOP_METRO_SIGNAL_FAILED: "STOP_METRO_SIGNAL_FAILED",
10562
10568
  // The hinge of a foldable iOS simulator: the server refused the request on a
10563
10569
  // foldable (a bad angle, a hinge that would not move) vs. nothing to fold —
10564
10570
  // a device that is not foldable, no hinge route, a remote simulator.
@@ -10704,10 +10710,13 @@ var FAILURE_CODES = {
10704
10710
  FLOW_NAME_INVALID: "FLOW_NAME_INVALID",
10705
10711
  FLOW_NO_ACTIVE_RECORDING: "FLOW_NO_ACTIVE_RECORDING",
10706
10712
  FLOW_FILE_INVALID: "FLOW_FILE_INVALID",
10713
+ FLOW_FILE_NEWER_VERSION: "FLOW_FILE_NEWER_VERSION",
10707
10714
  FLOW_FILE_WRITE_FAILED: "FLOW_FILE_WRITE_FAILED",
10708
10715
  FLOW_ENTRY_UNRECOGNIZED: "FLOW_ENTRY_UNRECOGNIZED",
10709
10716
  FLOW_E2E_HAS_PREREQUISITE: "FLOW_E2E_HAS_PREREQUISITE",
10710
10717
  FLOW_DEVICE_RESOLUTION: "FLOW_DEVICE_RESOLUTION",
10718
+ // The target does not satisfy the test's `requires:` block; a directory run skips it.
10719
+ FLOW_REQUIREMENTS_UNMET: "FLOW_REQUIREMENTS_UNMET",
10711
10720
  PROFILER_QUERY_MODE_INVALID: "PROFILER_QUERY_MODE_INVALID",
10712
10721
  PROFILER_QUERY_REQUIRED_PARAM_MISSING: "PROFILER_QUERY_REQUIRED_PARAM_MISSING",
10713
10722
  PROFILER_DATA_NOT_LOADED: "PROFILER_DATA_NOT_LOADED",
@@ -10726,6 +10735,7 @@ var FAILURE_CODES = {
10726
10735
  CHROMIUM_STORAGE_EVAL_FAILED: "CHROMIUM_STORAGE_EVAL_FAILED",
10727
10736
  CHROMIUM_TAB_NOT_FOUND: "CHROMIUM_TAB_NOT_FOUND",
10728
10737
  CHROMIUM_TAB_OPEN_FAILED: "CHROMIUM_TAB_OPEN_FAILED",
10738
+ CHROMIUM_NAVIGATE_FAILED: "CHROMIUM_NAVIGATE_FAILED",
10729
10739
  CHROMIUM_DESCRIBE_FAILED: "CHROMIUM_DESCRIBE_FAILED",
10730
10740
  CHROMIUM_ELECTRON_APP_PATH_INVALID: "CHROMIUM_ELECTRON_APP_PATH_INVALID",
10731
10741
  CHROMIUM_ELECTRON_SPAWN_FAILED: "CHROMIUM_ELECTRON_SPAWN_FAILED",
@@ -10742,6 +10752,8 @@ var FAILURE_CODES = {
10742
10752
  SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
10743
10753
  BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
10744
10754
  BOOT_IOS_UNSUPPORTED_HOST: "BOOT_IOS_UNSUPPORTED_HOST",
10755
+ BOOT_IOS_SIMCTL_LIST_TIMEOUT: "BOOT_IOS_SIMCTL_LIST_TIMEOUT",
10756
+ BOOT_IOS_SIMCTL_TIMEOUT: "BOOT_IOS_SIMCTL_TIMEOUT",
10745
10757
  BOOT_ANDROID_NO_AVDS: "BOOT_ANDROID_NO_AVDS",
10746
10758
  BOOT_ANDROID_AVD_NOT_FOUND: "BOOT_ANDROID_AVD_NOT_FOUND",
10747
10759
  BOOT_ANDROID_ADB_UNAVAILABLE: "BOOT_ANDROID_ADB_UNAVAILABLE",
@@ -35809,7 +35821,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
35809
35821
  var SESSION_ID2 = randomUUID5();
35810
35822
  function readCliVersion() {
35811
35823
  if (true) {
35812
- return "0.32.1-next.0";
35824
+ return "0.32.1-next.10";
35813
35825
  }
35814
35826
  return "0.0.0";
35815
35827
  }
@@ -37150,8 +37162,9 @@ contain only letters, numbers, "_", or "-" \u2014 the same charset a name must
37150
37162
  match. A test is standalone when its first non-\`echo\`/\`script\` step is \`launch\`.
37151
37163
  Other tests are fragments and use the device's current state. Exception: a fragment whose first step \`run:\`s a chromium standalone
37152
37164
  test boots that test's app before step 1 \u2014 when that launch is unambiguously
37153
- chromium (a lone \`{ chromium: ... }\` target, or --platform chromium); a
37154
- multi-platform launch auto-detects a device instead. Pass --device to attach to
37165
+ chromium (a lone \`{ chromium: ... }\` target, --platform chromium, or a
37166
+ \`requires:\` block that allows only chromium); a multi-platform launch
37167
+ auto-detects a device instead. Pass --device to attach to
37155
37168
  a running instance.
37156
37169
 
37157
37170
  A directory run prints only the steps that need attention (each failure, each
@@ -37164,6 +37177,12 @@ file, or a device it cannot resolve. A transport failure, a rejection the server
37164
37177
  does not mark as validation, or a reply that is not a report stops the batch and
37165
37178
  counts the remaining tests skipped.
37166
37179
 
37180
+ A test can declare a \`requires:\` block (platform, runtimeKind) that names the
37181
+ targets it supports. A directory run skips each test whose requirements the
37182
+ target does not meet, so the same directory runs on each platform without a
37183
+ separate list of tests. A single-test run fails instead. A directory run where
37184
+ no test ran exits 2.
37185
+
37167
37186
  The CLI sends a run to its tool-server: the local one that starts
37168
37187
  automatically, or the one that \`argent link\` or ARGENT_TOOLS_URL names. Over
37169
37188
  a link, the CLI uploads these files and writes the new baselines that the run
@@ -37346,7 +37365,8 @@ function renderFailedSteps(report) {
37346
37365
  return lines;
37347
37366
  }
37348
37367
  function renderBatchSummary(counts, durationMs) {
37349
- return `${counts.failed === 0 ? "PASS" : "FAIL"} \u2014 ${counts.total} e2e test${counts.total === 1 ? "" : "s"}: ${counts.passed} passed, ${counts.failed} failed, ${counts.skipped} skipped${durationSuffix(durationMs)}`;
37368
+ const verdict = counts.failed > 0 ? "FAIL" : counts.passed === 0 ? "NONE RAN" : "PASS";
37369
+ return `${verdict} \u2014 ${counts.total} e2e test${counts.total === 1 ? "" : "s"}: ${counts.passed} passed, ${counts.failed} failed, ${counts.skipped} skipped${durationSuffix(durationMs)}`;
37350
37370
  }
37351
37371
  function summarizeFailure(report) {
37352
37372
  let n3 = 0;
@@ -37732,8 +37752,12 @@ function rejectionVerdict(code) {
37732
37752
  case FAILURE_CODES.FLOW_ENTRY_UNRECOGNIZED:
37733
37753
  case FAILURE_CODES.FLOW_E2E_HAS_PREREQUISITE:
37734
37754
  return "not run (invalid e2e test)";
37755
+ case FAILURE_CODES.FLOW_FILE_NEWER_VERSION:
37756
+ return "not run (needs a newer Argent)";
37735
37757
  case FAILURE_CODES.FLOW_DEVICE_RESOLUTION:
37736
37758
  return "not run (no device resolved)";
37759
+ case FAILURE_CODES.FLOW_REQUIREMENTS_UNMET:
37760
+ return "not run (requires not met)";
37737
37761
  case FAILURE_CODES.FILE_INPUT_UPLOAD_FAILED:
37738
37762
  return "not run (upload failed)";
37739
37763
  default:
@@ -37810,6 +37834,14 @@ async function runFlowDirectory(dir, args, projectRoot, options) {
37810
37834
  const err = unreachableErr ?? thrown;
37811
37835
  const message = err instanceof Error ? err.message : String(err);
37812
37836
  const toolErr = err instanceof ToolInvocationError ? err : void 0;
37837
+ if (toolErr?.errorCode === FAILURE_CODES.FLOW_REQUIREMENTS_UNMET) {
37838
+ const reason = message.replace(/^\[Tool:[^\]]+\] /, "");
37839
+ results.push({ path: rel, status: "skip", reason });
37840
+ if (!args.json)
37841
+ console.log(` ${STATUS_GLYPH.skip} skipped (requires not met)
37842
+ ${reason}`);
37843
+ continue;
37844
+ }
37813
37845
  const rejectedThisFlowOnly = toolErr?.errorKind === "validation";
37814
37846
  const verdict = unreachableErr ? UNREACHABLE_VERDICT : rejectedThisFlowOnly ? rejectionVerdict(toolErr?.errorCode) : "did not finish (run error)";
37815
37847
  if (!args.json) console.log(` ${STATUS_GLYPH.error} ${verdict}`);
@@ -37860,11 +37892,18 @@ async function runFlowDirectory(dir, args, projectRoot, options) {
37860
37892
  skipped: results.filter((r2) => r2.status === "skip").length
37861
37893
  };
37862
37894
  const durationMs = Date.now() - batchStartedAt;
37895
+ const noneRan = counts.passed === 0 && counts.failed === 0;
37863
37896
  if (args.json) {
37864
37897
  console.log(
37865
37898
  JSON.stringify(
37866
37899
  // `flows` is the deprecated spelling of `e2eTests`.
37867
- { ok: counts.failed === 0, ...counts, durationMs, e2eTests: results, flows: results },
37900
+ {
37901
+ ok: counts.failed === 0 && !noneRan,
37902
+ ...counts,
37903
+ durationMs,
37904
+ e2eTests: results,
37905
+ flows: results
37906
+ },
37868
37907
  null,
37869
37908
  2
37870
37909
  )
@@ -37873,8 +37912,9 @@ async function runFlowDirectory(dir, args, projectRoot, options) {
37873
37912
  for (const line of renderFailedFlows(failures)) console.log(line);
37874
37913
  console.log(`
37875
37914
  ${renderBatchSummary(counts, durationMs)}`);
37915
+ if (noneRan) console.error(`No e2e test in ${dir} ran on the selected target.`);
37876
37916
  }
37877
- return exitAfterFlush(unreachable ? 2 : counts.failed === 0 ? 0 : 1);
37917
+ return exitAfterFlush(unreachable || noneRan ? 2 : counts.failed === 0 ? 0 : 1);
37878
37918
  }
37879
37919
  async function e2e(argv, options) {
37880
37920
  const [sub, ...rest] = argv;
package/dist/client.js CHANGED
@@ -9123,15 +9123,21 @@ var FAILURE_CODES = {
9123
9123
  ANDROID_LAUNCH_AM_START_FAILED: "ANDROID_LAUNCH_AM_START_FAILED",
9124
9124
  ANDROID_OPEN_URL_FAILED: "ANDROID_OPEN_URL_FAILED",
9125
9125
  ANDROID_REINSTALL_INSTALL_FAILED: "ANDROID_REINSTALL_INSTALL_FAILED",
9126
+ ANDROID_REINSTALL_UNINSTALL_FAILED: "ANDROID_REINSTALL_UNINSTALL_FAILED",
9126
9127
  ANDROID_RESTART_FAILED: "ANDROID_RESTART_FAILED",
9127
9128
  ANDROID_SETTINGS_PERMISSION_FAILED: "ANDROID_SETTINGS_PERMISSION_FAILED",
9128
9129
  IOS_LAUNCH_SIMCTL_FAILED: "IOS_LAUNCH_SIMCTL_FAILED",
9129
9130
  IOS_OPEN_URL_FAILED: "IOS_OPEN_URL_FAILED",
9130
9131
  IOS_REINSTALL_INSTALL_FAILED: "IOS_REINSTALL_INSTALL_FAILED",
9132
+ IOS_REINSTALL_UNINSTALL_FAILED: "IOS_REINSTALL_UNINSTALL_FAILED",
9131
9133
  IOS_RESTART_LAUNCH_FAILED: "IOS_RESTART_LAUNCH_FAILED",
9134
+ IOS_RESTART_TERMINATE_FAILED: "IOS_RESTART_TERMINATE_FAILED",
9135
+ IOS_TERMINATE_APP_FAILED: "IOS_TERMINATE_APP_FAILED",
9132
9136
  IOS_SETTINGS_PERMISSION_FAILED: "IOS_SETTINGS_PERMISSION_FAILED",
9133
9137
  IOS_SHAKE_FAILED: "IOS_SHAKE_FAILED",
9134
9138
  ANDROID_SHAKE_FAILED: "ANDROID_SHAKE_FAILED",
9139
+ STOP_METRO_PORT_PROBE_FAILED: "STOP_METRO_PORT_PROBE_FAILED",
9140
+ STOP_METRO_SIGNAL_FAILED: "STOP_METRO_SIGNAL_FAILED",
9135
9141
  // The hinge of a foldable iOS simulator: the server refused the request on a
9136
9142
  // foldable (a bad angle, a hinge that would not move) vs. nothing to fold —
9137
9143
  // a device that is not foldable, no hinge route, a remote simulator.
@@ -9277,10 +9283,13 @@ var FAILURE_CODES = {
9277
9283
  FLOW_NAME_INVALID: "FLOW_NAME_INVALID",
9278
9284
  FLOW_NO_ACTIVE_RECORDING: "FLOW_NO_ACTIVE_RECORDING",
9279
9285
  FLOW_FILE_INVALID: "FLOW_FILE_INVALID",
9286
+ FLOW_FILE_NEWER_VERSION: "FLOW_FILE_NEWER_VERSION",
9280
9287
  FLOW_FILE_WRITE_FAILED: "FLOW_FILE_WRITE_FAILED",
9281
9288
  FLOW_ENTRY_UNRECOGNIZED: "FLOW_ENTRY_UNRECOGNIZED",
9282
9289
  FLOW_E2E_HAS_PREREQUISITE: "FLOW_E2E_HAS_PREREQUISITE",
9283
9290
  FLOW_DEVICE_RESOLUTION: "FLOW_DEVICE_RESOLUTION",
9291
+ // The target does not satisfy the test's `requires:` block; a directory run skips it.
9292
+ FLOW_REQUIREMENTS_UNMET: "FLOW_REQUIREMENTS_UNMET",
9284
9293
  PROFILER_QUERY_MODE_INVALID: "PROFILER_QUERY_MODE_INVALID",
9285
9294
  PROFILER_QUERY_REQUIRED_PARAM_MISSING: "PROFILER_QUERY_REQUIRED_PARAM_MISSING",
9286
9295
  PROFILER_DATA_NOT_LOADED: "PROFILER_DATA_NOT_LOADED",
@@ -9299,6 +9308,7 @@ var FAILURE_CODES = {
9299
9308
  CHROMIUM_STORAGE_EVAL_FAILED: "CHROMIUM_STORAGE_EVAL_FAILED",
9300
9309
  CHROMIUM_TAB_NOT_FOUND: "CHROMIUM_TAB_NOT_FOUND",
9301
9310
  CHROMIUM_TAB_OPEN_FAILED: "CHROMIUM_TAB_OPEN_FAILED",
9311
+ CHROMIUM_NAVIGATE_FAILED: "CHROMIUM_NAVIGATE_FAILED",
9302
9312
  CHROMIUM_DESCRIBE_FAILED: "CHROMIUM_DESCRIBE_FAILED",
9303
9313
  CHROMIUM_ELECTRON_APP_PATH_INVALID: "CHROMIUM_ELECTRON_APP_PATH_INVALID",
9304
9314
  CHROMIUM_ELECTRON_SPAWN_FAILED: "CHROMIUM_ELECTRON_SPAWN_FAILED",
@@ -9315,6 +9325,8 @@ var FAILURE_CODES = {
9315
9325
  SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
9316
9326
  BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
9317
9327
  BOOT_IOS_UNSUPPORTED_HOST: "BOOT_IOS_UNSUPPORTED_HOST",
9328
+ BOOT_IOS_SIMCTL_LIST_TIMEOUT: "BOOT_IOS_SIMCTL_LIST_TIMEOUT",
9329
+ BOOT_IOS_SIMCTL_TIMEOUT: "BOOT_IOS_SIMCTL_TIMEOUT",
9318
9330
  BOOT_ANDROID_NO_AVDS: "BOOT_ANDROID_NO_AVDS",
9319
9331
  BOOT_ANDROID_AVD_NOT_FOUND: "BOOT_ANDROID_AVD_NOT_FOUND",
9320
9332
  BOOT_ANDROID_ADB_UNAVAILABLE: "BOOT_ANDROID_ADB_UNAVAILABLE",
@@ -15887,15 +15887,21 @@ var FAILURE_CODES = {
15887
15887
  ANDROID_LAUNCH_AM_START_FAILED: "ANDROID_LAUNCH_AM_START_FAILED",
15888
15888
  ANDROID_OPEN_URL_FAILED: "ANDROID_OPEN_URL_FAILED",
15889
15889
  ANDROID_REINSTALL_INSTALL_FAILED: "ANDROID_REINSTALL_INSTALL_FAILED",
15890
+ ANDROID_REINSTALL_UNINSTALL_FAILED: "ANDROID_REINSTALL_UNINSTALL_FAILED",
15890
15891
  ANDROID_RESTART_FAILED: "ANDROID_RESTART_FAILED",
15891
15892
  ANDROID_SETTINGS_PERMISSION_FAILED: "ANDROID_SETTINGS_PERMISSION_FAILED",
15892
15893
  IOS_LAUNCH_SIMCTL_FAILED: "IOS_LAUNCH_SIMCTL_FAILED",
15893
15894
  IOS_OPEN_URL_FAILED: "IOS_OPEN_URL_FAILED",
15894
15895
  IOS_REINSTALL_INSTALL_FAILED: "IOS_REINSTALL_INSTALL_FAILED",
15896
+ IOS_REINSTALL_UNINSTALL_FAILED: "IOS_REINSTALL_UNINSTALL_FAILED",
15895
15897
  IOS_RESTART_LAUNCH_FAILED: "IOS_RESTART_LAUNCH_FAILED",
15898
+ IOS_RESTART_TERMINATE_FAILED: "IOS_RESTART_TERMINATE_FAILED",
15899
+ IOS_TERMINATE_APP_FAILED: "IOS_TERMINATE_APP_FAILED",
15896
15900
  IOS_SETTINGS_PERMISSION_FAILED: "IOS_SETTINGS_PERMISSION_FAILED",
15897
15901
  IOS_SHAKE_FAILED: "IOS_SHAKE_FAILED",
15898
15902
  ANDROID_SHAKE_FAILED: "ANDROID_SHAKE_FAILED",
15903
+ STOP_METRO_PORT_PROBE_FAILED: "STOP_METRO_PORT_PROBE_FAILED",
15904
+ STOP_METRO_SIGNAL_FAILED: "STOP_METRO_SIGNAL_FAILED",
15899
15905
  // The hinge of a foldable iOS simulator: the server refused the request on a
15900
15906
  // foldable (a bad angle, a hinge that would not move) vs. nothing to fold —
15901
15907
  // a device that is not foldable, no hinge route, a remote simulator.
@@ -16041,10 +16047,13 @@ var FAILURE_CODES = {
16041
16047
  FLOW_NAME_INVALID: "FLOW_NAME_INVALID",
16042
16048
  FLOW_NO_ACTIVE_RECORDING: "FLOW_NO_ACTIVE_RECORDING",
16043
16049
  FLOW_FILE_INVALID: "FLOW_FILE_INVALID",
16050
+ FLOW_FILE_NEWER_VERSION: "FLOW_FILE_NEWER_VERSION",
16044
16051
  FLOW_FILE_WRITE_FAILED: "FLOW_FILE_WRITE_FAILED",
16045
16052
  FLOW_ENTRY_UNRECOGNIZED: "FLOW_ENTRY_UNRECOGNIZED",
16046
16053
  FLOW_E2E_HAS_PREREQUISITE: "FLOW_E2E_HAS_PREREQUISITE",
16047
16054
  FLOW_DEVICE_RESOLUTION: "FLOW_DEVICE_RESOLUTION",
16055
+ // The target does not satisfy the test's `requires:` block; a directory run skips it.
16056
+ FLOW_REQUIREMENTS_UNMET: "FLOW_REQUIREMENTS_UNMET",
16048
16057
  PROFILER_QUERY_MODE_INVALID: "PROFILER_QUERY_MODE_INVALID",
16049
16058
  PROFILER_QUERY_REQUIRED_PARAM_MISSING: "PROFILER_QUERY_REQUIRED_PARAM_MISSING",
16050
16059
  PROFILER_DATA_NOT_LOADED: "PROFILER_DATA_NOT_LOADED",
@@ -16063,6 +16072,7 @@ var FAILURE_CODES = {
16063
16072
  CHROMIUM_STORAGE_EVAL_FAILED: "CHROMIUM_STORAGE_EVAL_FAILED",
16064
16073
  CHROMIUM_TAB_NOT_FOUND: "CHROMIUM_TAB_NOT_FOUND",
16065
16074
  CHROMIUM_TAB_OPEN_FAILED: "CHROMIUM_TAB_OPEN_FAILED",
16075
+ CHROMIUM_NAVIGATE_FAILED: "CHROMIUM_NAVIGATE_FAILED",
16066
16076
  CHROMIUM_DESCRIBE_FAILED: "CHROMIUM_DESCRIBE_FAILED",
16067
16077
  CHROMIUM_ELECTRON_APP_PATH_INVALID: "CHROMIUM_ELECTRON_APP_PATH_INVALID",
16068
16078
  CHROMIUM_ELECTRON_SPAWN_FAILED: "CHROMIUM_ELECTRON_SPAWN_FAILED",
@@ -16079,6 +16089,8 @@ var FAILURE_CODES = {
16079
16089
  SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
16080
16090
  BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
16081
16091
  BOOT_IOS_UNSUPPORTED_HOST: "BOOT_IOS_UNSUPPORTED_HOST",
16092
+ BOOT_IOS_SIMCTL_LIST_TIMEOUT: "BOOT_IOS_SIMCTL_LIST_TIMEOUT",
16093
+ BOOT_IOS_SIMCTL_TIMEOUT: "BOOT_IOS_SIMCTL_TIMEOUT",
16082
16094
  BOOT_ANDROID_NO_AVDS: "BOOT_ANDROID_NO_AVDS",
16083
16095
  BOOT_ANDROID_AVD_NOT_FOUND: "BOOT_ANDROID_AVD_NOT_FOUND",
16084
16096
  BOOT_ANDROID_ADB_UNAVAILABLE: "BOOT_ANDROID_ADB_UNAVAILABLE",
@@ -16934,7 +16946,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
16934
16946
  var SESSION_ID = randomUUID4();
16935
16947
  function readCliVersion() {
16936
16948
  if (true) {
16937
- return "0.32.1-next.0";
16949
+ return "0.32.1-next.10";
16938
16950
  }
16939
16951
  return "0.0.0";
16940
16952
  }
@@ -23581,7 +23593,7 @@ async function init2(args) {
23581
23593
  scope,
23582
23594
  customRoot
23583
23595
  });
23584
- log.step(import_picocolors11.default.bold("Step 3: Rules & Agents"));
23596
+ log.step(import_picocolors11.default.bold("Step 3: Rules"));
23585
23597
  const copyResults = copyRulesAndAgents(
23586
23598
  writtenAdapters,
23587
23599
  effectiveRoot,
@@ -23590,9 +23602,9 @@ async function init2(args) {
23590
23602
  AGENTS_DIR
23591
23603
  );
23592
23604
  if (copyResults.length > 0) {
23593
- note(copyResults.join("\n"), "Rules & Agents");
23605
+ note(copyResults.join("\n"), "Rules");
23594
23606
  } else {
23595
- log.info(import_picocolors11.default.dim("No rules or agents to copy for selected editors."));
23607
+ log.info(import_picocolors11.default.dim("No rules to copy for selected editors."));
23596
23608
  }
23597
23609
  await reportRetiredFiles(
23598
23610
  findRetiredRulesAndAgents(
@@ -23656,7 +23668,7 @@ function printSummary({
23656
23668
  selectedAdapters.length > 0 ? `${import_picocolors11.default.green("MCP server")} configured for ${selectedAdapters.map((a2) => a2.name).join(", ")} (${scope})` : `${import_picocolors11.default.yellow("MCP server")} NOT configured \u2014 no editor config was written`,
23657
23669
  `${import_picocolors11.default.green("Auto-approve")} ${allowlistEnabled ? "enabled" : "skipped"}`,
23658
23670
  `${import_picocolors11.default.green("Skills")} ${skillsMethod === "manual" ? "instructions printed" : "installed"}`,
23659
- `${import_picocolors11.default.green("Rules & agents")} ${copiedRules ? "copied" : "n/a"}`
23671
+ `${import_picocolors11.default.green("Rules")} ${copiedRules ? "copied" : "n/a"}`
23660
23672
  ];
23661
23673
  note(summaryLines.join("\n"), "Summary");
23662
23674
  if (installMode === "local") {
@@ -23667,7 +23679,7 @@ function printSummary({
23667
23679
  `${import_picocolors11.default.bold("Commit")} so your team shares the same setup:`,
23668
23680
  ` ${import_picocolors11.default.cyan("package.json")} + your lockfile`,
23669
23681
  ` the written MCP config (.mcp.json, .cursor/mcp.json, \u2026)`,
23670
- ` ${import_picocolors11.default.cyan(".argent/install.json")}${wroteProjectTelemetryOptOut ? ` + ${import_picocolors11.default.cyan(".argent/config.json")}` : ""}, and the skills/rules/agents files`,
23682
+ ` ${import_picocolors11.default.cyan(".argent/install.json")}${wroteProjectTelemetryOptOut ? ` + ${import_picocolors11.default.cyan(".argent/config.json")}` : ""}, and the skills and rules files`,
23671
23683
  "",
23672
23684
  `Teammates then get argent on ${import_picocolors11.default.cyan("npm install")} \u2014 no global install, no ${import_picocolors11.default.cyan("argent init")}.`,
23673
23685
  import_picocolors11.default.dim(
@@ -24521,7 +24533,7 @@ async function update(args) {
24521
24533
  });
24522
24534
  }
24523
24535
  if (ruleResults.length > 0) {
24524
- note(ruleResults.join("\n"), "Rules & Agents Updated");
24536
+ note(ruleResults.join("\n"), "Rules Updated");
24525
24537
  }
24526
24538
  await reportRetiredFiles(
24527
24539
  findRetiredRulesAndAgents(
@@ -25833,15 +25833,21 @@ var FAILURE_CODES = {
25833
25833
  ANDROID_LAUNCH_AM_START_FAILED: "ANDROID_LAUNCH_AM_START_FAILED",
25834
25834
  ANDROID_OPEN_URL_FAILED: "ANDROID_OPEN_URL_FAILED",
25835
25835
  ANDROID_REINSTALL_INSTALL_FAILED: "ANDROID_REINSTALL_INSTALL_FAILED",
25836
+ ANDROID_REINSTALL_UNINSTALL_FAILED: "ANDROID_REINSTALL_UNINSTALL_FAILED",
25836
25837
  ANDROID_RESTART_FAILED: "ANDROID_RESTART_FAILED",
25837
25838
  ANDROID_SETTINGS_PERMISSION_FAILED: "ANDROID_SETTINGS_PERMISSION_FAILED",
25838
25839
  IOS_LAUNCH_SIMCTL_FAILED: "IOS_LAUNCH_SIMCTL_FAILED",
25839
25840
  IOS_OPEN_URL_FAILED: "IOS_OPEN_URL_FAILED",
25840
25841
  IOS_REINSTALL_INSTALL_FAILED: "IOS_REINSTALL_INSTALL_FAILED",
25842
+ IOS_REINSTALL_UNINSTALL_FAILED: "IOS_REINSTALL_UNINSTALL_FAILED",
25841
25843
  IOS_RESTART_LAUNCH_FAILED: "IOS_RESTART_LAUNCH_FAILED",
25844
+ IOS_RESTART_TERMINATE_FAILED: "IOS_RESTART_TERMINATE_FAILED",
25845
+ IOS_TERMINATE_APP_FAILED: "IOS_TERMINATE_APP_FAILED",
25842
25846
  IOS_SETTINGS_PERMISSION_FAILED: "IOS_SETTINGS_PERMISSION_FAILED",
25843
25847
  IOS_SHAKE_FAILED: "IOS_SHAKE_FAILED",
25844
25848
  ANDROID_SHAKE_FAILED: "ANDROID_SHAKE_FAILED",
25849
+ STOP_METRO_PORT_PROBE_FAILED: "STOP_METRO_PORT_PROBE_FAILED",
25850
+ STOP_METRO_SIGNAL_FAILED: "STOP_METRO_SIGNAL_FAILED",
25845
25851
  // The hinge of a foldable iOS simulator: the server refused the request on a
25846
25852
  // foldable (a bad angle, a hinge that would not move) vs. nothing to fold —
25847
25853
  // a device that is not foldable, no hinge route, a remote simulator.
@@ -25987,10 +25993,13 @@ var FAILURE_CODES = {
25987
25993
  FLOW_NAME_INVALID: "FLOW_NAME_INVALID",
25988
25994
  FLOW_NO_ACTIVE_RECORDING: "FLOW_NO_ACTIVE_RECORDING",
25989
25995
  FLOW_FILE_INVALID: "FLOW_FILE_INVALID",
25996
+ FLOW_FILE_NEWER_VERSION: "FLOW_FILE_NEWER_VERSION",
25990
25997
  FLOW_FILE_WRITE_FAILED: "FLOW_FILE_WRITE_FAILED",
25991
25998
  FLOW_ENTRY_UNRECOGNIZED: "FLOW_ENTRY_UNRECOGNIZED",
25992
25999
  FLOW_E2E_HAS_PREREQUISITE: "FLOW_E2E_HAS_PREREQUISITE",
25993
26000
  FLOW_DEVICE_RESOLUTION: "FLOW_DEVICE_RESOLUTION",
26001
+ // The target does not satisfy the test's `requires:` block; a directory run skips it.
26002
+ FLOW_REQUIREMENTS_UNMET: "FLOW_REQUIREMENTS_UNMET",
25994
26003
  PROFILER_QUERY_MODE_INVALID: "PROFILER_QUERY_MODE_INVALID",
25995
26004
  PROFILER_QUERY_REQUIRED_PARAM_MISSING: "PROFILER_QUERY_REQUIRED_PARAM_MISSING",
25996
26005
  PROFILER_DATA_NOT_LOADED: "PROFILER_DATA_NOT_LOADED",
@@ -26009,6 +26018,7 @@ var FAILURE_CODES = {
26009
26018
  CHROMIUM_STORAGE_EVAL_FAILED: "CHROMIUM_STORAGE_EVAL_FAILED",
26010
26019
  CHROMIUM_TAB_NOT_FOUND: "CHROMIUM_TAB_NOT_FOUND",
26011
26020
  CHROMIUM_TAB_OPEN_FAILED: "CHROMIUM_TAB_OPEN_FAILED",
26021
+ CHROMIUM_NAVIGATE_FAILED: "CHROMIUM_NAVIGATE_FAILED",
26012
26022
  CHROMIUM_DESCRIBE_FAILED: "CHROMIUM_DESCRIBE_FAILED",
26013
26023
  CHROMIUM_ELECTRON_APP_PATH_INVALID: "CHROMIUM_ELECTRON_APP_PATH_INVALID",
26014
26024
  CHROMIUM_ELECTRON_SPAWN_FAILED: "CHROMIUM_ELECTRON_SPAWN_FAILED",
@@ -26025,6 +26035,8 @@ var FAILURE_CODES = {
26025
26035
  SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
26026
26036
  BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
26027
26037
  BOOT_IOS_UNSUPPORTED_HOST: "BOOT_IOS_UNSUPPORTED_HOST",
26038
+ BOOT_IOS_SIMCTL_LIST_TIMEOUT: "BOOT_IOS_SIMCTL_LIST_TIMEOUT",
26039
+ BOOT_IOS_SIMCTL_TIMEOUT: "BOOT_IOS_SIMCTL_TIMEOUT",
26028
26040
  BOOT_ANDROID_NO_AVDS: "BOOT_ANDROID_NO_AVDS",
26029
26041
  BOOT_ANDROID_AVD_NOT_FOUND: "BOOT_ANDROID_AVD_NOT_FOUND",
26030
26042
  BOOT_ANDROID_ADB_UNAVAILABLE: "BOOT_ANDROID_ADB_UNAVAILABLE",
@@ -29101,7 +29113,7 @@ function toMcpToolList(tools, options = {}) {
29101
29113
  }
29102
29114
 
29103
29115
  // ../argent-mcp/src/instructions.ts
29104
- var SERVER_INSTRUCTIONS = "Argent \u2014 iOS Simulator, Android Emulator, and Chromium app control for interacting, testing, profiling and debugging mobile and Chromium applications. Interaction tools return the screen after the action: a screenshot plus the accessibility element tree with normalized tap frames. Take coordinates from that tree; call describe (or debugger-component-tree) only when no fresh tree is available \u2014 never guess coordinates from pixels. Do not stop simulator servers when a task finishes: the next task reuses them. Call stop-all-simulator-servers when the user asks to clean up or ends the session, or when a skill tells you to recycle a device's services, always with devices: [...] naming the devices this session used. Never stop a Metro the user started unless they ask. One tool-server is shared by every agent using this argent install, so an unscoped call tears down their devices too \u2014 reserve it for a deliberate machine-wide cleanup.";
29116
+ var SERVER_INSTRUCTIONS = "Argent \u2014 iOS Simulator, Android Emulator, and Chromium app control for interacting, testing, profiling and debugging mobile and Chromium applications. Interaction tools return the screen after the action: a screenshot plus the accessibility element tree with normalized tap frames. Take coordinates from that tree; call describe only when no fresh tree is available \u2014 never guess coordinates from pixels. Do not stop simulator servers when a task finishes: the next task reuses them. Call stop-all-simulator-servers when the user asks to clean up or ends the session, or when a skill tells you to recycle a device's services, always with devices: [...] naming the devices this session used. Never stop a Metro the user started unless they ask. One tool-server is shared by every agent using this argent install, so an unscoped call tears down their devices too \u2014 reserve it for a deliberate machine-wide cleanup.";
29105
29117
 
29106
29118
  // ../argent-mcp/src/installed-version.ts
29107
29119
  import * as fs11 from "node:fs";