peachsim 0.1.626 → 0.1.627
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 +3 -2
- package/cli/commands/box/bundle-plane.ts +7 -2
- package/cli/commands/box.ts +9 -2
- package/cli/commands/control.ts +32 -1
- package/cli/commands/flow.ts +17 -6
- package/cli/commands/maestro-generate.ts +5 -12
- package/cli/commands/maestro.ts +16 -6
- package/cli/commands/platform.ts +1 -0
- package/cli/commands/test.ts +14 -0
- package/cli/commands/upload.ts +18 -8
- package/cli/drivers/playwright-sim-host.ts +10 -3
- package/cli/drivers/playwright.ts +8 -5
- package/cli/run-rnx.ts +8 -4
- package/dist-lib/agent-daemon-client.cjs +2 -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 +4 -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 +18 -8
- package/dist-lib/capture-contract.mjs +18 -8
- 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-test-args.cjs +1 -1
- package/dist-lib/cloud-test-args.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 +239 -102
- 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 +19 -8
- 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 +215 -28
- package/dist-lib/sdk.cjs +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +292 -128
- package/dist-lib/swift-compile.cjs +1 -1
- package/dist-lib/swift-compile.mjs +1 -1
- package/dist-lib/swift-package.cjs +1 -1
- package/dist-lib/swift-package.mjs +1 -1
- package/dist-lib/swift-submit.cjs +1 -1
- package/dist-lib/swift-submit.mjs +1 -1
- package/dist-lib/swift.cjs +14488 -14349
- package/dist-lib/vite-kotlin.cjs +1 -1
- package/dist-lib/vite-swift.cjs +1 -1
- package/dist-lib/vite.cjs +2 -1
- package/install.mjs +16 -0
- package/install.sh +199 -0
- package/package.json +6 -1
- package/scripts/dev-server-scanner.ts +77 -46
- package/src/bridge-constants.ts +11 -0
- package/src/capture-contract.ts +40 -7
- package/src/host/bridge-host.ts +24 -103
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.627 | (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;
|
|
@@ -32,13 +32,18 @@ __export(capture_contract_exports, {
|
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(capture_contract_exports);
|
|
34
34
|
var RNX_SCREEN_CAPTURE_VERSION = 1;
|
|
35
|
+
function isLiveRasterSource(node) {
|
|
36
|
+
const source = node.props?.source;
|
|
37
|
+
return node.type === "image" && !!source && typeof source === "object" && "uri" in source && typeof source.uri === "string" && source.uri.startsWith("live:");
|
|
38
|
+
}
|
|
35
39
|
function selectRnxRasterNodeIds(tree) {
|
|
36
40
|
const nodesById = new Map(tree.nodes.map((node) => [node.nodeId, node]));
|
|
37
41
|
const unsupported = /* @__PURE__ */ new Set();
|
|
38
42
|
for (const node of tree.nodes) {
|
|
39
|
-
const
|
|
43
|
+
const liveVideo = isLiveRasterSource(node);
|
|
44
|
+
const visibleFrame = liveVideo && node.visibleFrame && (node.visibleFrame.width <= 0 || node.visibleFrame.height <= 0) ? node.frame : node.visibleFrame ?? node.frame;
|
|
40
45
|
if (!visibleFrame || visibleFrame.width <= 0 || visibleFrame.height <= 0) continue;
|
|
41
|
-
if (node.type === "masked-view" || node.type === "text" && typeof node.text === "string" && (new RegExp("\\p{Emoji_Presentation}", "u").test(node.text) || new RegExp("\\uFE0F|\\u200D|\\u20E3|\\p{Emoji_Modifier}|\\p{Regional_Indicator}", "u").test(
|
|
46
|
+
if (node.type === "masked-view" || liveVideo || node.type === "text" && typeof node.text === "string" && (new RegExp("\\p{Emoji_Presentation}", "u").test(node.text) || new RegExp("\\uFE0F|\\u200D|\\u20E3|\\p{Emoji_Modifier}|\\p{Regional_Indicator}", "u").test(
|
|
42
47
|
node.text
|
|
43
48
|
)) || node.style._liquidGlass !== void 0 || node.style._liquidGlassEdge !== void 0 || node.style._liquidGlassMaterialTint !== void 0) {
|
|
44
49
|
unsupported.add(node.nodeId);
|
|
@@ -56,17 +61,21 @@ function selectRnxRasterNodeIds(tree) {
|
|
|
56
61
|
}
|
|
57
62
|
const screenArea = tree.width * tree.height;
|
|
58
63
|
const maxLayerArea = screenArea * 0.25;
|
|
59
|
-
const maxAtlasArea = screenArea * 0.5;
|
|
60
64
|
const candidates = [...unsupported].map((nodeId) => {
|
|
61
65
|
const node = nodesById.get(nodeId);
|
|
62
|
-
|
|
63
|
-
|
|
66
|
+
if (!node) return null;
|
|
67
|
+
const liveVideo = isLiveRasterSource(node);
|
|
68
|
+
const frame = liveVideo && node.visibleFrame && (node.visibleFrame.width <= 0 || node.visibleFrame.height <= 0) ? node.frame : node.visibleFrame ?? node.frame;
|
|
69
|
+
return frame ? { nodeId, area: frame.width * frame.height, liveVideo } : null;
|
|
64
70
|
}).filter(
|
|
65
|
-
(candidate) => candidate !== null && candidate.area <= maxLayerArea
|
|
66
|
-
).sort(
|
|
71
|
+
(candidate) => candidate !== null && (candidate.liveVideo || candidate.area <= maxLayerArea)
|
|
72
|
+
).sort(
|
|
73
|
+
(left, right) => Number(right.liveVideo) - Number(left.liveVideo) || left.area - right.area || left.nodeId - right.nodeId
|
|
74
|
+
);
|
|
67
75
|
const selected = /* @__PURE__ */ new Set();
|
|
68
76
|
let atlasArea = 0;
|
|
69
77
|
for (const candidate of candidates) {
|
|
78
|
+
const maxAtlasArea = screenArea * (candidate.liveVideo ? 1 : 0.5);
|
|
70
79
|
if (atlasArea + candidate.area > maxAtlasArea) continue;
|
|
71
80
|
selected.add(candidate.nodeId);
|
|
72
81
|
atlasArea += candidate.area;
|
|
@@ -147,6 +156,7 @@ function rnxCaptureRasterRegions(capture) {
|
|
|
147
156
|
nodeId: node.nodeId,
|
|
148
157
|
parentNodeId: node.parentNodeId,
|
|
149
158
|
type: node.type,
|
|
159
|
+
props: node.props,
|
|
150
160
|
text: node.text,
|
|
151
161
|
style: node.style.resolved,
|
|
152
162
|
layout: node.layout.local,
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.627 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/capture-contract.ts
|
|
4
4
|
var RNX_SCREEN_CAPTURE_VERSION = 1;
|
|
5
|
+
function isLiveRasterSource(node) {
|
|
6
|
+
const source = node.props?.source;
|
|
7
|
+
return node.type === "image" && !!source && typeof source === "object" && "uri" in source && typeof source.uri === "string" && source.uri.startsWith("live:");
|
|
8
|
+
}
|
|
5
9
|
function selectRnxRasterNodeIds(tree) {
|
|
6
10
|
const nodesById = new Map(tree.nodes.map((node) => [node.nodeId, node]));
|
|
7
11
|
const unsupported = /* @__PURE__ */ new Set();
|
|
8
12
|
for (const node of tree.nodes) {
|
|
9
|
-
const
|
|
13
|
+
const liveVideo = isLiveRasterSource(node);
|
|
14
|
+
const visibleFrame = liveVideo && node.visibleFrame && (node.visibleFrame.width <= 0 || node.visibleFrame.height <= 0) ? node.frame : node.visibleFrame ?? node.frame;
|
|
10
15
|
if (!visibleFrame || visibleFrame.width <= 0 || visibleFrame.height <= 0) continue;
|
|
11
|
-
if (node.type === "masked-view" || node.type === "text" && typeof node.text === "string" && (/\p{Emoji_Presentation}/u.test(node.text) || /\uFE0F|\u200D|\u20E3|\p{Emoji_Modifier}|\p{Regional_Indicator}/u.test(
|
|
16
|
+
if (node.type === "masked-view" || liveVideo || node.type === "text" && typeof node.text === "string" && (/\p{Emoji_Presentation}/u.test(node.text) || /\uFE0F|\u200D|\u20E3|\p{Emoji_Modifier}|\p{Regional_Indicator}/u.test(
|
|
12
17
|
node.text
|
|
13
18
|
)) || node.style._liquidGlass !== void 0 || node.style._liquidGlassEdge !== void 0 || node.style._liquidGlassMaterialTint !== void 0) {
|
|
14
19
|
unsupported.add(node.nodeId);
|
|
@@ -26,17 +31,21 @@ function selectRnxRasterNodeIds(tree) {
|
|
|
26
31
|
}
|
|
27
32
|
const screenArea = tree.width * tree.height;
|
|
28
33
|
const maxLayerArea = screenArea * 0.25;
|
|
29
|
-
const maxAtlasArea = screenArea * 0.5;
|
|
30
34
|
const candidates = [...unsupported].map((nodeId) => {
|
|
31
35
|
const node = nodesById.get(nodeId);
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
if (!node) return null;
|
|
37
|
+
const liveVideo = isLiveRasterSource(node);
|
|
38
|
+
const frame = liveVideo && node.visibleFrame && (node.visibleFrame.width <= 0 || node.visibleFrame.height <= 0) ? node.frame : node.visibleFrame ?? node.frame;
|
|
39
|
+
return frame ? { nodeId, area: frame.width * frame.height, liveVideo } : null;
|
|
34
40
|
}).filter(
|
|
35
|
-
(candidate) => candidate !== null && candidate.area <= maxLayerArea
|
|
36
|
-
).sort(
|
|
41
|
+
(candidate) => candidate !== null && (candidate.liveVideo || candidate.area <= maxLayerArea)
|
|
42
|
+
).sort(
|
|
43
|
+
(left, right) => Number(right.liveVideo) - Number(left.liveVideo) || left.area - right.area || left.nodeId - right.nodeId
|
|
44
|
+
);
|
|
37
45
|
const selected = /* @__PURE__ */ new Set();
|
|
38
46
|
let atlasArea = 0;
|
|
39
47
|
for (const candidate of candidates) {
|
|
48
|
+
const maxAtlasArea = screenArea * (candidate.liveVideo ? 1 : 0.5);
|
|
40
49
|
if (atlasArea + candidate.area > maxAtlasArea) continue;
|
|
41
50
|
selected.add(candidate.nodeId);
|
|
42
51
|
atlasArea += candidate.area;
|
|
@@ -117,6 +126,7 @@ function rnxCaptureRasterRegions(capture) {
|
|
|
117
126
|
nodeId: node.nodeId,
|
|
118
127
|
parentNodeId: node.parentNodeId,
|
|
119
128
|
type: node.type,
|
|
129
|
+
props: node.props,
|
|
120
130
|
text: node.text,
|
|
121
131
|
style: node.style.resolved,
|
|
122
132
|
layout: node.layout.local,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.627 | (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.627 | (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.627 | (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.627 | (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.627 | (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.627 | (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.627 | (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.627 | (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.627 | (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;
|