rnxsim 0.1.456 → 0.1.457
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 +63 -14
- package/cli/commands/inspect.ts +66 -5
- package/cli/ws-bridge.ts +3 -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 +43 -15
- 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 +43 -15
- package/dist-lib/sdk.mjs +43 -15
- package/dist-lib/skills.cjs +755 -51
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/src/sim-client.ts +4 -0
package/dist-lib/profiles.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.457 | (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.457 | (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.457 | (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.457 | (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.457 | (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.457 | (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;
|
|
@@ -1632,8 +1632,15 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
1632
1632
|
let attempts = 0;
|
|
1633
1633
|
let lastPayload = null;
|
|
1634
1634
|
let lastResult = null;
|
|
1635
|
-
const
|
|
1636
|
-
|
|
1635
|
+
const settleCloud = async () => {
|
|
1636
|
+
try {
|
|
1637
|
+
await bridge.send({ type: "settle" });
|
|
1638
|
+
} catch {
|
|
1639
|
+
}
|
|
1640
|
+
};
|
|
1641
|
+
if (bridge.plane === "cloud") {
|
|
1642
|
+
await settleCloud();
|
|
1643
|
+
} else if (timing.initialWaitMs > 0) {
|
|
1637
1644
|
try {
|
|
1638
1645
|
await waitForSootsimIdle({
|
|
1639
1646
|
bridge,
|
|
@@ -1673,34 +1680,45 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
1673
1680
|
lastOffscreenAt = null;
|
|
1674
1681
|
const requestedTarget = tapTargetFromPayload(payload, args.textFallback);
|
|
1675
1682
|
const { tree } = await inspectTree(bridge, 50);
|
|
1683
|
+
let moved = false;
|
|
1676
1684
|
if (Array.isArray(tree) && tree.length > 0) {
|
|
1677
1685
|
const hit = hitTestSemanticTree(tree, payload.cx, payload.cy);
|
|
1678
1686
|
const matched = hit !== null && (nodeMatchesRequested(hit.node, requestedTarget) || hit.ancestors.some(
|
|
1679
1687
|
(ancestor) => nodeMatchesRequested(ancestor, requestedTarget)
|
|
1680
1688
|
));
|
|
1681
|
-
|
|
1689
|
+
const blocks = hit !== null && (hit.node.type === "text" || hit.node.pressable === true || hit.ancestors.some((ancestor) => ancestor.pressable === true));
|
|
1690
|
+
if (hit && !matched && blocks) {
|
|
1691
|
+
moved = subtreeMatchesRequested(hit.node, requestedTarget);
|
|
1682
1692
|
lastResult = {
|
|
1683
1693
|
hit: false,
|
|
1684
|
-
reason: "target-covered",
|
|
1694
|
+
reason: moved ? "target-moved" : "target-covered",
|
|
1685
1695
|
requestedTarget,
|
|
1686
1696
|
coordinateTarget: coveringNodeSummary(hit.node)
|
|
1687
1697
|
};
|
|
1688
|
-
|
|
1698
|
+
if (!moved)
|
|
1699
|
+
return { payload, result: lastResult, attempts, failure: "missed" };
|
|
1689
1700
|
}
|
|
1690
1701
|
}
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1702
|
+
if (!moved) {
|
|
1703
|
+
const result = await tapCoordinates(
|
|
1704
|
+
bridge,
|
|
1705
|
+
payload.cx,
|
|
1706
|
+
payload.cy,
|
|
1707
|
+
requestedTarget
|
|
1708
|
+
);
|
|
1709
|
+
lastResult = result;
|
|
1710
|
+
if (isTapSuccess(result)) return { payload, result, attempts };
|
|
1711
|
+
}
|
|
1699
1712
|
}
|
|
1700
1713
|
}
|
|
1701
1714
|
const remaining = deadline - Date.now();
|
|
1702
1715
|
if (remaining <= 0) break;
|
|
1703
|
-
if (bridge.plane === "cloud"
|
|
1716
|
+
if (bridge.plane === "cloud") {
|
|
1717
|
+
if (lastResult?.reason !== "target-moved" || attempts >= 3) break;
|
|
1718
|
+
await settleCloud();
|
|
1719
|
+
continue;
|
|
1720
|
+
}
|
|
1721
|
+
if (timing.retryWaitMs <= 0) break;
|
|
1704
1722
|
try {
|
|
1705
1723
|
await waitForSootsimIdle({
|
|
1706
1724
|
bridge,
|
|
@@ -1719,6 +1737,13 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
1719
1737
|
failure: lastPayload && typeof lastPayload.cx === "number" ? "missed" : "not-found"
|
|
1720
1738
|
};
|
|
1721
1739
|
}
|
|
1740
|
+
function subtreeMatchesRequested(node, requested) {
|
|
1741
|
+
for (const child of node.children ?? []) {
|
|
1742
|
+
if (nodeMatchesRequested(child, requested) || subtreeMatchesRequested(child, requested))
|
|
1743
|
+
return true;
|
|
1744
|
+
}
|
|
1745
|
+
return false;
|
|
1746
|
+
}
|
|
1722
1747
|
async function tapCoordinates(bridge, x, y, target) {
|
|
1723
1748
|
return bridge.send({
|
|
1724
1749
|
type: "tap",
|
|
@@ -2017,6 +2042,9 @@ var SimClient = class {
|
|
|
2017
2042
|
this.bridge = bridge;
|
|
2018
2043
|
this.simId = simId;
|
|
2019
2044
|
}
|
|
2045
|
+
get plane() {
|
|
2046
|
+
return this.bridge.plane;
|
|
2047
|
+
}
|
|
2020
2048
|
// --- transport (WsBridge/InspectBridge) ---
|
|
2021
2049
|
send(cmd, opts) {
|
|
2022
2050
|
if (this.closed) {
|
package/dist-lib/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.457 | (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);
|
|
@@ -1536,8 +1536,15 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
1536
1536
|
let attempts = 0;
|
|
1537
1537
|
let lastPayload = null;
|
|
1538
1538
|
let lastResult = null;
|
|
1539
|
-
const
|
|
1540
|
-
|
|
1539
|
+
const settleCloud = async () => {
|
|
1540
|
+
try {
|
|
1541
|
+
await bridge.send({ type: "settle" });
|
|
1542
|
+
} catch {
|
|
1543
|
+
}
|
|
1544
|
+
};
|
|
1545
|
+
if (bridge.plane === "cloud") {
|
|
1546
|
+
await settleCloud();
|
|
1547
|
+
} else if (timing.initialWaitMs > 0) {
|
|
1541
1548
|
try {
|
|
1542
1549
|
await waitForSootsimIdle({
|
|
1543
1550
|
bridge,
|
|
@@ -1577,34 +1584,45 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
1577
1584
|
lastOffscreenAt = null;
|
|
1578
1585
|
const requestedTarget = tapTargetFromPayload(payload, args.textFallback);
|
|
1579
1586
|
const { tree } = await inspectTree(bridge, 50);
|
|
1587
|
+
let moved = false;
|
|
1580
1588
|
if (Array.isArray(tree) && tree.length > 0) {
|
|
1581
1589
|
const hit = hitTestSemanticTree(tree, payload.cx, payload.cy);
|
|
1582
1590
|
const matched = hit !== null && (nodeMatchesRequested(hit.node, requestedTarget) || hit.ancestors.some(
|
|
1583
1591
|
(ancestor) => nodeMatchesRequested(ancestor, requestedTarget)
|
|
1584
1592
|
));
|
|
1585
|
-
|
|
1593
|
+
const blocks = hit !== null && (hit.node.type === "text" || hit.node.pressable === true || hit.ancestors.some((ancestor) => ancestor.pressable === true));
|
|
1594
|
+
if (hit && !matched && blocks) {
|
|
1595
|
+
moved = subtreeMatchesRequested(hit.node, requestedTarget);
|
|
1586
1596
|
lastResult = {
|
|
1587
1597
|
hit: false,
|
|
1588
|
-
reason: "target-covered",
|
|
1598
|
+
reason: moved ? "target-moved" : "target-covered",
|
|
1589
1599
|
requestedTarget,
|
|
1590
1600
|
coordinateTarget: coveringNodeSummary(hit.node)
|
|
1591
1601
|
};
|
|
1592
|
-
|
|
1602
|
+
if (!moved)
|
|
1603
|
+
return { payload, result: lastResult, attempts, failure: "missed" };
|
|
1593
1604
|
}
|
|
1594
1605
|
}
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1606
|
+
if (!moved) {
|
|
1607
|
+
const result = await tapCoordinates(
|
|
1608
|
+
bridge,
|
|
1609
|
+
payload.cx,
|
|
1610
|
+
payload.cy,
|
|
1611
|
+
requestedTarget
|
|
1612
|
+
);
|
|
1613
|
+
lastResult = result;
|
|
1614
|
+
if (isTapSuccess(result)) return { payload, result, attempts };
|
|
1615
|
+
}
|
|
1603
1616
|
}
|
|
1604
1617
|
}
|
|
1605
1618
|
const remaining = deadline - Date.now();
|
|
1606
1619
|
if (remaining <= 0) break;
|
|
1607
|
-
if (bridge.plane === "cloud"
|
|
1620
|
+
if (bridge.plane === "cloud") {
|
|
1621
|
+
if (lastResult?.reason !== "target-moved" || attempts >= 3) break;
|
|
1622
|
+
await settleCloud();
|
|
1623
|
+
continue;
|
|
1624
|
+
}
|
|
1625
|
+
if (timing.retryWaitMs <= 0) break;
|
|
1608
1626
|
try {
|
|
1609
1627
|
await waitForSootsimIdle({
|
|
1610
1628
|
bridge,
|
|
@@ -1623,6 +1641,13 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
1623
1641
|
failure: lastPayload && typeof lastPayload.cx === "number" ? "missed" : "not-found"
|
|
1624
1642
|
};
|
|
1625
1643
|
}
|
|
1644
|
+
function subtreeMatchesRequested(node, requested) {
|
|
1645
|
+
for (const child of node.children ?? []) {
|
|
1646
|
+
if (nodeMatchesRequested(child, requested) || subtreeMatchesRequested(child, requested))
|
|
1647
|
+
return true;
|
|
1648
|
+
}
|
|
1649
|
+
return false;
|
|
1650
|
+
}
|
|
1626
1651
|
async function tapCoordinates(bridge, x, y, target) {
|
|
1627
1652
|
return bridge.send({
|
|
1628
1653
|
type: "tap",
|
|
@@ -1921,6 +1946,9 @@ var SimClient = class {
|
|
|
1921
1946
|
this.bridge = bridge;
|
|
1922
1947
|
this.simId = simId;
|
|
1923
1948
|
}
|
|
1949
|
+
get plane() {
|
|
1950
|
+
return this.bridge.plane;
|
|
1951
|
+
}
|
|
1924
1952
|
// --- transport (WsBridge/InspectBridge) ---
|
|
1925
1953
|
send(cmd, opts) {
|
|
1926
1954
|
if (this.closed) {
|