sootsim 0.1.305 → 0.1.307
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -4
- package/dist-cli/bin.js +5 -5
- package/dist-cli/chunks/{agent-OJP4VF2K.js → agent-BQ3KAQAU.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-HMVFZKH3.js → agent-wrapper-DS6FBIAI.js} +2 -2
- package/dist-cli/chunks/{app-fonts-INFYQMIN.js → app-fonts-VTLZYBCH.js} +2 -2
- package/dist-cli/chunks/{assert-YSFBCP5P.js → assert-MPQ4CDNH.js} +2 -2
- package/dist-cli/chunks/{auth-M7RKDYQV.js → auth-O3PQ5WAK.js} +2 -2
- package/dist-cli/chunks/{beta-4NRMM37T.js → beta-CHK46VAX.js} +2 -2
- package/dist-cli/chunks/{camera-MHLM35MB.js → camera-YOO6XYC5.js} +2 -2
- package/dist-cli/chunks/{chunk-6EXIYEOQ.js → chunk-2ODPPVQC.js} +2 -2
- package/dist-cli/chunks/{chunk-2UKSI3VX.js → chunk-2P5OBO7Z.js} +1 -1
- package/dist-cli/chunks/{chunk-R5TBMYGH.js → chunk-3JLFWHOZ.js} +1 -1
- package/dist-cli/chunks/{chunk-CWDEDUOZ.js → chunk-3S57XWPX.js} +1 -1
- package/dist-cli/chunks/{chunk-JKIPNRAK.js → chunk-4BZ6SM53.js} +24 -25
- package/dist-cli/chunks/{chunk-H5D6E3DR.js → chunk-4QCKHLRV.js} +2 -2
- package/dist-cli/chunks/{chunk-UUKUKTV3.js → chunk-537ULSCX.js} +11 -11
- package/dist-cli/chunks/chunk-5MN7CUQB.js +6 -0
- package/dist-cli/chunks/{chunk-XI6CPN53.js → chunk-6Q3FIZGP.js} +1 -1
- package/dist-cli/chunks/{chunk-TRV5K6D2.js → chunk-746PZ7ND.js} +1 -1
- package/dist-cli/chunks/{chunk-B65RMI7A.js → chunk-7HPBPICZ.js} +1 -1
- package/dist-cli/chunks/{chunk-2D7NF3XK.js → chunk-7T5WCLEU.js} +2 -2
- package/dist-cli/chunks/{chunk-KG2WUKD2.js → chunk-AD2J3Y5G.js} +2 -2
- package/dist-cli/chunks/chunk-BO2XSJJA.js +5 -0
- package/dist-cli/chunks/{chunk-IJ64Z77P.js → chunk-CKLXK3SU.js} +2 -2
- package/dist-cli/chunks/{chunk-DHDSGBZB.js → chunk-E2AY5MPI.js} +1 -1
- package/dist-cli/chunks/chunk-EWSHWBPU.js +4 -0
- package/dist-cli/chunks/chunk-EY5RFXHC.js +125 -0
- package/dist-cli/chunks/{chunk-6YE25EJB.js → chunk-FRTR2EUL.js} +3 -3
- package/dist-cli/chunks/{chunk-SWBTXTEO.js → chunk-IBM36KUP.js} +2 -2
- package/dist-cli/chunks/{chunk-WQYUHDBU.js → chunk-J52NXD2T.js} +2 -2
- package/dist-cli/chunks/chunk-KCRDI5B2.js +5 -0
- package/dist-cli/chunks/{chunk-JQRRJIMT.js → chunk-KPDYFXBD.js} +1 -1
- package/dist-cli/chunks/{chunk-NNR3BU5O.js → chunk-LL76B22R.js} +7 -7
- package/dist-cli/chunks/{chunk-4Q42Y64Y.js → chunk-LTS6OYSK.js} +2 -2
- package/dist-cli/chunks/{chunk-HKPJYMJC.js → chunk-NK72QUBY.js} +15 -12
- package/dist-cli/chunks/chunk-NLE5PR7V.js +15 -0
- package/dist-cli/chunks/{chunk-EWVEUNRO.js → chunk-NWOGE4YS.js} +81 -37
- package/dist-cli/chunks/{chunk-DTHOMSAA.js → chunk-OQ6KN4TP.js} +2 -2
- package/dist-cli/chunks/{chunk-W3M4676V.js → chunk-Q32TOAPX.js} +3 -3
- package/dist-cli/chunks/{chunk-54AINFEF.js → chunk-Q35WXZFI.js} +2 -2
- package/dist-cli/chunks/{chunk-BDNZULU7.js → chunk-QJ7B6FFD.js} +2 -2
- package/dist-cli/chunks/chunk-RCLJQZQR.js +4 -0
- package/dist-cli/chunks/chunk-S5QHC5LD.js +4 -0
- package/dist-cli/chunks/{chunk-VKBCGFOU.js → chunk-SKMVVRFI.js} +2 -2
- package/dist-cli/chunks/{chunk-EBCXFB3K.js → chunk-SLEKK2UU.js} +1 -1
- package/dist-cli/chunks/chunk-SZDXEZ2I.js +4 -0
- package/dist-cli/chunks/{chunk-43SNLCXR.js → chunk-SZX2PHDS.js} +1 -1
- package/dist-cli/chunks/{chunk-AJCL7DHI.js → chunk-UKKB52JO.js} +2 -2
- package/dist-cli/chunks/{chunk-R6MBDR56.js → chunk-UURKPOZU.js} +1 -1
- package/dist-cli/chunks/{chunk-3PREBGTH.js → chunk-WE6WXVYB.js} +2 -2
- package/dist-cli/chunks/{chunk-EPZG2F4I.js → chunk-WPVMW3I5.js} +1 -1
- package/dist-cli/chunks/{chunk-J653UMCU.js → chunk-WTWGQFNU.js} +2 -2
- package/dist-cli/chunks/{chunk-SLCYXISJ.js → chunk-XRUSCWIH.js} +2 -2
- package/dist-cli/chunks/{chunk-LOF3WUKB.js → chunk-XVQ2YGCI.js} +1 -1
- package/dist-cli/chunks/{chunk-HMOYEM6V.js → chunk-YIKFWG22.js} +2 -2
- package/dist-cli/chunks/{chunk-KVLXMWV5.js → chunk-YPKDDYIE.js} +2 -2
- package/dist-cli/chunks/{chunk-HHLH4TWF.js → chunk-Z772XMEF.js} +1 -1
- package/dist-cli/chunks/{chunk-KSZRLJPA.js → chunk-ZJR2AKLU.js} +2 -2
- package/dist-cli/chunks/{chunk-POIK3AHY.js → chunk-ZZBMQEEE.js} +2 -2
- package/dist-cli/chunks/{cleanup-ZJ7FQKED.js → cleanup-RT2PX5NP.js} +2 -2
- package/dist-cli/chunks/{cli-version-5LGCFOAC.js → cli-version-W3D5LXK5.js} +2 -2
- package/dist-cli/chunks/{compat-EQACACVP.js → compat-LGAXCMPJ.js} +2 -2
- package/dist-cli/chunks/{config-ADGNCDG5.js → config-3MQYRCSB.js} +2 -2
- package/dist-cli/chunks/control-MDWGTCXV.js +4 -0
- package/dist-cli/chunks/daemon-4FHSWZSV.js +4 -0
- package/dist-cli/chunks/{debug-PU73W33T.js → debug-UKOFTGI3.js} +3 -3
- package/dist-cli/chunks/desktop-N6TEZAIJ.js +31 -0
- package/dist-cli/chunks/{detox-SHVVEPPX.js → detox-T2Y4HE44.js} +2 -2
- package/dist-cli/chunks/{device-NMRUACB4.js → device-ZE2WSDJN.js} +2 -2
- package/dist-cli/chunks/{diagnose-S2AVGABT.js → diagnose-WFEFBH6U.js} +2 -2
- package/dist-cli/chunks/disk-cleanup-YXC3JGG5.js +4 -0
- package/dist-cli/chunks/drivers-62L33HHX.js +4 -0
- package/dist-cli/chunks/{film-UB7N4EKB.js → film-THTAWD5P.js} +3 -3
- package/dist-cli/chunks/flow-3HCUMLZL.js +4 -0
- package/dist-cli/chunks/help-KEXQPE2I.js +4 -0
- package/dist-cli/chunks/{hidden-runtime-alias-M44SGZLM.js → hidden-runtime-alias-SNP5LSQD.js} +2 -2
- package/dist-cli/chunks/{home-paths-ZTEBHBUO.js → home-paths-WUCC72RE.js} +2 -2
- package/dist-cli/chunks/inspect-2SR5AEEA.js +4 -0
- package/dist-cli/chunks/install-desktop-KE5ZPY6L.js +4 -0
- package/dist-cli/chunks/{login-YQ3HRPPS.js → login-ZEB4WSVZ.js} +4 -4
- package/dist-cli/chunks/{logout-XGBDWO4J.js → logout-P6PV2WRO.js} +2 -2
- package/dist-cli/chunks/{maestro-CESBE2SF.js → maestro-TUA7YURM.js} +3 -3
- package/dist-cli/chunks/{maestro-generate-4IHISKJL.js → maestro-generate-HI4UM47Q.js} +3 -3
- package/dist-cli/chunks/{mode-BQGGZ737.js → mode-ILLUAGCG.js} +2 -2
- package/dist-cli/chunks/optional-demo-registry-R7UFXPBP.js +4 -0
- package/dist-cli/chunks/{perf-TUR22UTE.js → perf-4CE5R2TN.js} +2 -2
- package/dist-cli/chunks/{permissions-POJIVSRV.js → permissions-NQCKUHGU.js} +2 -2
- package/dist-cli/chunks/{record-Q55SGXLU.js → record-5JRY7R54.js} +3 -3
- package/dist-cli/chunks/{report-issue-LRRX7VJV.js → report-issue-PFE7RDDV.js} +2 -2
- package/dist-cli/chunks/runtime-MP2QVB2X.js +4 -0
- package/dist-cli/chunks/{screenshot-command-C7EU43J3.js → screenshot-command-R3MPUAQI.js} +3 -3
- package/dist-cli/chunks/{screenshot-layers-NYVOJYUU.js → screenshot-layers-TKLUUDFA.js} +2 -2
- package/dist-cli/chunks/{screenshots-capture-AYKJKBLR.js → screenshots-capture-6UT2EVTR.js} +2 -2
- package/dist-cli/chunks/{serve-EN3ZPJSA.js → serve-L5GFNPAX.js} +3 -3
- package/dist-cli/chunks/{setup-KKMKLJZE.js → setup-IZQ7IXYW.js} +2 -2
- package/dist-cli/chunks/{skills-DR5DG2SK.js → skills-2CY6YIL7.js} +2 -2
- package/dist-cli/chunks/{storage-GMDBVTQ5.js → storage-EPY4VXCY.js} +2 -2
- package/dist-cli/chunks/store-F5RQZH7P.js +4 -0
- package/dist-cli/chunks/telemetry-MZKLKJAS.js +4 -0
- package/dist-cli/chunks/{timeline-VY3444AZ.js → timeline-LK5IA74W.js} +2 -2
- package/dist-cli/chunks/{upgrade-EUYCW55F.js → upgrade-ZK6YJMUA.js} +2 -2
- package/dist-cli/chunks/upload-LP6UOKRF.js +4 -0
- package/dist-cli/chunks/{version-TEGM4WRU.js → version-SRC2HVYI.js} +2 -2
- package/dist-cli/chunks/{web-QF7LF4VB.js → web-SVNHYKX5.js} +2 -2
- package/dist-cli/chunks/{what-happened-HDTJGNND.js → what-happened-URW3Q7QP.js} +2 -2
- 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 +43 -21
- 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 +8 -1
- package/dist-lib/cli-constants.cjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +51 -41
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +222 -302
- 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/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.cjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/render-mode.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +43 -13
- package/dist-lib/sdk.cjs +47 -10
- package/dist-lib/sdk.mjs +47 -10
- package/dist-lib/skills.cjs +11364 -6863
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/scripts/dev-server-scanner.ts +9 -15
- package/scripts/optional-demo-registry.ts +52 -10
- package/skills/sootsim-debug/SKILL.md +4 -5
- package/skills/sootsim-setup/SKILL.md +29 -49
- package/src/bridge-constants.ts +15 -0
- package/src/host/bridge-host.ts +0 -16
- package/src/host/open-url.ts +2 -147
- package/src/plist.ts +27 -0
- package/src/settings-bundle.ts +2 -23
- package/src/skills/builtin/maestro-test.ts +4 -1
- package/src/vite-plugin.ts +2 -1
- package/dist-cli/chunks/chunk-COD6QGS2.js +0 -125
- package/dist-cli/chunks/chunk-KVOY4Z2X.js +0 -4
- package/dist-cli/chunks/chunk-OCRL2VU4.js +0 -4
- package/dist-cli/chunks/chunk-PELXRGDN.js +0 -4
- package/dist-cli/chunks/chunk-QJUKXBH5.js +0 -15
- package/dist-cli/chunks/chunk-QVH276LI.js +0 -5
- package/dist-cli/chunks/chunk-WIRBJTTU.js +0 -7
- package/dist-cli/chunks/chunk-XWMTLVCE.js +0 -4
- package/dist-cli/chunks/chunk-ZRQFYMTL.js +0 -4
- package/dist-cli/chunks/control-Y3E5IIMO.js +0 -4
- package/dist-cli/chunks/daemon-A6CWUYMR.js +0 -4
- package/dist-cli/chunks/desktop-V675PYF4.js +0 -34
- package/dist-cli/chunks/disk-cleanup-EJEZIIT4.js +0 -4
- package/dist-cli/chunks/drivers-PM4PVYHY.js +0 -4
- package/dist-cli/chunks/flow-XJRNL25V.js +0 -4
- package/dist-cli/chunks/help-2ZJHCVUZ.js +0 -4
- package/dist-cli/chunks/inspect-L76RUF62.js +0 -4
- package/dist-cli/chunks/install-desktop-UIXKNXKF.js +0 -4
- package/dist-cli/chunks/optional-demo-registry-LWYRXVIE.js +0 -4
- package/dist-cli/chunks/runtime-NHDHZJJN.js +0 -4
- package/dist-cli/chunks/store-QZEMKQDC.js +0 -4
- package/dist-cli/chunks/telemetry-TNX72J2B.js +0 -4
- package/dist-cli/chunks/upload-D43U7RGT.js +0 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.307 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.307 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.307 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.307 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.307 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.307 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.307 | (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
package/dist-lib/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.307 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.307 | (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/render-mode.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.307 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.307 | (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;
|
|
@@ -105,12 +105,9 @@ function normalizeNativeDevBundleUrl(bundleUrl) {
|
|
|
105
105
|
// src/settings-bundle.ts
|
|
106
106
|
var import_promises = require("node:fs/promises");
|
|
107
107
|
var import_node_path = require("node:path");
|
|
108
|
+
|
|
109
|
+
// src/plist.ts
|
|
108
110
|
var import_plist = __toESM(require("@expo/plist"), 1);
|
|
109
|
-
var MAX_PLIST_BYTES = 1048576;
|
|
110
|
-
var MAX_CHILD_DEPTH = 8;
|
|
111
|
-
var MAX_PLIST_FILES = 32;
|
|
112
|
-
var MAX_SPECIFIERS = 512;
|
|
113
|
-
var settingsBundleCache = /* @__PURE__ */ new Map();
|
|
114
111
|
function isRecord(value) {
|
|
115
112
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
116
113
|
}
|
|
@@ -126,6 +123,19 @@ function resolvePlistParser(value) {
|
|
|
126
123
|
return typeof nestedParse === "function" ? (source) => Reflect.apply(nestedParse, nested, [source]) : null;
|
|
127
124
|
}
|
|
128
125
|
var parsePlist = resolvePlistParser(import_plist.default);
|
|
126
|
+
function parsePlistSource(source) {
|
|
127
|
+
return parsePlist?.(source) ?? null;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// src/settings-bundle.ts
|
|
131
|
+
var MAX_PLIST_BYTES = 1048576;
|
|
132
|
+
var MAX_CHILD_DEPTH = 8;
|
|
133
|
+
var MAX_PLIST_FILES = 32;
|
|
134
|
+
var MAX_SPECIFIERS = 512;
|
|
135
|
+
var settingsBundleCache = /* @__PURE__ */ new Map();
|
|
136
|
+
function isRecord2(value) {
|
|
137
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
138
|
+
}
|
|
129
139
|
function optionalString(value) {
|
|
130
140
|
return typeof value === "string" ? value : void 0;
|
|
131
141
|
}
|
|
@@ -248,12 +258,11 @@ async function settingsBundleFingerprint(bundlePath) {
|
|
|
248
258
|
}
|
|
249
259
|
async function parsePlistRecord(path) {
|
|
250
260
|
try {
|
|
251
|
-
if (!parsePlist) return null;
|
|
252
261
|
const metadata = await (0, import_promises.stat)(path);
|
|
253
262
|
if (!metadata.isFile() || metadata.size > MAX_PLIST_BYTES) return null;
|
|
254
263
|
const source = await (0, import_promises.readFile)(path, "utf8");
|
|
255
|
-
const parsed =
|
|
256
|
-
return
|
|
264
|
+
const parsed = parsePlistSource(source);
|
|
265
|
+
return isRecord2(parsed) ? parsed : null;
|
|
257
266
|
} catch {
|
|
258
267
|
return null;
|
|
259
268
|
}
|
|
@@ -289,7 +298,7 @@ function normalizeMultiValue(raw, key, title) {
|
|
|
289
298
|
};
|
|
290
299
|
}
|
|
291
300
|
async function normalizeSpecifier(raw, context) {
|
|
292
|
-
if (!
|
|
301
|
+
if (!isRecord2(raw)) return null;
|
|
293
302
|
if (context.budget.specifiers >= MAX_SPECIFIERS) return null;
|
|
294
303
|
const type = requiredString(raw.Type);
|
|
295
304
|
if (!type) return null;
|
|
@@ -439,14 +448,35 @@ function __resetAppSettingsBundleCacheForTests() {
|
|
|
439
448
|
}
|
|
440
449
|
|
|
441
450
|
// scripts/optional-demo-registry.ts
|
|
442
|
-
var
|
|
451
|
+
var import_node_fs = require("node:fs");
|
|
452
|
+
var import_node_path2 = require("node:path");
|
|
453
|
+
var import_node_url = require("node:url");
|
|
454
|
+
var REGISTRY_REPO_PATH = "packages/sootsim/scripts/demo-app-registry.ts";
|
|
455
|
+
var MAX_ANCESTOR_STEPS = 8;
|
|
456
|
+
function findInternalDemoRegistry(startDir) {
|
|
457
|
+
let dir = startDir;
|
|
458
|
+
for (let step = 0; step < MAX_ANCESTOR_STEPS; step++) {
|
|
459
|
+
if ((0, import_node_path2.basename)(dir) === "node_modules") return null;
|
|
460
|
+
const candidate = (0, import_node_path2.join)(dir, REGISTRY_REPO_PATH);
|
|
461
|
+
if ((0, import_node_fs.existsSync)(candidate)) return candidate;
|
|
462
|
+
const parent = (0, import_node_path2.dirname)(dir);
|
|
463
|
+
if (parent === dir) return null;
|
|
464
|
+
dir = parent;
|
|
465
|
+
}
|
|
466
|
+
return null;
|
|
467
|
+
}
|
|
443
468
|
var cached = null;
|
|
444
469
|
async function loadOptionalDemoApps() {
|
|
445
470
|
if (cached) return cached;
|
|
471
|
+
const registryPath = findInternalDemoRegistry((0, import_node_path2.dirname)((0, import_node_url.fileURLToPath)(__sootsim_import_meta_url)));
|
|
472
|
+
if (!registryPath) {
|
|
473
|
+
cached = [];
|
|
474
|
+
return cached;
|
|
475
|
+
}
|
|
446
476
|
try {
|
|
447
477
|
const mod = await import(
|
|
448
478
|
/* @vite-ignore */
|
|
449
|
-
|
|
479
|
+
(0, import_node_url.pathToFileURL)(registryPath).href
|
|
450
480
|
);
|
|
451
481
|
cached = Array.isArray(mod.APPS) ? mod.APPS : [];
|
|
452
482
|
} catch {
|
|
@@ -460,7 +490,6 @@ function optionalDemoAppsSync() {
|
|
|
460
490
|
|
|
461
491
|
// scripts/dev-server-scanner.ts
|
|
462
492
|
var execP = (0, import_util.promisify)(import_child_process.exec);
|
|
463
|
-
void loadOptionalDemoApps();
|
|
464
493
|
var TIMEOUT_MS = 250;
|
|
465
494
|
var MANIFEST_TIMEOUT_MS = 1500;
|
|
466
495
|
var TCP_GATE_MS = 120;
|
|
@@ -762,6 +791,7 @@ var knownNonPatched = /* @__PURE__ */ new Set();
|
|
|
762
791
|
var knownNonExpo = /* @__PURE__ */ new Set();
|
|
763
792
|
var knownOne = /* @__PURE__ */ new Set();
|
|
764
793
|
async function probePort(port, buildIconProxyUrl) {
|
|
794
|
+
await loadOptionalDemoApps();
|
|
765
795
|
if (!await tcpPing(port)) return null;
|
|
766
796
|
const onePath = `/node_modules/one/metro-entry.bundle?platform=ios&dev=true`;
|
|
767
797
|
const [sootsimRes, statusRes, manifestRes, expoRes] = await Promise.all([
|
package/dist-lib/sdk.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.307 | (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;
|
|
@@ -1859,18 +1859,60 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
1859
1859
|
type: node.type ?? null,
|
|
1860
1860
|
}
|
|
1861
1861
|
: null
|
|
1862
|
+
const coordinateAncestors = Array.isArray(inspected?.ancestors)
|
|
1863
|
+
? inspected.ancestors
|
|
1864
|
+
: []
|
|
1865
|
+
const ancestorMatchesRequested = coordinateAncestors.some(
|
|
1866
|
+
(ancestor) =>
|
|
1867
|
+
(typeof requestedTarget.nodeId === 'number' &&
|
|
1868
|
+
ancestor?.nodeId === requestedTarget.nodeId) ||
|
|
1869
|
+
(requestedTarget.testID &&
|
|
1870
|
+
ancestor?.testID === requestedTarget.testID) ||
|
|
1871
|
+
(requestedTarget.id && ancestor?.id === requestedTarget.id),
|
|
1872
|
+
)
|
|
1862
1873
|
const requestedTargetMatched =
|
|
1863
1874
|
coordinateTarget === null
|
|
1864
1875
|
? false
|
|
1865
1876
|
: typeof requestedTarget.nodeId === 'number' &&
|
|
1866
1877
|
typeof coordinateTarget.nodeId === 'number'
|
|
1867
|
-
? requestedTarget.nodeId === coordinateTarget.nodeId
|
|
1878
|
+
? requestedTarget.nodeId === coordinateTarget.nodeId ||
|
|
1879
|
+
ancestorMatchesRequested
|
|
1868
1880
|
: requestedTarget.testID && coordinateTarget.testID
|
|
1869
1881
|
? requestedTarget.testID === coordinateTarget.testID
|
|
1882
|
+
|| ancestorMatchesRequested
|
|
1870
1883
|
: requestedTarget.id && coordinateTarget.id
|
|
1871
1884
|
? requestedTarget.id === coordinateTarget.id
|
|
1872
|
-
|
|
1885
|
+
|| ancestorMatchesRequested
|
|
1886
|
+
: ancestorMatchesRequested
|
|
1887
|
+
if (!requestedTargetMatched) {
|
|
1888
|
+
return {
|
|
1889
|
+
requestedTargetMatched,
|
|
1890
|
+
requestedTarget,
|
|
1891
|
+
coordinateTarget,
|
|
1892
|
+
}
|
|
1893
|
+
}
|
|
1894
|
+
if (typeof t.activatePressAt !== 'function') {
|
|
1895
|
+
return { error: 'tap-target-activation-unavailable' }
|
|
1896
|
+
}
|
|
1897
|
+
const activation = await t.activatePressAt(
|
|
1898
|
+
${payload.cx},
|
|
1899
|
+
${payload.cy},
|
|
1900
|
+
requestedTarget.nodeId,
|
|
1901
|
+
)
|
|
1902
|
+
if (activation?.ok) {
|
|
1903
|
+
window.dispatchEvent(
|
|
1904
|
+
new CustomEvent('sootsim:agentAction', {
|
|
1905
|
+
detail: {
|
|
1906
|
+
type: 'tap',
|
|
1907
|
+
x: ${payload.cx},
|
|
1908
|
+
y: ${payload.cy},
|
|
1909
|
+
target: requestedTarget,
|
|
1910
|
+
},
|
|
1911
|
+
}),
|
|
1912
|
+
)
|
|
1913
|
+
}
|
|
1873
1914
|
return {
|
|
1915
|
+
activation,
|
|
1874
1916
|
requestedTargetMatched,
|
|
1875
1917
|
requestedTarget,
|
|
1876
1918
|
coordinateTarget,
|
|
@@ -1901,13 +1943,8 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
1901
1943
|
failure: "missed"
|
|
1902
1944
|
};
|
|
1903
1945
|
}
|
|
1904
|
-
const dispatched =
|
|
1905
|
-
|
|
1906
|
-
x: payload.cx,
|
|
1907
|
-
y: payload.cy,
|
|
1908
|
-
target: requestedTarget
|
|
1909
|
-
});
|
|
1910
|
-
const result = dispatched && typeof dispatched === "object" ? { ...dispatched, ...verification } : { hit: !!dispatched, ...verification };
|
|
1946
|
+
const dispatched = verification?.activation?.tap ?? verification?.activation;
|
|
1947
|
+
const result = dispatched && typeof dispatched === "object" ? { ...dispatched, ...verification?.activation, ...verification } : { hit: !!dispatched, ...verification };
|
|
1911
1948
|
lastResult = result;
|
|
1912
1949
|
if (isTapSuccess(result)) return { payload, result, attempts };
|
|
1913
1950
|
}
|
package/dist-lib/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.307 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// cli/commands/inspect/core.ts
|
|
4
4
|
function resolveMaxMsFlag(args, fallbackMs) {
|
|
@@ -1767,18 +1767,60 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
1767
1767
|
type: node.type ?? null,
|
|
1768
1768
|
}
|
|
1769
1769
|
: null
|
|
1770
|
+
const coordinateAncestors = Array.isArray(inspected?.ancestors)
|
|
1771
|
+
? inspected.ancestors
|
|
1772
|
+
: []
|
|
1773
|
+
const ancestorMatchesRequested = coordinateAncestors.some(
|
|
1774
|
+
(ancestor) =>
|
|
1775
|
+
(typeof requestedTarget.nodeId === 'number' &&
|
|
1776
|
+
ancestor?.nodeId === requestedTarget.nodeId) ||
|
|
1777
|
+
(requestedTarget.testID &&
|
|
1778
|
+
ancestor?.testID === requestedTarget.testID) ||
|
|
1779
|
+
(requestedTarget.id && ancestor?.id === requestedTarget.id),
|
|
1780
|
+
)
|
|
1770
1781
|
const requestedTargetMatched =
|
|
1771
1782
|
coordinateTarget === null
|
|
1772
1783
|
? false
|
|
1773
1784
|
: typeof requestedTarget.nodeId === 'number' &&
|
|
1774
1785
|
typeof coordinateTarget.nodeId === 'number'
|
|
1775
|
-
? requestedTarget.nodeId === coordinateTarget.nodeId
|
|
1786
|
+
? requestedTarget.nodeId === coordinateTarget.nodeId ||
|
|
1787
|
+
ancestorMatchesRequested
|
|
1776
1788
|
: requestedTarget.testID && coordinateTarget.testID
|
|
1777
1789
|
? requestedTarget.testID === coordinateTarget.testID
|
|
1790
|
+
|| ancestorMatchesRequested
|
|
1778
1791
|
: requestedTarget.id && coordinateTarget.id
|
|
1779
1792
|
? requestedTarget.id === coordinateTarget.id
|
|
1780
|
-
|
|
1793
|
+
|| ancestorMatchesRequested
|
|
1794
|
+
: ancestorMatchesRequested
|
|
1795
|
+
if (!requestedTargetMatched) {
|
|
1796
|
+
return {
|
|
1797
|
+
requestedTargetMatched,
|
|
1798
|
+
requestedTarget,
|
|
1799
|
+
coordinateTarget,
|
|
1800
|
+
}
|
|
1801
|
+
}
|
|
1802
|
+
if (typeof t.activatePressAt !== 'function') {
|
|
1803
|
+
return { error: 'tap-target-activation-unavailable' }
|
|
1804
|
+
}
|
|
1805
|
+
const activation = await t.activatePressAt(
|
|
1806
|
+
${payload.cx},
|
|
1807
|
+
${payload.cy},
|
|
1808
|
+
requestedTarget.nodeId,
|
|
1809
|
+
)
|
|
1810
|
+
if (activation?.ok) {
|
|
1811
|
+
window.dispatchEvent(
|
|
1812
|
+
new CustomEvent('sootsim:agentAction', {
|
|
1813
|
+
detail: {
|
|
1814
|
+
type: 'tap',
|
|
1815
|
+
x: ${payload.cx},
|
|
1816
|
+
y: ${payload.cy},
|
|
1817
|
+
target: requestedTarget,
|
|
1818
|
+
},
|
|
1819
|
+
}),
|
|
1820
|
+
)
|
|
1821
|
+
}
|
|
1781
1822
|
return {
|
|
1823
|
+
activation,
|
|
1782
1824
|
requestedTargetMatched,
|
|
1783
1825
|
requestedTarget,
|
|
1784
1826
|
coordinateTarget,
|
|
@@ -1809,13 +1851,8 @@ async function tapResolvedTarget(bridge, args) {
|
|
|
1809
1851
|
failure: "missed"
|
|
1810
1852
|
};
|
|
1811
1853
|
}
|
|
1812
|
-
const dispatched =
|
|
1813
|
-
|
|
1814
|
-
x: payload.cx,
|
|
1815
|
-
y: payload.cy,
|
|
1816
|
-
target: requestedTarget
|
|
1817
|
-
});
|
|
1818
|
-
const result = dispatched && typeof dispatched === "object" ? { ...dispatched, ...verification } : { hit: !!dispatched, ...verification };
|
|
1854
|
+
const dispatched = verification?.activation?.tap ?? verification?.activation;
|
|
1855
|
+
const result = dispatched && typeof dispatched === "object" ? { ...dispatched, ...verification?.activation, ...verification } : { hit: !!dispatched, ...verification };
|
|
1819
1856
|
lastResult = result;
|
|
1820
1857
|
if (isTapSuccess(result)) return { payload, result, attempts };
|
|
1821
1858
|
}
|