agent-device 0.21.11 → 0.21.13

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 (201) hide show
  1. package/android/ime-helper/dist/{agent-device-android-ime-helper-0.21.11.apk → agent-device-android-ime-helper-0.21.13.apk} +0 -0
  2. package/android/ime-helper/dist/agent-device-android-ime-helper-0.21.13.apk.sha256 +1 -0
  3. package/android/ime-helper/dist/{agent-device-android-ime-helper-0.21.11.manifest.json → agent-device-android-ime-helper-0.21.13.manifest.json} +4 -4
  4. package/android/snapshot-helper/dist/{agent-device-android-snapshot-helper-0.21.11.apk → agent-device-android-snapshot-helper-0.21.13.apk} +0 -0
  5. package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.13.apk.sha256 +1 -0
  6. package/android/snapshot-helper/dist/{agent-device-android-snapshot-helper-0.21.11.manifest.json → agent-device-android-snapshot-helper-0.21.13.manifest.json} +6 -6
  7. package/apple/fold-helper/Fold.m +97 -0
  8. package/apple/macos-helper/Package.swift +3 -6
  9. package/apple/macos-helper/Sources/AgentDeviceMacOSHelper/main.swift +3 -8
  10. package/apple/macos-helper/Tests/AgentDeviceMacOSHelperTests/ScreenshotResponseTests.swift +15 -0
  11. package/apple/snapshot-bridge/SnapshotBridgeRuntime.m +47 -1
  12. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunner/AgentDeviceRunnerApp.m +99 -42
  13. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunner/Info.plist +23 -0
  14. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunner.xcodeproj/project.pbxproj +17 -0
  15. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerAppScreenCapture.swift +21 -13
  16. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerScrollViewportPolicy.swift +1 -162
  17. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerSynthesizedGesture.h +0 -9
  18. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerSynthesizedGesture.m +0 -56
  19. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerSystemSurfaceHostPolicy.swift +0 -48
  20. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTapPointPolicy.swift +0 -50
  21. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+AXSnapshotFallback.swift +22 -568
  22. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Alert.swift +21 -9
  23. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+BlockingSystemModalResolution.swift +0 -36
  24. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandDispatch.swift +630 -0
  25. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandExecution.swift +18 -2236
  26. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandJournal.swift +1 -338
  27. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Environment.swift +0 -12
  28. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+GestureExecution.swift +165 -0
  29. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Interaction.swift +0 -24
  30. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Keyboard.swift +0 -142
  31. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Lifecycle.swift +90 -39
  32. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+MainThreadWork.swift +78 -106
  33. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Models.swift +23 -2
  34. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Navigation.swift +147 -95
  35. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+PrivateAXPresentation.swift +0 -209
  36. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+ScreenRecorder.swift +86 -10
  37. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+ScrollDragExecution.swift +287 -0
  38. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+ScrollGesture.swift +1 -200
  39. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SequenceExecution.swift +0 -185
  40. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Snapshot.swift +75 -285
  41. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotAcquisition.swift +23 -10
  42. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotBackendCapabilities.swift +0 -78
  43. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotCapturePlan.swift +83 -578
  44. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotCaptureTarget.swift +106 -0
  45. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotExecution.swift +142 -0
  46. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotTiming.swift +49 -78
  47. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SynthesizedCommitDeadline.swift +0 -44
  48. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SynthesizedGesturePolicy.swift +27 -97
  49. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SynthesizedInteraction.swift +1 -11
  50. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SynthesizedTextEntry.swift +11 -87
  51. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SystemModal.swift +2 -10
  52. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntry.swift +1 -1
  53. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntryFocus.swift +0 -35
  54. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextInputCandidatePolicy.swift +0 -31
  55. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextTyping.swift +2 -18
  56. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Transport.swift +34 -52
  57. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TvRemote.swift +0 -22
  58. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TypeExecution.swift +142 -0
  59. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests.swift +22 -6
  60. package/dist/apple/runner/AgentDeviceRunner/RecordingScripts/recording-overlay.swift +140 -20
  61. package/dist/src/absence-observation-errors.js +1 -1
  62. package/dist/src/adapter.js +1 -1
  63. package/dist/src/agent-device-client.js +1 -1
  64. package/dist/src/alert-runtime.js +1 -1
  65. package/dist/src/android-adb.d.ts +1 -1
  66. package/dist/src/app-launch.js +2 -2
  67. package/dist/src/app-log-runtime2.js +3 -3
  68. package/dist/src/app-resolution.js +2 -2
  69. package/dist/src/back-mode.js +1 -1
  70. package/dist/src/capture-disclosure.js +1 -1
  71. package/dist/src/capture.js +1 -1
  72. package/dist/src/cli-config.js +1 -1
  73. package/dist/src/cli-help.js +10 -7
  74. package/dist/src/cli-runner.js +1 -1
  75. package/dist/src/cli.js +1 -1
  76. package/dist/src/client-types.d.ts +5 -8
  77. package/dist/src/code-signature.js +1 -1
  78. package/dist/src/command-schema.js +3 -3
  79. package/dist/src/command-tools.js +3 -3
  80. package/dist/src/connection.js +1 -1
  81. package/dist/src/daemon-client-lifecycle.js +1 -1
  82. package/dist/src/daemon-resolution.js +1 -1
  83. package/dist/src/device-claim-rule.js +2 -2
  84. package/dist/src/device-input-state.d.ts +1 -1
  85. package/dist/src/device-rotation.js +1 -1
  86. package/dist/src/device-session.js +1 -1
  87. package/dist/src/devicectl.js +1 -1
  88. package/dist/src/display-inventory.js +1 -1
  89. package/dist/src/doctor-facade.js +1 -1
  90. package/dist/src/find.js +1 -1
  91. package/dist/src/gesture-plan-types.d.ts +38 -0
  92. package/dist/src/harmonyos.js +1 -1
  93. package/dist/src/helper.js +2 -2
  94. package/dist/src/host.js +1 -1
  95. package/dist/src/install-source-network-transport.js +1 -1
  96. package/dist/src/install-source2.js +1 -1
  97. package/dist/src/interaction-ref-policy.js +1 -1
  98. package/dist/src/interaction2.js +1 -1
  99. package/dist/src/interactor-operation-catalog.js +1 -1
  100. package/dist/src/interactor.js +4 -4
  101. package/dist/src/interactor2.js +1 -1
  102. package/dist/src/internal/bin.js +1 -1
  103. package/dist/src/internal/daemon.js +2 -2
  104. package/dist/src/inventory2.js +1 -1
  105. package/dist/src/ios-snapshot-acquisition.js +1 -1
  106. package/dist/src/ios-snapshot-runtime.js +1 -1
  107. package/dist/src/limrun-runtime-dependencies.js +1 -1
  108. package/dist/src/limrun.d.ts +435 -4
  109. package/dist/src/linux.js +1 -1
  110. package/dist/src/local-interactor-operation-set.js +1 -1
  111. package/dist/src/macos-facade.js +1 -1
  112. package/dist/src/managed-device-scope.js +1 -1
  113. package/dist/src/mechanics.js +4 -4
  114. package/dist/src/mobile-snapshot-semantics.js +1 -1
  115. package/dist/src/perf-facade.js +1 -2
  116. package/dist/src/perf-runtime-plan.js +1 -1
  117. package/dist/src/perf-target.js +2 -0
  118. package/dist/src/physical-device-apps.js +1 -0
  119. package/dist/src/physical-device-control.js +1 -1
  120. package/dist/src/platform-request-scope.js +1 -1
  121. package/dist/src/platform-runtime-operation-host.js +1 -1
  122. package/dist/src/platform-runtime-screen-recording-finalizer-host.js +1 -1
  123. package/dist/src/platform-runtime-unavailable.js +1 -1
  124. package/dist/src/platform-runtime.js +1 -1
  125. package/dist/src/platform-runtime2.js +1 -1
  126. package/dist/src/provider-webdriver.js +1 -1
  127. package/dist/src/proxy.js +1 -1
  128. package/dist/src/quality-warnings.js +1 -1
  129. package/dist/src/react-native.js +1 -1
  130. package/dist/src/record-runtime.js +1 -1
  131. package/dist/src/registry.js +35 -35
  132. package/dist/src/request-admission.js +1 -1
  133. package/dist/src/request-runtime-binding.js +1 -1
  134. package/dist/src/runner-client.js +1 -1
  135. package/dist/src/runner-dev-tools-security.js +1 -1
  136. package/dist/src/runner-device-readiness.js +1 -1
  137. package/dist/src/runner-disposal.js +1 -1
  138. package/dist/src/runner-error-classification.js +3 -0
  139. package/dist/src/runner-operations-facade.js +1 -1
  140. package/dist/src/runner-presentation.js +1 -1
  141. package/dist/src/runner.js +1 -1
  142. package/dist/src/runtime.js +3 -3
  143. package/dist/src/runtime10.js +1 -1
  144. package/dist/src/runtime2.js +2 -2
  145. package/dist/src/runtime4.js +5 -5
  146. package/dist/src/runtime5.js +1 -1
  147. package/dist/src/runtime6.js +1 -1
  148. package/dist/src/runtime7.js +1 -1
  149. package/dist/src/runtime8.js +1 -1
  150. package/dist/src/runtime9.js +1 -1
  151. package/dist/src/screen-recording-admission-ledger.js +1 -1
  152. package/dist/src/screen-recording-resource-recovery.js +1 -1
  153. package/dist/src/screen-recording-transport.js +1 -1
  154. package/dist/src/screenshot-runtime.js +1 -1
  155. package/dist/src/screenshot3.js +1 -1
  156. package/dist/src/script.js +1 -1
  157. package/dist/src/scroll-command.d.ts +377 -0
  158. package/dist/src/scroll-command.js +1 -1
  159. package/dist/src/sdk-batch.js +2 -2
  160. package/dist/src/sdk-contracts.d.ts +9 -0
  161. package/dist/src/sdk-device.js +1 -1
  162. package/dist/src/sdk-selectors.d.ts +23 -715
  163. package/dist/src/selection.js +0 -0
  164. package/dist/src/selector-runtime.js +1 -1
  165. package/dist/src/semantic-index.js +1 -1
  166. package/dist/src/server.js +1 -1
  167. package/dist/src/session-observation.js +1 -1
  168. package/dist/src/session-snapshot.js +1 -1
  169. package/dist/src/session2.js +2 -2
  170. package/dist/src/simctl-facade.js +1 -1
  171. package/dist/src/simctl.js +1 -1
  172. package/dist/src/simulator-facade.js +1 -1
  173. package/dist/src/simulator-state.js +1 -1
  174. package/dist/src/simulator.js +1 -1
  175. package/dist/src/snapshot-runtime-binding.js +1 -1
  176. package/dist/src/snapshot-runtime.js +1 -1
  177. package/dist/src/snapshot-state.js +1 -1
  178. package/dist/src/snapshot4.js +1 -1
  179. package/dist/src/src7.js +1 -1
  180. package/dist/src/text-entry-focus.js +1 -1
  181. package/dist/src/tool-provider.js +1 -1
  182. package/dist/src/touch-runtime.js +1 -1
  183. package/dist/src/tree.js +1 -1
  184. package/dist/src/update-check.js +1 -1
  185. package/dist/src/version.js +1 -1
  186. package/dist/src/web2.js +1 -1
  187. package/package.json +4 -2
  188. package/server.json +2 -2
  189. package/android/ime-helper/dist/agent-device-android-ime-helper-0.21.11.apk.sha256 +0 -1
  190. package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.11.apk.sha256 +0 -1
  191. package/apple/macos-helper/Sources/AgentDeviceMacOSDeviceHub/DeviceHubPose.swift +0 -47
  192. package/apple/macos-helper/Sources/AgentDeviceMacOSDeviceHub/DeviceHubWindowInventory.swift +0 -65
  193. package/apple/macos-helper/Sources/AgentDeviceMacOSHelper/DeviceHubPose.swift +0 -225
  194. package/apple/macos-helper/Sources/AgentDeviceMacOSHelper/DeviceHubSidebar.swift +0 -57
  195. package/apple/macos-helper/Sources/AgentDeviceMacOSHelper/DeviceHubWindowDiscovery.swift +0 -108
  196. package/apple/macos-helper/Tests/AgentDeviceMacOSDeviceHubTests/DeviceHubPoseTests.swift +0 -30
  197. package/apple/macos-helper/Tests/AgentDeviceMacOSDeviceHubTests/DeviceHubWindowInventoryTests.swift +0 -65
  198. package/dist/src/app-inventory.d.ts +0 -4
  199. package/dist/src/apps-simctl.js +0 -1
  200. package/dist/src/cloud-artifacts.d.ts +0 -61
  201. package/dist/src/runner-contract.js +0 -3
@@ -1,293 +1,35 @@
1
- import { A as ScreenshotOverlayRef, C as Platform, D as Point, E as IosTargetActivation, F as SnapshotProvenance, I as SnapshotQualityVerdict, L as SnapshotState, M as SnapshotKeyboardBandFact, N as SnapshotNode, O as RawSnapshotNode, P as SnapshotOptions$1, T as PublicPlatform, h as ResponseCost, k as Rect } from "./sdk-contracts.js";
2
- //#region packages/contracts/src/session-surface.d.ts
3
- declare const SESSION_SURFACES: readonly ['app', 'frontmost-app', 'desktop', 'menubar'];
4
- type SessionSurface = (typeof SESSION_SURFACES)[number];
5
- //#endregion
6
- //#region packages/contracts/src/snapshot-diagnostics.d.ts
7
- type SnapshotTimingStats = {
8
- count: number;
9
- p50Ms: number;
10
- p95Ms: number;
11
- maxMs: number;
12
- slowThresholdMs: number;
13
- platform?: PublicPlatform;
14
- backends?: Record<string, number>;
15
- };
16
- type SnapshotDiagnosticsSummary = {
17
- stats: SnapshotTimingStats;
18
- warning?: string;
19
- };
20
- //#endregion
21
- //#region packages/contracts/src/snapshot-types.d.ts
22
- type ScreenshotResultData = {
23
- path?: string;
24
- width?: number;
25
- height?: number;
26
- logicalWidth?: number;
27
- logicalHeight?: number;
28
- pixelDensity?: number;
29
- overlayRefs?: ScreenshotOverlayRef[];
30
- warnings?: string[];
31
- };
32
- type BackendSnapshotResult = {
33
- nodes?: SnapshotNode[];
34
- truncated?: boolean;
35
- backend?: string;
36
- snapshot?: SnapshotState;
37
- appName?: string;
38
- appBundleId?: string;
39
- snapshotDiagnostics?: SnapshotDiagnosticsSummary;
40
- analysis?: {
41
- rawNodeCount: number;
42
- maxDepth: number;
43
- };
44
- androidSnapshot?: AndroidSnapshotBackendMetadata;
45
- freshness?: {
46
- action: string;
47
- retryCount: number;
48
- staleAfterRetries: boolean;
49
- reason?: 'empty-interactive' | 'sharp-drop' | 'stuck-route';
50
- };
51
- quality?: SnapshotQualityVerdict;
52
- warnings?: string[];
53
- };
54
- type AndroidSnapshotBackendMetadata = {
55
- backend: 'android-helper';
56
- helperVersion?: string;
57
- helperApiVersion?: string;
58
- helperTransport?: string;
59
- helperSessionReused?: boolean;
60
- installReason?: string;
61
- waitForIdleTimeoutMs?: number;
62
- waitForIdleQuietMs?: number;
63
- timeoutMs?: number;
64
- maxDepth?: number;
65
- maxNodes?: number;
66
- rootPresent?: boolean;
67
- captureMode?: string;
68
- systemSurfaceOnly?: boolean;
69
- windowCount?: number;
70
- nodeCount?: number;
71
- helperTruncated?: boolean;
72
- elapsedMs?: number;
73
- presentationFailure?: {
74
- phase: 'deadline' | 'complexity' | 'regular-invariant';
75
- workUnits: number;
76
- maxWorkUnits?: number;
77
- };
78
- /** API 23 exposes no sibling drawing order, so same-window occlusion fails conservative. */
79
- occlusionScanUnavailable?: boolean;
80
- };
81
- type FindLocator = 'any' | 'text' | 'label' | 'value' | 'role' | 'id';
82
- //#endregion
1
+ import { C as Platform, L as SnapshotState, N as SnapshotNode, T as PublicPlatform, h as ResponseCost, k as Rect } from "./sdk-contracts.js";
83
2
  //#region packages/contracts/src/click-button.d.ts
84
3
  declare const CLICK_BUTTONS: readonly ['primary', 'secondary', 'middle'];
85
4
  type ClickButton = (typeof CLICK_BUTTONS)[number];
86
5
  //#endregion
87
- //#region packages/contracts/src/scroll-gesture.d.ts
88
- declare const SCROLL_INPUT_DIRECTIONS: readonly ['up', 'down', 'left', 'right', 'top', 'bottom'];
89
- type ScrollInputDirection = (typeof SCROLL_INPUT_DIRECTIONS)[number];
90
- declare const SCROLL_DIRECTIONS: readonly ['up', 'down', 'left', 'right'];
91
- type ScrollDirection = (typeof SCROLL_DIRECTIONS)[number];
92
- declare const SWIPE_PRESETS: readonly ['left', 'right', 'left-edge', 'right-edge'];
93
- type SwipePreset = (typeof SWIPE_PRESETS)[number];
94
- declare const SWIPE_PATTERNS: readonly ['one-way', 'ping-pong'];
95
- type SwipePattern = (typeof SWIPE_PATTERNS)[number];
96
- type TransformGestureParams = {
97
- x: number;
98
- y: number;
99
- dx: number;
100
- dy: number;
101
- scale: number;
102
- degrees: number;
103
- durationMs?: number;
104
- };
105
- //#endregion
106
- //#region packages/contracts/src/gesture-plan-types.d.ts
107
- type GesturePointerCount = 1 | 2;
108
- /** Selects one-pointer release timing without changing semantic gesture intent. */
109
- type GestureExecutionProfile = 'endpoint-hold' | 'timed-pan';
110
- type PointerTrajectorySample = {
111
- offsetMs: number;
112
- point: Point;
113
- };
114
- type PointerTrajectory = {
115
- pointerId: 0 | 1;
116
- samples: readonly PointerTrajectorySample[];
117
- };
118
- type SinglePointerTrajectory = {
119
- pointerId: 0;
120
- samples: readonly [PointerTrajectorySample, PointerTrajectorySample, ...PointerTrajectorySample[]];
121
- };
122
- type SinglePointerGesturePlan = {
123
- topology: 'single';
124
- intent: 'fling' | 'pan';
125
- executionProfile: GestureExecutionProfile;
126
- durationMs: number;
127
- viewport: Rect;
128
- pointers: readonly [SinglePointerTrajectory];
129
- };
130
- type MultiTouchGesturePlan = {
131
- topology: 'two';
132
- intent: 'pan' | 'pinch' | 'rotate' | 'transform';
133
- durationMs: number;
134
- viewport: Rect;
135
- pointers: readonly [PointerTrajectory, PointerTrajectory];
136
- };
137
- type GesturePlan = SinglePointerGesturePlan | MultiTouchGesturePlan;
138
- //#endregion
139
- //#region packages/contracts/src/back-mode.d.ts
140
- declare const BACK_MODES: readonly ['in-app', 'system'];
141
- type BackMode = (typeof BACK_MODES)[number];
142
- //#endregion
143
- //#region packages/contracts/src/settings.d.ts
6
+ //#region packages/contracts/src/fill-evidence.d.ts
144
7
  /**
145
- * The `settings permission` vocabulary, declared once. These collections are what the parsers
146
- * below, the public client permission types, the CLI's membership sets, and the permission-name
147
- * fragments of `settings` help and its invalid-args message are built from, and their order is
148
- * the order `settings` help lists the names in.
149
- *
150
- * Acceptance is not support: each backend keeps its own target mapping and its own support check,
151
- * so a name accepted here never promises that the selected platform serves it.
8
+ * The evidence a `fill` carries when it changed a field but could not confirm the text it sent.
9
+ * Both the fill response and `Interactor.fill`'s return need these shapes, so they sit below both
10
+ * of those modules rather than in either. This is the cross-language shape, not Android's probing:
11
+ * `packages/platform-android/src/fill-verification.ts` builds Android's copy of it.
152
12
  */
153
- declare const PERMISSION_ACTIONS: readonly ['grant', 'deny', 'reset'];
154
- declare const PERMISSION_MODES: readonly ['full', 'limited'];
155
- /** The app-scoped targets, the only ones `parsePermissionTarget` accepts. */
156
- declare const MOBILE_PERMISSION_TARGETS: readonly ['all', 'camera', 'microphone', 'photos', 'contacts', 'contacts-limited', 'notifications', 'calendar', 'location', 'location-always', 'media-library', 'motion', 'reminders', 'siri'];
157
- /** The desktop targets the CLI and the public client accept; `parsePermissionTarget` refuses them. */
158
- declare const MACOS_PERMISSION_TARGETS: readonly ['accessibility', 'screen-recording', 'input-monitoring'];
159
- type PermissionAction = (typeof PERMISSION_ACTIONS)[number];
160
- type PermissionMode = (typeof PERMISSION_MODES)[number];
161
- /**
162
- * The preferred-text-size ladder `settings text-size` accepts, in the order `settings` help lists
163
- * it. Apple serves it natively — `simctl ui <device> content_size` reads and writes exactly these
164
- * names — and Android serves it through its `system font_scale` multiplier, so this ladder is the
165
- * cross-platform vocabulary and each owner maps it in its own native terms. Acceptance is not
166
- * support: an owner that cannot serve the ladder refuses at admission, on its own fact.
167
- */
168
- declare const TEXT_SIZE_CATEGORIES: readonly ['extra-small', 'small', 'medium', 'large', 'extra-large', 'extra-extra-large', 'extra-extra-extra-large', 'accessibility-medium', 'accessibility-large', 'accessibility-extra-large', 'accessibility-extra-extra-large', 'accessibility-extra-extra-extra-large'];
169
- type TextSizeCategory = (typeof TEXT_SIZE_CATEGORIES)[number];
170
- /**
171
- * The settings that answer a bare `settings <setting>` with the value the target holds. This is the
172
- * vocabulary every settings type and every settings owner reads it from; the matching value is
173
- * `READABLE_SETTINGS` in `platform-runtime-operations.ts`, where the CLI hub can evaluate it, and
174
- * that module pins the two equal in both directions at compile time.
175
- */
176
- type ReadableSetting = 'text-size';
177
- /**
178
- * What `text-size` answers with. The ladder is shared across platforms, so a read names the
179
- * category the ladder calls the device's value *and* the value the platform itself reported: an
180
- * Apple content-size name, or an Android `font_scale` multiplier. The ladder is coarser than any
181
- * one platform's own scale, and `platformValue` is what keeps a normalized answer auditable.
182
- */
183
- type TextSizeSettingPayload = Readonly<{
184
- setting: 'text-size';
185
- category: TextSizeCategory;
186
- platformValue: string;
187
- }>;
188
- /**
189
- * The payload a readable setting answers with, keyed by the setting that answered. Each readable
190
- * setting has its own shape — a category and a multiplier are not the same observation — so the
191
- * discriminant is what lets a response be composed, recorded, and printed from one place without
192
- * assuming every setting is a ladder rung. A second readable setting joins this union and supplies
193
- * its own sentence in `describeSettingRead`, which is where the compiler then asks for it.
194
- */
195
- type ReadSettingResult = TextSizeSettingPayload;
196
- type SettingOptions = {
197
- permissionTarget?: string;
198
- permissionMode?: string;
199
- latitude?: number;
200
- longitude?: number;
13
+ /** The field a fill aimed at, as the platform that performed it names it. */
14
+ type FillVerificationTarget = {
15
+ resourceId: string | null;
16
+ className: string | null;
17
+ packageName: string | null;
18
+ rect: Rect;
201
19
  };
202
- //#endregion
203
- //#region packages/contracts/src/device-rotation.d.ts
204
- declare const DEVICE_ROTATIONS: readonly ['portrait', 'portrait-upside-down', 'landscape-left', 'landscape-right'];
205
- type DeviceRotation = (typeof DEVICE_ROTATIONS)[number];
206
20
  /**
207
- * The three hinge poses a foldable Apple device can be put in, named after what an agent sees
208
- * rather than after Apple's `UIHinge.Status` cases: `closed` lights the outer panel only,
209
- * `half-open` and `open` light the inner panel. Device Hub calls them Closed, Book, and Open;
210
- * `UIHinge.Status` calls them `.closed`, `.partiallyOpen`, and `.fullyOpen`.
21
+ * Target-bound evidence that a fill moved a field's content from `before` to `after` without raw
22
+ * equality with `requested` being reachable, because app-owned formatting prevents it. Bound to the
23
+ * {@link FillVerificationTarget} it was collected against so another field, or the same field after
24
+ * it re-laid out, cannot borrow this evidence.
211
25
  */
212
- declare const FOLD_POSES: readonly ['closed', 'half-open', 'open'];
213
- type FoldPose = (typeof FOLD_POSES)[number];
214
- //#endregion
215
- //#region packages/contracts/src/tv-remote.d.ts
216
- declare const TV_REMOTE_BUTTON_DEFINITIONS: {
217
- readonly up: {
218
- readonly aliases: readonly [];
219
- readonly androidKeyevent: 'KEYCODE_DPAD_UP';
220
- readonly appleRemoteButton: 'up';
221
- readonly vegaKey: 'KEY_UP';
222
- };
223
- readonly down: {
224
- readonly aliases: readonly [];
225
- readonly androidKeyevent: 'KEYCODE_DPAD_DOWN';
226
- readonly appleRemoteButton: 'down';
227
- readonly vegaKey: 'KEY_DOWN';
228
- };
229
- readonly left: {
230
- readonly aliases: readonly [];
231
- readonly androidKeyevent: 'KEYCODE_DPAD_LEFT';
232
- readonly appleRemoteButton: 'left';
233
- readonly vegaKey: 'KEY_LEFT';
234
- };
235
- readonly right: {
236
- readonly aliases: readonly [];
237
- readonly androidKeyevent: 'KEYCODE_DPAD_RIGHT';
238
- readonly appleRemoteButton: 'right';
239
- readonly vegaKey: 'KEY_RIGHT';
240
- };
241
- readonly select: {
242
- readonly aliases: readonly ["ok", "center", "enter"];
243
- readonly androidKeyevent: 'KEYCODE_DPAD_CENTER';
244
- readonly appleRemoteButton: 'select';
245
- readonly vegaKey: 'KEY_ENTER';
246
- };
247
- readonly menu: {
248
- readonly aliases: readonly [];
249
- readonly androidKeyevent: 'KEYCODE_MENU';
250
- readonly appleRemoteButton: 'menu';
251
- readonly vegaKey: 'KEY_MENU';
252
- };
253
- readonly home: {
254
- readonly aliases: readonly [];
255
- readonly androidKeyevent: 'KEYCODE_HOME';
256
- readonly appleRemoteButton: 'home';
257
- readonly vegaKey: 'KEY_HOMEPAGE';
258
- };
259
- readonly back: {
260
- readonly aliases: readonly [];
261
- readonly androidKeyevent: 'KEYCODE_BACK';
262
- readonly appleRemoteButton: 'menu';
263
- readonly vegaKey: 'KEY_BACK';
264
- };
26
+ type FillUnconfirmedVerification = {
27
+ verification: 'unconfirmed';
28
+ requested: string;
29
+ before: string | null;
30
+ after: string | null;
31
+ target: FillVerificationTarget;
265
32
  };
266
- declare const TV_REMOTE_BUTTONS: (keyof typeof TV_REMOTE_BUTTON_DEFINITIONS)[];
267
- type TvRemoteButton = (typeof TV_REMOTE_BUTTONS)[number];
268
- //#endregion
269
- //#region packages/contracts/src/ios-system-surface.d.ts
270
- /**
271
- * iOS out-of-process system surfaces that agent-device observes and drives IN PLACE, never by
272
- * activation: launching or activating the host cancels what it presents (issue #2438), so the
273
- * runner addresses the host process while it is foreground and the `open` path refuses it. The set
274
- * is deliberately closed and tiny; add a host only with live evidence that it presents out of
275
- * process and dies on activation. Rationale per host lives in the canonical fixture
276
- * `contracts/fixtures/ios-system-surface-hosts.json` (see also docs/adr/0004); this module and the
277
- * Swift `SystemSurfaceHostRegistry` both mirror it, each guarded by a parity test.
278
- */
279
- /** Why a system surface is served in place; carried at snapshot-response level as provenance. */
280
- type IosSystemSurfaceKind = 'web-auth' | 'payment';
281
- /**
282
- * Whole-snapshot provenance: the capture describes a system surface presented over the session app,
283
- * not the app itself. Carried at response level (it applies to the entire snapshot) and folded into
284
- * iOS snapshot lineage so `--verify`/`--settle` never compare an app baseline against a sheet
285
- * capture. Mirrors the Android system-chrome/system-surface provenance model.
286
- */
287
- type IosSystemSurfaceProvenance = Readonly<{
288
- bundleId: string;
289
- kind: IosSystemSurfaceKind;
290
- }>;
291
33
  //#endregion
292
34
  //#region packages/contracts/src/interaction.d.ts
293
35
  /** The decisive criterion separating a resolveSelectorChain winner from its strongest runner-up (ADR 0012). */
@@ -559,440 +301,6 @@ type FindCommandResponseData = {
559
301
  cost?: ResponseCost;
560
302
  };
561
303
  //#endregion
562
- //#region packages/contracts/src/scroll-command.d.ts
563
- type ScrollReleaseBehavior = 'controlled' | 'inertial';
564
- type ScrollDistanceOptions = {
565
- amount?: number;
566
- pixels?: number;
567
- };
568
- type ScrollTimingOptions = {
569
- durationMs?: number;
570
- };
571
- type ScrollCommandOptions = ScrollDistanceOptions & ScrollTimingOptions;
572
- type ScrollExecutionOptions = ScrollCommandOptions & {
573
- releaseBehavior?: ScrollReleaseBehavior;
574
- };
575
- /**
576
- * `scroll` — the generic-route result built by `buildDispatchedScrollResult`
577
- * (src/core/dispatch-scroll.ts): the resolved direction, the edge-pass
578
- * bookkeeping for `top`/`bottom` scrolls, the honored distance/timing echo,
579
- * and the success message. Platform leaves add gesture-plan coordinates
580
- * (`x1`/`y1`/`x2`/`y2`, reference frame) on top; the output schema stays
581
- * non-strict so those additive fields validate. The one field the dispatcher
582
- * itself may add: `settle`, the opt-in `--settle` observation (#1638),
583
- * attached after the command — same shape as `BackCommandResult`.
584
- */
585
- type ScrollCommandResult = {
586
- direction: ScrollDirection;
587
- /** Set for `top`/`bottom` requests: the extreme being scrolled to. */
588
- edge?: 'top' | 'bottom';
589
- /** Set for `--until` requests: the selector the passes stopped on. */
590
- until?: string;
591
- /** Edge and until scrolls only: how many scroll-and-check passes ran. */
592
- passes?: number;
593
- amount?: number;
594
- pixels?: number;
595
- durationMs?: number;
596
- message?: string;
597
- settle?: SettleObservation;
598
- /**
599
- * Set only when an on-screen keyboard made the owner clip the swipe into the band above it
600
- * (#2500). Absent means the swipe was not clipped, which is not the same claim as `false`: a
601
- * platform that never runs the clip has nothing to report. The platform leaf's `referenceHeight`
602
- * names the shortened axis the reported `pixels` were planned against, and `keyboardMinY` names
603
- * where the keyboard began. A surface the owner refused to swipe at all fails instead, under the
604
- * `scroll_keyboard_occludes_surface` reason.
605
- */
606
- keyboardAvoided?: true;
607
- /** The keyboard's edge in the same unit as the gesture coordinates, when the swipe was clipped. */
608
- keyboardMinY?: number;
609
- };
610
- //#endregion
611
- //#region packages/contracts/src/runner-lease-context.d.ts
612
- type RunnerLogicalLeaseContext = {
613
- leaseId?: string;
614
- clientId?: string;
615
- tenantId?: string;
616
- runId?: string;
617
- leaseProvider?: string;
618
- deviceKey?: string;
619
- };
620
- //#endregion
621
- //#region packages/contracts/src/ios-snapshot.d.ts
622
- type IosSnapshotProducer = 'apple-runner' | 'simulator-ax-bridge' | 'appium-source' | 'limrun-ios-tree';
623
- type IosAcquisitionProducer = Exclude<IosSnapshotProducer, 'apple-runner'>;
624
- type IosAcquisitionIntent = 'full' | 'surface-observation';
625
- type IosSnapshotProjection = 'regular' | 'raw';
626
- type IosSnapshotGeneration = string;
627
- type IosSnapshotLineage = Readonly<{
628
- targetId?: string;
629
- generation?: IosSnapshotGeneration;
630
- }>;
631
- type IosSnapshotPresentationKey = Readonly<{
632
- projection: IosSnapshotProjection;
633
- interactiveOnly: boolean;
634
- depth: number | null;
635
- scope: string | null;
636
- customActions: boolean;
637
- }>;
638
- type CaptureHint = Readonly<{
639
- projection: IosSnapshotProjection;
640
- rawTraversalDepth: number | null;
641
- regularPresentedDepth: number | null;
642
- interactiveOnly: boolean;
643
- customActions: boolean;
644
- acquisitionIntent: IosAcquisitionIntent;
645
- }>;
646
- type IosSnapshotFact = 'acquisition-depth' | 'scope' | 'interactive-query' | 'viewport' | 'hittability' | 'generation' | 'truncation';
647
- type IosViewportEvidence = Readonly<{
648
- kind: 'reported';
649
- rect: Rect;
650
- }> | Readonly<{
651
- kind: 'derived';
652
- rect: Rect;
653
- }> | Readonly<{
654
- kind: 'missing';
655
- reason: 'not-provided' | 'not-supported' | 'invalid';
656
- }>;
657
- type IosProviderPrunedField = 'nodes' | 'depth' | 'scope' | 'interactive-only';
658
- type IosAcquisitionResidue = Readonly<{
659
- kind: 'provider-pruned';
660
- fields: readonly IosProviderPrunedField[];
661
- }> | Readonly<{
662
- kind: 'missing-viewport';
663
- reason: 'not-provided' | 'not-supported' | 'invalid';
664
- }> | Readonly<{
665
- kind: 'truncated';
666
- }> | Readonly<{
667
- kind: 'stale-generation';
668
- expected?: IosSnapshotGeneration;
669
- observed?: IosSnapshotGeneration;
670
- }> | Readonly<{
671
- kind: 'unknown-generation';
672
- captureId: string;
673
- }> | Readonly<{
674
- kind: 'unavailable-fact';
675
- fact: IosSnapshotFact;
676
- }> | Readonly<{
677
- kind: 'fallback-source';
678
- producer: IosSnapshotProducer;
679
- }>;
680
- type IosSnapshotAcquisitionForIntent<Intent extends IosAcquisitionIntent> = Readonly<{
681
- producer: IosAcquisitionProducer;
682
- intent: Intent;
683
- hint: CaptureHint & Readonly<{
684
- acquisitionIntent: Intent;
685
- }>;
686
- nodes: readonly RawSnapshotNode[];
687
- truncated?: boolean;
688
- viewport: IosViewportEvidence;
689
- lineage: IosSnapshotLineage;
690
- residue: readonly IosAcquisitionResidue[];
691
- }>;
692
- type IosSnapshotAcquisition = IosSnapshotAcquisitionForIntent<'full'> | IosSnapshotAcquisitionForIntent<'surface-observation'>;
693
- type IosSnapshotAcquisitionFacts = Omit<IosSnapshotAcquisition, 'hint'>;
694
- type IosSnapshotComparisonIdentity = Readonly<{
695
- producer: IosSnapshotProducer;
696
- intent: IosAcquisitionIntent;
697
- lineage: IosSnapshotLineage;
698
- presentationKey: IosSnapshotPresentationKey;
699
- residue: readonly IosAcquisitionResidue[];
700
- }>;
701
- //#endregion
702
- //#region packages/contracts/src/interactor-types.d.ts
703
- type RunnerContext = {
704
- requestId?: string;
705
- signal?: AbortSignal;
706
- appBundleId?: string;
707
- verbose?: boolean;
708
- logPath?: string;
709
- traceLogPath?: string;
710
- iosXctestrunFile?: string;
711
- iosXctestDerivedDataPath?: string;
712
- iosXctestEnvDir?: string;
713
- runnerLeaseContext?: RunnerLogicalLeaseContext;
714
- };
715
- type ScreenshotOptions = {
716
- appBundleId?: string;
717
- pixelDensity?: number;
718
- fullscreen?: boolean;
719
- normalizeStatusBar?: boolean;
720
- stabilize?: boolean;
721
- surface?: SessionSurface;
722
- skipIosSimulatorBootCheck?: boolean;
723
- captureBackend?: 'runner';
724
- };
725
- type ElementSelectorKey = 'id' | 'label' | 'text' | 'value';
726
- type ElementSelectorTapOptions = {
727
- key: ElementSelectorKey;
728
- value: string;
729
- allowNonHittableCoordinateFallback?: boolean;
730
- expectedPoint?: Point;
731
- };
732
- type PressPointOptions = Readonly<{
733
- button: 'primary' | 'secondary' | 'middle';
734
- count: number;
735
- intervalMs: number;
736
- holdMs: number;
737
- jitterPx: number;
738
- doubleTap: boolean;
739
- surface?: SessionSurface;
740
- }>;
741
- /**
742
- * The channel the XCTest runner actually entered text through — the Swift
743
- * `TextEntryResult.textEntryRoute` (RunnerTests+TextTyping.swift,
744
- * RunnerTests+SynthesizedTextEntry.swift). Closed set, because the runner is
745
- * its only producer and the boundary that narrows it
746
- * (readTypeTextBackendResult, packages/platform-apple/src/interactions.ts) drops a
747
- * route it cannot name — so a Swift-side addition would silently vanish. The
748
- * route-parity test in packages/platform-apple/src/core/__tests__/interactions.test.ts
749
- * reads the Swift sources and fails instead.
750
- */
751
- declare const TEXT_ENTRY_ROUTES: readonly ['xctest-element', 'synthesized-first-responder', 'synthesized-first-responder-replacement', 'xctest-application-fallback'];
752
- type TextEntryRoute = (typeof TEXT_ENTRY_ROUTES)[number];
753
- /**
754
- * What `Interactor.type` reports back about the entry it performed. Only the
755
- * Apple runner populates it; every other platform types blind and returns void.
756
- */
757
- type TypeTextBackendResult = {
758
- textEntryRoute?: TextEntryRoute;
759
- };
760
- type FillVerificationTarget = {
761
- resourceId: string | null;
762
- className: string | null;
763
- packageName: string | null;
764
- rect: Rect;
765
- };
766
- type FillUnconfirmedVerification = {
767
- verification: 'unconfirmed';
768
- requested: string;
769
- before: string | null;
770
- after: string | null;
771
- target: FillVerificationTarget;
772
- };
773
- type SnapshotOptions = SnapshotOptions$1 & {
774
- appBundleId?: string;
775
- signal?: AbortSignal;
776
- includeRects?: boolean;
777
- includeHiddenContentHints?: boolean;
778
- surface?: SessionSurface;
779
- /** Internal capture purpose; action outcomes always require the full tree. */
780
- acquisitionIntent?: 'full' | 'surface-observation';
781
- };
782
- /**
783
- * Android's live IME status read. Optional on {@link Interactor}: parity with the retired leaf,
784
- * which refused `status`/`get` on every other family (no other platform's runner exposes one).
785
- * A single-member discriminated union rather than a bare object so the daemon can derive its wire
786
- * `platform` label from `kind` the same way it does for dismiss and enter — an owner can only ever
787
- * produce its own result shape.
788
- */
789
- type KeyboardStatusResult = Readonly<{
790
- kind: 'ime-probe';
791
- visible: boolean;
792
- inputType?: string;
793
- type?: string;
794
- inputMethodPackage?: string;
795
- focusedPackage?: string;
796
- focusedResourceId?: string;
797
- inputOwner?: string;
798
- }>;
799
- /**
800
- * Owner-shaped dismiss evidence, discriminated by which owner produced it: Android's IME probe
801
- * fields, or iOS's `mechanism` disclosure (#1598), or HarmonyOS's bare acknowledgment (its HDC
802
- * key press reports nothing beyond success). The daemon derives the wire `platform` label from
803
- * `kind` rather than re-deriving it from the device, so an owner can only ever produce its own
804
- * result shape — an android-probe result under an `ios` label is unrepresentable.
805
- */
806
- type KeyboardDismissResult = Readonly<{
807
- kind: 'ime-probe';
808
- attempts?: number;
809
- wasVisible?: boolean;
810
- dismissed?: boolean;
811
- visible?: boolean;
812
- inputType?: string;
813
- type?: string;
814
- inputMethodPackage?: string;
815
- focusedPackage?: string;
816
- focusedResourceId?: string;
817
- inputOwner?: string;
818
- }> | Readonly<{
819
- kind: 'mechanism';
820
- wasVisible?: boolean;
821
- dismissed?: boolean;
822
- visible?: boolean;
823
- mechanism?: string;
824
- }> | Readonly<{
825
- kind: 'acknowledged';
826
- }>;
827
- /**
828
- * Only the Apple runner echoes visibility around the return-key press; Android and HarmonyOS
829
- * acknowledge with no fields beyond success. Kind is owner-specific, not just content-shaped —
830
- * Android's and HarmonyOS's acknowledgments are structurally identical, so only the discriminant
831
- * itself tells the daemon which owner actually pressed enter.
832
- */
833
- type KeyboardEnterResult = Readonly<{
834
- kind: 'visibility-echo';
835
- visible?: boolean;
836
- wasVisible?: boolean;
837
- }> | Readonly<{
838
- kind: 'android-acknowledged';
839
- }> | Readonly<{
840
- kind: 'harmonyos-acknowledged';
841
- }>;
842
- /**
843
- * Every acquisition carries its provenance pair atomically: the channel alone cannot say who
844
- * acquired the tree or which guarantees it carries, and `SnapshotProvenance`
845
- * (`@agent-device/kernel/snapshot`) makes a cross-channel `backend`/`producer` combination
846
- * fail to compile.
847
- */
848
- type SnapshotResult = Omit<BackendSnapshotResult, 'backend' | 'nodes'> & {
849
- nodes?: RawSnapshotNode[];
850
- comparisonIdentity?: IosSnapshotComparisonIdentity;
851
- /**
852
- * Set when the capture describes an in-place iOS system surface (a web sign-in sheet) presented
853
- * over the session app rather than the app itself (#2438).
854
- */
855
- systemSurface?: IosSystemSurfaceProvenance;
856
- /**
857
- * The keyboard band the producer measured while capturing, when it can measure one (#2660). A
858
- * producer that publishes nothing measured nothing, so the tap-path guard keeps deriving the band
859
- * from `nodes`; see {@link SnapshotKeyboardBandFact}.
860
- */
861
- keyboard?: SnapshotKeyboardBandFact;
862
- /**
863
- * Set when this capture's own command had to bring the session app back to the foreground, i.e.
864
- * something else held it and an earlier observation described that instead (#2682).
865
- */
866
- targetActivation?: IosTargetActivation;
867
- } & SnapshotProvenance;
868
- type SnapshotRuntimeAcquiredResult = Readonly<{
869
- stage: 'acquired';
870
- acquisition: IosSnapshotAcquisitionFacts & Readonly<{
871
- producer: IosAcquisitionProducer;
872
- }>;
873
- }>;
874
- type SnapshotRuntimeResult = SnapshotResult | SnapshotRuntimeAcquiredResult;
875
- type Interactor = {
876
- open(app: string, options?: {
877
- activity?: string;
878
- appBundleId?: string;
879
- launchConsole?: string;
880
- launchArgs?: string[];
881
- terminateRunningApp?: boolean;
882
- url?: string;
883
- }): Promise<void>;
884
- openDevice(): Promise<void>;
885
- close(app: string): Promise<void>;
886
- tap(x: number, y: number): Promise<Record<string, unknown> | void>;
887
- /** Complete point-press semantics for owners with fused series, alternate buttons, or surfaces. */
888
- pressPoint?(point: Point, options: PressPointOptions): Promise<Record<string, unknown> | void>;
889
- /** Alternate mouse buttons for owners that otherwise use the shared point-press series. */
890
- alternateClick?(point: Point, button: 'secondary' | 'middle'): Promise<Record<string, unknown> | void>;
891
- /** Owner-native ref routes; currently the managed web runtime is their only local owner. */
892
- tapRef?(ref: string): Promise<Record<string, unknown> | void>;
893
- tapElementSelector?(selector: ElementSelectorTapOptions): Promise<Record<string, unknown> | void>;
894
- doubleTap(x: number, y: number): Promise<Record<string, unknown> | void>;
895
- longPress(x: number, y: number, durationMs?: number): Promise<Record<string, unknown> | void>;
896
- /**
897
- * Move the pointer to a point without pressing. Only pointer-driven
898
- * platforms (web today) implement it; touch platforms have no hover state
899
- * and leave it undefined, which the `hover` command reports as unsupported.
900
- */
901
- hover?(x: number, y: number): Promise<Record<string, unknown> | void>;
902
- hoverRef?(ref: string): Promise<Record<string, unknown> | void>;
903
- focus(x: number, y: number): Promise<Record<string, unknown> | void>;
904
- type(text: string, delayMs?: number): Promise<TypeTextBackendResult | void>;
905
- /**
906
- * Replace the target's text with `text`. The empty string is the clear request (#2063), not a
907
- * no-op: an implementation must empty the field or fail — never report success over an
908
- * untouched value. A backend with no clear mechanism refuses the empty text up front (see the
909
- * webdriver interactor).
910
- */
911
- fill(x: number, y: number, text: string, delayMs?: number, options?: {
912
- allowNonHittableCoordinateFallback?: boolean;
913
- }): Promise<Record<string, unknown> | void>;
914
- fillRef?(ref: string, text: string, delayMs?: number): Promise<Record<string, unknown> | void>;
915
- scroll(direction: ScrollDirection, options?: ScrollExecutionOptions): Promise<Record<string, unknown> | void>;
916
- screenshot(outPath: string, options?: ScreenshotOptions): Promise<void>;
917
- setViewport?(width: number, height: number): Promise<Record<string, unknown> | void>;
918
- snapshot(options?: SnapshotOptions): Promise<SnapshotRuntimeResult>;
919
- /**
920
- * Native reading of the live text at a point, when the backend has one. Answers the text the
921
- * owner can see right now, which can exceed what an already-captured node carries (an editable
922
- * field whose value is longer than its label). Optional: a backend without it leaves the
923
- * captured tree as the complete answer.
924
- */
925
- readTextAtPoint?(point: Point, options?: {
926
- appBundleId?: string;
927
- surface?: SessionSurface;
928
- signal?: AbortSignal;
929
- }): Promise<string | undefined>;
930
- /**
931
- * Native text-presence reading, when the backend has one that does not require a tree capture.
932
- * A `true` answer is authoritative; anything else means "not proven here" and the caller
933
- * consults the canonical tree (see `FindTextResult`).
934
- */
935
- findText?(text: string, options?: {
936
- appBundleId?: string;
937
- signal?: AbortSignal;
938
- }): Promise<{
939
- found: boolean;
940
- }>;
941
- gestureViewport?(): Promise<Rect>;
942
- back(mode?: BackMode): Promise<void>;
943
- home(): Promise<void>;
944
- setOrientation(orientation: DeviceRotation): Promise<{
945
- orientation?: DeviceRotation;
946
- } | void>;
947
- performGesture?(plan: GesturePlan): Promise<Record<string, unknown> | void>;
948
- appSwitcher(): Promise<void>;
949
- tvRemote(button: TvRemoteButton, durationMs?: number): Promise<void>;
950
- /**
951
- * Optional (parity with `keyboardDismiss`): presses the iPhone/iPad Action Button, hardware only
952
- * the Apple owner carries. An owner without the button leaves it undefined; its fact refuses the
953
- * press before binding, and the system-button binder fails closed rather than resolving an
954
- * absent member as a successful no-op.
955
- */
956
- actionButton?(): Promise<void>;
957
- /** Optional: only Android implements a live status read (see {@link KeyboardStatusResult}). */
958
- keyboardStatus?(): Promise<KeyboardStatusResult>;
959
- /** Optional: platforms with no keyboard-dismiss concept leave it undefined. */
960
- keyboardDismiss?(): Promise<KeyboardDismissResult>;
961
- /** Optional: platforms with no keyboard-return concept leave it undefined. */
962
- keyboardEnter?(): Promise<KeyboardEnterResult>;
963
- readClipboard(): Promise<string>;
964
- writeClipboard(text: string): Promise<void>;
965
- setSetting(setting: string, state: string, appId?: string, options?: SettingOptions): Promise<Record<string, unknown> | void>;
966
- /**
967
- * Optional: reads back the value a device holds for one readable setting. The name is narrowed to
968
- * `READABLE_SETTINGS`, which is not every setting the write switch serves, and an owner's dispatch
969
- * is exhaustive over it — a setting joins the list only with an owner that answers it. An owner with
970
- * no read path leaves the member undefined; its fact refuses the read before binding, so an absent
971
- * method can never resolve into an empty answer.
972
- */
973
- readSetting?(setting: ReadableSetting): Promise<ReadSettingResult>;
974
- /**
975
- * The four alert legs. Each owner runs its own observation and, where it needs one, its own
976
- * poll: an alert is a transient device surface, and how long to look for it — and how to press
977
- * its buttons — is family mechanics, not something a caller can supply. `timeoutMs` is the
978
- * whole window the caller allows; the owner spends it however its backend requires.
979
- */
980
- readAlert(options?: AlertInteractorOptions): Promise<Record<string, unknown>>;
981
- awaitAlert(options?: AlertInteractorOptions): Promise<Record<string, unknown>>;
982
- acceptAlert(options?: AlertInteractorOptions): Promise<Record<string, unknown>>;
983
- dismissAlert(options?: AlertInteractorOptions): Promise<Record<string, unknown>>;
984
- };
985
- /**
986
- * The session-derived target one alert leg acts on. `appBundleId` is separate from the runner
987
- * context's because the macOS helper reads a frontmost-app surface with no bundle at all, and
988
- * the two must not collapse into one field that means both.
989
- */
990
- type AlertInteractorOptions = {
991
- timeoutMs?: number;
992
- appBundleId?: string;
993
- surface?: SessionSurface;
994
- };
995
- //#endregion
996
304
  //#region packages/selectors/src/internal/parse.d.ts
997
305
  type SelectorKey = 'id' | 'role' | 'text' | 'label' | 'value' | 'appname' | 'windowtitle' | 'visible' | 'hidden' | 'editable' | 'selected' | 'focused' | 'enabled' | 'hittable';
998
306
  type SelectorTerm = {
@@ -1087,4 +395,4 @@ declare function formatSelectorFailure(chain: SelectorChain | string, diagnostic
1087
395
  unique?: boolean;
1088
396
  }): string;
1089
397
  //#endregion
1090
- export { GesturePointerCount as A, ClickButton as B, FoldPose as C, PermissionMode as D, PermissionAction as E, ScrollDirection as F, SessionSurface as G, FindLocator as H, ScrollInputDirection as I, SwipePattern as L, PointerTrajectory as M, PointerTrajectorySample as N, TextSizeCategory as O, SinglePointerGesturePlan as P, SwipePreset as R, DeviceRotation as S, MOBILE_PERMISSION_TARGETS as T, ScreenshotResultData as U, AndroidSnapshotBackendMetadata as V, SnapshotDiagnosticsSummary as W, HoverCommandResponseData as _, resolveSelectorChain as a, SettleObservation as b, isSelectorToken as c, Interactor as d, RunnerContext as f, FindCommandResponseData as g, FillCommandResponseData as h, findSelectorChainMatch as i, MultiTouchGesturePlan as j, BackMode as k, parseSelectorChain as l, ClickCommandResponseData as m, isNodeEditable as n, SelectorDiagnostics as o, ScrollCommandResult as p, isNodeVisible as r, SelectorChain as s, formatSelectorFailure as t, tryParseSelectorChain as u, LongPressCommandResponseData as v, MACOS_PERMISSION_TARGETS as w, TvRemoteButton as x, PressCommandResponseData as y, TransformGestureParams as z };
398
+ export { SettleObservation as _, resolveSelectorChain as a, isSelectorToken as c, ClickCommandResponseData as d, FillCommandResponseData as f, PressCommandResponseData as g, LongPressCommandResponseData as h, findSelectorChainMatch as i, parseSelectorChain as l, HoverCommandResponseData as m, isNodeEditable as n, SelectorDiagnostics as o, FindCommandResponseData as p, isNodeVisible as r, SelectorChain as s, formatSelectorFailure as t, tryParseSelectorChain as u, ClickButton as v };