react-native-ai-debugger 2.3.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/build/__tests__/unit/overlayGuard.test.d.ts +2 -0
  2. package/build/__tests__/unit/overlayGuard.test.d.ts.map +1 -0
  3. package/build/__tests__/unit/overlayGuard.test.js +140 -0
  4. package/build/__tests__/unit/overlayGuard.test.js.map +1 -0
  5. package/build/__tests__/unit/screenSpace.test.js +34 -1
  6. package/build/__tests__/unit/screenSpace.test.js.map +1 -1
  7. package/build/__tests__/unit/tap.test.js +2 -2
  8. package/build/__tests__/unit/tap.test.js.map +1 -1
  9. package/build/core/inspector.d.ts.map +1 -1
  10. package/build/core/inspector.js +27 -4
  11. package/build/core/inspector.js.map +1 -1
  12. package/build/core/ios.d.ts +16 -0
  13. package/build/core/ios.d.ts.map +1 -1
  14. package/build/core/ios.js +48 -4
  15. package/build/core/ios.js.map +1 -1
  16. package/build/core/screenLayout.d.ts.map +1 -1
  17. package/build/core/screenLayout.js +23 -1
  18. package/build/core/screenLayout.js.map +1 -1
  19. package/build/core/screenSpace.d.ts +95 -0
  20. package/build/core/screenSpace.d.ts.map +1 -1
  21. package/build/core/screenSpace.js +138 -1
  22. package/build/core/screenSpace.js.map +1 -1
  23. package/build/core/screenSpaceDevice.d.ts.map +1 -1
  24. package/build/core/screenSpaceDevice.js +46 -6
  25. package/build/core/screenSpaceDevice.js.map +1 -1
  26. package/build/core/screenState.d.ts +2 -1
  27. package/build/core/screenState.d.ts.map +1 -1
  28. package/build/core/screenState.js +208 -40
  29. package/build/core/screenState.js.map +1 -1
  30. package/build/pro/overlayGuard.d.ts +65 -0
  31. package/build/pro/overlayGuard.d.ts.map +1 -0
  32. package/build/pro/overlayGuard.js +166 -0
  33. package/build/pro/overlayGuard.js.map +1 -0
  34. package/build/pro/tap.d.ts.map +1 -1
  35. package/build/pro/tap.js +104 -25
  36. package/build/pro/tap.js.map +1 -1
  37. package/build/tools/componentTools.d.ts.map +1 -1
  38. package/build/tools/componentTools.js +40 -18
  39. package/build/tools/componentTools.js.map +1 -1
  40. package/package.json +1 -1
@@ -19,6 +19,37 @@
19
19
  * Everything now normalises through here, so a coordinate read from any tool can be
20
20
  * passed to any other tool.
21
21
  */
22
+ /**
23
+ * API image cap. A capture wider or taller than this is downscaled before delivery, so
24
+ * it is part of the coordinate contract, not just a transport detail: the pixels an
25
+ * agent reads off the returned image are post-downscale.
26
+ */
27
+ export const SCREENSHOT_MAX_DIMENSION = 2000;
28
+ /**
29
+ * Downscale a capture of these *device-pixel* dimensions will receive on delivery.
30
+ * Mirrors the resize in `iosScreenshot`/`androidScreenshot`; both derive their own
31
+ * factor the same way, and this is the copy the layout tools predict it with.
32
+ */
33
+ export function computeDeliveredDownscale(pixelWidth, pixelHeight) {
34
+ const longest = Math.max(pixelWidth, pixelHeight);
35
+ if (!(longest > SCREENSHOT_MAX_DIMENSION))
36
+ return 1;
37
+ return longest / SCREENSHOT_MAX_DIMENSION;
38
+ }
39
+ /**
40
+ * points/dp -> delivered-screenshot pixels, given the device's scale (iOS DPR, Android
41
+ * density/160) and its point/dp screen size.
42
+ *
43
+ * Note this collapses to `SCREENSHOT_MAX_DIMENSION / longestPointDimension` whenever the
44
+ * raw capture overflows the cap — the device scale cancels out — which is why the factor
45
+ * is stable per device rather than per capture.
46
+ */
47
+ export function computePixelScale(deviceScale, pointWidth, pointHeight) {
48
+ if (!(deviceScale > 0) || !(pointWidth > 0) || !(pointHeight > 0))
49
+ return 1;
50
+ const downscale = computeDeliveredDownscale(pointWidth * deviceScale, pointHeight * deviceScale);
51
+ return deviceScale / downscale;
52
+ }
22
53
  /**
23
54
  * Fiber-space y -> screen-space y.
24
55
  *
@@ -51,7 +82,113 @@ export function fromScreenSpaceY(y, m) {
51
82
  * Emitted as a plain function so the in-app hit-test normalises measurements the same
52
83
  * way the Node side does — a second copy of this rule is exactly what caused the drift.
53
84
  */
54
- export const SCREEN_SPACE_HELPER_JS = `var toScreenSpaceY = ${toScreenSpaceY.toString()};`;
85
+ export const SCREEN_SPACE_HELPER_JS = [
86
+ `var toScreenSpaceY = ${toScreenSpaceY.toString()};`,
87
+ `var scaleOf = ${scaleOf.toString()};`,
88
+ `var toDeliveredPxY = ${toDeliveredPxY.toString()};`,
89
+ `var toDeliveredPxX = ${toDeliveredPxX.toString()};`,
90
+ `var toDeliveredPxLength = ${toDeliveredPxLength.toString()};`
91
+ ].join("\n");
92
+ /** Scale factor to apply, with the "unknown -> stay in points" default made explicit. */
93
+ function scaleOf(m) {
94
+ return m.pixelScale && m.pixelScale > 0 ? m.pixelScale : 1;
95
+ }
96
+ /**
97
+ * A warning line when the device scale could not be resolved, or "" when it could.
98
+ *
99
+ * Without this the degradation is silent and dangerous in one specific way: the tools
100
+ * emit point-space coordinates while tap() still expects delivered pixels, which is the
101
+ * original defect wearing a different hat. Saying so lets the caller fall back to
102
+ * screenshot coordinates instead of tapping the wrong place.
103
+ */
104
+ export function unresolvedScaleNote(m) {
105
+ if (m.pixelScale && m.pixelScale > 0)
106
+ return "";
107
+ const unit = m.platform === "android" ? "dp" : "points";
108
+ return (`⚠️ Coordinates below are in ${unit}, NOT the usual delivered-pixel space — the ` +
109
+ `device scale could not be read. Do not pass them to tap(); take coordinates from ` +
110
+ `ios_screenshot / android_screenshot instead, or reconnect the device and retry.`);
111
+ }
112
+ /**
113
+ * Fiber-space y (points/dp) -> canonical delivered-screenshot pixels.
114
+ *
115
+ * Order matters: `topInset` is a point-space quantity, so the inset shift has to happen
116
+ * before the scale, not after.
117
+ */
118
+ export function toDeliveredPxY(y, m) {
119
+ return toScreenSpaceY(y, m) * scaleOf(m);
120
+ }
121
+ /** Fiber-space x -> delivered pixels. No horizontal inset exists on either platform. */
122
+ export function toDeliveredPxX(x, m) {
123
+ return x * scaleOf(m);
124
+ }
125
+ /** A length (width/height) in points/dp -> delivered pixels. Unaffected by the inset. */
126
+ export function toDeliveredPxLength(v, m) {
127
+ return v * scaleOf(m);
128
+ }
129
+ /**
130
+ * Delivered pixels -> fiber space. Inverse of {@link toDeliveredPxY}, for tools that
131
+ * take a caller-supplied coordinate (inspect_at_point) and must hit-test against raw
132
+ * `measureInWindow` output.
133
+ */
134
+ export function fromDeliveredPxY(y, m) {
135
+ return fromScreenSpaceY(y / scaleOf(m), m);
136
+ }
137
+ /** Delivered pixels -> fiber-space x. */
138
+ export function fromDeliveredPxX(x, m) {
139
+ return x / scaleOf(m);
140
+ }
141
+ /**
142
+ * Return a copy of a **screen-space** state with every box in delivered pixels.
143
+ *
144
+ * For consumers that hit-test a caller-supplied coordinate against the state itself
145
+ * rather than just formatting it — the coordinate arrives in delivered pixels, so the
146
+ * geometry has to meet it there. Compose after {@link screenStateToScreenSpace}.
147
+ */
148
+ export function screenStateToDeliveredPx(ss, m) {
149
+ const conv = pxScaleConverter(m);
150
+ if (scaleOf(m) === 1)
151
+ return ss;
152
+ const box = (b) => {
153
+ const c = conv(b);
154
+ return { ...b, center: c.center, bounds: c.frame };
155
+ };
156
+ return {
157
+ ...ss,
158
+ pressables: ss.pressables.map(box),
159
+ texts: ss.texts.map(box),
160
+ images: ss.images.map(box),
161
+ overlays: ss.overlays.map((o) => ({
162
+ ...o,
163
+ pressables: o.pressables.map(box),
164
+ texts: o.texts ? o.texts.map(box) : o.texts,
165
+ images: o.images ? o.images.map(box) : o.images
166
+ }))
167
+ };
168
+ }
169
+ /**
170
+ * Converter mapping an item **already in screen space** into canonical delivered pixels.
171
+ *
172
+ * Deliberately pure scale, with no inset term: every caller runs its state through
173
+ * {@link screenStateToScreenSpace} first, so re-applying the shift here would move each
174
+ * coordinate by a second `topInset`. This converter is the single argument that used to
175
+ * differ between the screenshot tools (which passed a real one) and get_screen_state
176
+ * (which passed none and so emitted raw points). Structurally an `ItemCoordConverter`;
177
+ * typed locally to keep this module import-free.
178
+ */
179
+ export function pxScaleConverter(m) {
180
+ const s = scaleOf(m);
181
+ const r = (v) => Math.round(v * s);
182
+ return (item) => ({
183
+ center: { x: r(item.center.x), y: r(item.center.y) },
184
+ frame: {
185
+ x: r(item.bounds.x),
186
+ y: r(item.bounds.y),
187
+ width: r(item.bounds.width),
188
+ height: r(item.bounds.height)
189
+ }
190
+ });
191
+ }
55
192
  function shiftBox(el, m) {
56
193
  return {
57
194
  ...el,
@@ -1 +1 @@
1
- {"version":3,"file":"screenSpace.js","sourceRoot":"","sources":["../../src/core/screenSpace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screenSpace.js","sourceRoot":"","sources":["../../src/core/screenSpace.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"screenSpaceDevice.d.ts","sourceRoot":"","sources":["../../src/core/screenSpaceDevice.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAS3D,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IAClD,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IAC5B,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAU9B"}
1
+ {"version":3,"file":"screenSpaceDevice.d.ts","sourceRoot":"","sources":["../../src/core/screenSpaceDevice.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAiC3D,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IAClD,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IAC5B,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiC9B"}
@@ -4,21 +4,61 @@
4
4
  * Kept out of screenSpace.ts so the coordinate rules there stay pure and unit-testable
5
5
  * with no simctl/adb dependency.
6
6
  */
7
- import { getIOSSafeAreaTop } from "./ios.js";
8
- import { androidGetStatusBarHeight } from "./android.js";
7
+ import { computeDeliveredDownscale } from "./screenSpace.js";
8
+ import { getIOSSafeAreaTop, getDevicePixelRatio, getIOSScreenPixelSize } from "./ios.js";
9
+ import { androidGetStatusBarHeight, androidGetDensity, androidGetScreenSize } from "./android.js";
9
10
  /** iPhone notch/Dynamic Island default, matching ios_screenshot's own fallback. */
10
11
  const IOS_DEFAULT_SAFE_AREA_TOP = 59;
11
12
  /** Common Android status bar height in dp. */
12
13
  const ANDROID_DEFAULT_STATUS_BAR_DP = 24;
14
+ /**
15
+ * points/dp -> delivered-screenshot pixels for a device whose scale and pixel size are
16
+ * known.
17
+ *
18
+ * Returns **undefined** when either input is missing, which callers treat as a factor of 1
19
+ * — i.e. coordinates stay in point space. That is strictly better than guessing, since a
20
+ * wrong scale silently moves every coordinate. It is deliberately distinct from a resolved
21
+ * scale that happens to equal 1: the tools surface "unknown" to the caller, because
22
+ * point-space output handed to tap() (which speaks pixels) is exactly the mismatch this
23
+ * whole normalisation exists to remove, and failing silently would recreate it.
24
+ */
25
+ function pixelScaleFrom(deviceScale, pixelSize) {
26
+ if (!deviceScale || deviceScale <= 0 || !pixelSize)
27
+ return undefined;
28
+ return deviceScale / computeDeliveredDownscale(pixelSize.width, pixelSize.height);
29
+ }
13
30
  export async function resolveScreenSpaceMetrics(opts) {
14
31
  if (opts.platform === "ios") {
15
- const inset = await getIOSSafeAreaTop(opts.udid).catch(() => 0);
16
- return { platform: "ios", topInset: inset || IOS_DEFAULT_SAFE_AREA_TOP };
32
+ // Independent probes, and both are cached — running them concurrently keeps the
33
+ // cold-start cost of a layout call at one round trip rather than two.
34
+ const [inset, dpr, pixelSize] = await Promise.all([
35
+ getIOSSafeAreaTop(opts.udid).catch(() => 0),
36
+ getDevicePixelRatio(opts.udid).catch(() => null),
37
+ getIOSScreenPixelSize(opts.udid).catch(() => null)
38
+ ]);
39
+ return {
40
+ platform: "ios",
41
+ topInset: inset || IOS_DEFAULT_SAFE_AREA_TOP,
42
+ pixelScale: pixelScaleFrom(dpr, pixelSize)
43
+ };
17
44
  }
18
- const sb = await androidGetStatusBarHeight(opts.deviceId).catch(() => null);
45
+ const [sb, density, size] = await Promise.all([
46
+ androidGetStatusBarHeight(opts.deviceId).catch(() => null),
47
+ androidGetDensity(opts.deviceId).catch(() => null),
48
+ androidGetScreenSize(opts.deviceId).catch(() => null)
49
+ ]);
50
+ // `wm size` already reports device pixels, so no dp->px step is needed before the
51
+ // downscale check — only the dp->px scale itself comes from the density.
52
+ const densityScale = density && density.success && density.density
53
+ ? density.density / 160
54
+ : null;
55
+ const pixelSize = size && size.success && size.width && size.height
56
+ ? { width: size.width, height: size.height }
57
+ : null;
19
58
  return {
20
59
  platform: "android",
21
- topInset: (sb && sb.success && sb.heightDp) || ANDROID_DEFAULT_STATUS_BAR_DP
60
+ topInset: (sb && sb.success && sb.heightDp) || ANDROID_DEFAULT_STATUS_BAR_DP,
61
+ pixelScale: pixelScaleFrom(densityScale, pixelSize)
22
62
  };
23
63
  }
24
64
  //# sourceMappingURL=screenSpaceDevice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"screenSpaceDevice.js","sourceRoot":"","sources":["../../src/core/screenSpaceDevice.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD,mFAAmF;AACnF,MAAM,yBAAyB,GAAG,EAAE,CAAC;AACrC,8CAA8C;AAC9C,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAM/C;IACG,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,yBAAyB,EAAE,CAAC;IAC7E,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5E,OAAO;QACH,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,6BAA6B;KAC/E,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"screenSpaceDevice.js","sourceRoot":"","sources":["../../src/core/screenSpaceDevice.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACzF,OAAO,EACH,yBAAyB,EACzB,iBAAiB,EACjB,oBAAoB,EACvB,MAAM,cAAc,CAAC;AAEtB,mFAAmF;AACnF,MAAM,yBAAyB,GAAG,EAAE,CAAC;AACrC,8CAA8C;AAC9C,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAEzC;;;;;;;;;;GAUG;AACH,SAAS,cAAc,CACnB,WAA0B,EAC1B,SAAmD;IAEnD,IAAI,CAAC,WAAW,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACrE,OAAO,WAAW,GAAG,yBAAyB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAM/C;IACG,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC1B,gFAAgF;QAChF,sEAAsE;QACtE,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC9C,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC3C,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;YAChD,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SACrD,CAAC,CAAC;QACH,OAAO;YACH,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK,IAAI,yBAAyB;YAC5C,UAAU,EAAE,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC;SAC7C,CAAC;IACN,CAAC;IACD,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1C,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAC1D,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAClD,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;KACxD,CAAC,CAAC;IACH,kFAAkF;IAClF,yEAAyE;IACzE,MAAM,YAAY,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;QAC9D,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG;QACvB,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,SAAS,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM;QAC/D,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;QAC5C,CAAC,CAAC,IAAI,CAAC;IACX,OAAO;QACH,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,6BAA6B;QAC5E,UAAU,EAAE,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC;KACtD,CAAC;AACN,CAAC"}
@@ -163,7 +163,7 @@ export declare function formatImageEntry(img: ScreenStateImage, convert?: ItemCo
163
163
  * and that is exactly when bottom-anchored UI misbehaves. Reporting the height
164
164
  * and the remaining content area makes that inspectable without a screenshot.
165
165
  */
166
- export declare function formatKeyboardLine(k: KeyboardState): string;
166
+ export declare function formatKeyboardLine(k: KeyboardState, pixelScale?: number): string;
167
167
  /**
168
168
  * Splits elements the keyboard covers from those still reachable.
169
169
  *
@@ -189,6 +189,7 @@ export declare function formatScreenStateSummary(ss: ScreenState, convert?: Item
189
189
  pressablesOnly?: boolean;
190
190
  fullText?: boolean;
191
191
  keyboard?: KeyboardState;
192
+ pixelScale?: number;
192
193
  }): string;
193
194
  export declare function describePressHandler(raw: unknown): string | null;
194
195
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"screenState.d.ts","sourceRoot":"","sources":["../../src/core/screenState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screenState.d.ts","sourceRoot":"","sources":["../../src/core/screenState.ts"],"names":[],"mappings":"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"}