rnxsim 0.1.468 → 0.1.469
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/cli/commands/inspect/actions.ts +34 -19
- package/cli/commands/inspect.ts +12 -0
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +1 -1
- package/dist-lib/bridge-contract-input.mjs +1 -1
- package/dist-lib/bridge-contract.cjs +1 -1
- package/dist-lib/bridge-contract.mjs +1 -1
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cli-constants.cjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -1
- package/dist-lib/cloud-contract.mjs +1 -1
- package/dist-lib/cloud.cjs +1 -1
- package/dist-lib/cloud.mjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +1 -1
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +1 -1
- package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
- package/dist-lib/host/replacement-module-handler.cjs +1 -1
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +12 -9
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +1 -1
- package/dist-lib/react-native-host-modules.cjs +1 -1
- package/dist-lib/react-native-host-modules.mjs +1 -1
- package/dist-lib/render-mode.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +12 -9
- package/dist-lib/sdk.mjs +12 -9
- package/dist-lib/skills.cjs +1 -1
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
|
@@ -60,6 +60,11 @@ function viewportFromCapture(value: unknown): unknown {
|
|
|
60
60
|
|
|
61
61
|
// the semantic tree has no covering root, so its first node is often a 64x64
|
|
62
62
|
// icon. capture.tree.viewport is the device layout size on local and cloud.
|
|
63
|
+
//
|
|
64
|
+
// a whole screen capture is the only way to ask for it today, and it is not
|
|
65
|
+
// cheap: the headless runtime forces a full redraw of the tree before it walks
|
|
66
|
+
// it, which measured 3.9-5.5s on a real app in a cloud box against 120-290ms
|
|
67
|
+
// for every other command. that is why this runs on the failure path only.
|
|
63
68
|
async function readScreen(bridge: InspectBridge): Promise<ScreenSize | null> {
|
|
64
69
|
try {
|
|
65
70
|
const viewport = viewportFromCapture(
|
|
@@ -73,15 +78,8 @@ async function readScreen(bridge: InspectBridge): Promise<ScreenSize | null> {
|
|
|
73
78
|
}
|
|
74
79
|
}
|
|
75
80
|
|
|
76
|
-
function
|
|
77
|
-
cx
|
|
78
|
-
cy: number,
|
|
79
|
-
screen: ScreenSize | null,
|
|
80
|
-
): { offscreen: true; screen: ScreenSize } | Record<string, never> {
|
|
81
|
-
if (!screen || (cx >= 0 && cy >= 0 && cx <= screen.width && cy <= screen.height)) {
|
|
82
|
-
return {}
|
|
83
|
-
}
|
|
84
|
-
return { offscreen: true, screen }
|
|
81
|
+
function isOffscreen(cx: number, cy: number, screen: ScreenSize): boolean {
|
|
82
|
+
return !(cx >= 0 && cy >= 0 && cx <= screen.width && cy <= screen.height)
|
|
85
83
|
}
|
|
86
84
|
|
|
87
85
|
const DEFAULT_AGENT_TIMING: Required<TapTimingOptions> = {
|
|
@@ -182,13 +180,21 @@ export async function tapResolvedTarget(
|
|
|
182
180
|
|
|
183
181
|
const deadline = Date.now() + timing.deadlineMs
|
|
184
182
|
let lastOffscreenAt: string | null = null
|
|
185
|
-
|
|
183
|
+
// a cloud sim refuses a point outside its screen itself, and says so, so
|
|
184
|
+
// asking it for a capture first would buy nothing. every other plane still
|
|
185
|
+
// presses whatever the hit test finds at tree coordinates no finger can
|
|
186
|
+
// reach, so there the screen has to be read before dispatching.
|
|
187
|
+
const screen = bridge.plane === 'cloud' ? null : await readScreen(bridge)
|
|
186
188
|
while (Date.now() <= deadline || attempts === 0) {
|
|
187
189
|
attempts++
|
|
188
190
|
const resolved = await args.resolve()
|
|
189
191
|
const payload =
|
|
190
|
-
resolved &&
|
|
191
|
-
|
|
192
|
+
resolved &&
|
|
193
|
+
typeof resolved.cx === 'number' &&
|
|
194
|
+
typeof resolved.cy === 'number' &&
|
|
195
|
+
screen &&
|
|
196
|
+
isOffscreen(resolved.cx, resolved.cy, screen)
|
|
197
|
+
? { ...resolved, offscreen: true, screen }
|
|
192
198
|
: resolved
|
|
193
199
|
lastPayload = payload
|
|
194
200
|
|
|
@@ -201,12 +207,9 @@ export async function tapResolvedTarget(
|
|
|
201
207
|
}
|
|
202
208
|
|
|
203
209
|
if (payload && typeof payload.cx === 'number' && typeof payload.cy === 'number') {
|
|
204
|
-
//
|
|
205
|
-
//
|
|
206
|
-
//
|
|
207
|
-
// could reach and the press would do nothing visible. report an honest
|
|
208
|
-
// offscreen miss instead so drivers scroll first rather than getting
|
|
209
|
-
// stuck trusting a phantom hit.
|
|
210
|
+
// don't dispatch a point outside the device screen: the press would do
|
|
211
|
+
// nothing a user could reproduce. report the offscreen miss instead so
|
|
212
|
+
// drivers scroll first rather than getting stuck trusting a phantom hit.
|
|
210
213
|
if (payload.offscreen) {
|
|
211
214
|
lastResult = {
|
|
212
215
|
hit: false,
|
|
@@ -232,7 +235,19 @@ export async function tapResolvedTarget(
|
|
|
232
235
|
payload.cy,
|
|
233
236
|
requestedTarget,
|
|
234
237
|
)
|
|
235
|
-
|
|
238
|
+
// a cloud sim reports the offscreen refusal itself, carrying the point
|
|
239
|
+
// and the screen in its diagnostics. give it the same shape the local
|
|
240
|
+
// check produces so there is one offscreen failure to report.
|
|
241
|
+
lastResult =
|
|
242
|
+
result?.reason === 'offscreen' && result.diagnostics
|
|
243
|
+
? {
|
|
244
|
+
...result,
|
|
245
|
+
hit: false,
|
|
246
|
+
x: result.diagnostics.point?.x ?? payload.cx,
|
|
247
|
+
y: result.diagnostics.point?.y ?? payload.cy,
|
|
248
|
+
screen: result.diagnostics.screen,
|
|
249
|
+
}
|
|
250
|
+
: result
|
|
236
251
|
if (result?.requestedTargetMatched === false) {
|
|
237
252
|
return { payload, result, attempts, failure: 'missed' }
|
|
238
253
|
}
|
package/cli/commands/inspect.ts
CHANGED
|
@@ -1291,6 +1291,18 @@ export async function runInspect(args: string[], opts: InspectOptions) {
|
|
|
1291
1291
|
// interactive users get 200ms to stay snappy. logs on timeout so it's
|
|
1292
1292
|
// obvious when the next CLI call may see mid-animation state.
|
|
1293
1293
|
async function autoSettleAfterWrite(b: WsBridge): Promise<void> {
|
|
1294
|
+
// a cloud sim runs no browser page, so the idle probe's evaluate never
|
|
1295
|
+
// lands there. without this it settled nothing and the next read handed
|
|
1296
|
+
// out coordinates a sheet was still animating away from, which is how a
|
|
1297
|
+
// dialog button tap missed and the scrim under it answered the press.
|
|
1298
|
+
if (b.plane === 'cloud') {
|
|
1299
|
+
try {
|
|
1300
|
+
await b.send({ type: 'settle' })
|
|
1301
|
+
} catch {
|
|
1302
|
+
// best-effort — never fail the command because of a post-wait probe.
|
|
1303
|
+
}
|
|
1304
|
+
return
|
|
1305
|
+
}
|
|
1294
1306
|
// budget is a CAP, not a fixed wait: waitForSootsimIdle drains any
|
|
1295
1307
|
// screen transition then returns the instant layout is stable. longer
|
|
1296
1308
|
// transitions should use an explicit `do settle` or `wait idle`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
package/dist-lib/config.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/detox/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/home-paths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/host/fetch-proxy-overrides.ts
|
|
4
4
|
var FETCH_PROXY_BROWSER_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -2142,11 +2142,8 @@ async function readScreen(bridge) {
|
|
|
2142
2142
|
return null;
|
|
2143
2143
|
}
|
|
2144
2144
|
}
|
|
2145
|
-
function
|
|
2146
|
-
|
|
2147
|
-
return {};
|
|
2148
|
-
}
|
|
2149
|
-
return { offscreen: true, screen };
|
|
2145
|
+
function isOffscreen(cx, cy, screen) {
|
|
2146
|
+
return !(cx >= 0 && cy >= 0 && cx <= screen.width && cy <= screen.height);
|
|
2150
2147
|
}
|
|
2151
2148
|
var DEFAULT_AGENT_TIMING = {
|
|
2152
2149
|
initialWaitMs: 3e3,
|
|
@@ -2209,11 +2206,11 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
2209
2206
|
}
|
|
2210
2207
|
const deadline = Date.now() + timing.deadlineMs;
|
|
2211
2208
|
let lastOffscreenAt = null;
|
|
2212
|
-
const screen = await readScreen(bridge);
|
|
2209
|
+
const screen = bridge.plane === "cloud" ? null : await readScreen(bridge);
|
|
2213
2210
|
while (Date.now() <= deadline || attempts === 0) {
|
|
2214
2211
|
attempts++;
|
|
2215
2212
|
const resolved = await args.resolve();
|
|
2216
|
-
const payload = resolved && typeof resolved.cx === "number" && typeof resolved.cy === "number"
|
|
2213
|
+
const payload = resolved && typeof resolved.cx === "number" && typeof resolved.cy === "number" && screen && isOffscreen(resolved.cx, resolved.cy, screen) ? { ...resolved, offscreen: true, screen } : resolved;
|
|
2217
2214
|
lastPayload = payload;
|
|
2218
2215
|
if (payload?.error === "bridge-not-ready" || payload?.ambiguous || payload?.nthOutOfRange) {
|
|
2219
2216
|
return { payload, result: null, attempts, failure: "special" };
|
|
@@ -2241,7 +2238,13 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
2241
2238
|
payload.cy,
|
|
2242
2239
|
requestedTarget
|
|
2243
2240
|
);
|
|
2244
|
-
lastResult = result
|
|
2241
|
+
lastResult = result?.reason === "offscreen" && result.diagnostics ? {
|
|
2242
|
+
...result,
|
|
2243
|
+
hit: false,
|
|
2244
|
+
x: result.diagnostics.point?.x ?? payload.cx,
|
|
2245
|
+
y: result.diagnostics.point?.y ?? payload.cy,
|
|
2246
|
+
screen: result.diagnostics.screen
|
|
2247
|
+
} : result;
|
|
2245
2248
|
if (result?.requestedTargetMatched === false) {
|
|
2246
2249
|
return { payload, result, attempts, failure: "missed" };
|
|
2247
2250
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/menu.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/menu.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/profiles.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/render-mode.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/sdk.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1560,11 +1560,8 @@ async function readScreen(bridge) {
|
|
|
1560
1560
|
return null;
|
|
1561
1561
|
}
|
|
1562
1562
|
}
|
|
1563
|
-
function
|
|
1564
|
-
|
|
1565
|
-
return {};
|
|
1566
|
-
}
|
|
1567
|
-
return { offscreen: true, screen };
|
|
1563
|
+
function isOffscreen(cx, cy, screen) {
|
|
1564
|
+
return !(cx >= 0 && cy >= 0 && cx <= screen.width && cy <= screen.height);
|
|
1568
1565
|
}
|
|
1569
1566
|
var DEFAULT_AGENT_TIMING = {
|
|
1570
1567
|
initialWaitMs: 3e3,
|
|
@@ -1627,11 +1624,11 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
1627
1624
|
}
|
|
1628
1625
|
const deadline = Date.now() + timing.deadlineMs;
|
|
1629
1626
|
let lastOffscreenAt = null;
|
|
1630
|
-
const screen = await readScreen(bridge);
|
|
1627
|
+
const screen = bridge.plane === "cloud" ? null : await readScreen(bridge);
|
|
1631
1628
|
while (Date.now() <= deadline || attempts === 0) {
|
|
1632
1629
|
attempts++;
|
|
1633
1630
|
const resolved = await args.resolve();
|
|
1634
|
-
const payload = resolved && typeof resolved.cx === "number" && typeof resolved.cy === "number"
|
|
1631
|
+
const payload = resolved && typeof resolved.cx === "number" && typeof resolved.cy === "number" && screen && isOffscreen(resolved.cx, resolved.cy, screen) ? { ...resolved, offscreen: true, screen } : resolved;
|
|
1635
1632
|
lastPayload = payload;
|
|
1636
1633
|
if (payload?.error === "bridge-not-ready" || payload?.ambiguous || payload?.nthOutOfRange) {
|
|
1637
1634
|
return { payload, result: null, attempts, failure: "special" };
|
|
@@ -1659,7 +1656,13 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
1659
1656
|
payload.cy,
|
|
1660
1657
|
requestedTarget
|
|
1661
1658
|
);
|
|
1662
|
-
lastResult = result
|
|
1659
|
+
lastResult = result?.reason === "offscreen" && result.diagnostics ? {
|
|
1660
|
+
...result,
|
|
1661
|
+
hit: false,
|
|
1662
|
+
x: result.diagnostics.point?.x ?? payload.cx,
|
|
1663
|
+
y: result.diagnostics.point?.y ?? payload.cy,
|
|
1664
|
+
screen: result.diagnostics.screen
|
|
1665
|
+
} : result;
|
|
1663
1666
|
if (result?.requestedTargetMatched === false) {
|
|
1664
1667
|
return { payload, result, attempts, failure: "missed" };
|
|
1665
1668
|
}
|
package/dist-lib/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
@@ -1464,11 +1464,8 @@ async function readScreen(bridge) {
|
|
|
1464
1464
|
return null;
|
|
1465
1465
|
}
|
|
1466
1466
|
}
|
|
1467
|
-
function
|
|
1468
|
-
|
|
1469
|
-
return {};
|
|
1470
|
-
}
|
|
1471
|
-
return { offscreen: true, screen };
|
|
1467
|
+
function isOffscreen(cx, cy, screen) {
|
|
1468
|
+
return !(cx >= 0 && cy >= 0 && cx <= screen.width && cy <= screen.height);
|
|
1472
1469
|
}
|
|
1473
1470
|
var DEFAULT_AGENT_TIMING = {
|
|
1474
1471
|
initialWaitMs: 3e3,
|
|
@@ -1531,11 +1528,11 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
1531
1528
|
}
|
|
1532
1529
|
const deadline = Date.now() + timing.deadlineMs;
|
|
1533
1530
|
let lastOffscreenAt = null;
|
|
1534
|
-
const screen = await readScreen(bridge);
|
|
1531
|
+
const screen = bridge.plane === "cloud" ? null : await readScreen(bridge);
|
|
1535
1532
|
while (Date.now() <= deadline || attempts === 0) {
|
|
1536
1533
|
attempts++;
|
|
1537
1534
|
const resolved = await args.resolve();
|
|
1538
|
-
const payload = resolved && typeof resolved.cx === "number" && typeof resolved.cy === "number"
|
|
1535
|
+
const payload = resolved && typeof resolved.cx === "number" && typeof resolved.cy === "number" && screen && isOffscreen(resolved.cx, resolved.cy, screen) ? { ...resolved, offscreen: true, screen } : resolved;
|
|
1539
1536
|
lastPayload = payload;
|
|
1540
1537
|
if (payload?.error === "bridge-not-ready" || payload?.ambiguous || payload?.nthOutOfRange) {
|
|
1541
1538
|
return { payload, result: null, attempts, failure: "special" };
|
|
@@ -1563,7 +1560,13 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
1563
1560
|
payload.cy,
|
|
1564
1561
|
requestedTarget
|
|
1565
1562
|
);
|
|
1566
|
-
lastResult = result
|
|
1563
|
+
lastResult = result?.reason === "offscreen" && result.diagnostics ? {
|
|
1564
|
+
...result,
|
|
1565
|
+
hit: false,
|
|
1566
|
+
x: result.diagnostics.point?.x ?? payload.cx,
|
|
1567
|
+
y: result.diagnostics.point?.y ?? payload.cy,
|
|
1568
|
+
screen: result.diagnostics.screen
|
|
1569
|
+
} : result;
|
|
1567
1570
|
if (result?.requestedTargetMatched === false) {
|
|
1568
1571
|
return { payload, result, attempts, failure: "missed" };
|
|
1569
1572
|
}
|
package/dist-lib/skills.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.469 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|