react-native-ai-debugger 2.2.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.
- package/README.md +4 -3
- package/build/__tests__/unit/overlayGuard.test.d.ts +2 -0
- package/build/__tests__/unit/overlayGuard.test.d.ts.map +1 -0
- package/build/__tests__/unit/overlayGuard.test.js +140 -0
- package/build/__tests__/unit/overlayGuard.test.js.map +1 -0
- package/build/__tests__/unit/screenSpace.test.d.ts +2 -0
- package/build/__tests__/unit/screenSpace.test.d.ts.map +1 -0
- package/build/__tests__/unit/screenSpace.test.js +91 -0
- package/build/__tests__/unit/screenSpace.test.js.map +1 -0
- package/build/__tests__/unit/tap.test.js +2 -2
- package/build/__tests__/unit/tap.test.js.map +1 -1
- package/build/__tests__/unit/visibility.test.js +21 -0
- package/build/__tests__/unit/visibility.test.js.map +1 -1
- package/build/core/guides.d.ts.map +1 -1
- package/build/core/guides.js +18 -4
- package/build/core/guides.js.map +1 -1
- package/build/core/index.d.ts +1 -1
- package/build/core/index.d.ts.map +1 -1
- package/build/core/index.js +1 -1
- package/build/core/index.js.map +1 -1
- package/build/core/injected/visibility.d.ts +14 -1
- package/build/core/injected/visibility.d.ts.map +1 -1
- package/build/core/injected/visibility.js +28 -4
- package/build/core/injected/visibility.js.map +1 -1
- package/build/core/injectedFilters.d.ts +10 -2
- package/build/core/injectedFilters.d.ts.map +1 -1
- package/build/core/injectedFilters.js +10 -2
- package/build/core/injectedFilters.js.map +1 -1
- package/build/core/inspector.d.ts +6 -0
- package/build/core/inspector.d.ts.map +1 -1
- package/build/core/inspector.js +227 -40
- package/build/core/inspector.js.map +1 -1
- package/build/core/ios.d.ts +16 -0
- package/build/core/ios.d.ts.map +1 -1
- package/build/core/ios.js +48 -4
- package/build/core/ios.js.map +1 -1
- package/build/core/pressables.d.ts +0 -32
- package/build/core/pressables.d.ts.map +1 -1
- package/build/core/pressables.js +5 -1061
- package/build/core/pressables.js.map +1 -1
- package/build/core/screenLayout.d.ts +3 -0
- package/build/core/screenLayout.d.ts.map +1 -1
- package/build/core/screenLayout.js +55 -1
- package/build/core/screenLayout.js.map +1 -1
- package/build/core/screenSpace.d.ts +170 -0
- package/build/core/screenSpace.d.ts.map +1 -0
- package/build/core/screenSpace.js +221 -0
- package/build/core/screenSpace.js.map +1 -0
- package/build/core/screenSpaceDevice.d.ts +15 -0
- package/build/core/screenSpaceDevice.d.ts.map +1 -0
- package/build/core/screenSpaceDevice.js +64 -0
- package/build/core/screenSpaceDevice.js.map +1 -0
- package/build/core/screenState.d.ts +2 -1
- package/build/core/screenState.d.ts.map +1 -1
- package/build/core/screenState.js +315 -48
- package/build/core/screenState.js.map +1 -1
- package/build/pro/overlayGuard.d.ts +65 -0
- package/build/pro/overlayGuard.d.ts.map +1 -0
- package/build/pro/overlayGuard.js +166 -0
- package/build/pro/overlayGuard.js.map +1 -0
- package/build/pro/tap.d.ts.map +1 -1
- package/build/pro/tap.js +104 -25
- package/build/pro/tap.js.map +1 -1
- package/build/tools/componentTools.d.ts.map +1 -1
- package/build/tools/componentTools.js +82 -192
- package/build/tools/componentTools.js.map +1 -1
- package/build/tools/screenshotTools.d.ts.map +1 -1
- package/build/tools/screenshotTools.js +37 -72
- package/build/tools/screenshotTools.js.map +1 -1
- package/package.json +1 -1
- package/tools.json +1 -5
|
@@ -1,10 +1,28 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { registerToolWithTelemetry } from "../core/register.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { getComponentTree, getScreenLayout, getScreenState, formatScreenStateSummary, inspectComponent, findComponents, harvestStacksAtPoint, enrichWithSource, inspectAtPoint, measureComponent, metroMissingHintIfAbsent, hasMetro, getConnectedAppByDevice, getFirstConnectedApp, } from "../core/index.js";
|
|
4
|
+
import { screenStateToScreenSpace, toDeliveredPxY, toDeliveredPxX, toDeliveredPxLength, pxScaleConverter, unresolvedScaleNote } from "../core/screenSpace.js";
|
|
5
|
+
import { resolveScreenSpaceMetrics } from "../core/screenSpaceDevice.js";
|
|
5
6
|
import { readKeyboardState } from "../core/keyboardMetrics.js";
|
|
6
7
|
import { primaryInteractionBanner } from "../core/toolHelpers.js";
|
|
7
8
|
import { DEVICE_ARG_DESC } from "./_deviceArg.js";
|
|
9
|
+
/**
|
|
10
|
+
* Top inset for whichever device a layout tool is about to answer for.
|
|
11
|
+
*
|
|
12
|
+
* A zero inset is the safe default: {@link toScreenSpaceY} treats it as "leave coordinates
|
|
13
|
+
* alone", so an unresolvable device degrades to the previous raw-fiber behaviour rather
|
|
14
|
+
* than to a wrongly shifted one.
|
|
15
|
+
*/
|
|
16
|
+
async function resolveScreenSpaceMetricsFor(device) {
|
|
17
|
+
const app = (device ? getConnectedAppByDevice(device) : getFirstConnectedApp()) ?? getFirstConnectedApp();
|
|
18
|
+
if (!app)
|
|
19
|
+
return { platform: "ios", topInset: 0 };
|
|
20
|
+
return resolveScreenSpaceMetrics({
|
|
21
|
+
platform: app.platform,
|
|
22
|
+
udid: app.simulatorUdid,
|
|
23
|
+
deviceId: app.adbSerial
|
|
24
|
+
});
|
|
25
|
+
}
|
|
8
26
|
function collectMetaNotes(r) {
|
|
9
27
|
const out = [];
|
|
10
28
|
if (r._meta?.reconnected) {
|
|
@@ -18,7 +36,7 @@ function collectMetaNotes(r) {
|
|
|
18
36
|
export function registerComponentTools(server) {
|
|
19
37
|
// Tool: Get full screen layout (all components with layout styles)
|
|
20
38
|
registerToolWithTelemetry(server, "get_screen_layout", {
|
|
21
|
-
description: "Get a screen map showing visible components as an indented tree with actual screen positions. Uses measureInWindow for real coordinates and filters out off-screen components. Returns meaningful component names with text content and frame data (x,y width x height). Coordinates are
|
|
39
|
+
description: "Get a screen map showing visible components as an indented tree with actual screen positions. Uses measureInWindow for real coordinates and filters out off-screen components. Returns meaningful component names with text content and frame data (x,y width x height). Coordinates are delivered-screenshot pixels — the same space screenshots, get_screen_state and tap() use, so pass them through unchanged. Use extended=true to include layout styles (padding, margin, flex, backgroundColor, etc.)." +
|
|
22
40
|
primaryInteractionBanner() + "\n" +
|
|
23
41
|
"PURPOSE: Quickest textual map of what is actually on screen right now — component names, positions, and text — so you can plan taps and inspections without guessing.\n" +
|
|
24
42
|
"WHEN TO USE: First step whenever the user asks \"what's on screen\", \"why is X covering Y\", or before tapping a visually ambiguous element.\n" +
|
|
@@ -53,7 +71,14 @@ export function registerComponentTools(server) {
|
|
|
53
71
|
};
|
|
54
72
|
}
|
|
55
73
|
const effectiveTimeoutMs = timeoutMs ?? (extended ? 15000 : 5000);
|
|
56
|
-
const
|
|
74
|
+
const layoutMetrics = await resolveScreenSpaceMetricsFor(device);
|
|
75
|
+
const result = await getScreenLayout({
|
|
76
|
+
extended,
|
|
77
|
+
summary,
|
|
78
|
+
device,
|
|
79
|
+
timeoutMs: effectiveTimeoutMs,
|
|
80
|
+
screenSpace: layoutMetrics
|
|
81
|
+
});
|
|
57
82
|
const metaNotes = collectMetaNotes(result);
|
|
58
83
|
if (!result.success) {
|
|
59
84
|
const errText = metaNotes.length > 0 ? `Error: ${result.error}\n\n${metaNotes.join("\n")}` : `Error: ${result.error}`;
|
|
@@ -62,8 +87,10 @@ export function registerComponentTools(server) {
|
|
|
62
87
|
isError: true
|
|
63
88
|
};
|
|
64
89
|
}
|
|
65
|
-
const
|
|
66
|
-
|
|
90
|
+
const layoutScaleNote = unresolvedScaleNote(layoutMetrics);
|
|
91
|
+
const layoutNotes = layoutScaleNote ? [layoutScaleNote, ...metaNotes] : metaNotes;
|
|
92
|
+
const body = layoutNotes.length > 0
|
|
93
|
+
? `Screen Layout:\n\n${result.result}\n\n${layoutNotes.join("\n")}`
|
|
67
94
|
: `Screen Layout:\n\n${result.result}`;
|
|
68
95
|
return { content: [{ type: "text", text: body }] };
|
|
69
96
|
});
|
|
@@ -140,129 +167,14 @@ export function registerComponentTools(server) {
|
|
|
140
167
|
: `React Component Tree:\n\n${result.result}`;
|
|
141
168
|
return { content: [{ type: "text", text: body }] };
|
|
142
169
|
});
|
|
143
|
-
// Tool: Get all pressable elements on screen
|
|
144
|
-
registerToolWithTelemetry(server, "get_pressable_elements", {
|
|
145
|
-
description: "Prefer get_screen_state after navigation (route + overlays + pressables in one call).\n\n" +
|
|
146
|
-
"Find all pressable (onPress) and input (TextInput) elements currently visible on screen. Returns component names, ready-to-tap center coordinates in SCREENSHOT PIXELS (same space as ios_screenshot/android_screenshot — pass directly to tap(x, y)), text labels, testID, accessibilityLabel, and a spatial nearbyText hint for icon-only buttons. Each element includes hasLabel (true if it contains text) and isInput (true for TextInput fields).\n" +
|
|
147
|
-
"HELPER — call before `tap` when you need to enumerate candidate elements before committing to a target; not a replacement for tap itself.\n" +
|
|
148
|
-
"PURPOSE: Produce a ready-to-tap inventory of every interactive element on screen with screenshot-pixel coordinates that tap(x, y) accepts directly.\n" +
|
|
149
|
-
"WHEN TO USE: Before tapping icon-only buttons, when text-based tap keeps failing, or to enumerate what the user can actually interact with.\n" +
|
|
150
|
-
"WORKFLOW: ios_screenshot / android_screenshot -> get_pressable_elements -> tap(testID=\"...\") or tap(x, y) using the center coordinates.\n" +
|
|
151
|
-
"LIMITATIONS: Visible-only (off-screen pressables are excluded). Requires a live React connection. Coordinates are in screenshot pixels — the tap tool converts to points internally.\n" +
|
|
152
|
-
"GOOD: get_pressable_elements()\n" +
|
|
153
|
-
"BAD: Calling when tap(testID=\"...\") already works — testID matching is faster and more stable.\n",
|
|
154
|
-
inputSchema: {
|
|
155
|
-
device: z.string().optional().describe(DEVICE_ARG_DESC)
|
|
156
|
-
}
|
|
157
|
-
}, async ({ device }) => {
|
|
158
|
-
const result = await getPressableElements({ device });
|
|
159
|
-
if (!result.success) {
|
|
160
|
-
return {
|
|
161
|
-
content: [
|
|
162
|
-
{
|
|
163
|
-
type: "text",
|
|
164
|
-
text: `Error: ${result.error}`
|
|
165
|
-
}
|
|
166
|
-
],
|
|
167
|
-
isError: true
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
const elements = result.parsedElements;
|
|
171
|
-
if (!elements || elements.length === 0) {
|
|
172
|
-
return {
|
|
173
|
-
content: [{ type: "text", text: result.result || "No pressable elements found." }]
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
// Resolve target app so we can pick the right simulator / android device
|
|
177
|
-
const targetApp = device ? getConnectedAppByDevice(device) : getFirstConnectedApp();
|
|
178
|
-
if (!targetApp) {
|
|
179
|
-
// No connected app — return raw (points) output; better than nothing
|
|
180
|
-
return {
|
|
181
|
-
content: [{ type: "text", text: result.result || "No pressable elements found." }]
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
// Capture a lightweight screenshot to learn scaleFactor (downscale) and dimensions.
|
|
185
|
-
// Conversion: screenshot_px = native_coord * devicePixelRatio / screenshotScale
|
|
186
|
-
let lines = [];
|
|
187
|
-
try {
|
|
188
|
-
if (targetApp.platform === "ios") {
|
|
189
|
-
const udid = targetApp.simulatorUdid;
|
|
190
|
-
const shot = await iosScreenshot(undefined, udid);
|
|
191
|
-
const screenshotScale = shot.scaleFactor || 1;
|
|
192
|
-
const devicePixelRatio = (shot.originalWidth && shot.originalHeight
|
|
193
|
-
? inferIOSDevicePixelRatio(shot.originalWidth, shot.originalHeight)
|
|
194
|
-
: null) ?? (await getDevicePixelRatio(udid)) ?? 3;
|
|
195
|
-
// Fallback to 59pt (iPhone typical) when the UI driver preflight can't
|
|
196
|
-
// resolve the true inset — matches ios_screenshot's default. Without this
|
|
197
|
-
// shift, react-native-screens modal-presented screens report y relative
|
|
198
|
-
// to content origin and taps land in the status bar instead of the button.
|
|
199
|
-
const safeAreaTop = (await getIOSSafeAreaTop(udid).catch(() => 0)) || 59;
|
|
200
|
-
// Keep the app's lastScreenshot metadata in sync so tap(x, y) uses the
|
|
201
|
-
// same scaleFactor when converting our pixel coords back to points.
|
|
202
|
-
if (shot.originalWidth && shot.originalHeight) {
|
|
203
|
-
targetApp.lastScreenshot = {
|
|
204
|
-
originalWidth: shot.originalWidth,
|
|
205
|
-
originalHeight: shot.originalHeight,
|
|
206
|
-
scaleFactor: screenshotScale
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
lines = formatPressablesInPixels(elements, {
|
|
210
|
-
platform: "ios",
|
|
211
|
-
devicePixelRatio,
|
|
212
|
-
screenshotScale,
|
|
213
|
-
safeAreaTop
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
// Metro's `deviceName` is the device model (e.g. "sdk_gphone16k_arm64"),
|
|
218
|
-
// not the adb serial (e.g. "emulator-5554"), so passing it as -s makes
|
|
219
|
-
// adb miss the device and androidScreenshot/androidGetDensity silently
|
|
220
|
-
// return defaults (scale=1, density=160). That leaves coords in raw
|
|
221
|
-
// device pixels — off by ~1.2× from the screenshot/JPEG space the tool
|
|
222
|
-
// description promises. Pass undefined to let adb auto-pick (matches
|
|
223
|
-
// how android_screenshot works when called without deviceId). Multi-
|
|
224
|
-
// Android-device support tracks separately under the multi-device
|
|
225
|
-
// refactor; this path is a single-Android-device fix.
|
|
226
|
-
const shot = await androidScreenshot(undefined, undefined);
|
|
227
|
-
const screenshotScale = shot.scaleFactor || 1;
|
|
228
|
-
const density = await androidGetDensity(undefined).catch(() => ({ density: 160 }));
|
|
229
|
-
const devicePixelRatio = (density.density || 160) / 160;
|
|
230
|
-
if (shot.originalWidth && shot.originalHeight) {
|
|
231
|
-
targetApp.lastScreenshot = {
|
|
232
|
-
originalWidth: shot.originalWidth,
|
|
233
|
-
originalHeight: shot.originalHeight,
|
|
234
|
-
scaleFactor: screenshotScale
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
lines = formatPressablesInPixels(elements, {
|
|
238
|
-
platform: "android",
|
|
239
|
-
devicePixelRatio,
|
|
240
|
-
screenshotScale,
|
|
241
|
-
safeAreaTop: 0
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
catch {
|
|
246
|
-
// Fallback to points if screenshot/metadata unavailable
|
|
247
|
-
return {
|
|
248
|
-
content: [{ type: "text", text: result.result || "No pressable elements found." }]
|
|
249
|
-
};
|
|
250
|
-
}
|
|
251
|
-
const iconCount = elements.filter((e) => !e.hasLabel).length;
|
|
252
|
-
const labeledCount = elements.length - iconCount;
|
|
253
|
-
const summary = `Found ${elements.length} pressable elements (${iconCount} icon-only, ${labeledCount} with text labels)`;
|
|
254
|
-
const text = [summary, "", ...lines].join("\n");
|
|
255
|
-
return {
|
|
256
|
-
content: [{ type: "text", text }]
|
|
257
|
-
};
|
|
258
|
-
});
|
|
259
170
|
// Tool: Get current screen state — route, overlays, pressables (post-navigation checkpoint)
|
|
260
171
|
registerToolWithTelemetry(server, "get_screen_state", {
|
|
261
172
|
description: "Screenshot-free snapshot of the current screen: active route + params, blocking overlays (sheets, modals, alerts), and every on-screen element merged top-to-bottom within reachability groups. Call after any tap or navigation to orient before the next action. " +
|
|
262
173
|
"Each line carries an (x, y) center + frame bounds (so anything is a tap(x, y) target), typed by a leading marker: 🔘 pressable (with component JSX tag, label, testID, onPress hint), 📝 text, 🖼 image (with src/alt). " +
|
|
263
174
|
"Elements covered by an open overlay are grouped under 🚫 Blocked — visible for context, but taps will NOT reach them until the overlay closes. Long text truncates to 80 chars (fullText=true for full strings); pressablesOnly=true returns just the lean tappable list.\n\n" +
|
|
264
175
|
"WHEN TO USE: After every tap/swipe that may navigate, and to read screen content (prices, labels, which image loaded) without a screenshot+OCR round-trip.\n" +
|
|
265
|
-
"
|
|
176
|
+
"COORDINATES: delivered-screenshot pixels — the same space as ios_screenshot/android_screenshot, get_screen_layout, inspect_at_point, measure and tap(). Pass them through unchanged; never scale by devicePixelRatio yourself.\n" +
|
|
177
|
+
"LIMITATIONS: route is null without React Navigation / Expo Router. Requires a live Metro connection.\n" +
|
|
266
178
|
"SOURCE: this lists what is on screen, not where it lives in code — for the file:line that renders an element, call inspect_at_point(x, y).\n" +
|
|
267
179
|
"SEE ALSO: get_screen_layout for the full hierarchical component tree (deep inspection) — this gives a flat, tap-ready content list instead.",
|
|
268
180
|
inputSchema: {
|
|
@@ -295,69 +207,28 @@ export function registerComponentTools(server) {
|
|
|
295
207
|
isError: true
|
|
296
208
|
};
|
|
297
209
|
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
210
|
+
// Normalise to screen space, then into delivered-screenshot pixels — the one
|
|
211
|
+
// unit every tool speaks, so a coordinate read here goes straight to tap().
|
|
212
|
+
// Raw measureInWindow is neither: it is not screen-relative (Android excludes
|
|
213
|
+
// the status bar; iOS modals measure from their own container) *and* it is in
|
|
214
|
+
// points. Emitting it unconverted, which this call used to do by passing no
|
|
215
|
+
// converter at all, is what made these coordinates disagree with every
|
|
216
|
+
// screenshot by the device scale.
|
|
217
|
+
const metrics = await resolveScreenSpaceMetricsFor(device);
|
|
218
|
+
const rawSs = result.screenState;
|
|
219
|
+
const ss = rawSs ? screenStateToScreenSpace(rawSs, metrics) : rawSs;
|
|
220
|
+
const summary = ss
|
|
221
|
+
? formatScreenStateSummary(ss, pxScaleConverter(metrics), {
|
|
222
|
+
pressablesOnly, fullText, keyboard, pixelScale: metrics.pixelScale
|
|
223
|
+
})
|
|
224
|
+
: (result.result ?? "{}");
|
|
225
|
+
const scaleNote = unresolvedScaleNote(metrics);
|
|
226
|
+
const allNotes = scaleNote ? [scaleNote, ...metaNotes] : metaNotes;
|
|
227
|
+
const body = allNotes.length > 0
|
|
228
|
+
? `${summary}\n\n${allNotes.join("\n")}`
|
|
302
229
|
: summary;
|
|
303
230
|
return { content: [{ type: "text", text: body }] };
|
|
304
231
|
});
|
|
305
|
-
function formatPressablesInPixels(elements, opts) {
|
|
306
|
-
const { platform, devicePixelRatio, screenshotScale, safeAreaTop } = opts;
|
|
307
|
-
const out = [];
|
|
308
|
-
for (let i = 0; i < elements.length; i++) {
|
|
309
|
-
const el = elements[i];
|
|
310
|
-
// react-native-screens modal presentations report y relative to content origin;
|
|
311
|
-
// shift into the window frame when the element's center sits inside the safe-area
|
|
312
|
-
// band. The shift MUST be applied to center and frame atomically — independent
|
|
313
|
-
// checks (cy<inset, fy<inset) drift apart on iPad-style insets where a header's
|
|
314
|
-
// center is just below the inset but its frame top is just above, producing
|
|
315
|
-
// center/frame.y values that don't satisfy center = frame.y + frame.h/2.
|
|
316
|
-
let cy = el.center.y;
|
|
317
|
-
let fy = el.frame.y;
|
|
318
|
-
if (platform === "ios" && safeAreaTop > 0 && cy < safeAreaTop) {
|
|
319
|
-
cy += safeAreaTop;
|
|
320
|
-
fy += safeAreaTop;
|
|
321
|
-
}
|
|
322
|
-
// iOS: fiber returns points → convert points × DPR / screenshotScale = JPEG px.
|
|
323
|
-
// Android: getPressableElements reconciles fiber DP against uiautomator device-pixel
|
|
324
|
-
// bounds (executor.ts, 2026-05-17). After reconciliation, coords are already in
|
|
325
|
-
// device pixels — only the JPEG downscale needs to be applied. Multiplying by DPR
|
|
326
|
-
// here would re-inflate them by ~density/160 (~2.6× on a 420dpi device), reproducing
|
|
327
|
-
// the original out-of-bounds bug.
|
|
328
|
-
const toPx = (v) => platform === "android"
|
|
329
|
-
? Math.round(v / screenshotScale)
|
|
330
|
-
: Math.round((v * devicePixelRatio) / screenshotScale);
|
|
331
|
-
const cx = toPx(el.center.x);
|
|
332
|
-
const cyPx = toPx(cy);
|
|
333
|
-
const fx = toPx(el.frame.x);
|
|
334
|
-
const fyPx = toPx(fy);
|
|
335
|
-
const fw = toPx(el.frame.width);
|
|
336
|
-
const fh = toPx(el.frame.height);
|
|
337
|
-
const num = i + 1;
|
|
338
|
-
const iconHint = !el.hasLabel ? iconLabel(el.component, el.icon) : null;
|
|
339
|
-
const label = el.hasLabel
|
|
340
|
-
? `"${el.text}"`
|
|
341
|
-
: iconHint
|
|
342
|
-
? `(${iconHint})`
|
|
343
|
-
: el.intent
|
|
344
|
-
? `(${el.intent} icon)`
|
|
345
|
-
: "(icon/image)";
|
|
346
|
-
const ids = [];
|
|
347
|
-
if (el.testID)
|
|
348
|
-
ids.push(`testID="${el.testID}"`);
|
|
349
|
-
if (el.accessibilityLabel)
|
|
350
|
-
ids.push(`a11y="${el.accessibilityLabel}"`);
|
|
351
|
-
const idStr = ids.length > 0 ? ` [${ids.join(", ")}]` : "";
|
|
352
|
-
const inputStr = el.isInput ? " (input)" : "";
|
|
353
|
-
const wrapperStr = el.isWrapper ? " [wrapper — skip unless dismissing keyboard]" : "";
|
|
354
|
-
const nearPart = el.nearbyText ? ` near "${el.nearbyText}"` : "";
|
|
355
|
-
out.push(`${num}. ${el.component} ${label}${nearPart} — center:(${cx},${cyPx}) frame:(${fx},${fyPx} ${fw}x${fh})${idStr}${inputStr}${wrapperStr}`);
|
|
356
|
-
if (el.path)
|
|
357
|
-
out.push(` path: ${el.path}`);
|
|
358
|
-
}
|
|
359
|
-
return out;
|
|
360
|
-
}
|
|
361
232
|
// Tool: Inspect a specific component by name
|
|
362
233
|
registerToolWithTelemetry(server, "inspect_component", {
|
|
363
234
|
description: "Inspect a specific React component by name. **DRILL-DOWN TOOL**: Use after get_screen_layout or find_components to identify which component to inspect. Returns props, style, state (hooks), and optionally children tree. Use childrenDepth to control how deep nested children go." +
|
|
@@ -496,19 +367,19 @@ export function registerComponentTools(server) {
|
|
|
496
367
|
// Tool: Toggle Element Inspector programmatically
|
|
497
368
|
// Tool: Inspect component at coordinates (like Element Inspector)
|
|
498
369
|
registerToolWithTelemetry(server, "inspect_at_point", {
|
|
499
|
-
description: "Inspect layout AND props at (x, y). Returns FRAME PER ANCESTOR (position/size in
|
|
370
|
+
description: "Inspect layout AND props at (x, y). Returns FRAME PER ANCESTOR (position/size in delivered-screenshot pixels, the same space as screenshots/get_screen_state/tap, for every ancestor that hit-tested the point) + the innermost component's PROPS (handlers as [Function], refs, custom props like onPress/data/testID). Pure JS hit-test via fiber + measureInWindow — no overlay toggled, zero visual side effect. Works on Paper and Fabric.\n" +
|
|
500
371
|
"PURPOSE: Layout/props diagnosis — \"where is each ancestor positioned, and what props does the touched component expose?\"\n" +
|
|
501
372
|
"WHEN TO USE: A button is clipped, hit area is wrong, animated frame is unexpected — or you need handler/ref/non-style props. Also preferred for tight loops (no overlay flicker).\n" +
|
|
502
|
-
"WORKFLOW: screenshot
|
|
503
|
-
"LIMITATIONS:
|
|
373
|
+
"WORKFLOW: screenshot or get_screen_state → take the coordinate as-is → inspect_at_point(x, y).\n" +
|
|
374
|
+
"LIMITATIONS: Style is the node's own style object, not the merged cascade. `frame` is the element's own box; `hitFrame` (when present) is the innermost node actually under the point.\n" +
|
|
504
375
|
"SOURCE: also returns `source: {file, line, column}` for the component at the point, plus the owner chain as `Source ancestors` (set source=false to skip in tight loops).\n",
|
|
505
376
|
inputSchema: {
|
|
506
377
|
x: z
|
|
507
378
|
.number()
|
|
508
|
-
.describe("X coordinate in
|
|
379
|
+
.describe("X coordinate in screen space — take it straight from a screenshot, get_screen_state or get_screen_layout. No conversion."),
|
|
509
380
|
y: z
|
|
510
381
|
.number()
|
|
511
|
-
.describe("Y coordinate in
|
|
382
|
+
.describe("Y coordinate in screen space — take it straight from a screenshot, get_screen_state or get_screen_layout. No conversion."),
|
|
512
383
|
includeProps: z
|
|
513
384
|
.boolean()
|
|
514
385
|
.optional()
|
|
@@ -527,7 +398,12 @@ export function registerComponentTools(server) {
|
|
|
527
398
|
.describe("Resolve the component's source file and line via Metro symbolication. Default true. Set false to skip in tight loops.")
|
|
528
399
|
}
|
|
529
400
|
}, async ({ x, y, includeProps, includeFrame, device, source = true }) => {
|
|
530
|
-
const result = await inspectAtPoint(x, y, {
|
|
401
|
+
const result = await inspectAtPoint(x, y, {
|
|
402
|
+
includeProps,
|
|
403
|
+
includeFrame,
|
|
404
|
+
device,
|
|
405
|
+
screenSpace: await resolveScreenSpaceMetricsFor(device)
|
|
406
|
+
});
|
|
531
407
|
if (!result.success) {
|
|
532
408
|
return {
|
|
533
409
|
content: [
|
|
@@ -595,7 +471,7 @@ export function registerComponentTools(server) {
|
|
|
595
471
|
});
|
|
596
472
|
// Tool: Measure on-screen geometry of a named component
|
|
597
473
|
registerToolWithTelemetry(server, "measure", {
|
|
598
|
-
description: "Get on-screen geometry {x, y, width, height} for a named React component instance. Calls measureInWindow on the matched fiber (or its nearest host descendant for composite components). Coordinates are
|
|
474
|
+
description: "Get on-screen geometry {x, y, width, height} for a named React component instance. Calls measureInWindow on the matched fiber (or its nearest host descendant for composite components). Coordinates are delivered-screenshot pixels, the same space as screenshots, get_screen_layout, get_screen_state, inspect_at_point and tap().\n" +
|
|
599
475
|
"PURPOSE: One-shot, name-based component measurement — avoids hand-rolling fiber walks and Promise-wrapping measureInWindow callbacks in execute_in_app.\n" +
|
|
600
476
|
"WHEN TO USE: You already know the component's display name (from get_screen_layout or find_components) and just need its current bounds — e.g. to verify a layout change, compute a tap target, or compare against design specs.\n" +
|
|
601
477
|
"WORKFLOW: find_components(pattern=\"...\") -> measure(componentName=\"...\", index=N) -> tap(x, y) at the center, or inspect_at_point at the center to verify identity.\n" +
|
|
@@ -633,14 +509,28 @@ export function registerComponentTools(server) {
|
|
|
633
509
|
_errorContext: result.outcome
|
|
634
510
|
};
|
|
635
511
|
}
|
|
512
|
+
// measure returns a single leaf box, so the band rule applies directly — there is
|
|
513
|
+
// no root container here to exempt. Without this the tool's own promise of "the
|
|
514
|
+
// same space as get_screen_layout and inspect_at_point" would be false: off by the
|
|
515
|
+
// status bar on every Android screen, and by the safe area inside an iOS modal.
|
|
516
|
+
const measureMetrics = await resolveScreenSpaceMetricsFor(device);
|
|
517
|
+
// Inset shift *and* scale, since measureComponent hands back raw fiber-space
|
|
518
|
+
// points — unlike the screen-state path, nothing has normalised them yet.
|
|
519
|
+
const mx = toDeliveredPxX(result.x, measureMetrics);
|
|
520
|
+
const my = toDeliveredPxY(result.y, measureMetrics);
|
|
521
|
+
const mw = toDeliveredPxLength(result.width, measureMetrics);
|
|
522
|
+
const mh = toDeliveredPxLength(result.height, measureMetrics);
|
|
636
523
|
const lines = [
|
|
637
524
|
`Component: ${result.name}`,
|
|
638
|
-
`Frame: (${
|
|
639
|
-
`Center: (${(
|
|
525
|
+
`Frame: (${mx.toFixed(1)}, ${my.toFixed(1)}) ${mw.toFixed(1)}x${mh.toFixed(1)}`,
|
|
526
|
+
`Center: (${(mx + mw / 2).toFixed(1)}, ${(my + mh / 2).toFixed(1)})`,
|
|
640
527
|
];
|
|
641
528
|
if (typeof result.nativeTag === "number") {
|
|
642
529
|
lines.push(`nativeTag: ${result.nativeTag}`);
|
|
643
530
|
}
|
|
531
|
+
const measureScaleNote = unresolvedScaleNote(measureMetrics);
|
|
532
|
+
if (measureScaleNote)
|
|
533
|
+
lines.push(measureScaleNote);
|
|
644
534
|
return {
|
|
645
535
|
content: [{ type: "text", text: lines.join("\n") }]
|
|
646
536
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentTools.js","sourceRoot":"","sources":["../../src/tools/componentTools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"componentTools.js","sourceRoot":"","sources":["../../src/tools/componentTools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EACH,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EACxB,QAAQ,EACR,uBAAuB,EACvB,oBAAoB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACH,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EAEtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;GAMG;AACH,KAAK,UAAU,4BAA4B,CAAC,MAAe;IACvD,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,IAAI,oBAAoB,EAAE,CAAC;IAC1G,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAClD,OAAO,yBAAyB,CAAC;QAC7B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,IAAI,EAAE,GAAG,CAAC,aAAa;QACvB,QAAQ,EAAE,GAAG,CAAC,SAAS;KAC1B,CAAC,CAAC;AACP,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAkB;IACxC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,SAAS,uBAAuB,CAAC,CAAC;IAC3G,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,kBAAkB,qBAAqB,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACpD,mEAAmE;IACnE,yBAAyB,CACrB,MAAM,EACN,mBAAmB,EACnB;QACI,WAAW,EACP,+eAA+e;YAC/e,wBAAwB,EAAE,GAAG,IAAI;YACjC,yKAAyK;YACzK,iJAAiJ;YACjJ,yKAAyK;YACzK,4HAA4H;YAC5H,+CAA+C;YAC/C,yHAAyH;YACzH,6DAA6D;QACjE,WAAW,EAAE;YACT,QAAQ,EAAE,CAAC;iBACN,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,2IAA2I,CAAC;YAC1J,OAAO,EAAE,CAAC;iBACL,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,4EAA4E,CAAC;YAC3F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YACvD,SAAS,EAAE,CAAC,CAAC,MAAM;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACL,wGAAwG,CAC3G;SACR;KACJ,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;QAC/C,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,MAAM,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;YACjE,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,IAAI,EAAE,EAAE,CAAC;gBACtE,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;QAED,MAAM,kBAAkB,GAAG,SAAS,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClE,MAAM,aAAa,GAAG,MAAM,4BAA4B,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACjC,QAAQ;YACR,OAAO;YACP,MAAM;YACN,SAAS,EAAE,kBAAkB;YAC7B,WAAW,EAAE,aAAa;SAC7B,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC;YACtH,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gBAC1C,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;QAED,MAAM,eAAe,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;YAC/B,CAAC,CAAC,qBAAqB,MAAM,CAAC,MAAM,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACnE,CAAC,CAAC,qBAAqB,MAAM,CAAC,MAAM,EAAE,CAAC;QAC3C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC,CACJ,CAAC;IAQF,+EAA+E;IAC/E,mCAAmC;IACnC,+EAA+E;IAE/E,qCAAqC;IACrC,yBAAyB,CACrB,MAAM,EACN,oBAAoB,EACpB;QACI,WAAW,EACP,kUAAkU;YAClU,+JAA+J;YAC/J,+IAA+I;YAC/I,4HAA4H;YAC5H,iRAAiR;YACjR,8BAA8B;YAC9B,4JAA4J;QAChK,WAAW,EAAE;YACT,aAAa,EAAE,CAAC;iBACX,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACL,4QAA4Q,CAC/Q;YACL,QAAQ,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACL,oCAAoC,CACvC;YACL,YAAY,EAAE,CAAC;iBACV,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,wFAAwF,CAAC;YACvG,aAAa,EAAE,CAAC;iBACX,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,qFAAqF,CAAC;YACpG,aAAa,EAAE,CAAC;iBACX,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACL,gGAAgG,CACnG;YACL,MAAM,EAAE,CAAC;iBACJ,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;iBACzB,QAAQ,EAAE;iBACV,OAAO,CAAC,SAAS,CAAC;iBAClB,QAAQ,CACL,4HAA4H,CAC/H;YACL,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YACvD,SAAS,EAAE,CAAC,CAAC,MAAM;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,oEAAoE,CAAC;SACtF;KACJ,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;QACzG,MAAM,kBAAkB,GAAG,SAAS,IAAI,IAAI,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;YAClC,aAAa;YACb,QAAQ;YACR,YAAY;YACZ,aAAa;YACb,aAAa;YACb,MAAM;YACN,MAAM;YACN,SAAS,EAAE,kBAAkB;SAChC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC;YACtH,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gBAC1C,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;QAED,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;YAC7B,CAAC,CAAC,4BAA4B,MAAM,CAAC,MAAM,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACxE,CAAC,CAAC,4BAA4B,MAAM,CAAC,MAAM,EAAE,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC,CACJ,CAAC;IAEF,4FAA4F;IAC5F,yBAAyB,CACrB,MAAM,EACN,kBAAkB,EAClB;QACI,WAAW,EACP,qQAAqQ;YACrQ,0NAA0N;YAC1N,+QAA+Q;YAC/Q,8JAA8J;YAC9J,kOAAkO;YAClO,wGAAwG;YACxG,8IAA8I;YAC9I,6IAA6I;QACjJ,WAAW,EAAE;YACT,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YACvD,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+HAA+H,CAAC;YAChL,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC;SACnI;KACJ,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3C,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,MAAM,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;YAChE,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,IAAI,EAAE,EAAE,CAAC;gBACzE,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;QAED,oEAAoE;QACpE,2DAA2D;QAC3D,qEAAqE;QACrE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACzC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;YAC1B,iBAAiB,CAAC,MAAM,CAAC;SAC5B,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;gBAChC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACrD,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC;YAC/B,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gBAC1C,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;QAED,6EAA6E;QAC7E,4EAA4E;QAC5E,8EAA8E;QAC9E,8EAA8E;QAC9E,4EAA4E;QAC5E,uEAAuE;QACvE,kCAAkC;QAClC,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;QACjC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACpE,MAAM,OAAO,GAAG,EAAE;YACd,CAAC,CAAC,wBAAwB,CAAC,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE;gBACtD,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU;aACrE,CAAC;YACF,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC5B,CAAC,CAAC,GAAG,OAAO,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACxC,CAAC,CAAC,OAAO,CAAC;QACd,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC,CACJ,CAAC;IAEF,6CAA6C;IAC7C,yBAAyB,CACrB,MAAM,EACN,mBAAmB,EACnB;QACI,WAAW,EACP,sRAAsR;YACtR,wBAAwB,EAAE,GAAG,IAAI;YACjC,wJAAwJ;YACxJ,4IAA4I;YAC5I,mKAAmK;YACnK,sJAAsJ;YACtJ,yEAAyE;YACzE,kIAAkI;QACtI,WAAW,EAAE;YACT,aAAa,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,6EAA6E,CAAC;YAC5F,KAAK,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CAAC,+EAA+E,CAAC;YAC9F,YAAY,EAAE,CAAC;iBACV,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,+CAA+C,CAAC;YAC9D,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YAClG,aAAa,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CACL,6FAA6F,CAChG;YACL,YAAY,EAAE,CAAC;iBACV,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACL,8TAA8T,CACjU;YACL,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YAC1G,aAAa,EAAE,CAAC;iBACX,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,4EAA4E,CAAC;YAC3F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YACvD,SAAS,EAAE,CAAC,CAAC,MAAM;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,oEAAoE,CAAC;SACtF;KACJ,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;QACxI,MAAM,kBAAkB,GAAG,SAAS,IAAI,IAAI,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,aAAa,EAAE;YACjD,KAAK;YACL,YAAY;YACZ,eAAe;YACf,aAAa;YACb,YAAY;YACZ,SAAS;YACT,aAAa;YACb,MAAM;YACN,SAAS,EAAE,kBAAkB;SAChC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC;YACtH,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gBAC1C,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;QAED,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;YAC7B,CAAC,CAAC,yBAAyB,aAAa,OAAO,MAAM,CAAC,MAAM,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzF,CAAC,CAAC,yBAAyB,aAAa,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;QACnE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC,CACJ,CAAC;IAEF,2CAA2C;IAC3C,yBAAyB,CACrB,MAAM,EACN,iBAAiB,EACjB;QACI,WAAW,EACP,uOAAuO;YACvO,wBAAwB,EAAE,GAAG,IAAI;YACjC,0JAA0J;YAC1J,0LAA0L;YAC1L,kIAAkI;YAClI,uJAAuJ;YACvJ,6FAA6F;YAC7F,sFAAsF;YACtF,0IAA0I;QAC9I,WAAW,EAAE;YACT,OAAO,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,CACL,wGAAwG,CAC3G;YACL,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YAC3G,aAAa,EAAE,CAAC;iBACX,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,0EAA0E,CAAC;YACzF,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YAC1G,OAAO,EAAE,CAAC;iBACL,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,4EAA4E,CAAC;YAC3F,WAAW,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,+JAA+J,CAAC;YAC9K,MAAM,EAAE,CAAC;iBACJ,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;iBACzB,QAAQ,EAAE;iBACV,OAAO,CAAC,SAAS,CAAC;iBAClB,QAAQ,CAAC,oGAAoG,CAAC;YACnH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YACvD,SAAS,EAAE,CAAC,CAAC,MAAM;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,oEAAoE,CAAC;SACtF;KACJ,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE;QACzG,MAAM,kBAAkB,GAAG,SAAS,IAAI,IAAI,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE;YACzC,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;YAC7D,SAAS,EAAE,kBAAkB,EAAE,WAAW;SAC7C,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC;YACtH,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gBAC1C,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;QAED,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;YAC7B,CAAC,CAAC,8BAA8B,OAAO,UAAU,MAAM,CAAC,MAAM,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC3F,CAAC,CAAC,8BAA8B,OAAO,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC;QACrE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC,CACJ,CAAC;IAEF,kDAAkD;IAClD,kEAAkE;IAClE,yBAAyB,CACrB,MAAM,EACN,kBAAkB,EAClB;QACI,WAAW,EACP,mbAAmb;YACnb,8HAA8H;YAC9H,qLAAqL;YACrL,kGAAkG;YAClG,0LAA0L;YAC1L,6KAA6K;QACjL,WAAW,EAAE;YACT,CAAC,EAAE,CAAC;iBACC,MAAM,EAAE;iBACR,QAAQ,CACL,0HAA0H,CAC7H;YACL,CAAC,EAAE,CAAC;iBACC,MAAM,EAAE;iBACR,QAAQ,CACL,0HAA0H,CAC7H;YACL,YAAY,EAAE,CAAC;iBACV,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,uDAAuD,CAAC;YACtE,YAAY,EAAE,CAAC;iBACV,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,mEAAmE,CAAC;YAClF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YACvD,MAAM,EAAE,CAAC;iBACJ,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,uHAAuH,CAAC;SACzI;KACJ,EACD,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE;QAClE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;YACtC,YAAY;YACZ,YAAY;YACZ,MAAM;YACN,WAAW,EAAE,MAAM,4BAA4B,CAAC,MAAM,CAAC;SAC1D,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;gBACH,OAAO,EAAE;oBACL;wBACI,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;qBACjC;iBACJ;gBACD,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;QAED,uDAAuD;QACvD,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;YACjD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY;oBACpC,CAAC,CAAC,sBAAsB,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACvF,CAAC,CAAC,EAAE,CAAC;gBACT,OAAO;oBACH,OAAO,EAAE;wBACL;4BACI,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,KAAK,GAAG,IAAI,GAAG,YAAY,EAAE;yBACzE;qBACJ;oBACD,OAAO,EAAE,IAAI;iBAChB,CAAC;YACN,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,+CAA+C;QACnD,CAAC;QAED,gEAAgE;QAChE,qEAAqE;QACrE,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,EAAE,EAAE,MAAM,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YACtF,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAoE,CAAC;YAC1F,IAAI,GAAG,EAAE,CAAC;gBACN,UAAU,GAAG,eAAe,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACjE,iEAAiE;gBACjE,gEAAgE;gBAChE,qDAAqD;gBACrD,MAAM,SAAS,GAAG,QAAQ,CAAC,SAEZ,CAAC;gBAChB,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpC,UAAU,IAAI,uBAAuB,CAAC;oBACtC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;wBACxB,UAAU,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;oBAC9D,CAAC;gBACL,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,UAAU,GAAG,4BAA4B,QAAQ,CAAC,iBAAiB,GAAG,CAAC;YAC3E,CAAC;QACL,CAAC;QAED,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE;iBACpE;aACJ;SACJ,CAAC;IACN,CAAC,CACJ,CAAC;IAEF,wDAAwD;IACxD,yBAAyB,CACrB,MAAM,EACN,SAAS,EACT;QACI,WAAW,EACP,yUAAyU;YACzU,2JAA2J;YAC3J,oOAAoO;YACpO,2KAA2K;YAC3K,mUAAmU;YACnU,+DAA+D;YAC/D,+FAA+F;YAC/F,gHAAgH;QACpH,WAAW,EAAE;YACT,aAAa,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,wEAAwE,CAAC;YACvF,KAAK,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CAAC,2DAA2D,CAAC;YAC1E,MAAM,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,eAAe,CAAC;SACjC;KACJ,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACvC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,MAAM,wBAAwB,CAAC,SAAS,CAAC,CAAC;YACvD,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,IAAI,EAAE,EAAE,CAAC;gBAChE,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QAEzE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC3D,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,MAAM,CAAC,OAAO;aAChC,CAAC;QACN,CAAC;QAED,kFAAkF;QAClF,gFAAgF;QAChF,mFAAmF;QACnF,gFAAgF;QAChF,MAAM,cAAc,GAAG,MAAM,4BAA4B,CAAC,MAAM,CAAC,CAAC;QAClE,6EAA6E;QAC7E,0EAA0E;QAC1E,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QACpD,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QACpD,MAAM,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAE9D,MAAM,KAAK,GAAG;YACV,cAAc,MAAM,CAAC,IAAI,EAAE;YAC3B,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC/E,YAAY,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;SACvE,CAAC;QACF,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;QAC7D,IAAI,gBAAgB;YAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEnD,OAAO;YACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SACtD,CAAC;IACN,CAAC,CACJ,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshotTools.d.ts","sourceRoot":"","sources":["../../src/tools/screenshotTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"screenshotTools.d.ts","sourceRoot":"","sources":["../../src/tools/screenshotTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2BzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAywB/D"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { registerToolWithTelemetry } from "../core/register.js";
|
|
3
3
|
import { resolveAndroidDeviceId, resolveIosUdid, ANDROID_ARG_DESC, IOS_ARG_DESC } from "./_deviceArg.js";
|
|
4
|
-
import { iconLabel } from "../core/iconSemantics.js";
|
|
5
4
|
import { recordScreenMetrics } from "../core/projectMemory.js";
|
|
6
|
-
import { iosScreenshot, androidScreenshot, detectLogBox, formatLogBoxWarning, recognizeText, inferIOSDevicePixelRatio,
|
|
5
|
+
import { iosScreenshot, androidScreenshot, detectLogBox, formatLogBoxWarning, recognizeText, inferIOSDevicePixelRatio, getScreenState, formatScreenStateSummary, imageBuffer, getActiveOrBootedSimulatorUdid, connectedApps, getConnectedAppBySimulatorUdid, getConnectedAppByAndroidDeviceId, iosDescribeAll, detectIOSSystemOverlay, formatIOSSystemOverlayWarning, androidGetStatusBarHeight, androidGetDensity, } from "../core/index.js";
|
|
6
|
+
import { screenStateToScreenSpace } from "../core/screenSpace.js";
|
|
7
7
|
export function registerScreenshotTools(server) {
|
|
8
8
|
// Tool: iOS screenshot
|
|
9
9
|
registerToolWithTelemetry(server, "ios_screenshot", {
|
|
@@ -145,20 +145,23 @@ export function registerScreenshotTools(server) {
|
|
|
145
145
|
if (ssResult && ssResult.success && ssResult.screenState) {
|
|
146
146
|
const screenshotScale = result.scaleFactor || 1;
|
|
147
147
|
const toPx = (v) => Math.round((v * scaleFactor) / screenshotScale);
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
x: toPx(p.bounds.x),
|
|
156
|
-
y: toPx(p.bounds.y + yShift),
|
|
157
|
-
width: toPx(p.bounds.width),
|
|
158
|
-
height: toPx(p.bounds.height),
|
|
159
|
-
},
|
|
160
|
-
};
|
|
148
|
+
// Normalise once, then scale. The y-shift used to live inline here
|
|
149
|
+
// (and in a second copy for the flat pressables path), which is how
|
|
150
|
+
// the pixel output ended up correct while the point-space tools were
|
|
151
|
+
// an inset off — see core/screenSpace.ts.
|
|
152
|
+
const screenSpaceSs = screenStateToScreenSpace(ssResult.screenState, {
|
|
153
|
+
platform: "ios",
|
|
154
|
+
topInset: safeAreaTop
|
|
161
155
|
});
|
|
156
|
+
pressablesText = formatScreenStateSummary(screenSpaceSs, (p) => ({
|
|
157
|
+
center: { x: toPx(p.center.x), y: toPx(p.center.y) },
|
|
158
|
+
frame: {
|
|
159
|
+
x: toPx(p.bounds.x),
|
|
160
|
+
y: toPx(p.bounds.y),
|
|
161
|
+
width: toPx(p.bounds.width),
|
|
162
|
+
height: toPx(p.bounds.height),
|
|
163
|
+
},
|
|
164
|
+
}));
|
|
162
165
|
pressablesIsScreenState = true;
|
|
163
166
|
}
|
|
164
167
|
}
|
|
@@ -166,37 +169,14 @@ export function registerScreenshotTools(server) {
|
|
|
166
169
|
// Non-fatal: fall through to the flat pressables list below
|
|
167
170
|
}
|
|
168
171
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
const screenshotScale = result.scaleFactor || 1;
|
|
178
|
-
pressablesText = pressables.parsedElements.map((el) => {
|
|
179
|
-
// See enrichScreenshotWithLayout: shift y when fiber reports the element
|
|
180
|
-
// inside the safe-area band (a react-native-screens modal artifact).
|
|
181
|
-
let centerYPoints = el.center.y;
|
|
182
|
-
if (safeAreaTop > 0 && centerYPoints < safeAreaTop) {
|
|
183
|
-
centerYPoints += safeAreaTop;
|
|
184
|
-
}
|
|
185
|
-
const px = Math.round((el.center.x * scaleFactor) / screenshotScale);
|
|
186
|
-
const py = Math.round((centerYPoints * scaleFactor) / screenshotScale);
|
|
187
|
-
const label = el.accessibilityLabel || el.text || el.testID || iconLabel(el.component, el.icon) || (el.intent ? `${el.intent} icon` : el.component);
|
|
188
|
-
const idPart = el.testID ? ` testID="${el.testID}"` : "";
|
|
189
|
-
const kindPart = el.isInput ? " [input]" : "";
|
|
190
|
-
const wrapPart = el.isWrapper ? " [wrapper — skip]" : "";
|
|
191
|
-
const nearPart = !el.text && !el.accessibilityLabel && el.nearbyText ? ` near "${el.nearbyText}"` : "";
|
|
192
|
-
return ` (${px}, ${py}) ${el.component}: "${label}"${nearPart}${idPart}${kindPart}${wrapPart}`;
|
|
193
|
-
}).join("\n");
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
catch {
|
|
197
|
-
// Non-fatal: screenshot works without pressables enrichment
|
|
198
|
-
}
|
|
199
|
-
}
|
|
172
|
+
// No second rendering path on purpose. This used to fall back to a flat
|
|
173
|
+
// getPressableElements list, which is what let the two renderings drift:
|
|
174
|
+
// the screenState path groups overlay/keyboard-blocked elements, the flat
|
|
175
|
+
// one did not, so an Android screenshot with the keyboard up advertised 12
|
|
176
|
+
// blocked elements as tappable. The flat path also mis-mapped Android
|
|
177
|
+
// coordinates (five distinct rows sharing one 11x57 frame). screenState is
|
|
178
|
+
// the single source of truth; if it fails the screenshot ships without
|
|
179
|
+
// enrichment rather than with a worse answer.
|
|
200
180
|
const deliveredWidth = result.scaleFactor && result.scaleFactor > 1
|
|
201
181
|
? Math.round(pixelWidth / result.scaleFactor)
|
|
202
182
|
: pixelWidth;
|
|
@@ -442,12 +422,18 @@ export function registerScreenshotTools(server) {
|
|
|
442
422
|
const screenshotScale = result.scaleFactor || 1;
|
|
443
423
|
const densityScale = densityDpi / 160;
|
|
444
424
|
const toPx = (v) => Math.round((v * densityScale) / screenshotScale);
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
425
|
+
// Same normalise-then-scale as iOS. Android's inset is the status bar,
|
|
426
|
+
// which measureInWindow excludes because it reports app-window
|
|
427
|
+
// coordinates — see core/screenSpace.ts.
|
|
428
|
+
const screenSpaceSs = screenStateToScreenSpace(ssResult.screenState, {
|
|
429
|
+
platform: "android",
|
|
430
|
+
topInset: statusBarDp
|
|
431
|
+
});
|
|
432
|
+
pressablesText = formatScreenStateSummary(screenSpaceSs, (p) => ({
|
|
433
|
+
center: { x: toPx(p.center.x), y: toPx(p.center.y) },
|
|
448
434
|
frame: {
|
|
449
435
|
x: toPx(p.bounds.x),
|
|
450
|
-
y:
|
|
436
|
+
y: toPx(p.bounds.y),
|
|
451
437
|
width: toPx(p.bounds.width),
|
|
452
438
|
height: toPx(p.bounds.height),
|
|
453
439
|
},
|
|
@@ -459,28 +445,7 @@ export function registerScreenshotTools(server) {
|
|
|
459
445
|
// Non-fatal: fall through to the flat pressables list below
|
|
460
446
|
}
|
|
461
447
|
}
|
|
462
|
-
//
|
|
463
|
-
// fiber path (uiautomator-reconciled coords). Without targetApp it degrades
|
|
464
|
-
// to the Android accessibility (uiautomator) tree (E1).
|
|
465
|
-
try {
|
|
466
|
-
const pressables = pressablesText ? null : await getPressableElements({ device: targetDeviceName, platform: "android" });
|
|
467
|
-
if (pressables && pressables.success && pressables.parsedElements && pressables.parsedElements.length > 0) {
|
|
468
|
-
const screenshotScale = result.scaleFactor || 1;
|
|
469
|
-
pressablesText = pressables.parsedElements.map((el) => {
|
|
470
|
-
const px = Math.round(el.center.x / screenshotScale);
|
|
471
|
-
const py = Math.round(el.center.y / screenshotScale);
|
|
472
|
-
const label = el.accessibilityLabel || el.text || el.testID || iconLabel(el.component, el.icon) || (el.intent ? `${el.intent} icon` : el.component);
|
|
473
|
-
const idPart = el.testID ? ` testID="${el.testID}"` : "";
|
|
474
|
-
const kindPart = el.isInput ? " [input]" : "";
|
|
475
|
-
const wrapPart = el.isWrapper ? " [wrapper — skip]" : "";
|
|
476
|
-
const nearPart = !el.text && !el.accessibilityLabel && el.nearbyText ? ` near "${el.nearbyText}"` : "";
|
|
477
|
-
return ` (${px}, ${py}) ${el.component}: "${label}"${nearPart}${idPart}${kindPart}${wrapPart}`;
|
|
478
|
-
}).join("\n");
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
catch {
|
|
482
|
-
// Non-fatal: screenshot works without pressables enrichment
|
|
483
|
-
}
|
|
448
|
+
// No flat-pressables fallback here either — see the iOS branch for why.
|
|
484
449
|
infoText += `\n📱 Android uses PIXELS for all coordinates`;
|
|
485
450
|
if (result.scaleFactor && result.scaleFactor > 1) {
|
|
486
451
|
infoText += `\n📐 tap() handles coordinate conversion automatically — pass pixel coords from this image directly`;
|