rnxsim 0.1.499 → 0.1.500
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/bridge-flow-runner.ts +6 -2
- package/cli/commands/inspect/core.ts +2 -0
- package/cli/ws-bridge.ts +18 -19
- 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/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 +14 -11
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +1 -1
- package/dist-lib/react-native-host-modules.cjs +1 -1
- package/dist-lib/react-native-host-modules.mjs +1 -1
- package/dist-lib/render-mode.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +2 -1
- package/dist-lib/sdk.mjs +2 -1
- package/dist-lib/skills.cjs +20 -13
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
|
@@ -483,7 +483,9 @@ export class SootSimBridgeFlowRunner {
|
|
|
483
483
|
}
|
|
484
484
|
|
|
485
485
|
async waitForTree(timeout: number = DEFAULT_TIMEOUT) {
|
|
486
|
-
let status = await inspectWaitReady(this.bridge, scaledTimeout(timeout)
|
|
486
|
+
let status = await inspectWaitReady(this.bridge, scaledTimeout(timeout), {
|
|
487
|
+
simId: this.opts.simId,
|
|
488
|
+
})
|
|
487
489
|
if (status.ready) return
|
|
488
490
|
if (status.externalError) {
|
|
489
491
|
throw new Error(`app failed to load: ${status.externalError}`)
|
|
@@ -512,7 +514,9 @@ export class SootSimBridgeFlowRunner {
|
|
|
512
514
|
)
|
|
513
515
|
this.opts.simId = successor
|
|
514
516
|
saveCurrentSimId(successor)
|
|
515
|
-
status = await inspectWaitReady(this.bridge, scaledTimeout(timeout)
|
|
517
|
+
status = await inspectWaitReady(this.bridge, scaledTimeout(timeout), {
|
|
518
|
+
simId: this.opts.simId,
|
|
519
|
+
})
|
|
516
520
|
if (status.ready) return
|
|
517
521
|
}
|
|
518
522
|
}
|
|
@@ -1025,6 +1025,7 @@ export interface WaitReadyStatus {
|
|
|
1025
1025
|
export interface WaitReadyOptions {
|
|
1026
1026
|
progressIntervalMs?: number
|
|
1027
1027
|
onProgress?: (status: WaitReadyStatus) => void
|
|
1028
|
+
simId?: string
|
|
1028
1029
|
}
|
|
1029
1030
|
|
|
1030
1031
|
export function waitReadyReason(
|
|
@@ -1091,6 +1092,7 @@ export async function inspectWaitReady(
|
|
|
1091
1092
|
result = await bridge.send(
|
|
1092
1093
|
{
|
|
1093
1094
|
type: 'waitFor',
|
|
1095
|
+
...(options.simId ? { simId: options.simId } : {}),
|
|
1094
1096
|
waitForOptions: { condition: { type: 'ready' }, timeoutMs },
|
|
1095
1097
|
},
|
|
1096
1098
|
{ timeoutMs: timeoutMs + 1_000 },
|
package/cli/ws-bridge.ts
CHANGED
|
@@ -324,9 +324,9 @@ export interface WsBridge {
|
|
|
324
324
|
opts?: { timeoutMs?: number },
|
|
325
325
|
): Promise<any>
|
|
326
326
|
listSims(): Promise<BridgeSimInfo[]>
|
|
327
|
-
// a guest reload retires the
|
|
328
|
-
//
|
|
329
|
-
// nothing proves what replaced it.
|
|
327
|
+
// a guest reload retires the socket and the same page reconnects under a new
|
|
328
|
+
// or restored id. a caller that pins an id resolves that target here; null
|
|
329
|
+
// means nothing proves what replaced it.
|
|
330
330
|
resolveReloadedSim(retiredSimId: string): Promise<string | null>
|
|
331
331
|
focusSim(simId?: string): Promise<any>
|
|
332
332
|
closeSim(simId?: string): Promise<any>
|
|
@@ -621,21 +621,20 @@ export function createBridge(wsPort: number, opts: WsBridgeOptions = {}): WsBrid
|
|
|
621
621
|
const hostPidBySimId = new Map<string, number>()
|
|
622
622
|
const lineageLookupBySimId = new Map<string, Promise<void>>()
|
|
623
623
|
|
|
624
|
-
// a reload retires the
|
|
625
|
-
//
|
|
626
|
-
//
|
|
627
|
-
function
|
|
624
|
+
// a reload retires the socket but keeps the browser host. the replacement
|
|
625
|
+
// can receive a new sim id or restore the prior one from session storage.
|
|
626
|
+
// the restored id is definitive; a new id must be the only same-host match.
|
|
627
|
+
function pickReloadedTarget(sims: unknown, retiredSimId: string): string | null {
|
|
628
628
|
const pinnedHostPid = hostPidBySimId.get(retiredSimId)
|
|
629
629
|
if (pinnedHostPid === undefined) return null
|
|
630
|
-
const
|
|
631
|
-
(sim) =>
|
|
632
|
-
sim.id !== retiredSimId &&
|
|
633
|
-
sim.readyState === 'open' &&
|
|
634
|
-
sim.meta?.sootsimHostPid === pinnedHostPid,
|
|
630
|
+
const matches = (Array.isArray(sims) ? (sims as BridgeSimInfo[]) : []).filter(
|
|
631
|
+
(sim) => sim.readyState === 'open' && sim.meta?.sootsimHostPid === pinnedHostPid,
|
|
635
632
|
)
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
return
|
|
633
|
+
const restored = matches.find((sim) => sim.id === retiredSimId)
|
|
634
|
+
if (restored) return restored.id
|
|
635
|
+
if (matches.length !== 1) return null
|
|
636
|
+
hostPidBySimId.set(matches[0].id, pinnedHostPid)
|
|
637
|
+
return matches[0].id
|
|
639
638
|
}
|
|
640
639
|
|
|
641
640
|
// print a one-line notice on first sim-scoped command so agents/users see
|
|
@@ -801,7 +800,7 @@ export function createBridge(wsPort: number, opts: WsBridgeOptions = {}): WsBrid
|
|
|
801
800
|
// a reload retires the sim id but keeps the browser host, so the
|
|
802
801
|
// successor with the same host pid IS the same page lineage — not a
|
|
803
802
|
// guess. adopt only that, and only when it is unambiguous.
|
|
804
|
-
const successor =
|
|
803
|
+
const successor = pickReloadedTarget(
|
|
805
804
|
await sendOnce(undefined, { type: 'bridge:list-sims' }),
|
|
806
805
|
sentSimId,
|
|
807
806
|
)
|
|
@@ -831,10 +830,10 @@ export function createBridge(wsPort: number, opts: WsBridgeOptions = {}): WsBrid
|
|
|
831
830
|
},
|
|
832
831
|
// a caller holding its own pinned sim id (a flow runner sets simId on every
|
|
833
832
|
// command, so it never reaches the pin-following path in send) asks here
|
|
834
|
-
// after a reload retires
|
|
835
|
-
//
|
|
833
|
+
// after a reload retires its socket. the page can reconnect under a new id
|
|
834
|
+
// or restore the old id; null means no unique same-host target exists.
|
|
836
835
|
async resolveReloadedSim(retiredSimId: string) {
|
|
837
|
-
return
|
|
836
|
+
return pickReloadedTarget(await this.listSims(), retiredSimId)
|
|
838
837
|
},
|
|
839
838
|
async focusSim(simId?: string) {
|
|
840
839
|
return this.send({ type: 'focus', simId })
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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;
|
|
@@ -1065,15 +1065,17 @@ function createBridge(wsPort, opts = {}) {
|
|
|
1065
1065
|
let noticedTarget = false;
|
|
1066
1066
|
const hostPidBySimId = /* @__PURE__ */ new Map();
|
|
1067
1067
|
const lineageLookupBySimId = /* @__PURE__ */ new Map();
|
|
1068
|
-
function
|
|
1068
|
+
function pickReloadedTarget(sims, retiredSimId) {
|
|
1069
1069
|
const pinnedHostPid = hostPidBySimId.get(retiredSimId);
|
|
1070
1070
|
if (pinnedHostPid === void 0) return null;
|
|
1071
|
-
const
|
|
1072
|
-
(sim) => sim.
|
|
1071
|
+
const matches = (Array.isArray(sims) ? sims : []).filter(
|
|
1072
|
+
(sim) => sim.readyState === "open" && sim.meta?.sootsimHostPid === pinnedHostPid
|
|
1073
1073
|
);
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
return
|
|
1074
|
+
const restored = matches.find((sim) => sim.id === retiredSimId);
|
|
1075
|
+
if (restored) return restored.id;
|
|
1076
|
+
if (matches.length !== 1) return null;
|
|
1077
|
+
hostPidBySimId.set(matches[0].id, pinnedHostPid);
|
|
1078
|
+
return matches[0].id;
|
|
1077
1079
|
}
|
|
1078
1080
|
function maybeNoticeTarget(cmdType, simId) {
|
|
1079
1081
|
if (noticedTarget) return;
|
|
@@ -1191,7 +1193,7 @@ function createBridge(wsPort, opts = {}) {
|
|
|
1191
1193
|
const message = error instanceof Error ? error.message : String(error);
|
|
1192
1194
|
const missingSimMessage = `no sim connected with id ${sentSimId}`;
|
|
1193
1195
|
if (opts.simIdSource !== "flag" && sentSimId && cmd.simId === void 0 && (message === missingSimMessage || message.startsWith(`${missingSimMessage};`))) {
|
|
1194
|
-
const successor =
|
|
1196
|
+
const successor = pickReloadedTarget(
|
|
1195
1197
|
await sendOnce(void 0, { type: "bridge:list-sims" }),
|
|
1196
1198
|
sentSimId
|
|
1197
1199
|
);
|
|
@@ -1217,10 +1219,10 @@ function createBridge(wsPort, opts = {}) {
|
|
|
1217
1219
|
},
|
|
1218
1220
|
// a caller holding its own pinned sim id (a flow runner sets simId on every
|
|
1219
1221
|
// command, so it never reaches the pin-following path in send) asks here
|
|
1220
|
-
// after a reload retires
|
|
1221
|
-
//
|
|
1222
|
+
// after a reload retires its socket. the page can reconnect under a new id
|
|
1223
|
+
// or restore the old id; null means no unique same-host target exists.
|
|
1222
1224
|
async resolveReloadedSim(retiredSimId) {
|
|
1223
|
-
return
|
|
1225
|
+
return pickReloadedTarget(await this.listSims(), retiredSimId);
|
|
1224
1226
|
},
|
|
1225
1227
|
async focusSim(simId) {
|
|
1226
1228
|
return this.send({ type: "focus", simId });
|
|
@@ -1739,6 +1741,7 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
|
|
|
1739
1741
|
result = await bridge.send(
|
|
1740
1742
|
{
|
|
1741
1743
|
type: "waitFor",
|
|
1744
|
+
...options.simId ? { simId: options.simId } : {},
|
|
1742
1745
|
waitForOptions: { condition: { type: "ready" }, timeoutMs }
|
|
1743
1746
|
},
|
|
1744
1747
|
{ timeoutMs: timeoutMs + 1e3 }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.500 | (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.500 | (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/menu.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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.500 | (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;
|
|
@@ -742,6 +742,7 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
|
|
|
742
742
|
result = await bridge.send(
|
|
743
743
|
{
|
|
744
744
|
type: "waitFor",
|
|
745
|
+
...options.simId ? { simId: options.simId } : {},
|
|
745
746
|
waitForOptions: { condition: { type: "ready" }, timeoutMs }
|
|
746
747
|
},
|
|
747
748
|
{ timeoutMs: timeoutMs + 1e3 }
|
package/dist-lib/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.500 | (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);
|
|
@@ -646,6 +646,7 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
|
|
|
646
646
|
result = await bridge.send(
|
|
647
647
|
{
|
|
648
648
|
type: "waitFor",
|
|
649
|
+
...options.simId ? { simId: options.simId } : {},
|
|
649
650
|
waitForOptions: { condition: { type: "ready" }, timeoutMs }
|
|
650
651
|
},
|
|
651
652
|
{ timeoutMs: timeoutMs + 1e3 }
|
package/dist-lib/skills.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.500 | (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;
|
|
@@ -31103,15 +31103,17 @@ function createBridge(wsPort, opts = {}) {
|
|
|
31103
31103
|
let noticedTarget = false;
|
|
31104
31104
|
const hostPidBySimId = /* @__PURE__ */ new Map();
|
|
31105
31105
|
const lineageLookupBySimId = /* @__PURE__ */ new Map();
|
|
31106
|
-
function
|
|
31106
|
+
function pickReloadedTarget(sims, retiredSimId) {
|
|
31107
31107
|
const pinnedHostPid = hostPidBySimId.get(retiredSimId);
|
|
31108
31108
|
if (pinnedHostPid === void 0) return null;
|
|
31109
|
-
const
|
|
31110
|
-
(sim) => sim.
|
|
31109
|
+
const matches = (Array.isArray(sims) ? sims : []).filter(
|
|
31110
|
+
(sim) => sim.readyState === "open" && sim.meta?.sootsimHostPid === pinnedHostPid
|
|
31111
31111
|
);
|
|
31112
|
-
|
|
31113
|
-
|
|
31114
|
-
return
|
|
31112
|
+
const restored = matches.find((sim) => sim.id === retiredSimId);
|
|
31113
|
+
if (restored) return restored.id;
|
|
31114
|
+
if (matches.length !== 1) return null;
|
|
31115
|
+
hostPidBySimId.set(matches[0].id, pinnedHostPid);
|
|
31116
|
+
return matches[0].id;
|
|
31115
31117
|
}
|
|
31116
31118
|
function maybeNoticeTarget(cmdType, simId) {
|
|
31117
31119
|
if (noticedTarget) return;
|
|
@@ -31229,7 +31231,7 @@ function createBridge(wsPort, opts = {}) {
|
|
|
31229
31231
|
const message = error instanceof Error ? error.message : String(error);
|
|
31230
31232
|
const missingSimMessage = `no sim connected with id ${sentSimId}`;
|
|
31231
31233
|
if (opts.simIdSource !== "flag" && sentSimId && cmd.simId === void 0 && (message === missingSimMessage || message.startsWith(`${missingSimMessage};`))) {
|
|
31232
|
-
const successor =
|
|
31234
|
+
const successor = pickReloadedTarget(
|
|
31233
31235
|
await sendOnce(void 0, { type: "bridge:list-sims" }),
|
|
31234
31236
|
sentSimId
|
|
31235
31237
|
);
|
|
@@ -31255,10 +31257,10 @@ function createBridge(wsPort, opts = {}) {
|
|
|
31255
31257
|
},
|
|
31256
31258
|
// a caller holding its own pinned sim id (a flow runner sets simId on every
|
|
31257
31259
|
// command, so it never reaches the pin-following path in send) asks here
|
|
31258
|
-
// after a reload retires
|
|
31259
|
-
//
|
|
31260
|
+
// after a reload retires its socket. the page can reconnect under a new id
|
|
31261
|
+
// or restore the old id; null means no unique same-host target exists.
|
|
31260
31262
|
async resolveReloadedSim(retiredSimId) {
|
|
31261
|
-
return
|
|
31263
|
+
return pickReloadedTarget(await this.listSims(), retiredSimId);
|
|
31262
31264
|
},
|
|
31263
31265
|
async focusSim(simId) {
|
|
31264
31266
|
return this.send({ type: "focus", simId });
|
|
@@ -32574,6 +32576,7 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
|
|
|
32574
32576
|
result = await bridge.send(
|
|
32575
32577
|
{
|
|
32576
32578
|
type: "waitFor",
|
|
32579
|
+
...options.simId ? { simId: options.simId } : {},
|
|
32577
32580
|
waitForOptions: { condition: { type: "ready" }, timeoutMs }
|
|
32578
32581
|
},
|
|
32579
32582
|
{ timeoutMs: timeoutMs + 1e3 }
|
|
@@ -36562,7 +36565,9 @@ var init_bridge_flow_runner = __esm({
|
|
|
36562
36565
|
});
|
|
36563
36566
|
}
|
|
36564
36567
|
async waitForTree(timeout = DEFAULT_TIMEOUT) {
|
|
36565
|
-
let status = await inspectWaitReady(this.bridge, scaledTimeout(timeout)
|
|
36568
|
+
let status = await inspectWaitReady(this.bridge, scaledTimeout(timeout), {
|
|
36569
|
+
simId: this.opts.simId
|
|
36570
|
+
});
|
|
36566
36571
|
if (status.ready) return;
|
|
36567
36572
|
if (status.externalError) {
|
|
36568
36573
|
throw new Error(`app failed to load: ${status.externalError}`);
|
|
@@ -36584,7 +36589,9 @@ var init_bridge_flow_runner = __esm({
|
|
|
36584
36589
|
);
|
|
36585
36590
|
this.opts.simId = successor;
|
|
36586
36591
|
saveCurrentSimId(successor);
|
|
36587
|
-
status = await inspectWaitReady(this.bridge, scaledTimeout(timeout)
|
|
36592
|
+
status = await inspectWaitReady(this.bridge, scaledTimeout(timeout), {
|
|
36593
|
+
simId: this.opts.simId
|
|
36594
|
+
});
|
|
36588
36595
|
if (status.ready) return;
|
|
36589
36596
|
}
|
|
36590
36597
|
}
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.500 | (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;
|