peachsim 0.1.661 → 0.1.663
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/inspect/core.ts +9 -1
- package/cli/commands/inspect/settling.ts +44 -1
- package/cli/commands/inspect/wait-ready.ts +40 -61
- 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 +6 -2
- package/dist-lib/bridge-contract-input.mjs +6 -2
- 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-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 +8 -2
- 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 +197 -60
- 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 +29 -2
- package/dist-lib/sdk.mjs +28 -2
- package/dist-lib/skills.cjs +9 -2
- 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/androidx/activity/ActivityViewModelLazy.kt +21 -0
- package/kotlin/AppSources/androidx/activity/ComponentActivity.kt +5 -3
- package/kotlin/AppSources/androidx/lifecycle/AndroidViewModel.kt +10 -0
- package/kotlin/AppSources/dev/peach/app/PeachApp.kt +16 -2
- package/kotlin/tools/abi-classes.main.kts +41 -0
- package/package.json +1 -1
- package/src/bridge-contract-input.ts +5 -1
- package/src/bridge-contract.ts +4 -1
- package/src/generated/android-framework-themes.json +341 -0
- package/src/kotlin-app.ts +47 -26
- package/src/kotlin-host.ts +105 -17
- package/src/kotlin-view-models.ts +133 -0
- package/src/sdk.ts +2 -1
package/dist-lib/kotlin-host.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.663 | (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;
|
|
@@ -65,6 +65,81 @@ function isRecord(value) {
|
|
|
65
65
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
// src/kotlin-view-models.ts
|
|
69
|
+
var VIEW_MODEL = "androidx.lifecycle.ViewModel";
|
|
70
|
+
var ANDROID_VIEW_MODEL = "androidx.lifecycle.AndroidViewModel";
|
|
71
|
+
var APPLICATION = "android.app.Application";
|
|
72
|
+
var HANDLE = "androidx.lifecycle.SavedStateHandle";
|
|
73
|
+
function strings(value) {
|
|
74
|
+
if (!Array.isArray(value) || !value.every((item) => typeof item === "string"))
|
|
75
|
+
throw new Error("abi-classes printed an invalid list");
|
|
76
|
+
return value;
|
|
77
|
+
}
|
|
78
|
+
function readAbiClasses(output) {
|
|
79
|
+
return output.split("\n").filter((line) => line.startsWith("{")).map((line) => {
|
|
80
|
+
const row = JSON.parse(line);
|
|
81
|
+
if (!isRecord(row) || typeof row.name !== "string" || typeof row.kind !== "string" || typeof row.modality !== "string" || typeof row.inner !== "boolean" || typeof row.generic !== "boolean" || !Array.isArray(row.constructors))
|
|
82
|
+
throw new Error(`abi-classes printed an invalid class: ${line}`);
|
|
83
|
+
return {
|
|
84
|
+
name: row.name,
|
|
85
|
+
kind: row.kind,
|
|
86
|
+
modality: row.modality,
|
|
87
|
+
inner: row.inner,
|
|
88
|
+
generic: row.generic,
|
|
89
|
+
supers: strings(row.supers),
|
|
90
|
+
constructors: row.constructors.map((constructor) => {
|
|
91
|
+
if (!isRecord(constructor) || typeof constructor.defaulted !== "boolean")
|
|
92
|
+
throw new Error(`abi-classes printed an invalid constructor: ${line}`);
|
|
93
|
+
return {
|
|
94
|
+
parameters: strings(constructor.parameters),
|
|
95
|
+
defaulted: constructor.defaulted
|
|
96
|
+
};
|
|
97
|
+
})
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function matching(row, signature) {
|
|
102
|
+
for (const { parameters } of row.constructors) {
|
|
103
|
+
if (parameters.join() === signature.join()) return "match";
|
|
104
|
+
if (parameters.length === signature.length && signature.every((type) => parameters.includes(type)))
|
|
105
|
+
return "misordered";
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
function signatureOf(row, android) {
|
|
110
|
+
const handled = matching(row, android ? [APPLICATION, HANDLE] : [HANDLE]);
|
|
111
|
+
if (handled === "misordered") return "misordered";
|
|
112
|
+
if (handled) return android ? "application-handle" : "handle";
|
|
113
|
+
if (android)
|
|
114
|
+
return row.constructors.some(({ parameters }) => parameters.join() === APPLICATION) ? "application" : null;
|
|
115
|
+
return row.constructors.some(
|
|
116
|
+
({ parameters, defaulted }) => parameters.length === 0 || defaulted
|
|
117
|
+
) ? "none" : null;
|
|
118
|
+
}
|
|
119
|
+
function viewModelClasses(rows) {
|
|
120
|
+
const byName = new Map(rows.map((row) => [row.name, row]));
|
|
121
|
+
const base = (row, seen) => {
|
|
122
|
+
for (const name of row.supers) {
|
|
123
|
+
if (name === VIEW_MODEL || name === ANDROID_VIEW_MODEL) return name;
|
|
124
|
+
const parent = byName.get(name);
|
|
125
|
+
if (parent && !seen.has(name)) {
|
|
126
|
+
seen.add(name);
|
|
127
|
+
const found = base(parent, seen);
|
|
128
|
+
if (found) return found;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return null;
|
|
132
|
+
};
|
|
133
|
+
return rows.flatMap((row) => {
|
|
134
|
+
if (row.kind !== "CLASS" || row.inner || row.generic) return [];
|
|
135
|
+
if (row.modality === "ABSTRACT" || row.modality === "SEALED") return [];
|
|
136
|
+
const root = base(row, /* @__PURE__ */ new Set());
|
|
137
|
+
if (!root) return [];
|
|
138
|
+
const signature = signatureOf(row, root === ANDROID_VIEW_MODEL);
|
|
139
|
+
return signature ? [{ name: row.name, signature }] : [];
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
|
|
68
143
|
// src/kotlin-host.ts
|
|
69
144
|
var run = (0, import_node_util.promisify)(import_node_child_process.execFile);
|
|
70
145
|
var KOTLIN_ARTIFACT_PREFIX = "/__peach/kotlin-artifact/";
|
|
@@ -236,7 +311,7 @@ function entrySource(ids) {
|
|
|
236
311
|
""
|
|
237
312
|
].join("\n");
|
|
238
313
|
}
|
|
239
|
-
var BUILD_FORMAT =
|
|
314
|
+
var BUILD_FORMAT = 8;
|
|
240
315
|
var builds = /* @__PURE__ */ new Map();
|
|
241
316
|
function buildsDir() {
|
|
242
317
|
return import_node_path2.default.join(kotlinHome(), "builds");
|
|
@@ -283,45 +358,74 @@ function viewsSource(viewIds) {
|
|
|
283
358
|
"}"
|
|
284
359
|
].join("\n");
|
|
285
360
|
}
|
|
361
|
+
function viewModelInitializer({ name, signature }) {
|
|
362
|
+
const call = (args) => ` addInitializer(${name}::class) { ${name}(${args}) }`;
|
|
363
|
+
switch (signature) {
|
|
364
|
+
case "none":
|
|
365
|
+
return call("");
|
|
366
|
+
case "handle":
|
|
367
|
+
return call("createSavedStateHandle()");
|
|
368
|
+
case "application":
|
|
369
|
+
return call("dev.peach.app.peachApplication()");
|
|
370
|
+
case "application-handle":
|
|
371
|
+
return call("dev.peach.app.peachApplication(), createSavedStateHandle()");
|
|
372
|
+
case "misordered":
|
|
373
|
+
return ` addInitializer(${name}::class) { throw UnsupportedOperationException(${JSON.stringify(
|
|
374
|
+
`Class ${name.split(".").pop()} must have parameters in the proper order: [class android.app.Application, class androidx.lifecycle.SavedStateHandle]`
|
|
375
|
+
)}) }`;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
function windowTheme(window) {
|
|
379
|
+
const argb = (color) => `0x${color.toString(16).padStart(8, "0")}.toInt()`;
|
|
380
|
+
return [
|
|
381
|
+
" android.view.WindowTheme(",
|
|
382
|
+
` ${window.edgeToEdgeEnforced}, ${argb(window.statusBarColor)}, ${argb(window.navigationBarColor)},`,
|
|
383
|
+
` ${window.statusBarContrastEnforced}, ${window.navigationBarContrastEnforced},`,
|
|
384
|
+
` ${window.lightStatusBar}, ${window.lightNavigationBar},`,
|
|
385
|
+
" ),"
|
|
386
|
+
];
|
|
387
|
+
}
|
|
286
388
|
async function kotlinAppArtifact(app, moduleRoot, origin) {
|
|
287
389
|
const toolchain = readToolchain(moduleRoot);
|
|
288
390
|
const kotlinString = (value) => JSON.stringify(value).replaceAll("$", "\\$");
|
|
391
|
+
const appEntry = (viewModels) => [
|
|
392
|
+
"@file:OptIn(kotlin.js.ExperimentalJsExport::class)",
|
|
393
|
+
"",
|
|
394
|
+
"import androidx.lifecycle.createSavedStateHandle",
|
|
395
|
+
"",
|
|
396
|
+
"@JsExport",
|
|
397
|
+
"fun peachAppMount(density: Float, fontScale: Float, locale: String, backend: String, stencilBits: Int,",
|
|
398
|
+
" regular: String, medium: String, bold: String, insets: String, night: Boolean,",
|
|
399
|
+
" invalidate: (Boolean) -> Unit): String = dev.peach.app.peachStartApp(",
|
|
400
|
+
" dev.peach.app.PeachAppSpec(",
|
|
401
|
+
` android.content.ComponentName(${kotlinString(app.packageName)}, ${kotlinString(app.launcher.name)}),`,
|
|
402
|
+
` android.content.ComponentName(${kotlinString(app.packageName)}, ${kotlinString(app.launcher.targetClass)}),`,
|
|
403
|
+
...windowTheme(app.window.day),
|
|
404
|
+
...windowTheme(app.window.night),
|
|
405
|
+
` { ${app.applicationClass ?? "android.app.Application"}() },`,
|
|
406
|
+
` { ${app.launcher.targetClass}() },`,
|
|
407
|
+
` ${app.handlesUiMode},`,
|
|
408
|
+
" androidx.lifecycle.viewmodel.viewModelFactory {",
|
|
409
|
+
...viewModels.map(viewModelInitializer),
|
|
410
|
+
" },",
|
|
411
|
+
" ),",
|
|
412
|
+
" density, fontScale, locale, backend, stencilBits, regular, medium, bold, insets, night, invalidate,",
|
|
413
|
+
")",
|
|
414
|
+
"",
|
|
415
|
+
"@JsExport",
|
|
416
|
+
`fun peachAppBack(): Boolean = dev.peach.app.peachAppBack(${app.predictiveBack})`,
|
|
417
|
+
"",
|
|
418
|
+
"@JsExport",
|
|
419
|
+
"fun peachAppTask(foreground: Boolean) = dev.peach.app.peachAppTask(foreground)",
|
|
420
|
+
"",
|
|
421
|
+
"@JsExport",
|
|
422
|
+
"fun peachAppNight(night: Boolean) = dev.peach.app.peachAppNight(night)",
|
|
423
|
+
""
|
|
424
|
+
].join("\n");
|
|
289
425
|
const generated = {
|
|
290
426
|
"PeachEntry.kt": entrySource([]),
|
|
291
427
|
"PeachViews.kt": viewsSource([]),
|
|
292
|
-
"PeachAppEntry.kt": [
|
|
293
|
-
"@file:OptIn(kotlin.js.ExperimentalJsExport::class)",
|
|
294
|
-
"",
|
|
295
|
-
"@JsExport",
|
|
296
|
-
"fun peachAppMount(density: Float, fontScale: Float, locale: String, backend: String, stencilBits: Int,",
|
|
297
|
-
" regular: String, medium: String, bold: String, insets: String, night: Boolean,",
|
|
298
|
-
" invalidate: (Boolean) -> Unit): String = dev.peach.app.peachStartApp(",
|
|
299
|
-
" dev.peach.app.PeachAppSpec(",
|
|
300
|
-
` android.content.ComponentName(${kotlinString(app.packageName)}, ${kotlinString(app.launcher.name)}),`,
|
|
301
|
-
` android.content.ComponentName(${kotlinString(app.packageName)}, ${kotlinString(app.launcher.targetClass)}),`,
|
|
302
|
-
" android.view.WindowTheme(",
|
|
303
|
-
` ${app.window.edgeToEdgeEnforced}, 0x${app.window.statusBarColor.toString(16).padStart(8, "0")}.toInt(),`,
|
|
304
|
-
` 0x${app.window.navigationBarColor.toString(16).padStart(8, "0")}.toInt(),`,
|
|
305
|
-
` ${app.window.statusBarContrastEnforced}, ${app.window.navigationBarContrastEnforced},`,
|
|
306
|
-
` ${app.window.lightStatusBar}, ${app.window.lightNavigationBar},`,
|
|
307
|
-
" ),",
|
|
308
|
-
` { ${app.applicationClass ?? "android.app.Application"}() },`,
|
|
309
|
-
` { ${app.launcher.targetClass}() },`,
|
|
310
|
-
` ${app.handlesUiMode},`,
|
|
311
|
-
" ),",
|
|
312
|
-
" density, fontScale, locale, backend, stencilBits, regular, medium, bold, insets, night, invalidate,",
|
|
313
|
-
")",
|
|
314
|
-
"",
|
|
315
|
-
"@JsExport",
|
|
316
|
-
`fun peachAppBack(): Boolean = dev.peach.app.peachAppBack(${app.predictiveBack})`,
|
|
317
|
-
"",
|
|
318
|
-
"@JsExport",
|
|
319
|
-
"fun peachAppTask(foreground: Boolean) = dev.peach.app.peachAppTask(foreground)",
|
|
320
|
-
"",
|
|
321
|
-
"@JsExport",
|
|
322
|
-
"fun peachAppNight(night: Boolean) = dev.peach.app.peachAppNight(night)",
|
|
323
|
-
""
|
|
324
|
-
].join("\n")
|
|
428
|
+
"PeachAppEntry.kt": appEntry([])
|
|
325
429
|
};
|
|
326
430
|
const shims = [
|
|
327
431
|
...kotlinSources(import_node_path2.default.join(moduleRoot, "Sources")),
|
|
@@ -336,13 +440,27 @@ async function kotlinAppArtifact(app, moduleRoot, origin) {
|
|
|
336
440
|
sources: app.sources,
|
|
337
441
|
generated,
|
|
338
442
|
shims,
|
|
339
|
-
usesCompose: true
|
|
443
|
+
usesCompose: true,
|
|
444
|
+
viewModels: {
|
|
445
|
+
file: "PeachAppEntry.kt",
|
|
446
|
+
render: appEntry,
|
|
447
|
+
script: import_node_path2.default.join(moduleRoot, "tools/abi-classes.main.kts")
|
|
448
|
+
}
|
|
340
449
|
},
|
|
341
450
|
origin
|
|
342
451
|
);
|
|
343
452
|
}
|
|
344
453
|
async function compileKotlin(input, origin) {
|
|
345
|
-
const {
|
|
454
|
+
const {
|
|
455
|
+
root,
|
|
456
|
+
toolchain,
|
|
457
|
+
language,
|
|
458
|
+
sources,
|
|
459
|
+
generated,
|
|
460
|
+
shims,
|
|
461
|
+
usesCompose,
|
|
462
|
+
viewModels
|
|
463
|
+
} = input;
|
|
346
464
|
const digest = (0, import_node_crypto.createHash)("sha256");
|
|
347
465
|
digest.update(JSON.stringify({ format: BUILD_FORMAT, toolchain, language }));
|
|
348
466
|
for (const file of [...shims, ...sources])
|
|
@@ -388,30 +506,49 @@ async function compileKotlin(input, origin) {
|
|
|
388
506
|
"-libraries",
|
|
389
507
|
libraries.join(import_node_path2.default.delimiter)
|
|
390
508
|
];
|
|
509
|
+
const compileKlib = (outputDir) => run(
|
|
510
|
+
kotlinc,
|
|
511
|
+
[
|
|
512
|
+
...common,
|
|
513
|
+
...usesCompose ? [
|
|
514
|
+
`-Xplugin=${import_node_path2.default.resolve(import_node_path2.default.dirname(kotlinc), "../lib/compose-compiler-plugin.jar")}`
|
|
515
|
+
] : [],
|
|
516
|
+
"-language-version",
|
|
517
|
+
language,
|
|
518
|
+
"-api-version",
|
|
519
|
+
language,
|
|
520
|
+
"-nowarn",
|
|
521
|
+
"-nopack",
|
|
522
|
+
"-ir-output-dir",
|
|
523
|
+
outputDir,
|
|
524
|
+
"-ir-output-name",
|
|
525
|
+
"app",
|
|
526
|
+
...shims,
|
|
527
|
+
...sources,
|
|
528
|
+
...Object.keys(generated).map((name) => import_node_path2.default.join(generatedDir, name))
|
|
529
|
+
],
|
|
530
|
+
{ maxBuffer: 16 * 1024 * 1024 }
|
|
531
|
+
);
|
|
391
532
|
try {
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
import_node_path2.default.join(
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
...Object.keys(generated).map((name) => import_node_path2.default.join(generatedDir, name))
|
|
412
|
-
],
|
|
413
|
-
{ maxBuffer: 16 * 1024 * 1024 }
|
|
414
|
-
);
|
|
533
|
+
if (viewModels && sources.some((file) => import_node_fs.default.readFileSync(file, "utf8").includes("ViewModel"))) {
|
|
534
|
+
await compileKlib(import_node_path2.default.join(work, "abi"));
|
|
535
|
+
const { stdout } = await run(
|
|
536
|
+
import_node_path2.default.join(import_node_path2.default.dirname(kotlinc), "kotlinc"),
|
|
537
|
+
[
|
|
538
|
+
"-cp",
|
|
539
|
+
import_node_path2.default.resolve(import_node_path2.default.dirname(kotlinc), "../lib/kotlin-compiler.jar"),
|
|
540
|
+
"-script",
|
|
541
|
+
viewModels.script,
|
|
542
|
+
import_node_path2.default.join(work, "abi")
|
|
543
|
+
],
|
|
544
|
+
{ maxBuffer: 64 * 1024 * 1024 }
|
|
545
|
+
);
|
|
546
|
+
import_node_fs.default.writeFileSync(
|
|
547
|
+
import_node_path2.default.join(generatedDir, viewModels.file),
|
|
548
|
+
viewModels.render(viewModelClasses(readAbiClasses(stdout)))
|
|
549
|
+
);
|
|
550
|
+
}
|
|
551
|
+
await compileKlib(import_node_path2.default.join(work, "klib"));
|
|
415
552
|
await run(
|
|
416
553
|
kotlinc,
|
|
417
554
|
[
|
package/dist-lib/menu.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.663 | (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.663 | (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.663 | (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.663 | (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.663 | (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/plist.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.663 | (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/plist.mjs
CHANGED
package/dist-lib/profiles.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.663 | (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.663 | (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.663 | (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.663 | (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.663 | (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.663 | (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;
|
|
@@ -99,6 +99,7 @@ __export(sdk_exports, {
|
|
|
99
99
|
tapResolvedTarget: () => tapResolvedTarget,
|
|
100
100
|
tapTargetFromPayload: () => tapTargetFromPayload,
|
|
101
101
|
waitForSootsimIdle: () => waitForSootsimIdle,
|
|
102
|
+
waitReadyAndSettle: () => waitReadyAndSettle,
|
|
102
103
|
waitReadyReason: () => waitReadyReason
|
|
103
104
|
});
|
|
104
105
|
module.exports = __toCommonJS(sdk_exports);
|
|
@@ -860,7 +861,13 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
|
|
|
860
861
|
{
|
|
861
862
|
type: "waitFor",
|
|
862
863
|
...options.simId ? { simId: options.simId } : {},
|
|
863
|
-
waitForOptions: {
|
|
864
|
+
waitForOptions: {
|
|
865
|
+
condition: {
|
|
866
|
+
type: "ready",
|
|
867
|
+
...options.stableMs === void 0 ? {} : { stableMs: options.stableMs }
|
|
868
|
+
},
|
|
869
|
+
timeoutMs
|
|
870
|
+
}
|
|
864
871
|
},
|
|
865
872
|
{ timeoutMs: timeoutMs + 1e3 }
|
|
866
873
|
);
|
|
@@ -1683,6 +1690,25 @@ async function waitForSootsimIdle({
|
|
|
1683
1690
|
blockedBy: typeof blockedBy === "string" ? blockedBy : "unknown"
|
|
1684
1691
|
};
|
|
1685
1692
|
}
|
|
1693
|
+
async function waitReadyAndSettle(bridge, timeoutMs, options = {}) {
|
|
1694
|
+
const start = Date.now();
|
|
1695
|
+
const ready = await inspectWaitReady(bridge, timeoutMs, options);
|
|
1696
|
+
if (!ready.ready) return { status: ready, idle: null, elapsedMs: Date.now() - start };
|
|
1697
|
+
const idle = await waitForSootsimIdle({
|
|
1698
|
+
bridge,
|
|
1699
|
+
simId: options.simId,
|
|
1700
|
+
maxMs: Math.max(100, Math.min(1e4, timeoutMs - (Date.now() - start))),
|
|
1701
|
+
pollMs: 32,
|
|
1702
|
+
stablePolls: 2
|
|
1703
|
+
});
|
|
1704
|
+
if (!idle.settled) return { status: ready, idle, elapsedMs: Date.now() - start };
|
|
1705
|
+
const settled = await inspectWaitReady(
|
|
1706
|
+
bridge,
|
|
1707
|
+
Math.max(1e3, timeoutMs - (Date.now() - start)),
|
|
1708
|
+
{ ...options.simId ? { simId: options.simId } : {}, stableMs: 0 }
|
|
1709
|
+
);
|
|
1710
|
+
return { status: settled, idle, elapsedMs: Date.now() - start };
|
|
1711
|
+
}
|
|
1686
1712
|
|
|
1687
1713
|
// cli/commands/inspect/actions.ts
|
|
1688
1714
|
var DEFAULT_AGENT_TIMING = {
|
|
@@ -2619,5 +2645,6 @@ var SimClient = class {
|
|
|
2619
2645
|
tapResolvedTarget,
|
|
2620
2646
|
tapTargetFromPayload,
|
|
2621
2647
|
waitForSootsimIdle,
|
|
2648
|
+
waitReadyAndSettle,
|
|
2622
2649
|
waitReadyReason
|
|
2623
2650
|
});
|
package/dist-lib/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.663 | (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);
|
|
@@ -760,7 +760,13 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
|
|
|
760
760
|
{
|
|
761
761
|
type: "waitFor",
|
|
762
762
|
...options.simId ? { simId: options.simId } : {},
|
|
763
|
-
waitForOptions: {
|
|
763
|
+
waitForOptions: {
|
|
764
|
+
condition: {
|
|
765
|
+
type: "ready",
|
|
766
|
+
...options.stableMs === void 0 ? {} : { stableMs: options.stableMs }
|
|
767
|
+
},
|
|
768
|
+
timeoutMs
|
|
769
|
+
}
|
|
764
770
|
},
|
|
765
771
|
{ timeoutMs: timeoutMs + 1e3 }
|
|
766
772
|
);
|
|
@@ -1583,6 +1589,25 @@ async function waitForSootsimIdle({
|
|
|
1583
1589
|
blockedBy: typeof blockedBy === "string" ? blockedBy : "unknown"
|
|
1584
1590
|
};
|
|
1585
1591
|
}
|
|
1592
|
+
async function waitReadyAndSettle(bridge, timeoutMs, options = {}) {
|
|
1593
|
+
const start = Date.now();
|
|
1594
|
+
const ready = await inspectWaitReady(bridge, timeoutMs, options);
|
|
1595
|
+
if (!ready.ready) return { status: ready, idle: null, elapsedMs: Date.now() - start };
|
|
1596
|
+
const idle = await waitForSootsimIdle({
|
|
1597
|
+
bridge,
|
|
1598
|
+
simId: options.simId,
|
|
1599
|
+
maxMs: Math.max(100, Math.min(1e4, timeoutMs - (Date.now() - start))),
|
|
1600
|
+
pollMs: 32,
|
|
1601
|
+
stablePolls: 2
|
|
1602
|
+
});
|
|
1603
|
+
if (!idle.settled) return { status: ready, idle, elapsedMs: Date.now() - start };
|
|
1604
|
+
const settled = await inspectWaitReady(
|
|
1605
|
+
bridge,
|
|
1606
|
+
Math.max(1e3, timeoutMs - (Date.now() - start)),
|
|
1607
|
+
{ ...options.simId ? { simId: options.simId } : {}, stableMs: 0 }
|
|
1608
|
+
);
|
|
1609
|
+
return { status: settled, idle, elapsedMs: Date.now() - start };
|
|
1610
|
+
}
|
|
1586
1611
|
|
|
1587
1612
|
// cli/commands/inspect/actions.ts
|
|
1588
1613
|
var DEFAULT_AGENT_TIMING = {
|
|
@@ -2518,5 +2543,6 @@ export {
|
|
|
2518
2543
|
tapResolvedTarget,
|
|
2519
2544
|
tapTargetFromPayload,
|
|
2520
2545
|
waitForSootsimIdle,
|
|
2546
|
+
waitReadyAndSettle,
|
|
2521
2547
|
waitReadyReason
|
|
2522
2548
|
};
|
package/dist-lib/skills.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.663 | (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;
|
|
@@ -33769,7 +33769,13 @@ async function inspectWaitReady(bridge, timeoutMs = 2e4, options = {}) {
|
|
|
33769
33769
|
{
|
|
33770
33770
|
type: "waitFor",
|
|
33771
33771
|
...options.simId ? { simId: options.simId } : {},
|
|
33772
|
-
waitForOptions: {
|
|
33772
|
+
waitForOptions: {
|
|
33773
|
+
condition: {
|
|
33774
|
+
type: "ready",
|
|
33775
|
+
...options.stableMs === void 0 ? {} : { stableMs: options.stableMs }
|
|
33776
|
+
},
|
|
33777
|
+
timeoutMs
|
|
33778
|
+
}
|
|
33773
33779
|
},
|
|
33774
33780
|
{ timeoutMs: timeoutMs + 1e3 }
|
|
33775
33781
|
);
|
|
@@ -38965,6 +38971,7 @@ async function waitForSootsimIdle({
|
|
|
38965
38971
|
var init_settling = __esm({
|
|
38966
38972
|
"cli/commands/inspect/settling.ts"() {
|
|
38967
38973
|
"use strict";
|
|
38974
|
+
init_core();
|
|
38968
38975
|
}
|
|
38969
38976
|
});
|
|
38970
38977
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.663 | (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.663 | (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.663 | (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/swift.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.663 | (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/vite-swift.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.663 | (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.663 | (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;
|