peachsim 0.1.662 → 0.1.664
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/control.ts +9 -17
- package/cli/commands/inspect/core.ts +44 -23
- package/cli/commands/inspect/settling.ts +54 -1
- package/cli/commands/inspect/wait-ready.ts +40 -70
- 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 +6 -1
- package/dist-lib/bridge-contract.mjs +5 -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-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 +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 +16 -17
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/kotlin-host.cjs +13 -7
- 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/native-app-identity.cjs +1 -1
- package/dist-lib/native-app-identity.mjs +1 -1
- package/dist-lib/plist.cjs +1 -1
- package/dist-lib/plist.mjs +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 +57 -17
- package/dist-lib/sdk.mjs +54 -17
- package/dist-lib/skills.cjs +38 -27
- 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 +1 -1
- package/dist-lib/vite-swift.cjs +1 -1
- package/dist-lib/vite.cjs +1 -1
- package/kotlin/AppSources/dev/peach/app/PeachApp.kt +8 -2
- package/kotlin/fixtures/kotlin-app-variants/Widgets.kt +56 -0
- package/package.json +1 -1
- package/src/bridge-contract.ts +15 -0
- package/src/generated/android-framework-themes.json +341 -0
- package/src/kotlin-app.ts +47 -26
- package/src/kotlin-host.ts +14 -7
- package/src/sdk.ts +2 -1
package/cli/commands/control.ts
CHANGED
|
@@ -90,7 +90,7 @@ import {
|
|
|
90
90
|
worldForBridgePort,
|
|
91
91
|
type BridgeSimInfo,
|
|
92
92
|
} from '../ws-bridge'
|
|
93
|
-
import { inspectDescribe,
|
|
93
|
+
import { inspectDescribe, inspectReadySnapshot, waitReadyReason } from './inspect/core'
|
|
94
94
|
import { isAgentEnv } from './inspect/env'
|
|
95
95
|
import type { DriverId, DriverLaunchResult } from '../drivers/types'
|
|
96
96
|
|
|
@@ -1346,24 +1346,16 @@ async function maybeDescribeAfterOpen(wsPort: number, simId: string, args: strin
|
|
|
1346
1346
|
})
|
|
1347
1347
|
try {
|
|
1348
1348
|
if (noDescribe) return
|
|
1349
|
-
|
|
1349
|
+
// the tree just held still, so one probe says whether the app is up
|
|
1350
|
+
let readyProbe: Awaited<ReturnType<typeof inspectReadySnapshot>> | null = null
|
|
1350
1351
|
try {
|
|
1351
|
-
readyProbe = await
|
|
1352
|
+
readyProbe = await inspectReadySnapshot(bridge, 3000)
|
|
1352
1353
|
} catch {}
|
|
1353
|
-
if (readyProbe) {
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
? 'guest ready event has not fired'
|
|
1359
|
-
: readyProbe.targets <= 0
|
|
1360
|
-
? 'no visible app content is inspectable yet'
|
|
1361
|
-
: 'app tree is still stabilizing'
|
|
1362
|
-
console.log(
|
|
1363
|
-
` app still loading: ${reason} (nodes: ${readyProbe.nodes}, targets: ${readyProbe.targets})`,
|
|
1364
|
-
)
|
|
1365
|
-
console.log(' before interacting, run: peach wait ready --max-ms 120000')
|
|
1366
|
-
}
|
|
1354
|
+
if (readyProbe && !readyProbe.ready) {
|
|
1355
|
+
console.log(
|
|
1356
|
+
` app still loading: ${waitReadyReason(readyProbe)} (nodes: ${readyProbe.nodes}, targets: ${readyProbe.targets})`,
|
|
1357
|
+
)
|
|
1358
|
+
console.log(' before interacting, run: peach wait ready --max-ms 120000')
|
|
1367
1359
|
}
|
|
1368
1360
|
const result = await inspectDescribe(bridge, {
|
|
1369
1361
|
describe: true,
|
|
@@ -14,12 +14,14 @@
|
|
|
14
14
|
import {
|
|
15
15
|
HEADLESS_TENANT_FETCH_HUNG_MARKER,
|
|
16
16
|
PUBLIC_NO_NETWORK_MARKER,
|
|
17
|
+
readyProbeIsReady,
|
|
17
18
|
type SemanticWaitResult,
|
|
18
19
|
type WsBridgeCommand,
|
|
19
20
|
} from '../../../src/bridge-contract'
|
|
20
21
|
export {
|
|
21
22
|
readyProbeHasContent,
|
|
22
23
|
readyProbeHasTargetContent,
|
|
24
|
+
readyProbeIsReady,
|
|
23
25
|
} from '../../../src/bridge-contract'
|
|
24
26
|
import type {
|
|
25
27
|
SimSemanticNode,
|
|
@@ -1237,16 +1239,47 @@ export async function inspectWaitReady(
|
|
|
1237
1239
|
timeoutMs = 20_000,
|
|
1238
1240
|
options: WaitReadyOptions = {},
|
|
1239
1241
|
): Promise<WaitReadyStatus> {
|
|
1242
|
+
const result = await sendReadyWait(bridge, timeoutMs, timeoutMs + 1_000, options.simId)
|
|
1243
|
+
// a guest app that redboxes still paints: its ErrorBoundary is a real tree
|
|
1244
|
+
// with real nodes, so the engine's own readiness condition matches and every
|
|
1245
|
+
// caller reads exit 0 as "the app is up". an app that has errored is not
|
|
1246
|
+
// ready, so a guest error is disqualifying here rather than merely printed
|
|
1247
|
+
// on the failure path. `errors` (a console.error count) is deliberately not
|
|
1248
|
+
// used because apps can log errors benignly. `suppressedEntryError` remains
|
|
1249
|
+
// excluded because it never gates readiness by contract.
|
|
1250
|
+
const status = waitReadyStatus(result, result.matched && !result.probe?.externalError)
|
|
1251
|
+
if (!status.ready && options.onProgress) options.onProgress(status)
|
|
1252
|
+
return status
|
|
1253
|
+
}
|
|
1254
|
+
|
|
1255
|
+
// one readiness probe, judged on its own: no stability window, since the
|
|
1256
|
+
// caller has already let the app settle. any runtime answers it, because a
|
|
1257
|
+
// one-millisecond wait polls once and returns that probe whether or not its
|
|
1258
|
+
// own stability window matched.
|
|
1259
|
+
export async function inspectReadySnapshot(
|
|
1260
|
+
bridge: InspectBridge,
|
|
1261
|
+
sendTimeoutMs: number,
|
|
1262
|
+
simId?: string,
|
|
1263
|
+
): Promise<WaitReadyStatus> {
|
|
1264
|
+
const result = await sendReadyWait(bridge, 1, sendTimeoutMs, simId)
|
|
1265
|
+
return waitReadyStatus(result, result.probe ? readyProbeIsReady(result.probe) : false)
|
|
1266
|
+
}
|
|
1267
|
+
|
|
1268
|
+
async function sendReadyWait(
|
|
1269
|
+
bridge: InspectBridge,
|
|
1270
|
+
timeoutMs: number,
|
|
1271
|
+
sendTimeoutMs: number,
|
|
1272
|
+
simId: string | undefined,
|
|
1273
|
+
): Promise<SemanticWaitResult> {
|
|
1240
1274
|
const start = Date.now()
|
|
1241
|
-
let result: SemanticWaitResult
|
|
1242
1275
|
try {
|
|
1243
|
-
|
|
1276
|
+
return await bridge.send(
|
|
1244
1277
|
{
|
|
1245
1278
|
type: 'waitFor',
|
|
1246
|
-
...(
|
|
1279
|
+
...(simId ? { simId } : {}),
|
|
1247
1280
|
waitForOptions: { condition: { type: 'ready' }, timeoutMs },
|
|
1248
1281
|
},
|
|
1249
|
-
{ timeoutMs:
|
|
1282
|
+
{ timeoutMs: sendTimeoutMs },
|
|
1250
1283
|
)
|
|
1251
1284
|
} catch (error) {
|
|
1252
1285
|
const bridgeError = error instanceof Error ? error.message : String(error)
|
|
@@ -1256,24 +1289,14 @@ export async function inspectWaitReady(
|
|
|
1256
1289
|
) {
|
|
1257
1290
|
throw error
|
|
1258
1291
|
}
|
|
1259
|
-
|
|
1260
|
-
matched: false,
|
|
1261
|
-
elapsedMs: Date.now() - start,
|
|
1262
|
-
polls: 0,
|
|
1263
|
-
error: bridgeError,
|
|
1264
|
-
}
|
|
1292
|
+
return { matched: false, elapsedMs: Date.now() - start, polls: 0, error: bridgeError }
|
|
1265
1293
|
}
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1296
|
+
function waitReadyStatus(result: SemanticWaitResult, ready: boolean): WaitReadyStatus {
|
|
1266
1297
|
const probe = result.probe
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
// caller reads exit 0 as "the app is up". an app that has errored is not
|
|
1270
|
-
// ready, so a guest error is disqualifying here rather than merely printed
|
|
1271
|
-
// on the failure path. `errors` (a console.error count) is deliberately not
|
|
1272
|
-
// used because apps can log errors benignly. `suppressedEntryError` remains
|
|
1273
|
-
// excluded because it never gates readiness by contract.
|
|
1274
|
-
const externalError = probe?.externalError ?? ''
|
|
1275
|
-
const status: WaitReadyStatus = {
|
|
1276
|
-
ready: result.matched && !externalError,
|
|
1298
|
+
return {
|
|
1299
|
+
ready,
|
|
1277
1300
|
elapsedMs: result.elapsedMs,
|
|
1278
1301
|
nodes: probe?.nodes ?? 0,
|
|
1279
1302
|
targets: probe?.targets ?? 0,
|
|
@@ -1284,13 +1307,11 @@ export async function inspectWaitReady(
|
|
|
1284
1307
|
loadingText: probe?.loadingText ?? '',
|
|
1285
1308
|
externalReady: probe?.externalReady ?? null,
|
|
1286
1309
|
externalStatus: probe?.externalStatus ?? '',
|
|
1287
|
-
externalError,
|
|
1310
|
+
externalError: probe?.externalError ?? '',
|
|
1288
1311
|
suppressedEntryError: probe?.suppressedEntryError ?? '',
|
|
1289
1312
|
errors: probe?.errors ?? 0,
|
|
1290
1313
|
bridgeError: result.error ?? '',
|
|
1291
1314
|
}
|
|
1292
|
-
if (!status.ready && options.onProgress) options.onProgress(status)
|
|
1293
|
-
return status
|
|
1294
1315
|
}
|
|
1295
1316
|
|
|
1296
1317
|
// `wait selector` — block until a node with the given testID is present and
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import {
|
|
2
|
+
inspectReadySnapshot,
|
|
3
|
+
inspectWaitReady,
|
|
4
|
+
type InspectBridge,
|
|
5
|
+
type WaitReadyOptions,
|
|
6
|
+
type WaitReadyStatus,
|
|
7
|
+
} from './core'
|
|
2
8
|
|
|
3
9
|
export type WaitForSootsimIdleOptions = {
|
|
4
10
|
bridge: InspectBridge
|
|
@@ -212,3 +218,50 @@ export async function waitForSootsimIdle({
|
|
|
212
218
|
blockedBy: typeof blockedBy === 'string' ? blockedBy : 'unknown',
|
|
213
219
|
}
|
|
214
220
|
}
|
|
221
|
+
|
|
222
|
+
export type SettledWaitReady = {
|
|
223
|
+
// the last readiness read: the settled tree once the app went idle,
|
|
224
|
+
// otherwise the read that ended the wait.
|
|
225
|
+
status: WaitReadyStatus
|
|
226
|
+
// the last settle; null when the app never became ready.
|
|
227
|
+
idle: WaitForSootsimIdleResult | null
|
|
228
|
+
elapsedMs: number
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// `wait ready`, let the app settle, then read the settled tree once: the app
|
|
232
|
+
// keeps mounting while it settles, so the first tree that counted as ready
|
|
233
|
+
// undercounts what the caller is about to see. a settled app that is no
|
|
234
|
+
// longer ready (it reloaded, or went back to loading) has not proven the tree
|
|
235
|
+
// it shows next, so that starts the wait over. one deadline bounds it all.
|
|
236
|
+
export async function waitReadyAndSettle(
|
|
237
|
+
bridge: InspectBridge,
|
|
238
|
+
timeoutMs: number,
|
|
239
|
+
options: WaitReadyOptions = {},
|
|
240
|
+
): Promise<SettledWaitReady> {
|
|
241
|
+
const start = Date.now()
|
|
242
|
+
const remaining = () => Math.max(0, start + timeoutMs - Date.now())
|
|
243
|
+
const result = (status: WaitReadyStatus, idle: WaitForSootsimIdleResult | null) => ({
|
|
244
|
+
status,
|
|
245
|
+
idle,
|
|
246
|
+
elapsedMs: Date.now() - start,
|
|
247
|
+
})
|
|
248
|
+
let idle: WaitForSootsimIdleResult | null = null
|
|
249
|
+
for (;;) {
|
|
250
|
+
const ready = await inspectWaitReady(bridge, remaining(), options)
|
|
251
|
+
if (!ready.ready) return result(ready, idle)
|
|
252
|
+
idle = await waitForSootsimIdle({
|
|
253
|
+
bridge,
|
|
254
|
+
simId: options.simId,
|
|
255
|
+
maxMs: Math.min(10_000, remaining()),
|
|
256
|
+
pollMs: 32,
|
|
257
|
+
stablePolls: 2,
|
|
258
|
+
})
|
|
259
|
+
if (!idle.settled) return result(ready, idle)
|
|
260
|
+
const settled = await inspectReadySnapshot(
|
|
261
|
+
bridge,
|
|
262
|
+
Math.max(1_000, remaining()),
|
|
263
|
+
options.simId,
|
|
264
|
+
)
|
|
265
|
+
if (settled.ready || remaining() === 0) return result(settled, idle)
|
|
266
|
+
}
|
|
267
|
+
}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { rnxExit } from '../../run-rnx'
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
inspectWaitReady,
|
|
4
|
+
resolveMaxMsFlag,
|
|
5
|
+
type WaitReadyStatus,
|
|
6
|
+
waitReadyReason,
|
|
7
|
+
} from './core'
|
|
8
|
+
import { waitReadyAndSettle } from './settling'
|
|
4
9
|
import type { WsBridge } from '../../ws-bridge'
|
|
5
10
|
|
|
6
11
|
// blocks until the guest app bundle has finished loading and painted real
|
|
@@ -18,79 +23,44 @@ export async function runWaitReadySubcommand(opts: {
|
|
|
18
23
|
// routinely take 10-15s to evaluate + mount.
|
|
19
24
|
const timeoutMs = resolveMaxMsFlag(args, 20000)
|
|
20
25
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
elapsedMs
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
loadingText,
|
|
30
|
-
externalReady,
|
|
31
|
-
externalStatus,
|
|
32
|
-
externalError,
|
|
33
|
-
suppressedEntryError,
|
|
34
|
-
errors,
|
|
35
|
-
bridgeError,
|
|
36
|
-
} = await inspectWaitReady(bridge, timeoutMs, {
|
|
37
|
-
...(bridge.plane !== 'cloud'
|
|
38
|
-
? {
|
|
39
|
-
onProgress(status) {
|
|
40
|
-
console.error(
|
|
41
|
-
` still waiting after ${status.elapsedMs}ms — ${waitReadyReason(status)} (nodes: ${status.nodes}, targets: ${status.targets}, live surfaces: ${status.liveFrameActive ? status.liveFrameChannels : 0}, errors: ${status.errors})`,
|
|
42
|
-
)
|
|
43
|
-
},
|
|
44
|
-
}
|
|
45
|
-
: {}),
|
|
46
|
-
})
|
|
47
|
-
if (ready) {
|
|
48
|
-
if (bridge.plane === 'cloud') {
|
|
49
|
-
console.log(
|
|
50
|
-
` ready in ${elapsedMs}ms: ${nodes} nodes, ${targets} targets${liveFrameActive ? `, ${liveFrameChannels} live surfaces` : ''}`,
|
|
51
|
-
)
|
|
52
|
-
return
|
|
53
|
-
}
|
|
54
|
-
const remainingMs = timeoutMs - elapsedMs
|
|
55
|
-
const idleBudgetMs = Math.max(100, Math.min(10_000, remainingMs))
|
|
56
|
-
const idle = await waitForSootsimIdle({
|
|
57
|
-
bridge,
|
|
58
|
-
maxMs: idleBudgetMs,
|
|
59
|
-
pollMs: 32,
|
|
60
|
-
stablePolls: 2,
|
|
61
|
-
})
|
|
62
|
-
if (!idle.settled) {
|
|
63
|
-
console.error(
|
|
64
|
-
` ⚠ wait ready timed out after ${elapsedMs + idle.elapsed}ms — app mounted but did not settle (nodes: ${nodes}, targets: ${targets})`,
|
|
65
|
-
)
|
|
66
|
-
rnxExit(1)
|
|
67
|
-
}
|
|
68
|
-
// the app keeps mounting while it settles, so report the settled tree,
|
|
69
|
-
// not the first one that counted as ready.
|
|
70
|
-
const settled = await inspectWaitReady(bridge, 1_000)
|
|
71
|
-
if (!settled.ready) {
|
|
26
|
+
if (bridge.plane === 'cloud') {
|
|
27
|
+
const status = await inspectWaitReady(bridge, timeoutMs)
|
|
28
|
+
if (!status.ready) timedOut(status, status.elapsedMs)
|
|
29
|
+
printReady(status, status.elapsedMs)
|
|
30
|
+
return
|
|
31
|
+
}
|
|
32
|
+
const { status, idle, elapsedMs } = await waitReadyAndSettle(bridge, timeoutMs, {
|
|
33
|
+
onProgress(progress) {
|
|
72
34
|
console.error(
|
|
73
|
-
`
|
|
35
|
+
` still waiting after ${progress.elapsedMs}ms — ${waitReadyReason(progress)} (nodes: ${progress.nodes}, targets: ${progress.targets}, live surfaces: ${progress.liveFrameActive ? progress.liveFrameChannels : 0}, errors: ${progress.errors})`,
|
|
74
36
|
)
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
37
|
+
},
|
|
38
|
+
})
|
|
39
|
+
if (!idle) timedOut(status, elapsedMs)
|
|
40
|
+
if (!idle.settled) {
|
|
41
|
+
console.error(
|
|
42
|
+
` ⚠ wait ready timed out after ${elapsedMs}ms — app mounted but did not settle: ${idle.blockedBy} (nodes: ${status.nodes}, targets: ${status.targets})`,
|
|
79
43
|
)
|
|
80
|
-
|
|
44
|
+
rnxExit(1)
|
|
81
45
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
46
|
+
if (!status.ready) {
|
|
47
|
+
console.error(
|
|
48
|
+
` ⚠ wait ready: the app stopped being ready after it settled — ${waitReadyReason(status)} (nodes: ${status.nodes}, targets: ${status.targets}, errors: ${status.errors})`,
|
|
49
|
+
)
|
|
50
|
+
rnxExit(1)
|
|
51
|
+
}
|
|
52
|
+
printReady(status, elapsedMs)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function printReady(status: WaitReadyStatus, elapsedMs: number): void {
|
|
56
|
+
console.log(
|
|
57
|
+
` ready in ${elapsedMs}ms: ${status.nodes} nodes, ${status.targets} targets${status.liveFrameActive ? `, ${status.liveFrameChannels} live surfaces` : ''}`,
|
|
58
|
+
)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function timedOut(status: WaitReadyStatus, elapsedMs: number): never {
|
|
92
62
|
console.error(
|
|
93
|
-
` ⚠ wait ready timed out after ${elapsedMs}ms — ${
|
|
63
|
+
` ⚠ wait ready timed out after ${elapsedMs}ms — ${waitReadyReason(status)} (nodes: ${status.nodes}, targets: ${status.targets}, live surfaces: ${status.liveFrameActive ? status.liveFrameChannels : 0}, errors: ${status.errors})`,
|
|
94
64
|
)
|
|
95
65
|
rnxExit(1)
|
|
96
66
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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;
|
|
@@ -33,6 +33,7 @@ __export(bridge_contract_exports, {
|
|
|
33
33
|
performStepRefusal: () => performStepRefusal,
|
|
34
34
|
readyProbeHasContent: () => readyProbeHasContent,
|
|
35
35
|
readyProbeHasTargetContent: () => readyProbeHasTargetContent,
|
|
36
|
+
readyProbeIsReady: () => readyProbeIsReady,
|
|
36
37
|
refusedPerformStepReason: () => refusedPerformStepReason
|
|
37
38
|
});
|
|
38
39
|
module.exports = __toCommonJS(bridge_contract_exports);
|
|
@@ -113,6 +114,9 @@ function readyProbeHasContent(probe) {
|
|
|
113
114
|
function readyProbeHasTargetContent(probe) {
|
|
114
115
|
return probe.liveFrameActive || probe.targets > 0;
|
|
115
116
|
}
|
|
117
|
+
function readyProbeIsReady(probe) {
|
|
118
|
+
return (probe.flag === true ? readyProbeHasContent(probe) : readyProbeHasTargetContent(probe)) && probe.externalReady !== false && !probe.externalError && !probe.loadingText;
|
|
119
|
+
}
|
|
116
120
|
// Annotate the CommonJS export names for ESM import in node:
|
|
117
121
|
0 && (module.exports = {
|
|
118
122
|
HEADLESS_TENANT_FETCH_HUNG_MARKER,
|
|
@@ -126,5 +130,6 @@ function readyProbeHasTargetContent(probe) {
|
|
|
126
130
|
performStepRefusal,
|
|
127
131
|
readyProbeHasContent,
|
|
128
132
|
readyProbeHasTargetContent,
|
|
133
|
+
readyProbeIsReady,
|
|
129
134
|
refusedPerformStepReason
|
|
130
135
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.664 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/bridge-contract.ts
|
|
4
4
|
var REFUSED_PERFORM_STEP_TYPES = [
|
|
@@ -78,6 +78,9 @@ function readyProbeHasContent(probe) {
|
|
|
78
78
|
function readyProbeHasTargetContent(probe) {
|
|
79
79
|
return probe.liveFrameActive || probe.targets > 0;
|
|
80
80
|
}
|
|
81
|
+
function readyProbeIsReady(probe) {
|
|
82
|
+
return (probe.flag === true ? readyProbeHasContent(probe) : readyProbeHasTargetContent(probe)) && probe.externalReady !== false && !probe.externalError && !probe.loadingText;
|
|
83
|
+
}
|
|
81
84
|
export {
|
|
82
85
|
HEADLESS_TENANT_FETCH_HUNG_MARKER,
|
|
83
86
|
PUBLIC_NO_NETWORK_MARKER,
|
|
@@ -90,5 +93,6 @@ export {
|
|
|
90
93
|
performStepRefusal,
|
|
91
94
|
readyProbeHasContent,
|
|
92
95
|
readyProbeHasTargetContent,
|
|
96
|
+
readyProbeIsReady,
|
|
93
97
|
refusedPerformStepReason
|
|
94
98
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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.664 | (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;
|