rnxsim 0.1.384 → 0.1.386
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/cpu-profile.ts +206 -40
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +1 -1
- package/dist-lib/bridge-contract-input.mjs +1 -1
- package/dist-lib/bridge-contract.cjs +1 -1
- package/dist-lib/bridge-contract.mjs +1 -1
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cli-constants.cjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -1
- package/dist-lib/cloud-contract.mjs +1 -1
- package/dist-lib/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 +1 -1
- 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-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 +1 -1
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/skills/rnx-perf/SKILL.md +8 -3
|
@@ -151,6 +151,37 @@ export interface CpuProfileCoverage {
|
|
|
151
151
|
stoppedOffsetMs: number | null
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
+
export interface CpuProfileBrowserExecutableIdentity {
|
|
155
|
+
path: string
|
|
156
|
+
sha256: string
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export interface CpuProfileBrowserIdentity {
|
|
160
|
+
name: string
|
|
161
|
+
version: string
|
|
162
|
+
executable: CpuProfileBrowserExecutableIdentity
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export interface CpuProfileCaptureEvidence {
|
|
166
|
+
label: string
|
|
167
|
+
actionEpochMs: number
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export interface CpuProfileWorkloadIdentity {
|
|
171
|
+
scenario: string
|
|
172
|
+
sourceSha256: string
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export interface CpuProfileWorkloadEvidence {
|
|
176
|
+
browserIdentity: CpuProfileBrowserIdentity
|
|
177
|
+
captures: CpuProfileCaptureEvidence[]
|
|
178
|
+
completionMarker: string
|
|
179
|
+
expectedCaptureLabels: string[]
|
|
180
|
+
runtimeIdentity: Record<string, unknown>
|
|
181
|
+
stage: string
|
|
182
|
+
workloadIdentity: CpuProfileWorkloadIdentity
|
|
183
|
+
}
|
|
184
|
+
|
|
154
185
|
export function cpuProfileCoverage(
|
|
155
186
|
profileStartedAtMs: number | undefined,
|
|
156
187
|
profileStoppedAtMs: number | undefined,
|
|
@@ -185,6 +216,33 @@ export function cpuProfileCoverage(
|
|
|
185
216
|
}
|
|
186
217
|
}
|
|
187
218
|
|
|
219
|
+
export function cpuProfileRoleLabels(
|
|
220
|
+
targets: readonly { captured: boolean; role: string }[],
|
|
221
|
+
): string[] {
|
|
222
|
+
const labels = new Array<string>(targets.length)
|
|
223
|
+
const roleCounts = new Map<string, number>()
|
|
224
|
+
const assign = (index: number) => {
|
|
225
|
+
const role = targets[index].role
|
|
226
|
+
const count = (roleCounts.get(role) ?? 0) + 1
|
|
227
|
+
roleCounts.set(role, count)
|
|
228
|
+
labels[index] = count === 1 ? role : `${role}-${count}`
|
|
229
|
+
}
|
|
230
|
+
for (let index = 0; index < targets.length; index++) {
|
|
231
|
+
if (targets[index].captured) assign(index)
|
|
232
|
+
}
|
|
233
|
+
for (let index = 0; index < targets.length; index++) {
|
|
234
|
+
if (!targets[index].captured) assign(index)
|
|
235
|
+
}
|
|
236
|
+
return labels
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
export function cpuProfileTargetOverlapsWindow(
|
|
240
|
+
detachedAtMs: number | undefined,
|
|
241
|
+
windowStartedAtMs: number,
|
|
242
|
+
): boolean {
|
|
243
|
+
return detachedAtMs === undefined || detachedAtMs > windowStartedAtMs
|
|
244
|
+
}
|
|
245
|
+
|
|
188
246
|
export function cpuProfileActionsWithinWindow(
|
|
189
247
|
actionEpochMs: readonly number[],
|
|
190
248
|
windowStartedAtEpochMs: number,
|
|
@@ -201,6 +259,115 @@ export function cpuProfileActionsWithinWindow(
|
|
|
201
259
|
)
|
|
202
260
|
}
|
|
203
261
|
|
|
262
|
+
function cpuProfileRecord(value: unknown): Record<string, unknown> | null {
|
|
263
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) return null
|
|
264
|
+
return Object.fromEntries(Object.entries(value))
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
function cpuProfileNonemptyString(value: unknown): value is string {
|
|
268
|
+
return typeof value === 'string' && value.length > 0
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
function cpuProfileSha256(value: unknown): value is string {
|
|
272
|
+
return typeof value === 'string' && /^[a-f0-9]{64}$/.test(value)
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
function cpuProfileViewportIdentityValid(value: unknown): boolean {
|
|
276
|
+
const viewport = cpuProfileRecord(value)
|
|
277
|
+
return (
|
|
278
|
+
typeof viewport?.width === 'number' &&
|
|
279
|
+
Number.isFinite(viewport.width) &&
|
|
280
|
+
viewport.width > 0 &&
|
|
281
|
+
typeof viewport.height === 'number' &&
|
|
282
|
+
Number.isFinite(viewport.height) &&
|
|
283
|
+
viewport.height > 0 &&
|
|
284
|
+
typeof viewport.devicePixelRatio === 'number' &&
|
|
285
|
+
Number.isFinite(viewport.devicePixelRatio) &&
|
|
286
|
+
viewport.devicePixelRatio > 0
|
|
287
|
+
)
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export function readCpuProfileWorkloadEvidence(
|
|
291
|
+
value: unknown,
|
|
292
|
+
): CpuProfileWorkloadEvidence | null {
|
|
293
|
+
const partial = cpuProfileRecord(value)
|
|
294
|
+
const browserIdentity = cpuProfileRecord(partial?.browserIdentity)
|
|
295
|
+
const browserExecutable = cpuProfileRecord(browserIdentity?.executable)
|
|
296
|
+
const runtimeIdentity = cpuProfileRecord(partial?.runtimeIdentity)
|
|
297
|
+
const engineManifest = cpuProfileRecord(runtimeIdentity?.engineManifest)
|
|
298
|
+
const hostPresentation = cpuProfileRecord(runtimeIdentity?.hostPresentation)
|
|
299
|
+
const workloadIdentity = cpuProfileRecord(partial?.workloadIdentity)
|
|
300
|
+
const stage = partial?.stage
|
|
301
|
+
const completionMarker = partial?.completionMarker
|
|
302
|
+
const expectedCaptureLabels = partial?.expectedCaptureLabels
|
|
303
|
+
const captures = partial?.captures
|
|
304
|
+
if (
|
|
305
|
+
!cpuProfileNonemptyString(stage) ||
|
|
306
|
+
!cpuProfileNonemptyString(completionMarker) ||
|
|
307
|
+
stage !== completionMarker ||
|
|
308
|
+
!Array.isArray(expectedCaptureLabels) ||
|
|
309
|
+
expectedCaptureLabels.length === 0 ||
|
|
310
|
+
expectedCaptureLabels.some(
|
|
311
|
+
(label, index, labels) =>
|
|
312
|
+
!cpuProfileNonemptyString(label) || labels.indexOf(label) !== index,
|
|
313
|
+
) ||
|
|
314
|
+
!Array.isArray(captures) ||
|
|
315
|
+
!cpuProfileNonemptyString(browserIdentity?.name) ||
|
|
316
|
+
!cpuProfileNonemptyString(browserIdentity.version) ||
|
|
317
|
+
!cpuProfileNonemptyString(browserExecutable?.path) ||
|
|
318
|
+
!cpuProfileSha256(browserExecutable.sha256) ||
|
|
319
|
+
runtimeIdentity === null ||
|
|
320
|
+
!cpuProfileNonemptyString(engineManifest?.buildIdentity) ||
|
|
321
|
+
!cpuProfileNonemptyString(engineManifest.generation) ||
|
|
322
|
+
hostPresentation === null ||
|
|
323
|
+
!cpuProfileViewportIdentityValid(hostPresentation.rootViewport) ||
|
|
324
|
+
!cpuProfileViewportIdentityValid(hostPresentation.targetViewport) ||
|
|
325
|
+
!cpuProfileNonemptyString(workloadIdentity?.scenario) ||
|
|
326
|
+
workloadIdentity.scenario !== partial?.scenario ||
|
|
327
|
+
!cpuProfileSha256(workloadIdentity.sourceSha256)
|
|
328
|
+
) {
|
|
329
|
+
return null
|
|
330
|
+
}
|
|
331
|
+
const captureEvidence: CpuProfileCaptureEvidence[] = []
|
|
332
|
+
for (const captureValue of captures) {
|
|
333
|
+
const capture = cpuProfileRecord(captureValue)
|
|
334
|
+
const note = cpuProfileRecord(capture?.note)
|
|
335
|
+
if (
|
|
336
|
+
!cpuProfileNonemptyString(capture?.label) ||
|
|
337
|
+
typeof note?.actionEpochMs !== 'number' ||
|
|
338
|
+
!Number.isFinite(note.actionEpochMs)
|
|
339
|
+
) {
|
|
340
|
+
return null
|
|
341
|
+
}
|
|
342
|
+
captureEvidence.push({ label: capture.label, actionEpochMs: note.actionEpochMs })
|
|
343
|
+
}
|
|
344
|
+
if (
|
|
345
|
+
JSON.stringify(captureEvidence.map((capture) => capture.label)) !==
|
|
346
|
+
JSON.stringify(expectedCaptureLabels)
|
|
347
|
+
) {
|
|
348
|
+
return null
|
|
349
|
+
}
|
|
350
|
+
return {
|
|
351
|
+
browserIdentity: {
|
|
352
|
+
name: browserIdentity.name,
|
|
353
|
+
version: browserIdentity.version,
|
|
354
|
+
executable: {
|
|
355
|
+
path: browserExecutable.path,
|
|
356
|
+
sha256: browserExecutable.sha256,
|
|
357
|
+
},
|
|
358
|
+
},
|
|
359
|
+
captures: captureEvidence,
|
|
360
|
+
completionMarker,
|
|
361
|
+
expectedCaptureLabels: [...expectedCaptureLabels],
|
|
362
|
+
runtimeIdentity,
|
|
363
|
+
stage,
|
|
364
|
+
workloadIdentity: {
|
|
365
|
+
scenario: workloadIdentity.scenario,
|
|
366
|
+
sourceSha256: workloadIdentity.sourceSha256,
|
|
367
|
+
},
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
|
|
204
371
|
export function cpuProfileInteractionBarrierValid(
|
|
205
372
|
barrier: CpuProfileInteractionBarrier | null,
|
|
206
373
|
windowStartedAtEpochMs: number,
|
|
@@ -237,14 +404,6 @@ function readInteractionBarrierState(
|
|
|
237
404
|
return { marker, reachedAtEpochMs, releasedBy, releasedAtEpochMs }
|
|
238
405
|
}
|
|
239
406
|
|
|
240
|
-
function readActionEpochs(value: unknown): number[] {
|
|
241
|
-
if (!Array.isArray(value)) return []
|
|
242
|
-
return value.filter(
|
|
243
|
-
(epochMs): epochMs is number =>
|
|
244
|
-
typeof epochMs === 'number' && Number.isFinite(epochMs),
|
|
245
|
-
)
|
|
246
|
-
}
|
|
247
|
-
|
|
248
407
|
export async function runCpuProfile(
|
|
249
408
|
args: string[],
|
|
250
409
|
opts: ProfileOptions,
|
|
@@ -555,38 +714,32 @@ export async function runCpuProfile(
|
|
|
555
714
|
)
|
|
556
715
|
// querying the page while five high-frequency profilers are still active
|
|
557
716
|
// can itself time out and lengthen the requested sampling interval. stop
|
|
558
|
-
// first, then read the already-recorded
|
|
559
|
-
const
|
|
560
|
-
?
|
|
561
|
-
await evaluatePage(
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
? Reflect.get(partial, 'captures')
|
|
565
|
-
: null
|
|
566
|
-
if (!Array.isArray(captures)) return []
|
|
567
|
-
return captures.map((capture) => {
|
|
568
|
-
if (!capture || typeof capture !== 'object') return null
|
|
569
|
-
const note = Reflect.get(capture, 'note')
|
|
570
|
-
return note && typeof note === 'object'
|
|
571
|
-
? Reflect.get(note, 'actionEpochMs')
|
|
572
|
-
: null
|
|
573
|
-
})
|
|
574
|
-
})()`),
|
|
717
|
+
// first, then read the already-recorded workload completion evidence.
|
|
718
|
+
const workloadEvidence = interactionBarrierEnabled
|
|
719
|
+
? readCpuProfileWorkloadEvidence(
|
|
720
|
+
await evaluatePage(
|
|
721
|
+
`Reflect.get(globalThis, '__sootsimInteractionPartialResult') ?? null`,
|
|
722
|
+
),
|
|
575
723
|
)
|
|
576
|
-
:
|
|
724
|
+
: null
|
|
725
|
+
const workloadActionEpochMs =
|
|
726
|
+
workloadEvidence?.captures.map((capture) => capture.actionEpochMs) ?? []
|
|
577
727
|
|
|
578
728
|
mkdirSync(dirname(outputPath), { recursive: true })
|
|
579
|
-
const
|
|
580
|
-
|
|
729
|
+
const roleLabels = cpuProfileRoleLabels(
|
|
730
|
+
results.map((target) => ({
|
|
731
|
+
captured: target.profile !== undefined,
|
|
732
|
+
role: target.role,
|
|
733
|
+
})),
|
|
734
|
+
)
|
|
735
|
+
const manifest = results.map((target, index) => {
|
|
581
736
|
const coverage = cpuProfileCoverage(
|
|
582
737
|
target.profileStartedAtMs,
|
|
583
738
|
target.profileStoppedAtMs,
|
|
584
739
|
captureWindowStartedAtMs,
|
|
585
740
|
captureWindowEndedAtMs,
|
|
586
741
|
)
|
|
587
|
-
const
|
|
588
|
-
roleCounts.set(target.role, priorCount + 1)
|
|
589
|
-
const role = priorCount === 0 ? target.role : `${target.role}-${priorCount + 1}`
|
|
742
|
+
const role = roleLabels[index]
|
|
590
743
|
const profilePath = target.profile
|
|
591
744
|
? outputPath.replace(/(\.[^.]+)?$/, `.${role}$1`)
|
|
592
745
|
: null
|
|
@@ -607,11 +760,20 @@ export async function runCpuProfile(
|
|
|
607
760
|
}
|
|
608
761
|
return {
|
|
609
762
|
role,
|
|
763
|
+
baseRole: target.role,
|
|
610
764
|
type: target.type,
|
|
611
765
|
title: target.title,
|
|
612
766
|
url: target.url,
|
|
613
767
|
detached: target.detached,
|
|
614
768
|
attachedOffsetMs: target.attachedAtMs - captureWindowStartedAtMs,
|
|
769
|
+
detachedOffsetMs:
|
|
770
|
+
target.detachedAtMs === undefined
|
|
771
|
+
? null
|
|
772
|
+
: target.detachedAtMs - captureWindowStartedAtMs,
|
|
773
|
+
requiredForComplete: cpuProfileTargetOverlapsWindow(
|
|
774
|
+
target.detachedAtMs,
|
|
775
|
+
captureWindowStartedAtMs,
|
|
776
|
+
),
|
|
615
777
|
...coverage,
|
|
616
778
|
samples: target.profile?.samples.length ?? 0,
|
|
617
779
|
profilePath,
|
|
@@ -621,8 +783,8 @@ export async function runCpuProfile(
|
|
|
621
783
|
const requiredRoles = ['page', 'shell', 'compositor', 'tenant']
|
|
622
784
|
const capturedRoles = new Set(
|
|
623
785
|
manifest
|
|
624
|
-
.filter((target) => target.profilePath !== null)
|
|
625
|
-
.map((target) => target.
|
|
786
|
+
.filter((target) => target.requiredForComplete && target.profilePath !== null)
|
|
787
|
+
.map((target) => target.baseRole),
|
|
626
788
|
)
|
|
627
789
|
const missingRoles = requiredRoles.filter((role) => !capturedRoles.has(role))
|
|
628
790
|
const interactionBarrierComplete =
|
|
@@ -632,6 +794,7 @@ export async function runCpuProfile(
|
|
|
632
794
|
captureWindowStartedAtEpochMs,
|
|
633
795
|
captureWindowEndedAtEpochMs,
|
|
634
796
|
) &&
|
|
797
|
+
workloadEvidence !== null &&
|
|
635
798
|
cpuProfileActionsWithinWindow(
|
|
636
799
|
workloadActionEpochMs,
|
|
637
800
|
captureWindowStartedAtEpochMs,
|
|
@@ -641,12 +804,14 @@ export async function runCpuProfile(
|
|
|
641
804
|
missingRoles.length === 0 &&
|
|
642
805
|
interactionBarrierComplete &&
|
|
643
806
|
manifest.length > 0 &&
|
|
644
|
-
manifest
|
|
645
|
-
(target) =>
|
|
646
|
-
|
|
647
|
-
target
|
|
648
|
-
|
|
649
|
-
|
|
807
|
+
manifest
|
|
808
|
+
.filter((target) => target.requiredForComplete)
|
|
809
|
+
.every(
|
|
810
|
+
(target) =>
|
|
811
|
+
target.profilePath !== null &&
|
|
812
|
+
target.error === null &&
|
|
813
|
+
target.coverageRatio >= 0.99,
|
|
814
|
+
)
|
|
650
815
|
const manifestPath = outputPath.replace(/(\.[^.]+)?$/, '.manifest.json')
|
|
651
816
|
const executableSha256 = IS_STANDALONE
|
|
652
817
|
? createHash('sha256').update(readFileSync(process.execPath)).digest('hex')
|
|
@@ -669,6 +834,7 @@ export async function runCpuProfile(
|
|
|
669
834
|
captureWindowStartedAt: new Date(captureWindowStartedAtEpochMs).toISOString(),
|
|
670
835
|
captureWindowEndedAt: new Date(captureWindowEndedAtEpochMs).toISOString(),
|
|
671
836
|
interactionBarrier,
|
|
837
|
+
workloadEvidence,
|
|
672
838
|
workloadActionEpochMs,
|
|
673
839
|
manifest,
|
|
674
840
|
},
|
|
@@ -683,7 +849,7 @@ export async function runCpuProfile(
|
|
|
683
849
|
)
|
|
684
850
|
if (!interactionBarrierComplete) {
|
|
685
851
|
console.error(
|
|
686
|
-
' workload
|
|
852
|
+
' workload did not complete every expected action inside the interaction profile window',
|
|
687
853
|
)
|
|
688
854
|
}
|
|
689
855
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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/config.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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.386 | (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/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.386 | (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.386 | (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/menu.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.386 | (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/menu.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.386 | (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/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.386 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/profiles.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.386 | (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.386 | (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.386 | (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.386 | (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.386 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/sdk.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.386 | (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/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.386 | (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/skills.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.386 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.386 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/package.json
CHANGED
package/skills/rnx-perf/SKILL.md
CHANGED
|
@@ -189,12 +189,14 @@ visible nonpersistent WKWebView for Safari-engine claims; Playwright WebKit is
|
|
|
189
189
|
not the installed Safari engine.
|
|
190
190
|
|
|
191
191
|
every receipt must carry the exact page and frame URLs, browser user agent,
|
|
192
|
+
browser executable path and content hash,
|
|
192
193
|
harness-source identity, capture time, engine build identity and generation,
|
|
193
194
|
runtime bundle receipt, sampled host capacity at run start, runtime errors, and
|
|
194
195
|
any partial failure. use the shared host-capacity sampler; do not record raw
|
|
195
196
|
`freemem()` or decide from macOS load average.
|
|
196
197
|
partial artifacts remain inadmissible until every requested run number for that
|
|
197
|
-
scenario exists with one harness, engine, seed, and
|
|
198
|
+
scenario exists with one harness, browser executable, engine, seed, and
|
|
199
|
+
viewport identity. browser
|
|
198
200
|
comparisons use the same root/target viewport tuple and backing scale. for a
|
|
199
201
|
wrapper or embedded surface, first prove the target has nonzero presented
|
|
200
202
|
geometry; a finite host viewport that responsively hides the target measures a
|
|
@@ -263,8 +265,11 @@ a post-workload delay long enough to remain open through profiler stop. the
|
|
|
263
265
|
pre-workload delay alone is not synchronization: it can end the profile while
|
|
264
266
|
the workload is still preparing. barrier mode pauses the workload before its
|
|
265
267
|
first measured capture until every discovered target is profiling, then rejects
|
|
266
|
-
the manifest unless
|
|
267
|
-
|
|
268
|
+
the manifest unless the workload publishes its completion marker, every expected
|
|
269
|
+
capture label, and action timestamps inside the capture interval. retain its
|
|
270
|
+
browser executable, engine build and generation, root and target viewports, and
|
|
271
|
+
workload source identity in the CPU manifest. the barrier also has a bounded
|
|
272
|
+
page-side lease so an interrupted
|
|
268
273
|
profiler cannot strand the workload; lease expiry releases the runner but
|
|
269
274
|
invalidates the profile.
|
|
270
275
|
|