peachsim 0.1.570 → 0.1.572
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/LICENSE +1 -1
- package/README.md +108 -108
- package/cli/app-config.ts +1 -1
- package/cli/app-fonts.ts +4 -4
- package/cli/auth.ts +11 -11
- package/cli/bin.ts +4 -4
- package/cli/bridge-flow-runner.ts +28 -20
- package/cli/browser-evals.ts +2 -2
- package/cli/cli-update.ts +6 -6
- package/cli/cloud-client.ts +16 -16
- package/cli/cloud-dispatch.ts +3 -2
- package/cli/cloud-session.ts +12 -12
- package/cli/cloud-test-result-files.ts +97 -0
- package/cli/cloud-test-tunnel.ts +4 -4
- package/cli/command-registry.ts +7 -7
- package/cli/commands/agent-wrapper.ts +7 -7
- package/cli/commands/agent.ts +16 -16
- package/cli/commands/app-fonts.ts +3 -3
- package/cli/commands/assert.ts +10 -10
- package/cli/commands/auth.ts +5 -5
- package/cli/commands/box/checkout-plane.ts +1 -1
- package/cli/commands/box/plane-share.ts +2 -2
- package/cli/commands/box/rnx-command.ts +5 -5
- package/cli/commands/box.ts +38 -38
- package/cli/commands/camera.ts +13 -13
- package/cli/commands/cleanup.ts +13 -13
- package/cli/commands/compat.ts +7 -7
- package/cli/commands/config.ts +5 -5
- package/cli/commands/control.ts +63 -63
- package/cli/commands/cpu-profile.ts +11 -11
- package/cli/commands/daemon-mac-app.ts +10 -10
- package/cli/commands/daemon.ts +29 -27
- package/cli/commands/debug.ts +35 -35
- package/cli/commands/desktop.ts +3 -3
- package/cli/commands/detox.ts +33 -33
- package/cli/commands/device.ts +9 -9
- package/cli/commands/diagnose.ts +17 -17
- package/cli/commands/do-chain.ts +4 -4
- package/cli/commands/electron.ts +9 -9
- package/cli/commands/film.ts +9 -9
- package/cli/commands/flow.ts +49 -49
- package/cli/commands/inspect/core.ts +12 -12
- package/cli/commands/inspect/count.ts +1 -1
- package/cli/commands/inspect/describe.ts +1 -1
- package/cli/commands/inspect/env.ts +2 -2
- package/cli/commands/inspect/find.ts +2 -2
- package/cli/commands/inspect/get-layout.ts +2 -2
- package/cli/commands/inspect/keyboard.ts +1 -1
- package/cli/commands/inspect/list.ts +4 -4
- package/cli/commands/inspect/memory.ts +1 -1
- package/cli/commands/inspect/resolve-target.ts +1 -1
- package/cli/commands/inspect/screens.ts +1 -1
- package/cli/commands/inspect/shared.ts +1 -1
- package/cli/commands/inspect/tree.ts +1 -1
- package/cli/commands/inspect/url.ts +1 -1
- package/cli/commands/inspect/wait-event.ts +5 -5
- package/cli/commands/inspect.ts +82 -82
- package/cli/commands/install-cli.ts +16 -16
- package/cli/commands/install-desktop.ts +26 -26
- package/cli/commands/login.ts +11 -11
- package/cli/commands/maestro-generate.ts +10 -10
- package/cli/commands/maestro.ts +173 -71
- package/cli/commands/mode.ts +4 -4
- package/cli/commands/no-bridge-hint.ts +12 -12
- package/cli/commands/perf.ts +11 -11
- package/cli/commands/permissions.ts +5 -5
- package/cli/commands/platform.ts +21 -21
- package/cli/commands/preview.ts +5 -5
- package/cli/commands/profile.ts +12 -12
- package/cli/commands/react.ts +15 -15
- package/cli/commands/record.ts +31 -31
- package/cli/commands/report-issue.ts +4 -4
- package/cli/commands/reset.ts +2 -2
- package/cli/commands/runtime.ts +23 -23
- package/cli/commands/screenshot-command.ts +2 -2
- package/cli/commands/screenshot-layers.ts +5 -5
- package/cli/commands/screenshot-mode.ts +7 -7
- package/cli/commands/screenshot.ts +24 -24
- package/cli/commands/screenshots-capture.ts +13 -13
- package/cli/commands/screenshots.ts +6 -6
- package/cli/commands/serve.ts +12 -12
- package/cli/commands/setup.ts +25 -25
- package/cli/commands/skills.ts +30 -23
- package/cli/commands/slides.ts +20 -20
- package/cli/commands/state.ts +2 -2
- package/cli/commands/storage.ts +3 -3
- package/cli/commands/telemetry.ts +2 -2
- package/cli/commands/test.ts +176 -18
- package/cli/commands/three-mode.ts +17 -17
- package/cli/commands/timeline.ts +12 -12
- package/cli/commands/upgrade.ts +11 -11
- package/cli/commands/upload.ts +26 -26
- package/cli/commands/version.ts +7 -7
- package/cli/commands/what-happened.ts +20 -20
- package/cli/current-sim.ts +3 -3
- package/cli/desktop-companion.ts +16 -16
- package/cli/drivers/electron.ts +4 -4
- package/cli/drivers/playwright-sim-host.ts +7 -7
- package/cli/drivers/playwright.ts +4 -4
- package/cli/drivers/registry.ts +1 -1
- package/cli/drivers/types.ts +5 -5
- package/cli/flow-export.ts +1 -1
- package/cli/flow-file.ts +5 -5
- package/cli/flow-session.ts +1 -1
- package/cli/help-core.ts +13 -13
- package/cli/hints.ts +14 -14
- package/cli/inspect-notice-state.ts +1 -1
- package/cli/internal-child.ts +2 -2
- package/cli/maestro-js.ts +4 -4
- package/cli/maestro-report.ts +4 -2
- package/cli/main.ts +14 -14
- package/cli/outbound-endpoints.ts +32 -30
- package/cli/parse-args.ts +7 -7
- package/cli/privacy.ts +1 -1
- package/cli/recording-access.ts +10 -10
- package/cli/resolve-assets.ts +2 -2
- package/cli/rnx-in-process.ts +5 -5
- package/cli/run-registry.ts +3 -2
- package/cli/run-rnx-core.ts +3 -3
- package/cli/run-rnx.ts +1 -1
- package/cli/runtime-notes.ts +1 -1
- package/cli/self-invocation.ts +1 -1
- package/cli/send-to-box.ts +1 -1
- package/cli/shell-init.ts +40 -40
- package/cli/ui.ts +1 -1
- package/cli/ws-bridge.ts +22 -22
- package/detox/config-loader.ts +1 -1
- package/detox/index.ts +28 -28
- package/detox/jest-preset.cjs +2 -2
- package/detox/navigation.ts +2 -2
- package/dist-lib/agent-daemon-client.cjs +12 -12
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +2 -2
- package/dist-lib/agent-sessions.cjs +12 -12
- package/dist-lib/attached-projects.cjs +4 -4
- package/dist-lib/auth/shared-session.cjs +4 -4
- 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 -4
- package/dist-lib/bridge-contract-input.cjs +1 -1
- package/dist-lib/bridge-contract-input.mjs +1 -1
- package/dist-lib/bridge-contract.cjs +2 -2
- package/dist-lib/bridge-contract.mjs +2 -2
- 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-test-args.cjs +116 -0
- package/dist-lib/cloud-test-args.mjs +86 -0
- package/dist-lib/cloud.cjs +42 -42
- package/dist-lib/cloud.mjs +42 -42
- package/dist-lib/config.cjs +2 -2
- package/dist-lib/detox/index.cjs +29 -29
- package/dist-lib/detox/jest-preset.cjs +2 -2
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/home-paths.cjs +12 -12
- package/dist-lib/host/bridge-host.cjs +87 -77
- 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 +6 -6
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +63 -73
- 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 +5 -5
- package/dist-lib/menu.mjs +5 -5
- 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 +15 -15
- package/dist-lib/profiles.cjs +4 -4
- package/dist-lib/public-brand.cjs +3 -3
- 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 +2 -1
- package/dist-lib/sdk.cjs +9 -9
- package/dist-lib/sdk.mjs +9 -9
- package/dist-lib/skills.cjs +534 -520
- package/dist-lib/swift-compile.cjs +372 -0
- package/dist-lib/swift-compile.mjs +339 -0
- package/dist-lib/swift-package.cjs +78 -0
- package/dist-lib/swift-package.mjs +52 -0
- package/dist-lib/swift-submit.cjs +1 -1
- package/dist-lib/swift-submit.mjs +1 -1
- package/dist-lib/swift.cjs +1 -1
- package/dist-lib/vite.cjs +479 -161
- package/package.json +22 -1
- package/scripts/dev-server-scanner.ts +4 -3
- package/skills/contrast/SKILL.md +75 -75
- package/skills/{rnx-debug → peach-debug}/SKILL.md +90 -90
- package/skills/{rnx-perf → peach-perf}/SKILL.md +13 -13
- package/skills/{rnx-setup → peach-setup}/SKILL.md +60 -60
- package/skills/{rnx-test → peach-test}/SKILL.md +47 -47
- package/skills/{rnx-visual → peach-visual}/SKILL.md +26 -26
- package/src/agent-daemon-client.ts +5 -5
- package/src/agent-events.ts +1 -1
- package/src/agent-identity.ts +1 -1
- package/src/agent-sessions.ts +13 -13
- package/src/attached-projects.ts +1 -1
- package/src/auth/shared-session.ts +1 -1
- package/src/bridge-constants.ts +3 -3
- package/src/bridge-contract-input.ts +1 -1
- package/src/bridge-contract.ts +3 -3
- package/src/cli-version.ts +6 -6
- package/src/cloud-test-args.ts +100 -0
- package/src/cloud.ts +40 -40
- package/src/config.ts +1 -1
- package/src/connect.ts +6 -6
- package/src/dev-server-open.ts +8 -8
- package/src/disk-cleanup.ts +3 -3
- package/src/home-paths.ts +26 -26
- package/src/host/agent-host.ts +3 -3
- package/src/host/bridge-host.ts +33 -33
- package/src/host/fetch-proxy-handler.ts +1 -1
- package/src/host/plane-host.ts +2 -2
- package/src/host/replacement-module-handler.ts +2 -2
- package/src/menu.ts +2 -2
- package/src/metro-plugin.ts +7 -7
- package/src/metro-production-bundle.ts +2 -2
- package/src/native-dev-bundle-url.ts +2 -2
- package/src/playwright-host-log.ts +1 -1
- package/src/public-brand.ts +2 -2
- package/src/react-native-host-modules.ts +1 -1
- package/src/rolldown-plugin-swift.ts +11 -10
- package/src/runtime-assets.ts +11 -11
- package/src/runtime-delivery.ts +6 -6
- package/src/screenshots/orchestrate.ts +1 -1
- package/src/screenshots/org-deck.ts +1 -1
- package/src/screenshots/schema.ts +2 -2
- package/src/sim-client.ts +1 -1
- package/src/skills/builtin/compat-check.ts +2 -2
- package/src/swift-compile.ts +359 -0
- package/src/swift-package.ts +69 -0
- package/src/swift-submit.ts +3 -2
- package/src/vite-plugin-one.ts +8 -8
- package/src/vite-plugin-swift.ts +106 -110
- package/src/vite-plugin.ts +6 -19
package/dist-lib/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.572 | (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;
|
|
@@ -48,7 +48,7 @@ var import_node_crypto = require("node:crypto");
|
|
|
48
48
|
var import_node_fs = __toESM(require("node:fs"), 1);
|
|
49
49
|
function tagRnxBundleForPlugin(bundleUrl, replacementOrigin, replacementToken, projectRoot, appName) {
|
|
50
50
|
const absolute = /^[a-z][a-z\d+.-]*:\/\//i.test(bundleUrl);
|
|
51
|
-
const url = new URL(bundleUrl, absolute ? void 0 : "http://
|
|
51
|
+
const url = new URL(bundleUrl, absolute ? void 0 : "http://peach.local");
|
|
52
52
|
if (appName) {
|
|
53
53
|
url.searchParams.set("rnxAppName", appName);
|
|
54
54
|
url.searchParams.set(
|
|
@@ -200,7 +200,7 @@ function unsupportedSpecifier(specifier) {
|
|
|
200
200
|
);
|
|
201
201
|
}
|
|
202
202
|
function bridgeDeclaration(name, specifier) {
|
|
203
|
-
const notReady = (what) => JSON.stringify(`[
|
|
203
|
+
const notReady = (what) => JSON.stringify(`[peach] replacement ${what} bridge is not ready`);
|
|
204
204
|
if (specifier === "react") {
|
|
205
205
|
return `const ${name} = ${REACT_BRIDGE}; if (!${name}) throw new Error(${notReady("React")});`;
|
|
206
206
|
}
|
|
@@ -208,12 +208,12 @@ function bridgeDeclaration(name, specifier) {
|
|
|
208
208
|
return `const ${name} = ${REACT_NATIVE_BRIDGE}; if (!${name}) throw new Error(${notReady("React Native")});`;
|
|
209
209
|
}
|
|
210
210
|
if (isContrastKitSpecifier(specifier)) {
|
|
211
|
-
return `const ${name} = (globalThis.__contrast_kit_modules && globalThis.__contrast_kit_modules[${JSON.stringify(specifier)}]) || (${PACKAGE_BRIDGES} || {})[${JSON.stringify(specifier)}]; if (!${name}) throw new Error(${JSON.stringify(`[
|
|
211
|
+
return `const ${name} = (globalThis.__contrast_kit_modules && globalThis.__contrast_kit_modules[${JSON.stringify(specifier)}]) || (${PACKAGE_BRIDGES} || {})[${JSON.stringify(specifier)}]; if (!${name}) throw new Error(${JSON.stringify(`[peach] replacement package bridge ${specifier} is not ready`)});`;
|
|
212
212
|
}
|
|
213
213
|
if (JSX_RUNTIME_SPECIFIERS.has(specifier)) {
|
|
214
214
|
return `const ${name} = (() => { const react = ${REACT_BRIDGE}; if (!react) throw new Error(${notReady("React")}); const jsx = (type, props, key) => react.createElement(type, key === undefined ? props : { ...props, key }); return { Fragment: react.Fragment, jsx, jsxs: jsx, jsxDEV: jsx }; })();`;
|
|
215
215
|
}
|
|
216
|
-
return `const ${name} = (${PACKAGE_BRIDGES} || {})[${JSON.stringify(specifier)}]; if (!${name}) throw new Error(${JSON.stringify(`[
|
|
216
|
+
return `const ${name} = (${PACKAGE_BRIDGES} || {})[${JSON.stringify(specifier)}]; if (!${name}) throw new Error(${JSON.stringify(`[peach] replacement package bridge ${specifier} is not ready`)});`;
|
|
217
217
|
}
|
|
218
218
|
var DEFAULT_INTEROP = "__rnxReplacementDefault";
|
|
219
219
|
var DEFAULT_INTEROP_DECLARATION = `const ${DEFAULT_INTEROP} = (bridge) => (bridge && bridge.__esModule ? bridge.default : bridge);`;
|
|
@@ -382,7 +382,7 @@ function sendJavaScript(req, res, source) {
|
|
|
382
382
|
function isReplacementModuleRequestUrl(rawUrl) {
|
|
383
383
|
if (!rawUrl) return false;
|
|
384
384
|
try {
|
|
385
|
-
const pathname = new URL(rawUrl, "http://
|
|
385
|
+
const pathname = new URL(rawUrl, "http://peach.local").pathname;
|
|
386
386
|
return pathname === REPLACEMENT_MODULE_ROUTE;
|
|
387
387
|
} catch {
|
|
388
388
|
return false;
|
|
@@ -392,7 +392,7 @@ async function handleReplacementModuleRequest(req, res, options = {}) {
|
|
|
392
392
|
const rawUrl = req.url || "";
|
|
393
393
|
let url;
|
|
394
394
|
try {
|
|
395
|
-
url = new URL(rawUrl, "http://
|
|
395
|
+
url = new URL(rawUrl, "http://peach.local");
|
|
396
396
|
} catch {
|
|
397
397
|
return false;
|
|
398
398
|
}
|
|
@@ -542,12 +542,12 @@ function isValidRuntimeVersion(value) {
|
|
|
542
542
|
var import_node_fs2 = __toESM(require("node:fs"), 1);
|
|
543
543
|
var import_node_os = require("node:os");
|
|
544
544
|
var import_node_path2 = __toESM(require("node:path"), 1);
|
|
545
|
-
var
|
|
545
|
+
var PEACH_HOME_ENV = "PEACH_HOME";
|
|
546
546
|
var ACTIVE_RUNTIME_FILE = "active";
|
|
547
547
|
function rnxHomeDir() {
|
|
548
|
-
const override = process.env[
|
|
548
|
+
const override = process.env[PEACH_HOME_ENV];
|
|
549
549
|
if (override && override.length > 0) return import_node_path2.default.resolve(override);
|
|
550
|
-
return import_node_path2.default.join((0, import_node_os.homedir)(), ".
|
|
550
|
+
return import_node_path2.default.join((0, import_node_os.homedir)(), ".peach");
|
|
551
551
|
}
|
|
552
552
|
function runtimesDir() {
|
|
553
553
|
return import_node_path2.default.join(rnxHomeDir(), "runtimes");
|
|
@@ -569,7 +569,7 @@ function readActiveRuntime() {
|
|
|
569
569
|
var DAEMON_LOCKFILE_MAX_BYTES = 16 * 1024;
|
|
570
570
|
|
|
571
571
|
// src/runtime-assets.ts
|
|
572
|
-
var SOOTSIM_RUNTIME_MISSING_MESSAGE = "[
|
|
572
|
+
var SOOTSIM_RUNTIME_MISSING_MESSAGE = "[peach] no engine runtime installed. run `peach runtime install`";
|
|
573
573
|
var _monorepoRootCache;
|
|
574
574
|
function findMonorepoRoot() {
|
|
575
575
|
if (_monorepoRootCache !== void 0) return _monorepoRootCache;
|
|
@@ -585,7 +585,7 @@ function findMonorepoRoot() {
|
|
|
585
585
|
return null;
|
|
586
586
|
}
|
|
587
587
|
function resolveDevCheckoutRuntimeRoot() {
|
|
588
|
-
if (process.env.
|
|
588
|
+
if (process.env.PEACH_HOME && readActiveRuntime()) return null;
|
|
589
589
|
const root = findMonorepoRoot();
|
|
590
590
|
if (!root) return null;
|
|
591
591
|
const devBuild = import_path.default.join(root, "public/sootsim");
|
|
@@ -815,7 +815,7 @@ function withRNX(config) {
|
|
|
815
815
|
try {
|
|
816
816
|
connect = require("connect");
|
|
817
817
|
} catch {
|
|
818
|
-
console.warn("[
|
|
818
|
+
console.warn("[peach] connect not available");
|
|
819
819
|
return middleware;
|
|
820
820
|
}
|
|
821
821
|
const server = connect();
|
|
@@ -874,7 +874,7 @@ function withRNX(config) {
|
|
|
874
874
|
next();
|
|
875
875
|
});
|
|
876
876
|
server.use(middleware);
|
|
877
|
-
console.log(`[
|
|
877
|
+
console.log(`[peach] serving at ${prefix}/`);
|
|
878
878
|
return server;
|
|
879
879
|
}
|
|
880
880
|
};
|
|
@@ -891,7 +891,7 @@ function resolveMetroPort(server) {
|
|
|
891
891
|
const rawPort = inlinePort || splitPort || process.env.RCT_METRO_PORT || server?.port || 8081;
|
|
892
892
|
const port = Number(rawPort);
|
|
893
893
|
if (!Number.isInteger(port) || port <= 0) {
|
|
894
|
-
throw new Error(`
|
|
894
|
+
throw new Error(`peach: Metro port must be a positive integer, got ${rawPort}`);
|
|
895
895
|
}
|
|
896
896
|
return port;
|
|
897
897
|
}
|
package/dist-lib/profiles.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.572 | (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;
|
|
@@ -55,11 +55,11 @@ var import_path = __toESM(require("path"), 1);
|
|
|
55
55
|
var import_node_fs = __toESM(require("node:fs"), 1);
|
|
56
56
|
var import_node_os = require("node:os");
|
|
57
57
|
var import_node_path = __toESM(require("node:path"), 1);
|
|
58
|
-
var
|
|
58
|
+
var PEACH_HOME_ENV = "PEACH_HOME";
|
|
59
59
|
function rnxHomeDir() {
|
|
60
|
-
const override = process.env[
|
|
60
|
+
const override = process.env[PEACH_HOME_ENV];
|
|
61
61
|
if (override && override.length > 0) return import_node_path.default.resolve(override);
|
|
62
|
-
return import_node_path.default.join((0, import_node_os.homedir)(), ".
|
|
62
|
+
return import_node_path.default.join((0, import_node_os.homedir)(), ".peach");
|
|
63
63
|
}
|
|
64
64
|
function runtimesDir() {
|
|
65
65
|
return import_node_path.default.join(rnxHomeDir(), "runtimes");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.572 | (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;
|
|
@@ -25,11 +25,11 @@ __export(public_brand_exports, {
|
|
|
25
25
|
rnxPublicBrand: () => rnxPublicBrand
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(public_brand_exports);
|
|
28
|
-
var name = "
|
|
28
|
+
var name = "Peach";
|
|
29
29
|
var rnxPublicBrand = Object.freeze({
|
|
30
30
|
name,
|
|
31
31
|
packageName: "peachsim",
|
|
32
|
-
commandName: "
|
|
32
|
+
commandName: "peach",
|
|
33
33
|
domain: "rnxsim.com",
|
|
34
34
|
origin: "https://rnxsim.com"
|
|
35
35
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.572 | (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.572 | (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.572 | (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;
|
|
@@ -1100,6 +1100,7 @@ async function probePort(port, buildIconProxyUrl, listeningProcess) {
|
|
|
1100
1100
|
function isSootSimSelfServer(server) {
|
|
1101
1101
|
const bundleId = server.bundleId?.trim().toLowerCase();
|
|
1102
1102
|
if (bundleId?.startsWith("dev.sootsim.")) return true;
|
|
1103
|
+
if (bundleId?.startsWith("dev.peachsim.")) return true;
|
|
1103
1104
|
return false;
|
|
1104
1105
|
}
|
|
1105
1106
|
var __isSootSimSelfServerForTests = isSootSimSelfServer;
|
package/dist-lib/sdk.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.572 | (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;
|
|
@@ -101,7 +101,7 @@ module.exports = __toCommonJS(sdk_exports);
|
|
|
101
101
|
|
|
102
102
|
// src/bridge-contract.ts
|
|
103
103
|
var SEMANTIC_READY_CONTENT_NODE_FLOOR = 100;
|
|
104
|
-
var PUBLIC_NO_NETWORK_MARKER = "public
|
|
104
|
+
var PUBLIC_NO_NETWORK_MARKER = "public Peach Cloud simulators have no network";
|
|
105
105
|
var HEADLESS_TENANT_FETCH_HUNG_MARKER = "headless tenant fetch hung";
|
|
106
106
|
function readyProbeHasContent(probe) {
|
|
107
107
|
return probe.liveFrameActive || probe.targets > 0 || probe.nodes >= SEMANTIC_READY_CONTENT_NODE_FLOOR;
|
|
@@ -500,7 +500,7 @@ function layoutGetNativeEval(opts = {}) {
|
|
|
500
500
|
|
|
501
501
|
const screenshot = window.SootSim && window.SootSim.bridges && window.SootSim.bridges.screenshot
|
|
502
502
|
if (typeof screenshot !== 'function') {
|
|
503
|
-
throw new Error('styled native layout requires the
|
|
503
|
+
throw new Error('styled native layout requires the peach capture bridge')
|
|
504
504
|
}
|
|
505
505
|
const device = list.find((node) => node && node.device)?.device || {}
|
|
506
506
|
const width = Math.round(Number(device.width) || window.innerWidth || 0)
|
|
@@ -713,12 +713,12 @@ function scoreInteractive(n) {
|
|
|
713
713
|
return score;
|
|
714
714
|
}
|
|
715
715
|
function tapCommandForNode(n) {
|
|
716
|
-
if (n.testID) return `
|
|
716
|
+
if (n.testID) return `peach do tap-id ${shellEscape(n.testID)}`;
|
|
717
717
|
const text = typeof n.text === "string" ? n.text.trim() : "";
|
|
718
|
-
if (text.length > 0 && text.length <= 80) return `
|
|
718
|
+
if (text.length > 0 && text.length <= 80) return `peach do tap-text ${shellEscape(text)}`;
|
|
719
719
|
const x = Math.round(((n.absolutePosition?.x ?? 0) + (n.layout?.width ?? 0) / 2) * 10) / 10;
|
|
720
720
|
const y = Math.round(((n.absolutePosition?.y ?? 0) + (n.layout?.height ?? 0) / 2) * 10) / 10;
|
|
721
|
-
return `
|
|
721
|
+
return `peach do tap ${x} ${y}`;
|
|
722
722
|
}
|
|
723
723
|
function shellEscape(value) {
|
|
724
724
|
if (/^[A-Za-z0-9_./@:-]+$/.test(value)) return value;
|
|
@@ -729,7 +729,7 @@ function waitReadyReason(status) {
|
|
|
729
729
|
if (status.bridgeError.includes(HEADLESS_TENANT_FETCH_HUNG_MARKER) || status.bridgeError.includes(PUBLIC_NO_NETWORK_MARKER)) {
|
|
730
730
|
return status.bridgeError;
|
|
731
731
|
}
|
|
732
|
-
return `sim unreachable: ${status.bridgeError} \u2014 the target tab is closed or no sim is connected (check \`
|
|
732
|
+
return `sim unreachable: ${status.bridgeError} \u2014 the target tab is closed or no sim is connected (check \`peach list\`, reopen with \`peach open\`)`;
|
|
733
733
|
}
|
|
734
734
|
const waitingOnGuestFetch = status.externalReady === false && /https?:\/\//.test(status.externalStatus);
|
|
735
735
|
const base = status.externalError ? `guest app errored: ${status.externalError}` : waitingOnGuestFetch ? `waiting on a guest fetch: ${status.externalStatus}` : status.loadingText ? `still showing "${status.loadingText}"` : status.externalReady === false ? "guest app is still loading" : status.flag !== true && status.targets > 0 ? "native content is rendered but the ready signal has not settled" : status.flag !== true ? "guest app has not emitted sootsim:externalAppReady" : status.targets <= 0 ? "ready flag emitted but no visible app content is inspectable yet" : "node tree is still changing";
|
|
@@ -931,7 +931,7 @@ async function inspectLogs(bridge) {
|
|
|
931
931
|
return [
|
|
932
932
|
{
|
|
933
933
|
id: `cloud-${ts}-${index}`,
|
|
934
|
-
source: "
|
|
934
|
+
source: "peach-cloud",
|
|
935
935
|
level,
|
|
936
936
|
ts,
|
|
937
937
|
args: [text],
|
|
@@ -980,7 +980,7 @@ function filterLogEntries(entries, opts = {}) {
|
|
|
980
980
|
if (!opts.showInternal) {
|
|
981
981
|
out = out.filter((e) => {
|
|
982
982
|
const first = e.args[0];
|
|
983
|
-
return !(typeof first === "string" && /^\[(?:
|
|
983
|
+
return !(typeof first === "string" && /^\[(?:peach|sootsim)(?:\s[^\]]*)?\]/.test(first));
|
|
984
984
|
});
|
|
985
985
|
}
|
|
986
986
|
if (opts.level) out = out.filter((e) => opts.level.has(e.level));
|
package/dist-lib/sdk.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.572 | (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);
|
|
5
5
|
|
|
6
6
|
// src/bridge-contract.ts
|
|
7
7
|
var SEMANTIC_READY_CONTENT_NODE_FLOOR = 100;
|
|
8
|
-
var PUBLIC_NO_NETWORK_MARKER = "public
|
|
8
|
+
var PUBLIC_NO_NETWORK_MARKER = "public Peach Cloud simulators have no network";
|
|
9
9
|
var HEADLESS_TENANT_FETCH_HUNG_MARKER = "headless tenant fetch hung";
|
|
10
10
|
function readyProbeHasContent(probe) {
|
|
11
11
|
return probe.liveFrameActive || probe.targets > 0 || probe.nodes >= SEMANTIC_READY_CONTENT_NODE_FLOOR;
|
|
@@ -404,7 +404,7 @@ function layoutGetNativeEval(opts = {}) {
|
|
|
404
404
|
|
|
405
405
|
const screenshot = window.SootSim && window.SootSim.bridges && window.SootSim.bridges.screenshot
|
|
406
406
|
if (typeof screenshot !== 'function') {
|
|
407
|
-
throw new Error('styled native layout requires the
|
|
407
|
+
throw new Error('styled native layout requires the peach capture bridge')
|
|
408
408
|
}
|
|
409
409
|
const device = list.find((node) => node && node.device)?.device || {}
|
|
410
410
|
const width = Math.round(Number(device.width) || window.innerWidth || 0)
|
|
@@ -617,12 +617,12 @@ function scoreInteractive(n) {
|
|
|
617
617
|
return score;
|
|
618
618
|
}
|
|
619
619
|
function tapCommandForNode(n) {
|
|
620
|
-
if (n.testID) return `
|
|
620
|
+
if (n.testID) return `peach do tap-id ${shellEscape(n.testID)}`;
|
|
621
621
|
const text = typeof n.text === "string" ? n.text.trim() : "";
|
|
622
|
-
if (text.length > 0 && text.length <= 80) return `
|
|
622
|
+
if (text.length > 0 && text.length <= 80) return `peach do tap-text ${shellEscape(text)}`;
|
|
623
623
|
const x = Math.round(((n.absolutePosition?.x ?? 0) + (n.layout?.width ?? 0) / 2) * 10) / 10;
|
|
624
624
|
const y = Math.round(((n.absolutePosition?.y ?? 0) + (n.layout?.height ?? 0) / 2) * 10) / 10;
|
|
625
|
-
return `
|
|
625
|
+
return `peach do tap ${x} ${y}`;
|
|
626
626
|
}
|
|
627
627
|
function shellEscape(value) {
|
|
628
628
|
if (/^[A-Za-z0-9_./@:-]+$/.test(value)) return value;
|
|
@@ -633,7 +633,7 @@ function waitReadyReason(status) {
|
|
|
633
633
|
if (status.bridgeError.includes(HEADLESS_TENANT_FETCH_HUNG_MARKER) || status.bridgeError.includes(PUBLIC_NO_NETWORK_MARKER)) {
|
|
634
634
|
return status.bridgeError;
|
|
635
635
|
}
|
|
636
|
-
return `sim unreachable: ${status.bridgeError} \u2014 the target tab is closed or no sim is connected (check \`
|
|
636
|
+
return `sim unreachable: ${status.bridgeError} \u2014 the target tab is closed or no sim is connected (check \`peach list\`, reopen with \`peach open\`)`;
|
|
637
637
|
}
|
|
638
638
|
const waitingOnGuestFetch = status.externalReady === false && /https?:\/\//.test(status.externalStatus);
|
|
639
639
|
const base = status.externalError ? `guest app errored: ${status.externalError}` : waitingOnGuestFetch ? `waiting on a guest fetch: ${status.externalStatus}` : status.loadingText ? `still showing "${status.loadingText}"` : status.externalReady === false ? "guest app is still loading" : status.flag !== true && status.targets > 0 ? "native content is rendered but the ready signal has not settled" : status.flag !== true ? "guest app has not emitted sootsim:externalAppReady" : status.targets <= 0 ? "ready flag emitted but no visible app content is inspectable yet" : "node tree is still changing";
|
|
@@ -835,7 +835,7 @@ async function inspectLogs(bridge) {
|
|
|
835
835
|
return [
|
|
836
836
|
{
|
|
837
837
|
id: `cloud-${ts}-${index}`,
|
|
838
|
-
source: "
|
|
838
|
+
source: "peach-cloud",
|
|
839
839
|
level,
|
|
840
840
|
ts,
|
|
841
841
|
args: [text],
|
|
@@ -884,7 +884,7 @@ function filterLogEntries(entries, opts = {}) {
|
|
|
884
884
|
if (!opts.showInternal) {
|
|
885
885
|
out = out.filter((e) => {
|
|
886
886
|
const first = e.args[0];
|
|
887
|
-
return !(typeof first === "string" && /^\[(?:
|
|
887
|
+
return !(typeof first === "string" && /^\[(?:peach|sootsim)(?:\s[^\]]*)?\]/.test(first));
|
|
888
888
|
});
|
|
889
889
|
}
|
|
890
890
|
if (opts.level) out = out.filter((e) => opts.level.has(e.level));
|