rnxsim 0.1.407 → 0.1.409
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 +11 -10
- package/cli/bin.ts +16 -643
- package/cli/commands/assert.ts +6 -6
- package/cli/commands/box/rnx-command.ts +3 -11
- package/cli/commands/control.ts +3 -9
- package/cli/commands/daemon-mac-app.ts +5 -11
- package/cli/commands/daemon.ts +63 -113
- package/cli/drivers/playwright-provisioning.ts +33 -29
- package/cli/drivers/playwright-sim-host.ts +501 -0
- package/cli/drivers/playwright.ts +35 -522
- package/cli/hints.ts +2 -4
- package/cli/internal-child.ts +176 -0
- package/cli/maestro-js.ts +28 -39
- package/cli/main.ts +645 -0
- package/cli/outbound-endpoints.ts +8 -0
- package/cli/self-invocation.ts +34 -0
- package/dist-lib/agent-daemon-client.cjs +35 -25
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.cjs +35 -25
- 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 +2 -2
- package/dist-lib/capture-contract.mjs +2 -2
- package/dist-lib/cli-constants.cjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -4
- package/dist-lib/cloud-contract.mjs +1 -3
- 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 +25 -15
- 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 +2 -2
- package/dist-lib/jump-to-source-babel.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 +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +134 -608
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/src/agent-daemon-client.ts +2 -2
- package/src/agent-sessions.ts +29 -24
- package/src/capture-contract.ts +3 -0
- package/src/cloud-contract.ts +0 -1
- package/src/vite-plugin.ts +62 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// how this CLI re-invokes itself as a child process.
|
|
2
|
+
//
|
|
3
|
+
// two shapes exist and only the build decides which one is running:
|
|
4
|
+
//
|
|
5
|
+
// standalone the bun-compiled executable IS the entry point. it takes the
|
|
6
|
+
// CLI argv directly and there is no script to hand it.
|
|
7
|
+
// entry script every other shape (dev checkout, the repository dist-cli
|
|
8
|
+
// bundle) runs through the javascript runtime executing now,
|
|
9
|
+
// with the script as its first argument.
|
|
10
|
+
//
|
|
11
|
+
// a presence check cannot tell them apart. inside the compiled binary
|
|
12
|
+
// `process.argv[1]` is a path in bun's virtual filesystem (`/$bunfs/root/...`)
|
|
13
|
+
// that passes `existsSync` in-process, so every site that probed argv[1]
|
|
14
|
+
// re-invoked itself as `rnx <bunfs path> <command>` and the child died on
|
|
15
|
+
// `unknown command`. the build-time constant is the only honest signal.
|
|
16
|
+
|
|
17
|
+
import { rnxPublicBrand } from '../src/public-brand'
|
|
18
|
+
import { IS_STANDALONE } from './standalone'
|
|
19
|
+
|
|
20
|
+
export interface RnxSelfInvocation {
|
|
21
|
+
/** absolute path to spawn. */
|
|
22
|
+
executable: string
|
|
23
|
+
/** arguments that precede the CLI's own argv. */
|
|
24
|
+
prefixArgs: string[]
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function rnxSelfInvocation(): RnxSelfInvocation {
|
|
28
|
+
if (IS_STANDALONE) return { executable: process.execPath, prefixArgs: [] }
|
|
29
|
+
const entry = process.argv[1]
|
|
30
|
+
if (!entry) {
|
|
31
|
+
throw new Error(`could not locate the ${rnxPublicBrand.commandName} entry script`)
|
|
32
|
+
}
|
|
33
|
+
return { executable: process.execPath, prefixArgs: [entry] }
|
|
34
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.409 | (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;
|
|
@@ -47,6 +47,29 @@ var import_ws = require("ws");
|
|
|
47
47
|
var import_node_fs2 = __toESM(require("node:fs"), 1);
|
|
48
48
|
var import_node_path2 = __toESM(require("node:path"), 1);
|
|
49
49
|
|
|
50
|
+
// src/public-brand.ts
|
|
51
|
+
var name = "rnx";
|
|
52
|
+
var rnxPublicBrand = Object.freeze({
|
|
53
|
+
name,
|
|
54
|
+
packageName: "rnxsim",
|
|
55
|
+
commandName: "rnx",
|
|
56
|
+
domain: "rnxsim.com",
|
|
57
|
+
origin: "https://rnxsim.com"
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// cli/standalone.ts
|
|
61
|
+
var IS_STANDALONE = typeof __SOOTSIM_STANDALONE__ !== "undefined" && __SOOTSIM_STANDALONE__;
|
|
62
|
+
|
|
63
|
+
// cli/self-invocation.ts
|
|
64
|
+
function rnxSelfInvocation() {
|
|
65
|
+
if (IS_STANDALONE) return { executable: process.execPath, prefixArgs: [] };
|
|
66
|
+
const entry = process.argv[1];
|
|
67
|
+
if (!entry) {
|
|
68
|
+
throw new Error(`could not locate the ${rnxPublicBrand.commandName} entry script`);
|
|
69
|
+
}
|
|
70
|
+
return { executable: process.execPath, prefixArgs: [entry] };
|
|
71
|
+
}
|
|
72
|
+
|
|
50
73
|
// src/home-paths.ts
|
|
51
74
|
var import_node_fs = __toESM(require("node:fs"), 1);
|
|
52
75
|
var import_node_path = __toESM(require("node:path"), 1);
|
|
@@ -76,21 +99,12 @@ var DAEMON_LOCKFILE_MAX_BYTES = 16 * 1024;
|
|
|
76
99
|
// src/attached-projects.ts
|
|
77
100
|
var COST_HISTORY_MAX_AGE_MS = 14 * 24 * 60 * 60 * 1e3;
|
|
78
101
|
|
|
79
|
-
// src/public-brand.ts
|
|
80
|
-
var name = "rnx";
|
|
81
|
-
var rnxPublicBrand = Object.freeze({
|
|
82
|
-
name,
|
|
83
|
-
packageName: "rnxsim",
|
|
84
|
-
commandName: "rnx",
|
|
85
|
-
domain: "rnxsim.com",
|
|
86
|
-
origin: "https://rnxsim.com"
|
|
87
|
-
});
|
|
88
|
-
|
|
89
102
|
// src/agent-sessions.ts
|
|
90
103
|
function resolveSootsimInvocation() {
|
|
91
104
|
if (process.env.RNX_BIN) {
|
|
92
|
-
return {
|
|
105
|
+
return { executable: process.env.RNX_BIN, prefixArgs: [] };
|
|
93
106
|
}
|
|
107
|
+
if (IS_STANDALONE) return rnxSelfInvocation();
|
|
94
108
|
if (process.versions.electron) {
|
|
95
109
|
const resourcesPath = process.resourcesPath;
|
|
96
110
|
if (resourcesPath) {
|
|
@@ -99,23 +113,19 @@ function resolveSootsimInvocation() {
|
|
|
99
113
|
import_node_path2.default.join(resourcesPath, "bin", `sootsim-${process.platform}-${process.arch}`)
|
|
100
114
|
];
|
|
101
115
|
for (const c of candidates) {
|
|
102
|
-
if (import_node_fs2.default.existsSync(c)) return {
|
|
116
|
+
if (import_node_fs2.default.existsSync(c)) return { executable: c, prefixArgs: [] };
|
|
103
117
|
}
|
|
104
118
|
}
|
|
105
119
|
}
|
|
106
120
|
const workspace = tryWorkspaceSootsim();
|
|
107
121
|
if (workspace) return workspace;
|
|
108
|
-
const argv0 = process.argv[0];
|
|
109
122
|
const argv1 = process.argv[1];
|
|
110
123
|
if (argv1 && /\.(ts|tsx|mjs|cjs|js)$/.test(argv1)) {
|
|
111
|
-
return {
|
|
124
|
+
return { executable: process.argv[0], prefixArgs: [argv1] };
|
|
112
125
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
return { cmd: argv0, prefixArgs: [] };
|
|
126
|
+
throw new Error(
|
|
127
|
+
"rnx CLI not found. set RNX_BIN to the path of the rnx binary, or build the workspace CLI via `bun run --cwd packages/sootsim build:cli`."
|
|
128
|
+
);
|
|
119
129
|
}
|
|
120
130
|
function tryWorkspaceSootsim() {
|
|
121
131
|
try {
|
|
@@ -123,7 +133,7 @@ function tryWorkspaceSootsim() {
|
|
|
123
133
|
if (!sootsimDir) return null;
|
|
124
134
|
const binaryName = `rnx-${process.platform === "win32" ? "windows" : process.platform}-${process.arch}${process.platform === "win32" ? ".exe" : ""}`;
|
|
125
135
|
const distBinary = import_node_path2.default.join(sootsimDir, "dist-bin", binaryName);
|
|
126
|
-
if (import_node_fs2.default.existsSync(distBinary)) return {
|
|
136
|
+
if (import_node_fs2.default.existsSync(distBinary)) return { executable: distBinary, prefixArgs: [] };
|
|
127
137
|
const distBin = import_node_path2.default.join(sootsimDir, "dist-cli", "bin.js");
|
|
128
138
|
if (import_node_fs2.default.existsSync(distBin)) {
|
|
129
139
|
try {
|
|
@@ -139,7 +149,7 @@ function tryWorkspaceSootsim() {
|
|
|
139
149
|
}
|
|
140
150
|
} catch {
|
|
141
151
|
}
|
|
142
|
-
return {
|
|
152
|
+
return { executable: process.execPath, prefixArgs: [distBin] };
|
|
143
153
|
}
|
|
144
154
|
return null;
|
|
145
155
|
} catch {
|
|
@@ -422,12 +432,12 @@ async function ensureDaemonRunning(opts = {}) {
|
|
|
422
432
|
"DEV_HOST_REFUSED"
|
|
423
433
|
);
|
|
424
434
|
}
|
|
425
|
-
const {
|
|
435
|
+
const { executable, prefixArgs } = resolveSootsimInvocation();
|
|
426
436
|
const args = [...prefixArgs, "serve", "--quiet"];
|
|
427
437
|
if (port !== DEFAULT_SOOTSIM_BRIDGE_PORT) {
|
|
428
438
|
args.push("--port", String(port));
|
|
429
439
|
}
|
|
430
|
-
const child = (0, import_node_child_process.spawn)(
|
|
440
|
+
const child = (0, import_node_child_process.spawn)(executable, args, {
|
|
431
441
|
detached: true,
|
|
432
442
|
stdio: "ignore",
|
|
433
443
|
env: process.env,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.409 | (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.409 | (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.409 | (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;
|
|
@@ -52,6 +52,29 @@ var import_node_fs2 = __toESM(require("node:fs"), 1);
|
|
|
52
52
|
var import_node_path3 = __toESM(require("node:path"), 1);
|
|
53
53
|
var import_node_readline = __toESM(require("node:readline"), 1);
|
|
54
54
|
|
|
55
|
+
// src/public-brand.ts
|
|
56
|
+
var name = "rnx";
|
|
57
|
+
var rnxPublicBrand = Object.freeze({
|
|
58
|
+
name,
|
|
59
|
+
packageName: "rnxsim",
|
|
60
|
+
commandName: "rnx",
|
|
61
|
+
domain: "rnxsim.com",
|
|
62
|
+
origin: "https://rnxsim.com"
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
// cli/standalone.ts
|
|
66
|
+
var IS_STANDALONE = typeof __SOOTSIM_STANDALONE__ !== "undefined" && __SOOTSIM_STANDALONE__;
|
|
67
|
+
|
|
68
|
+
// cli/self-invocation.ts
|
|
69
|
+
function rnxSelfInvocation() {
|
|
70
|
+
if (IS_STANDALONE) return { executable: process.execPath, prefixArgs: [] };
|
|
71
|
+
const entry = process.argv[1];
|
|
72
|
+
if (!entry) {
|
|
73
|
+
throw new Error(`could not locate the ${rnxPublicBrand.commandName} entry script`);
|
|
74
|
+
}
|
|
75
|
+
return { executable: process.execPath, prefixArgs: [entry] };
|
|
76
|
+
}
|
|
77
|
+
|
|
55
78
|
// src/agent-events.ts
|
|
56
79
|
function isAgentEvent(value) {
|
|
57
80
|
if (!value || typeof value !== "object") return false;
|
|
@@ -275,16 +298,6 @@ function updateSessionStatus(id, patch) {
|
|
|
275
298
|
updateSessionStatuses([{ id, patch }]);
|
|
276
299
|
}
|
|
277
300
|
|
|
278
|
-
// src/public-brand.ts
|
|
279
|
-
var name = "rnx";
|
|
280
|
-
var rnxPublicBrand = Object.freeze({
|
|
281
|
-
name,
|
|
282
|
-
packageName: "rnxsim",
|
|
283
|
-
commandName: "rnx",
|
|
284
|
-
domain: "rnxsim.com",
|
|
285
|
-
origin: "https://rnxsim.com"
|
|
286
|
-
});
|
|
287
|
-
|
|
288
301
|
// src/agent-sessions.ts
|
|
289
302
|
function sessionDir(sessionId) {
|
|
290
303
|
return import_node_path3.default.join(getUserDataDir(), "sessions", sessionId);
|
|
@@ -312,8 +325,9 @@ function pidIsAlive(pid, sessionId) {
|
|
|
312
325
|
}
|
|
313
326
|
function resolveSootsimInvocation() {
|
|
314
327
|
if (process.env.RNX_BIN) {
|
|
315
|
-
return {
|
|
328
|
+
return { executable: process.env.RNX_BIN, prefixArgs: [] };
|
|
316
329
|
}
|
|
330
|
+
if (IS_STANDALONE) return rnxSelfInvocation();
|
|
317
331
|
if (process.versions.electron) {
|
|
318
332
|
const resourcesPath = process.resourcesPath;
|
|
319
333
|
if (resourcesPath) {
|
|
@@ -322,23 +336,19 @@ function resolveSootsimInvocation() {
|
|
|
322
336
|
import_node_path3.default.join(resourcesPath, "bin", `sootsim-${process.platform}-${process.arch}`)
|
|
323
337
|
];
|
|
324
338
|
for (const c of candidates) {
|
|
325
|
-
if (import_node_fs2.default.existsSync(c)) return {
|
|
339
|
+
if (import_node_fs2.default.existsSync(c)) return { executable: c, prefixArgs: [] };
|
|
326
340
|
}
|
|
327
341
|
}
|
|
328
342
|
}
|
|
329
343
|
const workspace = tryWorkspaceSootsim();
|
|
330
344
|
if (workspace) return workspace;
|
|
331
|
-
const argv0 = process.argv[0];
|
|
332
345
|
const argv1 = process.argv[1];
|
|
333
346
|
if (argv1 && /\.(ts|tsx|mjs|cjs|js)$/.test(argv1)) {
|
|
334
|
-
return {
|
|
335
|
-
}
|
|
336
|
-
if (!argv1 || argv1.includes("/.bin/")) {
|
|
337
|
-
throw new Error(
|
|
338
|
-
"rnx CLI not found. set RNX_BIN to the path of the rnx binary, or build the workspace CLI via `bun run --cwd packages/sootsim build:cli`."
|
|
339
|
-
);
|
|
347
|
+
return { executable: process.argv[0], prefixArgs: [argv1] };
|
|
340
348
|
}
|
|
341
|
-
|
|
349
|
+
throw new Error(
|
|
350
|
+
"rnx CLI not found. set RNX_BIN to the path of the rnx binary, or build the workspace CLI via `bun run --cwd packages/sootsim build:cli`."
|
|
351
|
+
);
|
|
342
352
|
}
|
|
343
353
|
function tryWorkspaceSootsim() {
|
|
344
354
|
try {
|
|
@@ -346,7 +356,7 @@ function tryWorkspaceSootsim() {
|
|
|
346
356
|
if (!sootsimDir) return null;
|
|
347
357
|
const binaryName = `rnx-${process.platform === "win32" ? "windows" : process.platform}-${process.arch}${process.platform === "win32" ? ".exe" : ""}`;
|
|
348
358
|
const distBinary = import_node_path3.default.join(sootsimDir, "dist-bin", binaryName);
|
|
349
|
-
if (import_node_fs2.default.existsSync(distBinary)) return {
|
|
359
|
+
if (import_node_fs2.default.existsSync(distBinary)) return { executable: distBinary, prefixArgs: [] };
|
|
350
360
|
const distBin = import_node_path3.default.join(sootsimDir, "dist-cli", "bin.js");
|
|
351
361
|
if (import_node_fs2.default.existsSync(distBin)) {
|
|
352
362
|
try {
|
|
@@ -362,7 +372,7 @@ function tryWorkspaceSootsim() {
|
|
|
362
372
|
}
|
|
363
373
|
} catch {
|
|
364
374
|
}
|
|
365
|
-
return {
|
|
375
|
+
return { executable: process.execPath, prefixArgs: [distBin] };
|
|
366
376
|
}
|
|
367
377
|
return null;
|
|
368
378
|
} catch {
|
|
@@ -531,7 +541,7 @@ async function startSession(opts) {
|
|
|
531
541
|
import_node_fs2.default.chmodSync(transcriptDir, 448);
|
|
532
542
|
} catch {
|
|
533
543
|
}
|
|
534
|
-
const {
|
|
544
|
+
const { executable, prefixArgs } = resolveSootsimInvocation();
|
|
535
545
|
const wrapperArgs = [
|
|
536
546
|
...prefixArgs,
|
|
537
547
|
"agent-wrapper",
|
|
@@ -556,7 +566,7 @@ async function startSession(opts) {
|
|
|
556
566
|
if (claudeSessionUuid) {
|
|
557
567
|
wrapperArgs.push("--claude-session-uuid", claudeSessionUuid);
|
|
558
568
|
}
|
|
559
|
-
const child = (0, import_node_child_process.spawn)(
|
|
569
|
+
const child = (0, import_node_child_process.spawn)(executable, wrapperArgs, {
|
|
560
570
|
detached: true,
|
|
561
571
|
stdio: "ignore",
|
|
562
572
|
env: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.409 | (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.409 | (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.409 | (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.409 | (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.409 | (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.409 | (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.409 | (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.409 | (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;
|
|
@@ -190,7 +190,7 @@ function isRnxScreenCapture(value) {
|
|
|
190
190
|
}
|
|
191
191
|
const tree = value.tree;
|
|
192
192
|
const visual = value.visual;
|
|
193
|
-
return captureRecord(tree.viewport) && captureInteger(tree.viewport.width) && tree.viewport.width > 0 && captureInteger(tree.viewport.height) && tree.viewport.height > 0 && captureInteger(tree.rootNodeId) && Array.isArray(tree.nodes) && tree.nodes.every(captureNode) && (visual === void 0 || visual.kind === "png" && (visual.producer === "headless-cpu-app-surface" || visual.producer === "browser-compositor-app-surface") && typeof visual.dataUri === "string" && visual.dataUri.startsWith("data:image/png;base64,") && captureInteger(visual.pixelWidth) && visual.pixelWidth > 0 && captureInteger(visual.pixelHeight) && visual.pixelHeight > 0);
|
|
193
|
+
return captureRecord(tree.viewport) && captureInteger(tree.viewport.width) && tree.viewport.width > 0 && captureInteger(tree.viewport.height) && tree.viewport.height > 0 && captureInteger(tree.rootNodeId) && (tree.commitRevision === void 0 || captureInteger(tree.commitRevision)) && Array.isArray(tree.nodes) && tree.nodes.every(captureNode) && (visual === void 0 || visual.kind === "png" && (visual.producer === "headless-cpu-app-surface" || visual.producer === "browser-compositor-app-surface") && typeof visual.dataUri === "string" && visual.dataUri.startsWith("data:image/png;base64,") && captureInteger(visual.pixelWidth) && visual.pixelWidth > 0 && captureInteger(visual.pixelHeight) && visual.pixelHeight > 0);
|
|
194
194
|
}
|
|
195
195
|
function isRnxCaptureRegionAtlas(value) {
|
|
196
196
|
if (!captureRecord(value) || value.kind !== "png-atlas" || value.producer !== "headless-cpu-app-surface" || typeof value.dataUri !== "string" || !value.dataUri.startsWith("data:image/png;base64,") || !captureNumber(value.width) || value.width <= 0 || !captureNumber(value.height) || value.height <= 0 || !captureInteger(value.pixelWidth) || value.pixelWidth <= 0 || !captureInteger(value.pixelHeight) || value.pixelHeight <= 0 || !Array.isArray(value.regions) || value.regions.length === 0 || value.regions.length > 256) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.409 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/capture-contract.ts
|
|
4
4
|
var RNX_SCREEN_CAPTURE_VERSION = 1;
|
|
@@ -161,7 +161,7 @@ function isRnxScreenCapture(value) {
|
|
|
161
161
|
}
|
|
162
162
|
const tree = value.tree;
|
|
163
163
|
const visual = value.visual;
|
|
164
|
-
return captureRecord(tree.viewport) && captureInteger(tree.viewport.width) && tree.viewport.width > 0 && captureInteger(tree.viewport.height) && tree.viewport.height > 0 && captureInteger(tree.rootNodeId) && Array.isArray(tree.nodes) && tree.nodes.every(captureNode) && (visual === void 0 || visual.kind === "png" && (visual.producer === "headless-cpu-app-surface" || visual.producer === "browser-compositor-app-surface") && typeof visual.dataUri === "string" && visual.dataUri.startsWith("data:image/png;base64,") && captureInteger(visual.pixelWidth) && visual.pixelWidth > 0 && captureInteger(visual.pixelHeight) && visual.pixelHeight > 0);
|
|
164
|
+
return captureRecord(tree.viewport) && captureInteger(tree.viewport.width) && tree.viewport.width > 0 && captureInteger(tree.viewport.height) && tree.viewport.height > 0 && captureInteger(tree.rootNodeId) && (tree.commitRevision === void 0 || captureInteger(tree.commitRevision)) && Array.isArray(tree.nodes) && tree.nodes.every(captureNode) && (visual === void 0 || visual.kind === "png" && (visual.producer === "headless-cpu-app-surface" || visual.producer === "browser-compositor-app-surface") && typeof visual.dataUri === "string" && visual.dataUri.startsWith("data:image/png;base64,") && captureInteger(visual.pixelWidth) && visual.pixelWidth > 0 && captureInteger(visual.pixelHeight) && visual.pixelHeight > 0);
|
|
165
165
|
}
|
|
166
166
|
function isRnxCaptureRegionAtlas(value) {
|
|
167
167
|
if (!captureRecord(value) || value.kind !== "png-atlas" || value.producer !== "headless-cpu-app-surface" || typeof value.dataUri !== "string" || !value.dataUri.startsWith("data:image/png;base64,") || !captureNumber(value.width) || value.width <= 0 || !captureNumber(value.height) || value.height <= 0 || !captureInteger(value.pixelWidth) || value.pixelWidth <= 0 || !captureInteger(value.pixelHeight) || value.pixelHeight <= 0 || !Array.isArray(value.regions) || value.regions.length === 0 || value.regions.length > 256) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.409 | (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.409 | (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,13 +25,11 @@ __export(cloud_contract_exports, {
|
|
|
25
25
|
RNX_CLOUD_COMMAND_TYPES: () => RNX_CLOUD_COMMAND_TYPES,
|
|
26
26
|
RNX_CLOUD_DESIGN_MAX_STORAGE_BYTES: () => RNX_CLOUD_DESIGN_MAX_STORAGE_BYTES,
|
|
27
27
|
RNX_CLOUD_DESIGN_MAX_STORAGE_ENTRIES: () => RNX_CLOUD_DESIGN_MAX_STORAGE_ENTRIES,
|
|
28
|
-
RNX_CLOUD_DESIGN_PARALLEL_JOB_LIMIT: () => RNX_CLOUD_DESIGN_PARALLEL_JOB_LIMIT,
|
|
29
28
|
RNX_CLOUD_MAX_ARTIFACT_BYTES: () => RNX_CLOUD_MAX_ARTIFACT_BYTES,
|
|
30
29
|
isRnxCloudCommandType: () => isRnxCloudCommandType
|
|
31
30
|
});
|
|
32
31
|
module.exports = __toCommonJS(cloud_contract_exports);
|
|
33
32
|
var RNX_CLOUD_MAX_ARTIFACT_BYTES = 20 * 1024 * 1024;
|
|
34
|
-
var RNX_CLOUD_DESIGN_PARALLEL_JOB_LIMIT = 16;
|
|
35
33
|
var RNX_CLOUD_DESIGN_MAX_STORAGE_ENTRIES = 256;
|
|
36
34
|
var RNX_CLOUD_DESIGN_MAX_STORAGE_BYTES = 1024 * 1024;
|
|
37
35
|
var RNX_CLOUD_COMMAND_TYPES = Object.freeze([
|
|
@@ -62,7 +60,6 @@ function isRnxCloudCommandType(value) {
|
|
|
62
60
|
RNX_CLOUD_COMMAND_TYPES,
|
|
63
61
|
RNX_CLOUD_DESIGN_MAX_STORAGE_BYTES,
|
|
64
62
|
RNX_CLOUD_DESIGN_MAX_STORAGE_ENTRIES,
|
|
65
|
-
RNX_CLOUD_DESIGN_PARALLEL_JOB_LIMIT,
|
|
66
63
|
RNX_CLOUD_MAX_ARTIFACT_BYTES,
|
|
67
64
|
isRnxCloudCommandType
|
|
68
65
|
});
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.409 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/cloud-contract.ts
|
|
4
4
|
var RNX_CLOUD_MAX_ARTIFACT_BYTES = 20 * 1024 * 1024;
|
|
5
|
-
var RNX_CLOUD_DESIGN_PARALLEL_JOB_LIMIT = 16;
|
|
6
5
|
var RNX_CLOUD_DESIGN_MAX_STORAGE_ENTRIES = 256;
|
|
7
6
|
var RNX_CLOUD_DESIGN_MAX_STORAGE_BYTES = 1024 * 1024;
|
|
8
7
|
var RNX_CLOUD_COMMAND_TYPES = Object.freeze([
|
|
@@ -32,7 +31,6 @@ export {
|
|
|
32
31
|
RNX_CLOUD_COMMAND_TYPES,
|
|
33
32
|
RNX_CLOUD_DESIGN_MAX_STORAGE_BYTES,
|
|
34
33
|
RNX_CLOUD_DESIGN_MAX_STORAGE_ENTRIES,
|
|
35
|
-
RNX_CLOUD_DESIGN_PARALLEL_JOB_LIMIT,
|
|
36
34
|
RNX_CLOUD_MAX_ARTIFACT_BYTES,
|
|
37
35
|
isRnxCloudCommandType
|
|
38
36
|
};
|
package/dist-lib/config.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.409 | (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.409 | (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.409 | (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.409 | (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.409 | (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;
|
|
@@ -2061,6 +2061,19 @@ var import_node_fs8 = __toESM(require("node:fs"), 1);
|
|
|
2061
2061
|
var import_node_path8 = __toESM(require("node:path"), 1);
|
|
2062
2062
|
var import_node_readline = __toESM(require("node:readline"), 1);
|
|
2063
2063
|
|
|
2064
|
+
// cli/standalone.ts
|
|
2065
|
+
var IS_STANDALONE = typeof __SOOTSIM_STANDALONE__ !== "undefined" && __SOOTSIM_STANDALONE__;
|
|
2066
|
+
|
|
2067
|
+
// cli/self-invocation.ts
|
|
2068
|
+
function rnxSelfInvocation() {
|
|
2069
|
+
if (IS_STANDALONE) return { executable: process.execPath, prefixArgs: [] };
|
|
2070
|
+
const entry = process.argv[1];
|
|
2071
|
+
if (!entry) {
|
|
2072
|
+
throw new Error(`could not locate the ${rnxPublicBrand.commandName} entry script`);
|
|
2073
|
+
}
|
|
2074
|
+
return { executable: process.execPath, prefixArgs: [entry] };
|
|
2075
|
+
}
|
|
2076
|
+
|
|
2064
2077
|
// src/agent-events.ts
|
|
2065
2078
|
function isAgentEvent(value) {
|
|
2066
2079
|
if (!value || typeof value !== "object") return false;
|
|
@@ -2403,8 +2416,9 @@ function pidIsAlive(pid, sessionId) {
|
|
|
2403
2416
|
}
|
|
2404
2417
|
function resolveSootsimInvocation() {
|
|
2405
2418
|
if (process.env.RNX_BIN) {
|
|
2406
|
-
return {
|
|
2419
|
+
return { executable: process.env.RNX_BIN, prefixArgs: [] };
|
|
2407
2420
|
}
|
|
2421
|
+
if (IS_STANDALONE) return rnxSelfInvocation();
|
|
2408
2422
|
if (process.versions.electron) {
|
|
2409
2423
|
const resourcesPath = process.resourcesPath;
|
|
2410
2424
|
if (resourcesPath) {
|
|
@@ -2413,23 +2427,19 @@ function resolveSootsimInvocation() {
|
|
|
2413
2427
|
import_node_path8.default.join(resourcesPath, "bin", `sootsim-${process.platform}-${process.arch}`)
|
|
2414
2428
|
];
|
|
2415
2429
|
for (const c of candidates) {
|
|
2416
|
-
if (import_node_fs8.default.existsSync(c)) return {
|
|
2430
|
+
if (import_node_fs8.default.existsSync(c)) return { executable: c, prefixArgs: [] };
|
|
2417
2431
|
}
|
|
2418
2432
|
}
|
|
2419
2433
|
}
|
|
2420
2434
|
const workspace = tryWorkspaceSootsim();
|
|
2421
2435
|
if (workspace) return workspace;
|
|
2422
|
-
const argv0 = process.argv[0];
|
|
2423
2436
|
const argv1 = process.argv[1];
|
|
2424
2437
|
if (argv1 && /\.(ts|tsx|mjs|cjs|js)$/.test(argv1)) {
|
|
2425
|
-
return {
|
|
2438
|
+
return { executable: process.argv[0], prefixArgs: [argv1] };
|
|
2426
2439
|
}
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
);
|
|
2431
|
-
}
|
|
2432
|
-
return { cmd: argv0, prefixArgs: [] };
|
|
2440
|
+
throw new Error(
|
|
2441
|
+
"rnx CLI not found. set RNX_BIN to the path of the rnx binary, or build the workspace CLI via `bun run --cwd packages/sootsim build:cli`."
|
|
2442
|
+
);
|
|
2433
2443
|
}
|
|
2434
2444
|
function tryWorkspaceSootsim() {
|
|
2435
2445
|
try {
|
|
@@ -2437,7 +2447,7 @@ function tryWorkspaceSootsim() {
|
|
|
2437
2447
|
if (!sootsimDir) return null;
|
|
2438
2448
|
const binaryName = `rnx-${process.platform === "win32" ? "windows" : process.platform}-${process.arch}${process.platform === "win32" ? ".exe" : ""}`;
|
|
2439
2449
|
const distBinary = import_node_path8.default.join(sootsimDir, "dist-bin", binaryName);
|
|
2440
|
-
if (import_node_fs8.default.existsSync(distBinary)) return {
|
|
2450
|
+
if (import_node_fs8.default.existsSync(distBinary)) return { executable: distBinary, prefixArgs: [] };
|
|
2441
2451
|
const distBin = import_node_path8.default.join(sootsimDir, "dist-cli", "bin.js");
|
|
2442
2452
|
if (import_node_fs8.default.existsSync(distBin)) {
|
|
2443
2453
|
try {
|
|
@@ -2453,7 +2463,7 @@ function tryWorkspaceSootsim() {
|
|
|
2453
2463
|
}
|
|
2454
2464
|
} catch {
|
|
2455
2465
|
}
|
|
2456
|
-
return {
|
|
2466
|
+
return { executable: process.execPath, prefixArgs: [distBin] };
|
|
2457
2467
|
}
|
|
2458
2468
|
return null;
|
|
2459
2469
|
} catch {
|
|
@@ -2622,7 +2632,7 @@ async function startSession(opts) {
|
|
|
2622
2632
|
import_node_fs8.default.chmodSync(transcriptDir, 448);
|
|
2623
2633
|
} catch {
|
|
2624
2634
|
}
|
|
2625
|
-
const {
|
|
2635
|
+
const { executable, prefixArgs } = resolveSootsimInvocation();
|
|
2626
2636
|
const wrapperArgs = [
|
|
2627
2637
|
...prefixArgs,
|
|
2628
2638
|
"agent-wrapper",
|
|
@@ -2647,7 +2657,7 @@ async function startSession(opts) {
|
|
|
2647
2657
|
if (claudeSessionUuid) {
|
|
2648
2658
|
wrapperArgs.push("--claude-session-uuid", claudeSessionUuid);
|
|
2649
2659
|
}
|
|
2650
|
-
const child = (0, import_node_child_process2.spawn)(
|
|
2660
|
+
const child = (0, import_node_child_process2.spawn)(executable, wrapperArgs, {
|
|
2651
2661
|
detached: true,
|
|
2652
2662
|
stdio: "ignore",
|
|
2653
2663
|
env: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.409 | (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.409 | (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.409 | (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.409 | (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.409 | (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;
|