agent-device 0.17.1 → 0.17.3

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 (97) hide show
  1. package/README.md +3 -3
  2. package/android-multitouch-helper/dist/{agent-device-android-multitouch-helper-0.17.1.apk → agent-device-android-multitouch-helper-0.17.3.apk} +0 -0
  3. package/android-multitouch-helper/dist/agent-device-android-multitouch-helper-0.17.3.apk.sha256 +1 -0
  4. package/android-multitouch-helper/dist/{agent-device-android-multitouch-helper-0.17.1.manifest.json → agent-device-android-multitouch-helper-0.17.3.manifest.json} +4 -4
  5. package/android-snapshot-helper/dist/{agent-device-android-snapshot-helper-0.17.1.apk → agent-device-android-snapshot-helper-0.17.3.apk} +0 -0
  6. package/android-snapshot-helper/dist/agent-device-android-snapshot-helper-0.17.3.apk.sha256 +1 -0
  7. package/android-snapshot-helper/dist/{agent-device-android-snapshot-helper-0.17.1.manifest.json → agent-device-android-snapshot-helper-0.17.3.manifest.json} +6 -6
  8. package/dist/src/123.js +1 -0
  9. package/dist/src/1231.js +1 -1
  10. package/dist/src/1352.js +1 -1
  11. package/dist/src/221.js +2 -2
  12. package/dist/src/2403.js +3 -0
  13. package/dist/src/2415.js +36 -30
  14. package/dist/src/4778.js +1 -1
  15. package/dist/src/5611.js +1 -0
  16. package/dist/src/5827.js +1 -0
  17. package/dist/src/6088.js +1 -0
  18. package/dist/src/6133.js +1 -0
  19. package/dist/src/7556.js +1 -1
  20. package/dist/src/7847.js +1 -1
  21. package/dist/src/8806.js +3 -3
  22. package/dist/src/9010.js +1 -0
  23. package/dist/src/9238.js +3 -3
  24. package/dist/src/9471.js +1 -1
  25. package/dist/src/9542.js +6 -3
  26. package/dist/src/9616.js +2 -0
  27. package/dist/src/9818.js +1 -1
  28. package/dist/src/android-adb.d.ts +12 -6
  29. package/dist/src/android-adb.js +1 -1
  30. package/dist/src/android-snapshot-helper.d.ts +15 -8
  31. package/dist/src/android.js +5 -5
  32. package/dist/src/apple.js +1 -1
  33. package/dist/src/apps.js +10 -10
  34. package/dist/src/args.js +53 -14
  35. package/dist/src/batch.d.ts +16 -4
  36. package/dist/src/batch.js +1 -1
  37. package/dist/src/cli-output.js +29 -0
  38. package/dist/src/cli.js +17 -42
  39. package/dist/src/command-surface.js +1 -1
  40. package/dist/src/contracts.d.ts +80 -4
  41. package/dist/src/contracts.js +1 -1
  42. package/dist/src/find.js +1 -1
  43. package/dist/src/finders.d.ts +3 -1
  44. package/dist/src/generic.js +7 -7
  45. package/dist/src/index.d.ts +250 -79
  46. package/dist/src/index.js +1 -1
  47. package/dist/src/input-actions.js +1 -1
  48. package/dist/src/interaction.js +1 -1
  49. package/dist/src/internal/png-worker.d.ts +26 -0
  50. package/dist/src/internal/png-worker.js +1 -0
  51. package/dist/src/metro.d.ts +3 -1
  52. package/dist/src/react-native.js +1 -1
  53. package/dist/src/record-trace-recording.js +3 -3
  54. package/dist/src/remote-config.d.ts +33 -7
  55. package/dist/src/selector-runtime.js +1 -1
  56. package/dist/src/selectors.d.ts +17 -3
  57. package/dist/src/selectors.js +1 -1
  58. package/dist/src/server.js +2 -2
  59. package/dist/src/session.js +8 -11
  60. package/dist/src/snapshot.js +2 -2
  61. package/ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/AgentDeviceRunnerUITests-Bridging-Header.h +1 -0
  62. package/ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerAXSnapshotBridge.h +14 -0
  63. package/ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerAXSnapshotBridge.m +297 -0
  64. package/ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+AXSnapshotFallback.swift +328 -0
  65. package/ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandExecution.swift +121 -172
  66. package/ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandJournal.swift +153 -5
  67. package/ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+FlatSnapshotFiltering.swift +171 -0
  68. package/ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Interaction.swift +0 -10
  69. package/ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Models.swift +64 -18
  70. package/ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+ScrollGesture.swift +200 -0
  71. package/ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SequenceExecution.swift +406 -0
  72. package/ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Snapshot.swift +82 -169
  73. package/ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotCapturePlan.swift +425 -0
  74. package/ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SystemModal.swift +77 -6
  75. package/ios-runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Transport.swift +10 -1
  76. package/ios-runner/README.md +5 -5
  77. package/ios-runner/RUNNER_PROTOCOL.md +0 -1
  78. package/package.json +8 -5
  79. package/server.json +2 -2
  80. package/android-multitouch-helper/dist/agent-device-android-multitouch-helper-0.17.1.apk.sha256 +0 -1
  81. package/android-snapshot-helper/dist/agent-device-android-snapshot-helper-0.17.1.apk.sha256 +0 -1
  82. package/dist/src/1998.js +0 -1
  83. package/dist/src/2805.js +0 -1
  84. package/dist/src/4057.js +0 -1
  85. package/dist/src/5310.js +0 -1
  86. package/dist/src/5792.js +0 -1
  87. package/dist/src/6085.js +0 -1
  88. package/dist/src/6232.js +0 -1
  89. package/dist/src/7455.js +0 -1
  90. package/dist/src/8020.js +0 -1
  91. package/dist/src/8502.js +0 -1
  92. package/dist/src/8699.js +0 -1
  93. package/dist/src/940.js +0 -1
  94. package/dist/src/9404.js +0 -1
  95. package/dist/src/9533.js +0 -1
  96. package/dist/src/command-metadata.js +0 -1
  97. /package/dist/src/{1393.js → 3675.js} +0 -0
@@ -3,9 +3,11 @@ export declare type AgentDeviceClient = {
3
3
  devices: {
4
4
  list: (options?: AgentDeviceRequestOverrides & AgentDeviceSelectionOptions) => Promise<AgentDeviceDevice[]>;
5
5
  boot: (options?: DeviceBootOptions) => Promise<CommandRequestResult>;
6
+ shutdown: (options?: DeviceShutdownOptions) => Promise<CommandRequestResult>;
6
7
  };
7
8
  sessions: {
8
9
  list: (options?: AgentDeviceRequestOverrides) => Promise<AgentDeviceSession[]>;
10
+ stateDir: (options?: AgentDeviceRequestOverrides & Pick<AgentDeviceClientConfig, 'stateDir'>) => Promise<string>;
9
11
  close: (options?: AgentDeviceRequestOverrides & {
10
12
  shutdown?: boolean;
11
13
  }) => Promise<SessionCloseResult>;
@@ -70,6 +72,9 @@ export declare type AgentDeviceClient = {
70
72
  logs: (options?: LogsOptions) => Promise<CommandRequestResult>;
71
73
  network: (options?: NetworkOptions) => Promise<CommandRequestResult>;
72
74
  };
75
+ debug: {
76
+ symbols: (options: DebugSymbolsOptions) => Promise<DebugSymbolsResult>;
77
+ };
73
78
  recording: {
74
79
  record: (options: RecordOptions) => Promise<CommandRequestResult>;
75
80
  trace: (options: TraceOptions) => Promise<CommandRequestResult>;
@@ -87,7 +92,7 @@ export declare type AgentDeviceClientConfig = {
87
92
  stateDir?: string;
88
93
  daemonBaseUrl?: string;
89
94
  daemonAuthToken?: string;
90
- daemonTransport?: DaemonTransportMode;
95
+ daemonTransport?: DaemonTransportPreference;
91
96
  daemonServerMode?: DaemonServerMode;
92
97
  tenant?: string;
93
98
  sessionIsolation?: SessionIsolationMode;
@@ -178,10 +183,12 @@ export declare type AgentDeviceSessionDevice = {
178
183
  };
179
184
  };
180
185
 
181
- export declare type AlertAction = 'get' | 'accept' | 'dismiss' | 'wait';
186
+ declare const ALERT_ACTIONS: readonly ["get", "accept", "dismiss", "wait"];
187
+
188
+ export declare type AlertAction = (typeof ALERT_ACTIONS)[number];
182
189
 
183
190
  export declare type AlertCommandOptions = DeviceCommandBaseOptions & {
184
- action?: 'get' | 'accept' | 'dismiss' | 'wait';
191
+ action?: AlertAction;
185
192
  timeoutMs?: number;
186
193
  };
187
194
 
@@ -216,23 +223,29 @@ declare type AndroidSnapshotBackendMetadata = {
216
223
  backend: 'android-helper' | 'uiautomator-dump';
217
224
  helperVersion?: string;
218
225
  helperApiVersion?: string;
219
- helperTransport?: 'instrumentation' | 'persistent-session';
226
+ helperTransport?: AndroidSnapshotHelperTransport;
220
227
  helperSessionReused?: boolean;
221
228
  fallbackReason?: string;
222
- installReason?: 'missing' | 'outdated' | 'forced' | 'current' | 'skipped';
229
+ installReason?: AndroidSnapshotHelperInstallReason;
223
230
  waitForIdleTimeoutMs?: number;
224
231
  waitForIdleQuietMs?: number;
225
232
  timeoutMs?: number;
226
233
  maxDepth?: number;
227
234
  maxNodes?: number;
228
235
  rootPresent?: boolean;
229
- captureMode?: 'interactive-windows' | 'active-window';
236
+ captureMode?: AndroidSnapshotCaptureMode;
230
237
  windowCount?: number;
231
238
  nodeCount?: number;
232
239
  helperTruncated?: boolean;
233
240
  elapsedMs?: number;
234
241
  };
235
242
 
243
+ declare type AndroidSnapshotCaptureMode = 'interactive-windows' | 'active-window';
244
+
245
+ declare type AndroidSnapshotHelperInstallReason = 'missing' | 'outdated' | 'forced' | 'current' | 'skipped';
246
+
247
+ declare type AndroidSnapshotHelperTransport = 'instrumentation' | 'persistent-session';
248
+
236
249
  export declare type AppCloseOptions = AgentDeviceRequestOverrides & {
237
250
  app?: string;
238
251
  shutdown?: boolean;
@@ -294,8 +307,6 @@ export declare type AppInstallFromSourceResult = {
294
307
  identifiers: AgentDeviceIdentifiers;
295
308
  };
296
309
 
297
- declare type ApplePlatform = 'ios' | 'macos';
298
-
299
310
  export declare type AppListOptions = AgentDeviceRequestOverrides & AgentDeviceSelectionOptions & {
300
311
  appsFilter?: AppsFilter;
301
312
  };
@@ -303,12 +314,13 @@ export declare type AppListOptions = AgentDeviceRequestOverrides & AgentDeviceSe
303
314
  export declare type AppOpenOptions = AgentDeviceRequestOverrides & AgentDeviceSelectionOptions & {
304
315
  app?: string;
305
316
  url?: string;
306
- surface?: 'app' | 'frontmost-app' | 'desktop' | 'menubar';
317
+ surface?: SessionSurface;
307
318
  activity?: string;
308
319
  launchConsole?: string;
309
320
  launchArgs?: string[];
310
321
  relaunch?: boolean;
311
322
  saveScript?: boolean | string;
323
+ deviceHub?: boolean;
312
324
  noRecord?: boolean;
313
325
  runtime?: SessionRuntimeHints;
314
326
  };
@@ -327,7 +339,7 @@ export declare type AppOpenResult = {
327
339
  identifiers: AgentDeviceIdentifiers;
328
340
  };
329
341
 
330
- export declare type AppPushOptions = ClientCommandBaseOptions & {
342
+ export declare type AppPushOptions = DeviceCommandBaseOptions & {
331
343
  app: string;
332
344
  payload: string | Record<string, unknown>;
333
345
  };
@@ -343,14 +355,14 @@ export declare type AppStateCommandResult = DaemonResponseData & {
343
355
  package?: string;
344
356
  activity?: string;
345
357
  source?: 'session';
346
- surface?: 'app' | 'frontmost-app' | 'desktop' | 'menubar';
358
+ surface?: SessionSurface;
347
359
  };
348
360
 
349
361
  export declare type AppSwitcherCommandOptions = DeviceCommandBaseOptions;
350
362
 
351
363
  export declare type AppSwitcherCommandResult = CommandActionResult<'app-switcher'>;
352
364
 
353
- export declare type AppTriggerEventOptions = ClientCommandBaseOptions & {
365
+ export declare type AppTriggerEventOptions = DeviceCommandBaseOptions & {
354
366
  event: string;
355
367
  payload?: Record<string, unknown>;
356
368
  };
@@ -377,14 +389,18 @@ export declare type ArtifactDescriptor = {
377
389
  metadata?: Record<string, unknown>;
378
390
  };
379
391
 
392
+ declare const BACK_MODES: readonly ["in-app", "system"];
393
+
380
394
  export declare type BackCommandOptions = DeviceCommandBaseOptions & {
381
- mode?: 'in-app' | 'system';
395
+ mode?: BackMode;
382
396
  };
383
397
 
384
398
  export declare type BackCommandResult = CommandActionResult<'back'> & {
385
- mode?: 'in-app' | 'system';
399
+ mode?: BackMode;
386
400
  };
387
401
 
402
+ declare type BackMode = (typeof BACK_MODES)[number];
403
+
388
404
  export declare type BatchRunOptions = AgentDeviceRequestOverrides & {
389
405
  steps: BatchStep[];
390
406
  onError?: 'stop';
@@ -398,7 +414,7 @@ export declare type BatchStep = {
398
414
  runtime?: unknown;
399
415
  };
400
416
 
401
- export declare type CaptureDiffOptions = ClientCommandBaseOptions & Pick<CaptureSnapshotOptions, 'interactiveOnly' | 'compact' | 'depth' | 'scope' | 'raw'> & {
417
+ export declare type CaptureDiffOptions = DeviceCommandBaseOptions & Pick<CaptureSnapshotOptions, 'interactiveOnly' | 'depth' | 'scope' | 'raw'> & {
402
418
  kind: 'snapshot';
403
419
  out?: string;
404
420
  };
@@ -409,7 +425,7 @@ export declare type CaptureScreenshotOptions = AgentDeviceRequestOverrides & {
409
425
  fullscreen?: boolean;
410
426
  maxSize?: number;
411
427
  stabilize?: boolean;
412
- surface?: 'app' | 'frontmost-app' | 'desktop' | 'menubar';
428
+ surface?: SessionSurface;
413
429
  };
414
430
 
415
431
  export declare type CaptureScreenshotResult = {
@@ -420,7 +436,6 @@ export declare type CaptureScreenshotResult = {
420
436
 
421
437
  export declare type CaptureSnapshotOptions = AgentDeviceRequestOverrides & AgentDeviceSelectionOptions & {
422
438
  interactiveOnly?: boolean;
423
- compact?: boolean;
424
439
  depth?: number;
425
440
  scope?: string;
426
441
  raw?: boolean;
@@ -434,19 +449,19 @@ export declare type CaptureSnapshotResult = {
434
449
  appName?: string;
435
450
  appBundleId?: string;
436
451
  visibility?: SnapshotVisibility;
437
- androidSnapshot?: AndroidSnapshotBackendMetadata;
438
- warnings?: string[];
439
452
  unchanged?: SnapshotUnchanged;
440
453
  identifiers: AgentDeviceIdentifiers;
441
- };
454
+ } & PublicSnapshotCaptureAnnotations;
442
455
 
443
456
  export declare function centerOfRect(rect: Rect): Point;
444
457
 
445
- export declare type ClickOptions = ClientCommandBaseOptions & SelectorSnapshotCommandOptions & InteractionTarget & RepeatedPressOptions & {
446
- button?: 'primary' | 'secondary' | 'middle';
447
- };
458
+ declare const CLICK_BUTTONS: readonly ["primary", "secondary", "middle"];
459
+
460
+ declare type ClickButton = (typeof CLICK_BUTTONS)[number];
448
461
 
449
- declare type ClientCommandBaseOptions = AgentDeviceRequestOverrides & AgentDeviceSelectionOptions;
462
+ export declare type ClickOptions = DeviceCommandBaseOptions & SelectorSnapshotCommandOptions & InteractionTarget & RepeatedPressOptions & {
463
+ button?: ClickButton;
464
+ };
450
465
 
451
466
  export declare type ClipboardCommandOptions = (DeviceCommandBaseOptions & {
452
467
  action: 'read';
@@ -486,6 +501,12 @@ export declare type CreateTempFileOptions = {
486
501
  ext: string;
487
502
  };
488
503
 
504
+ declare const DAEMON_LOCK_POLICIES: readonly ["reject", "strip"];
505
+
506
+ declare const DAEMON_SERVER_MODES: readonly ["socket", "http", "dual"];
507
+
508
+ declare const DAEMON_TRANSPORT_PREFERENCES: readonly ["auto", "socket", "http"];
509
+
489
510
  declare type DaemonArtifact = {
490
511
  field: string;
491
512
  artifactId?: string;
@@ -523,7 +544,7 @@ declare type DaemonInstallSource = {
523
544
  artifactName: string;
524
545
  }));
525
546
 
526
- declare type DaemonLockPolicy = 'reject' | 'strip';
547
+ declare type DaemonLockPolicy = (typeof DAEMON_LOCK_POLICIES)[number];
527
548
 
528
549
  declare type DaemonRequest = {
529
550
  token?: string;
@@ -545,7 +566,7 @@ declare type DaemonRequestMeta = {
545
566
  leaseId?: string;
546
567
  leaseTtlMs?: number;
547
568
  leaseBackend?: LeaseBackend;
548
- sessionIsolation?: 'none' | 'tenant';
569
+ sessionIsolation?: SessionIsolationMode;
549
570
  uploadedArtifactId?: string;
550
571
  clientArtifactPaths?: Record<string, string>;
551
572
  installSource?: DaemonInstallSource;
@@ -553,7 +574,7 @@ declare type DaemonRequestMeta = {
553
574
  materializedPathRetentionMs?: number;
554
575
  materializationId?: string;
555
576
  lockPolicy?: DaemonLockPolicy;
556
- lockPlatform?: 'ios' | 'macos' | 'android' | 'linux' | 'apple';
577
+ lockPlatform?: PlatformSelector;
557
578
  requestProgress?: 'replay-test';
558
579
  };
559
580
 
@@ -569,19 +590,81 @@ declare type DaemonResponseData = Record<string, unknown> & {
569
590
  artifacts?: DaemonArtifact[];
570
591
  };
571
592
 
572
- declare type DaemonServerMode = 'socket' | 'http' | 'dual';
593
+ declare type DaemonServerMode = (typeof DAEMON_SERVER_MODES)[number];
594
+
595
+ declare type DaemonTransportPreference = (typeof DAEMON_TRANSPORT_PREFERENCES)[number];
573
596
 
574
- declare type DaemonTransportMode = 'auto' | 'socket' | 'http';
597
+ declare type DebugSymbolsCrashFrame = {
598
+ index: number;
599
+ image: string;
600
+ address: string;
601
+ symbol?: string;
602
+ };
575
603
 
576
- export declare type DeviceBootOptions = ClientCommandBaseOptions & {
604
+ declare type DebugSymbolsCrashSummary = {
605
+ format: 'ips' | 'text';
606
+ appName?: string;
607
+ bundleId?: string;
608
+ version?: string;
609
+ incident?: string;
610
+ timestamp?: string;
611
+ exceptionType?: string;
612
+ exceptionCodes?: string;
613
+ terminationReason?: string;
614
+ crashedThread?: number;
615
+ topFrames: DebugSymbolsCrashFrame[];
616
+ findings: string[];
617
+ };
618
+
619
+ declare type DebugSymbolsImage = {
620
+ name: string;
621
+ uuid: string;
622
+ arch?: string;
623
+ dsymPath: string;
624
+ binaryPath: string;
625
+ };
626
+
627
+ declare type DebugSymbolsOptions = {
628
+ action?: 'symbols';
629
+ artifact: string;
630
+ dsym?: string;
631
+ searchPath?: string;
632
+ out?: string;
633
+ cwd?: string;
634
+ };
635
+
636
+ declare type DebugSymbolsResult = {
637
+ kind: 'debugSymbols';
638
+ platform: 'apple';
639
+ artifactPath: string;
640
+ outPath: string;
641
+ crash: DebugSymbolsCrashSummary;
642
+ matchedImages: DebugSymbolsImage[];
643
+ symbolicatedFrames: number;
644
+ skippedImages: number;
645
+ warnings?: string[];
646
+ message: string;
647
+ };
648
+
649
+ declare const DEVICE_KINDS: readonly ["simulator", "emulator", "device"];
650
+
651
+ declare const DEVICE_ROTATIONS: readonly ["portrait", "portrait-upside-down", "landscape-left", "landscape-right"];
652
+
653
+ declare const DEVICE_TARGETS: readonly ["mobile", "tv", "desktop"];
654
+
655
+ export declare type DeviceBootOptions = DeviceCommandBaseOptions & {
577
656
  headless?: boolean;
578
657
  };
579
658
 
580
659
  declare type DeviceCommandBaseOptions = AgentDeviceRequestOverrides & AgentDeviceSelectionOptions;
581
660
 
582
- declare type DeviceKind = 'simulator' | 'emulator' | 'device';
661
+ declare type DeviceKind = (typeof DEVICE_KINDS)[number];
583
662
 
584
- declare type DeviceTarget = 'mobile' | 'tv' | 'desktop';
663
+ declare type DeviceRotation = (typeof DEVICE_ROTATIONS)[number];
664
+
665
+ export declare type DeviceShutdownOptions = DeviceCommandBaseOptions;
666
+
667
+ declare type DeviceTarget = (typeof DEVICE_TARGETS)[number];
585
668
 
586
669
  export declare type ElementTarget = RefTarget | SelectorTarget;
587
670
 
@@ -602,19 +685,21 @@ export declare type FileOutputRef = {
602
685
  fileName?: string;
603
686
  };
604
687
 
605
- export declare type FillOptions = ClientCommandBaseOptions & SelectorSnapshotCommandOptions & InteractionTarget & {
688
+ export declare type FillOptions = DeviceCommandBaseOptions & SelectorSnapshotCommandOptions & InteractionTarget & {
606
689
  text: string;
607
690
  delayMs?: number;
608
691
  };
609
692
 
610
- declare type FindBaseOptions = ClientCommandBaseOptions & FindSnapshotCommandOptions & {
693
+ declare const FIND_LOCATORS: readonly ["any", "text", "label", "value", "role", "id"];
694
+
695
+ declare type FindBaseOptions = DeviceCommandBaseOptions & FindSnapshotCommandOptions & {
611
696
  locator?: FindLocator;
612
697
  query: string;
613
698
  first?: boolean;
614
699
  last?: boolean;
615
700
  };
616
701
 
617
- export declare type FindLocator = 'any' | 'text' | 'label' | 'value' | 'role' | 'id';
702
+ export declare type FindLocator = (typeof FIND_LOCATORS)[number];
618
703
 
619
704
  export declare type FindOptions = (FindBaseOptions & {
620
705
  action?: 'click' | 'focus' | 'exists' | 'getText' | 'getAttrs';
@@ -628,21 +713,21 @@ export declare type FindOptions = (FindBaseOptions & {
628
713
 
629
714
  declare type FindSnapshotCommandOptions = Pick<CaptureSnapshotOptions, 'depth' | 'raw'>;
630
715
 
631
- declare type FlingOptions = ClientCommandBaseOptions & {
632
- direction: 'up' | 'down' | 'left' | 'right';
716
+ declare type FlingOptions = DeviceCommandBaseOptions & {
717
+ direction: ScrollDirection;
633
718
  x: number;
634
719
  y: number;
635
720
  distance?: number;
636
721
  durationMs?: number;
637
722
  };
638
723
 
639
- declare type FocusOptions_2 = ClientCommandBaseOptions & {
724
+ declare type FocusOptions_2 = DeviceCommandBaseOptions & {
640
725
  x: number;
641
726
  y: number;
642
727
  };
643
728
  export { FocusOptions_2 as FocusOptions }
644
729
 
645
- export declare type GetOptions = ClientCommandBaseOptions & SelectorSnapshotCommandOptions & ElementTarget & {
730
+ export declare type GetOptions = DeviceCommandBaseOptions & SelectorSnapshotCommandOptions & ElementTarget & {
646
731
  format: 'text' | 'attrs';
647
732
  };
648
733
 
@@ -656,13 +741,13 @@ export declare function isAgentDeviceError(err: unknown): err is AppError;
656
741
 
657
742
  export declare type IsOptions = IsTextPredicateOptions | IsStatePredicateOptions;
658
743
 
659
- declare type IsStatePredicateOptions = ClientCommandBaseOptions & SelectorSnapshotCommandOptions & {
744
+ declare type IsStatePredicateOptions = DeviceCommandBaseOptions & SelectorSnapshotCommandOptions & {
660
745
  predicate: 'visible' | 'hidden' | 'exists' | 'editable' | 'selected';
661
746
  selector: string;
662
747
  value?: never;
663
748
  };
664
749
 
665
- declare type IsTextPredicateOptions = ClientCommandBaseOptions & SelectorSnapshotCommandOptions & {
750
+ declare type IsTextPredicateOptions = DeviceCommandBaseOptions & SelectorSnapshotCommandOptions & {
666
751
  predicate: 'text';
667
752
  selector: string;
668
753
  value: string;
@@ -699,13 +784,15 @@ declare type Lease = {
699
784
  expiresAt?: number;
700
785
  };
701
786
 
787
+ declare const LEASE_BACKENDS: readonly ["ios-simulator", "ios-instance", "android-instance"];
788
+
702
789
  declare type LeaseAllocateOptions = LeaseOptions & {
703
790
  tenant: string;
704
791
  runId: string;
705
792
  leaseBackend?: LeaseBackend;
706
793
  };
707
794
 
708
- declare type LeaseBackend = 'ios-simulator' | 'ios-instance' | 'android-instance';
795
+ declare type LeaseBackend = (typeof LEASE_BACKENDS)[number];
709
796
 
710
797
  declare type LeaseOptions = AgentDeviceRequestOverrides & {
711
798
  ttlMs?: number;
@@ -723,13 +810,17 @@ export declare type LocalArtifactAdapterOptions = {
723
810
  rootDir?: string;
724
811
  };
725
812
 
813
+ declare const LOG_ACTION_VALUES: readonly ["path", "start", "stop", "doctor", "mark", "clear"];
814
+
815
+ declare type LogAction = (typeof LOG_ACTION_VALUES)[number];
816
+
726
817
  export declare type LogsOptions = AgentDeviceRequestOverrides & {
727
- action?: 'path' | 'start' | 'stop' | 'doctor' | 'mark' | 'clear';
818
+ action?: LogAction;
728
819
  message?: string;
729
820
  restart?: boolean;
730
821
  };
731
822
 
732
- export declare type LongPressOptions = ClientCommandBaseOptions & SelectorSnapshotCommandOptions & InteractionTarget & {
823
+ export declare type LongPressOptions = DeviceCommandBaseOptions & SelectorSnapshotCommandOptions & InteractionTarget & {
733
824
  durationMs?: number;
734
825
  };
735
826
 
@@ -803,10 +894,14 @@ export declare type MetroReloadResult = ReloadMetroResult;
803
894
  /** Re-export of {@link SessionRuntimeHints} under the Metro-specific alias used by public API consumers. */
804
895
  declare type MetroRuntimeHints = SessionRuntimeHints;
805
896
 
897
+ declare const NETWORK_INCLUDE_MODES: readonly ["summary", "headers", "body", "all"];
898
+
899
+ declare type NetworkIncludeMode = (typeof NETWORK_INCLUDE_MODES)[number];
900
+
806
901
  export declare type NetworkOptions = AgentDeviceRequestOverrides & {
807
902
  action?: 'dump' | 'log';
808
903
  limit?: number;
809
- include?: 'summary' | 'headers' | 'body' | 'all';
904
+ include?: NetworkIncludeMode;
810
905
  };
811
906
 
812
907
  export declare function normalizeAgentDeviceError(err: unknown, context?: {
@@ -825,7 +920,7 @@ export declare type NormalizedError = {
825
920
 
826
921
  export declare type OutputVisibility = 'client-visible' | 'internal';
827
922
 
828
- declare type PanOptions = ClientCommandBaseOptions & {
923
+ declare type PanOptions = DeviceCommandBaseOptions & {
829
924
  x: number;
830
925
  y: number;
831
926
  dx: number;
@@ -833,30 +928,47 @@ declare type PanOptions = ClientCommandBaseOptions & {
833
928
  durationMs?: number;
834
929
  };
835
930
 
836
- declare const PERF_ACTION_VALUES: readonly ["sample"];
931
+ declare const PERF_ACTION_VALUES: readonly ["sample", "snapshot", "start", "stop", "report"];
837
932
 
838
- declare const PERF_AREA_VALUES: readonly ["metrics", "frames"];
933
+ declare const PERF_AREA_VALUES: readonly ["metrics", "frames", "memory", "cpu", "trace"];
934
+
935
+ declare const PERF_KIND_VALUES: readonly ["xctrace", "simpleperf", "perfetto", "android-hprof", "memgraph"];
936
+
937
+ declare const PERF_SUBJECT_VALUES: readonly ["profile"];
839
938
 
840
939
  declare type PerfAction = (typeof PERF_ACTION_VALUES)[number];
841
940
 
842
941
  declare type PerfArea = (typeof PERF_AREA_VALUES)[number];
843
942
 
844
- export declare type PerfOptions = ClientCommandBaseOptions & {
943
+ declare type PerfKind = (typeof PERF_KIND_VALUES)[number];
944
+
945
+ export declare type PerfOptions = DeviceCommandBaseOptions & {
845
946
  area?: PerfArea;
947
+ subject?: PerfSubject;
846
948
  action?: PerfAction;
949
+ kind?: PerfKind;
950
+ template?: string;
951
+ out?: string;
952
+ tracePath?: string;
847
953
  };
848
954
 
955
+ declare type PerfSubject = (typeof PERF_SUBJECT_VALUES)[number];
956
+
849
957
  export declare type PermissionTarget = 'camera' | 'microphone' | 'photos' | 'contacts' | 'contacts-limited' | 'notifications' | 'calendar' | 'location' | 'location-always' | 'media-library' | 'motion' | 'reminders' | 'siri' | 'accessibility' | 'screen-recording' | 'input-monitoring';
850
958
 
851
- export declare type PinchOptions = ClientCommandBaseOptions & {
959
+ export declare type PinchOptions = DeviceCommandBaseOptions & {
852
960
  scale: number;
853
961
  x?: number;
854
962
  y?: number;
855
963
  };
856
964
 
857
- declare type Platform = ApplePlatform | 'android' | 'linux';
965
+ declare type Platform = (typeof PLATFORMS)[number];
966
+
967
+ declare const PLATFORM_SELECTORS: readonly ["ios", "macos", "android", "linux", "apple"];
858
968
 
859
- declare type PlatformSelector = Platform | 'apple';
969
+ declare const PLATFORMS: readonly ["ios", "macos", "android", "linux"];
970
+
971
+ declare type PlatformSelector = (typeof PLATFORM_SELECTORS)[number];
860
972
 
861
973
  export declare type Point = {
862
974
  x: number;
@@ -871,7 +983,7 @@ declare type PointTarget = {
871
983
  label?: never;
872
984
  };
873
985
 
874
- declare type PrepareCommandOptions = ClientCommandBaseOptions & {
986
+ declare type PrepareCommandOptions = DeviceCommandBaseOptions & {
875
987
  action: 'ios-runner';
876
988
  timeoutMs?: number;
877
989
  };
@@ -892,7 +1004,11 @@ declare type PrepareMetroRuntimeResult = {
892
1004
  bridge: MetroBridgeResult | null;
893
1005
  };
894
1006
 
895
- export declare type PressOptions = ClientCommandBaseOptions & SelectorSnapshotCommandOptions & InteractionTarget & RepeatedPressOptions;
1007
+ export declare type PressOptions = DeviceCommandBaseOptions & SelectorSnapshotCommandOptions & InteractionTarget & RepeatedPressOptions;
1008
+
1009
+ declare type PublicSnapshotCaptureAnnotations = Pick<SnapshotCaptureAnnotations, 'androidSnapshot' | 'warnings'> & {
1010
+ snapshotQuality?: SnapshotQualityVerdict;
1011
+ };
896
1012
 
897
1013
  declare type RawSnapshotNode = {
898
1014
  index: number;
@@ -921,7 +1037,7 @@ declare type RawSnapshotNode = {
921
1037
  presentationHints?: string[];
922
1038
  };
923
1039
 
924
- declare type ReactNativeCommandOptions = ClientCommandBaseOptions & {
1040
+ declare type ReactNativeCommandOptions = DeviceCommandBaseOptions & {
925
1041
  action: 'dismiss-overlay';
926
1042
  };
927
1043
 
@@ -1019,14 +1135,14 @@ export declare type ResolveInputOptions = {
1019
1135
  };
1020
1136
 
1021
1137
  export declare type RotateCommandOptions = DeviceCommandBaseOptions & {
1022
- orientation: 'portrait' | 'portrait-upside-down' | 'landscape-left' | 'landscape-right';
1138
+ orientation: DeviceRotation;
1023
1139
  };
1024
1140
 
1025
1141
  export declare type RotateCommandResult = CommandActionResult<'rotate'> & {
1026
1142
  orientation?: RotateCommandOptions['orientation'];
1027
1143
  };
1028
1144
 
1029
- declare type RotateGestureOptions = ClientCommandBaseOptions & {
1145
+ declare type RotateGestureOptions = DeviceCommandBaseOptions & {
1030
1146
  degrees: number;
1031
1147
  x?: number;
1032
1148
  y?: number;
@@ -1041,8 +1157,16 @@ export declare type ScreenshotOverlayRef = {
1041
1157
  center: Point;
1042
1158
  };
1043
1159
 
1044
- declare type ScrollOptions_2 = ClientCommandBaseOptions & {
1045
- direction: 'up' | 'down' | 'left' | 'right' | 'top' | 'bottom';
1160
+ declare const SCROLL_DIRECTIONS: readonly ["up", "down", "left", "right"];
1161
+
1162
+ declare const SCROLL_INPUT_DIRECTIONS: readonly ["up", "down", "left", "right", "top", "bottom"];
1163
+
1164
+ declare type ScrollDirection = (typeof SCROLL_DIRECTIONS)[number];
1165
+
1166
+ declare type ScrollInputDirection = (typeof SCROLL_INPUT_DIRECTIONS)[number];
1167
+
1168
+ declare type ScrollOptions_2 = DeviceCommandBaseOptions & {
1169
+ direction: ScrollInputDirection;
1046
1170
  amount?: number;
1047
1171
  pixels?: number;
1048
1172
  };
@@ -1058,13 +1182,17 @@ declare type SelectorTarget = {
1058
1182
  label?: never;
1059
1183
  };
1060
1184
 
1185
+ declare const SESSION_ISOLATION_MODES: readonly ["none", "tenant"];
1186
+
1187
+ declare const SESSION_SURFACES: readonly ["app", "frontmost-app", "desktop", "menubar"];
1188
+
1061
1189
  export declare type SessionCloseResult = {
1062
1190
  session: string;
1063
1191
  shutdown?: Record<string, unknown>;
1064
1192
  identifiers: AgentDeviceIdentifiers;
1065
1193
  };
1066
1194
 
1067
- declare type SessionIsolationMode = 'none' | 'tenant';
1195
+ declare type SessionIsolationMode = (typeof SESSION_ISOLATION_MODES)[number];
1068
1196
 
1069
1197
  declare type SessionRuntimeHints = {
1070
1198
  platform?: 'ios' | 'android';
@@ -1074,41 +1202,76 @@ declare type SessionRuntimeHints = {
1074
1202
  launchUrl?: string;
1075
1203
  };
1076
1204
 
1077
- export declare type SettingsUpdateOptions = (ClientCommandBaseOptions & {
1205
+ declare type SessionSurface = (typeof SESSION_SURFACES)[number];
1206
+
1207
+ export declare type SettingsUpdateOptions = (DeviceCommandBaseOptions & {
1078
1208
  setting: 'clear-app-state';
1079
1209
  state: 'clear';
1080
1210
  app?: string;
1081
- }) | (ClientCommandBaseOptions & {
1211
+ }) | (DeviceCommandBaseOptions & {
1082
1212
  setting: 'wifi' | 'airplane' | 'location';
1083
1213
  state: 'on' | 'off';
1084
- }) | (ClientCommandBaseOptions & {
1214
+ }) | (DeviceCommandBaseOptions & {
1085
1215
  setting: 'location';
1086
1216
  state: 'set';
1087
1217
  latitude: number;
1088
1218
  longitude: number;
1089
- }) | (ClientCommandBaseOptions & {
1219
+ }) | (DeviceCommandBaseOptions & {
1090
1220
  setting: 'animations';
1091
1221
  state: 'on' | 'off';
1092
- }) | (ClientCommandBaseOptions & {
1222
+ }) | (DeviceCommandBaseOptions & {
1093
1223
  setting: 'appearance';
1094
1224
  state: 'light' | 'dark' | 'toggle';
1095
- }) | (ClientCommandBaseOptions & {
1225
+ }) | (DeviceCommandBaseOptions & {
1096
1226
  setting: 'faceid' | 'touchid';
1097
1227
  state: 'match' | 'nonmatch' | 'enroll' | 'unenroll';
1098
- }) | (ClientCommandBaseOptions & {
1228
+ }) | (DeviceCommandBaseOptions & {
1099
1229
  setting: 'fingerprint';
1100
1230
  state: 'match' | 'nonmatch';
1101
- }) | (ClientCommandBaseOptions & {
1231
+ }) | (DeviceCommandBaseOptions & {
1102
1232
  setting: 'permission';
1103
1233
  state: 'grant' | 'deny' | 'reset';
1104
1234
  permission: PermissionTarget;
1105
1235
  mode?: 'full' | 'limited';
1106
1236
  });
1107
1237
 
1238
+ declare type SnapshotCaptureAnalysis = {
1239
+ rawNodeCount: number;
1240
+ maxDepth: number;
1241
+ };
1242
+
1243
+ declare type SnapshotCaptureAnnotations = {
1244
+ analysis?: SnapshotCaptureAnalysis;
1245
+ androidSnapshot?: AndroidSnapshotBackendMetadata;
1246
+ freshness?: SnapshotCaptureFreshness;
1247
+ quality?: SnapshotQualityVerdict;
1248
+ warnings?: string[];
1249
+ };
1250
+
1251
+ declare type SnapshotCaptureFreshness = {
1252
+ action: string;
1253
+ retryCount: number;
1254
+ staleAfterRetries: boolean;
1255
+ reason?: 'empty-interactive' | 'sharp-drop' | 'stuck-route';
1256
+ };
1257
+
1108
1258
  export declare type SnapshotNode = RawSnapshotNode & {
1109
1259
  ref: string;
1110
1260
  };
1111
1261
 
1262
+ /**
1263
+ * Structured quality verdict computed once by the iOS runner's snapshot capture plan.
1264
+ * The daemon renders it; it never re-derives degradation from node shapes.
1265
+ */
1266
+ declare type SnapshotQualityVerdict = {
1267
+ state: 'healthy' | 'recovered' | 'sparse';
1268
+ backend: 'tree' | 'queries' | 'private-ax';
1269
+ reason?: string;
1270
+ reasonCode?: 'ax-rejected' | 'sparse-tree' | 'budget' | 'no-nodes' | 'capture-failed';
1271
+ effectiveDepth?: number;
1272
+ collapsedLeafIndexes?: number[];
1273
+ };
1274
+
1112
1275
  declare type SnapshotUnchanged = {
1113
1276
  ageMs: number;
1114
1277
  nodeCount: number;
@@ -1133,12 +1296,16 @@ export declare type StartupPerfSample = {
1133
1296
  appBundleId?: string;
1134
1297
  };
1135
1298
 
1136
- declare type SwipeGestureOptions = ClientCommandBaseOptions & {
1137
- preset: 'left' | 'right' | 'left-edge' | 'right-edge';
1299
+ declare const SWIPE_PATTERNS: readonly ["one-way", "ping-pong"];
1300
+
1301
+ declare const SWIPE_PRESETS: readonly ["left", "right", "left-edge", "right-edge"];
1302
+
1303
+ declare type SwipeGestureOptions = DeviceCommandBaseOptions & {
1304
+ preset: SwipePreset;
1138
1305
  durationMs?: number;
1139
1306
  };
1140
1307
 
1141
- export declare type SwipeOptions = ClientCommandBaseOptions & {
1308
+ export declare type SwipeOptions = DeviceCommandBaseOptions & {
1142
1309
  from: {
1143
1310
  x: number;
1144
1311
  y: number;
@@ -1150,9 +1317,13 @@ export declare type SwipeOptions = ClientCommandBaseOptions & {
1150
1317
  durationMs?: number;
1151
1318
  count?: number;
1152
1319
  pauseMs?: number;
1153
- pattern?: 'one-way' | 'ping-pong';
1320
+ pattern?: SwipePattern;
1154
1321
  };
1155
1322
 
1323
+ declare type SwipePattern = (typeof SWIPE_PATTERNS)[number];
1324
+
1325
+ declare type SwipePreset = (typeof SWIPE_PRESETS)[number];
1326
+
1156
1327
  export declare type TemporaryFile = {
1157
1328
  path: string;
1158
1329
  visibility: 'internal';
@@ -1164,7 +1335,9 @@ export declare type TraceOptions = AgentDeviceRequestOverrides & {
1164
1335
  path?: string;
1165
1336
  };
1166
1337
 
1167
- declare type TransformGestureOptions = ClientCommandBaseOptions & {
1338
+ declare type TransformGestureOptions = DeviceCommandBaseOptions & TransformGestureParams;
1339
+
1340
+ declare type TransformGestureParams = {
1168
1341
  x: number;
1169
1342
  y: number;
1170
1343
  dx: number;
@@ -1174,7 +1347,7 @@ declare type TransformGestureOptions = ClientCommandBaseOptions & {
1174
1347
  durationMs?: number;
1175
1348
  };
1176
1349
 
1177
- export declare type TypeTextOptions = ClientCommandBaseOptions & {
1350
+ export declare type TypeTextOptions = DeviceCommandBaseOptions & {
1178
1351
  text: string;
1179
1352
  delayMs?: number;
1180
1353
  };
@@ -1193,19 +1366,19 @@ declare type WaitCommandTarget = {
1193
1366
  ref?: never;
1194
1367
  selector?: never;
1195
1368
  timeoutMs?: never;
1196
- } | (WaitSnapshotOptions & {
1369
+ } | (SelectorSnapshotCommandOptions & {
1197
1370
  text: string;
1198
1371
  durationMs?: never;
1199
1372
  ref?: never;
1200
1373
  selector?: never;
1201
1374
  timeoutMs?: number;
1202
- }) | (WaitSnapshotOptions & {
1375
+ }) | (SelectorSnapshotCommandOptions & {
1203
1376
  ref: string;
1204
1377
  durationMs?: never;
1205
1378
  text?: never;
1206
1379
  selector?: never;
1207
1380
  timeoutMs?: number;
1208
- }) | (WaitSnapshotOptions & {
1381
+ }) | (SelectorSnapshotCommandOptions & {
1209
1382
  selector: string;
1210
1383
  durationMs?: never;
1211
1384
  text?: never;
@@ -1213,6 +1386,4 @@ declare type WaitCommandTarget = {
1213
1386
  timeoutMs?: number;
1214
1387
  });
1215
1388
 
1216
- declare type WaitSnapshotOptions = Pick<CaptureSnapshotOptions, 'depth' | 'scope' | 'raw'>;
1217
-
1218
1389
  export { }