sootsim 0.1.149 → 0.1.151
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/dist-cli/bin.js +3 -3
- package/dist-cli/chunks/{agent-DTREOLFP.js → agent-HF26UPHZ.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-LEZW2CEK.js → agent-wrapper-4HZHSIBM.js} +2 -2
- package/dist-cli/chunks/{app-fonts-EQ6CK5L6.js → app-fonts-QX4EBH3Y.js} +2 -2
- package/dist-cli/chunks/{assert-UEVT3SCS.js → assert-X3FR2NZ2.js} +2 -2
- package/dist-cli/chunks/auto-bootstrap-UDZRGLRQ.js +2 -0
- package/dist-cli/chunks/beta-J2ZMH6QE.js +2 -0
- package/dist-cli/chunks/{camera-SHCRQWYG.js → camera-LPNM5TWG.js} +2 -2
- package/dist-cli/chunks/chunk-3FGC5AEV.js +463 -0
- package/dist-cli/chunks/{chunk-UGMBWU7M.js → chunk-4D7OSBQW.js} +2 -2
- package/dist-cli/chunks/chunk-4GGBZKRO.js +1 -0
- package/dist-cli/chunks/{chunk-L4SMKJAF.js → chunk-5H6GZFYN.js} +1 -1
- package/dist-cli/chunks/{chunk-MQ4ES4QV.js → chunk-5JIRUN6N.js} +2 -2
- package/dist-cli/chunks/{chunk-GG4I3SBM.js → chunk-5KZSTOC3.js} +1 -1
- package/dist-cli/chunks/chunk-5QT4UDE6.js +1 -0
- package/dist-cli/chunks/{chunk-JDEZIU6A.js → chunk-6OX6ZCDK.js} +1 -1
- package/dist-cli/chunks/{chunk-NCTGR5CW.js → chunk-6WDJBOEC.js} +2 -2
- package/dist-cli/chunks/{chunk-WMMLJ7UY.js → chunk-AWNUBM2E.js} +1 -1
- package/dist-cli/chunks/{chunk-FFPNLA27.js → chunk-BOLOMY35.js} +2 -2
- package/dist-cli/chunks/{chunk-Q6KGWTG3.js → chunk-BVS5TAH2.js} +1 -1
- package/dist-cli/chunks/{chunk-AEKDLIFW.js → chunk-D6TQZJYX.js} +2 -2
- package/dist-cli/chunks/{chunk-WKSDGVRG.js → chunk-DT6P4QPA.js} +2 -2
- package/dist-cli/chunks/{chunk-UKIYBW22.js → chunk-EATQR7G4.js} +1 -1
- package/dist-cli/chunks/{chunk-Q3MVIFGA.js → chunk-EKJWBS67.js} +2 -2
- package/dist-cli/chunks/{chunk-MLXZI2VU.js → chunk-ESKWHYHW.js} +1 -1
- package/dist-cli/chunks/{chunk-Q6QBFWIS.js → chunk-F24Q4SHJ.js} +2 -2
- package/dist-cli/chunks/{chunk-EKTBF3PU.js → chunk-FVWECVSR.js} +1 -1
- package/dist-cli/chunks/{chunk-XCLGRBR7.js → chunk-H43XNA63.js} +2 -2
- package/dist-cli/chunks/{chunk-DEOS6HMP.js → chunk-HTX5H2GP.js} +1 -1
- package/dist-cli/chunks/{chunk-YHLH2UZO.js → chunk-IFVPMU3W.js} +1 -1
- package/dist-cli/chunks/{chunk-QFNCCWKQ.js → chunk-KBR532N6.js} +2 -2
- package/dist-cli/chunks/{chunk-GBWFT53N.js → chunk-KIEHXEK7.js} +1 -1
- package/dist-cli/chunks/chunk-KKH6VZK2.js +2 -0
- package/dist-cli/chunks/{chunk-CGBHDP72.js → chunk-LKQ2DNH2.js} +1 -1
- package/dist-cli/chunks/{chunk-DVANCABF.js → chunk-NJ5IKC7D.js} +1 -1
- package/dist-cli/chunks/{chunk-NHWVFX3R.js → chunk-O27REOF5.js} +3 -3
- package/dist-cli/chunks/{chunk-BYL2ZXSO.js → chunk-O6EXHRXC.js} +2 -2
- package/dist-cli/chunks/{chunk-JMLOSEXB.js → chunk-OYZ5C2UW.js} +2 -2
- package/dist-cli/chunks/{chunk-PO6ZZXU5.js → chunk-PBMOGVVU.js} +2 -2
- package/dist-cli/chunks/{chunk-WKJ5NKXN.js → chunk-PWRZZZPB.js} +2 -2
- package/dist-cli/chunks/{chunk-UO5XXQ53.js → chunk-QKGVXTZI.js} +2 -2
- package/dist-cli/chunks/{chunk-Y3BXVPQA.js → chunk-R3PWYPRY.js} +2 -2
- package/dist-cli/chunks/{chunk-KQW5FXIA.js → chunk-RTKF3UI6.js} +2 -2
- package/dist-cli/chunks/{chunk-MPJTH4SZ.js → chunk-SESGIWXA.js} +2 -2
- package/dist-cli/chunks/{chunk-ZU3Y3JSR.js → chunk-SFJL7VJD.js} +1 -1
- package/dist-cli/chunks/{chunk-K6DR7C5H.js → chunk-TDEMJJSM.js} +2 -2
- package/dist-cli/chunks/{chunk-PXDREKKK.js → chunk-TGU3ZYMR.js} +2 -2
- package/dist-cli/chunks/{chunk-LEUPCPVX.js → chunk-TTWUL3IS.js} +1 -1
- package/dist-cli/chunks/chunk-TVNSALAZ.js +1 -0
- package/dist-cli/chunks/{chunk-FCLKD5U3.js → chunk-UKNZBRJA.js} +7 -32
- package/dist-cli/chunks/{chunk-DYSZWMKF.js → chunk-UYSK2W2E.js} +3 -3
- package/dist-cli/chunks/{chunk-SOGORN62.js → chunk-YBFFAGCA.js} +1 -1
- package/dist-cli/chunks/{chunk-QWHEYTUI.js → chunk-YMXGXIXH.js} +2 -2
- package/dist-cli/chunks/cli-version-45JCT2ZY.js +2 -0
- package/dist-cli/chunks/{compat-BLVO5WCI.js → compat-OY6OZ5JL.js} +3 -3
- package/dist-cli/chunks/{config-3FJKPOWY.js → config-XT46L34R.js} +2 -2
- package/dist-cli/chunks/{control-VU5ZXVAD.js → control-JSU4YZEU.js} +2 -2
- package/dist-cli/chunks/{cpu-profile-4MF47DGH.js → cpu-profile-2YFNBTUY.js} +2 -2
- package/dist-cli/chunks/{daemon-5WV3TEOV.js → daemon-FU7YT33F.js} +2 -2
- package/dist-cli/chunks/{debug-UJ5SRPFT.js → debug-FEQNYGBL.js} +3 -3
- package/dist-cli/chunks/{detox-EI6UZQAT.js → detox-ONWHXJQW.js} +2 -2
- package/dist-cli/chunks/{device-WGUF7AKG.js → device-Q4JEXXDO.js} +2 -2
- package/dist-cli/chunks/{diagnose-P6MU3RU3.js → diagnose-ABW6RT2M.js} +2 -2
- package/dist-cli/chunks/drivers-SI4Q6422.js +2 -0
- package/dist-cli/chunks/{electron-OGUHFWUK.js → electron-S6DSORXV.js} +3 -3
- package/dist-cli/chunks/flow-C5BYKBI7.js +2 -0
- package/dist-cli/chunks/help-STIHU2FY.js +2 -0
- package/dist-cli/chunks/{hints-7N4GV3ZE.js → hints-6UNUXIZD.js} +2 -2
- package/dist-cli/chunks/{home-paths-AANZCIZ5.js → home-paths-7MZVETWY.js} +2 -2
- package/dist-cli/chunks/{inspect-RII7IRDI.js → inspect-D2BQ276F.js} +34 -34
- package/dist-cli/chunks/install-YT6QYQEY.js +2 -0
- package/dist-cli/chunks/{install-desktop-OO4TEBLO.js → install-desktop-ZQSDFGUC.js} +3 -3
- package/dist-cli/chunks/{keys-UOR7DA3Y.js → keys-TEXYT224.js} +2 -2
- package/dist-cli/chunks/{launch-FEBSZFD3.js → launch-DER37SAB.js} +3 -3
- package/dist-cli/chunks/{login-RBLUCSMW.js → login-XGRAXI4M.js} +4 -4
- package/dist-cli/chunks/{logout-YUX36SXZ.js → logout-54RCAVHR.js} +2 -2
- package/dist-cli/chunks/{maestro-FACL5FAI.js → maestro-UOI22ZJK.js} +2 -2
- package/dist-cli/chunks/optional-demo-registry-ZHLX4N4H.js +2 -0
- package/dist-cli/chunks/{preview-JHPF7LKC.js → preview-4P3JDGUK.js} +2 -2
- package/dist-cli/chunks/{profile-ADYZQ5J6.js → profile-CAT2T2SL.js} +2 -2
- package/dist-cli/chunks/{react-LZQFPQ6B.js → react-BARNSA53.js} +2 -2
- package/dist-cli/chunks/{record-SAQPU2IQ.js → record-6XRDBFJH.js} +2 -2
- package/dist-cli/chunks/runtime-EP46YAAA.js +2 -0
- package/dist-cli/chunks/{runtime-delivery-FZNUZSUT.js → runtime-delivery-M6AZKBA5.js} +2 -2
- package/dist-cli/chunks/{screenshot-KXMYCKUF.js → screenshot-NCQJZ2UA.js} +2 -2
- package/dist-cli/chunks/{screenshot-mode-K7KP3GHW.js → screenshot-mode-WCMNSQPA.js} +2 -2
- package/dist-cli/chunks/{screenshots-Z7YQYHGB.js → screenshots-KRUJCP3C.js} +2 -2
- package/dist-cli/chunks/{server-RFPTQNPD.js → server-7M7623HK.js} +3 -3
- package/dist-cli/chunks/setup-repo-42YJPORX.js +2 -0
- package/dist-cli/chunks/{skills-AJQCRGJE.js → skills-QYZYYG2J.js} +2 -2
- package/dist-cli/chunks/{slides-7SEKUGSB.js → slides-KBNA4WNE.js} +2 -2
- package/dist-cli/chunks/{start-3N2SXPTE.js → start-IETLWS52.js} +4 -4
- package/dist-cli/chunks/store-DCTO3QUM.js +2 -0
- package/dist-cli/chunks/telemetry-SWSO644L.js +2 -0
- package/dist-cli/chunks/{test-BPVERVNB.js → test-XFMRNPRE.js} +3 -3
- package/dist-cli/chunks/{three-mode-5GSDNLD6.js → three-mode-F7HISUUI.js} +2 -2
- package/dist-cli/chunks/{timeline-66ZJ4PFG.js → timeline-6J64INHT.js} +2 -2
- package/dist-cli/chunks/{upgrade-SSG22SMA.js → upgrade-YLUSFIAT.js} +2 -2
- package/dist-cli/chunks/upload-CNH4T5T3.js +2 -0
- package/dist-cli/chunks/{version-VCIYUELO.js → version-SHVMZDZG.js} +2 -2
- package/dist-cli/chunks/web-HTNW72DU.js +2 -0
- package/dist-cli/chunks/{what-happened-NW3U7BQM.js → what-happened-5C5Y4QM3.js} +2 -2
- package/dist-cli/chunks/{whoami-56CZBGT2.js → whoami-SGY5QNCO.js} +2 -2
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.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/cli-constants.cjs +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/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +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 +1 -1
- package/dist-lib/sdk.cjs +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +154 -57
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/dist-cli/chunks/auto-bootstrap-ZFEKV5N5.js +0 -2
- package/dist-cli/chunks/beta-FKWWIATG.js +0 -2
- package/dist-cli/chunks/chunk-6HSKGTN3.js +0 -1
- package/dist-cli/chunks/chunk-FE4WZMPN.js +0 -1
- package/dist-cli/chunks/chunk-ODLM2KEX.js +0 -1
- package/dist-cli/chunks/chunk-UM2U5JQE.js +0 -2
- package/dist-cli/chunks/chunk-YCZB7NKY.js +0 -386
- package/dist-cli/chunks/cli-version-XNIRTBJN.js +0 -2
- package/dist-cli/chunks/drivers-ISZDFEMB.js +0 -2
- package/dist-cli/chunks/flow-5WJLI3KM.js +0 -2
- package/dist-cli/chunks/help-25RH7GSX.js +0 -2
- package/dist-cli/chunks/install-LBOWGAGG.js +0 -2
- package/dist-cli/chunks/optional-demo-registry-RIDIENLK.js +0 -2
- package/dist-cli/chunks/runtime-TJT4YSOY.js +0 -2
- package/dist-cli/chunks/setup-repo-UQXTC4PO.js +0 -2
- package/dist-cli/chunks/store-BKCI7NRB.js +0 -2
- package/dist-cli/chunks/telemetry-H4J7ZTQF.js +0 -2
- package/dist-cli/chunks/upload-ITKMHX55.js +0 -2
- package/dist-cli/chunks/web-56FLXL2W.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
2
|
-
import{C as T,D as A,E as y,P as _,Q as b,R as S}from"./chunk-
|
|
1
|
+
/*! sootsim v0.1.151 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
+
import{C as T,D as A,E as y,P as _,Q as b,R as S}from"./chunk-EATQR7G4.js";import{c as N,e as F}from"./chunk-TDEMJJSM.js";import{b as k}from"./chunk-BVS5TAH2.js";import"./chunk-5H6GZFYN.js";import"./chunk-LKQ2DNH2.js";import"./chunk-NJ5IKC7D.js";function O(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--since"&&e+1<n.length){t.push(e,e+1);let s=n[e+1].trim(),l=/^(\d+(?:\.\d+)?)(ms|s|m)?$/.exec(s);if(l){let r=Number(l[1]),u=l[2]??"ms",v=u==="s"?r*1e3:u==="m"?r*6e4:r;return{since:Date.now()-v,consumed:t}}let i=Number(s);if(Number.isFinite(i)&&i>1e12)return{since:i,consumed:t}}return{consumed:t}}function B(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--kinds"&&e+1<n.length)return t.push(e,e+1),{kinds:n[e+1].split(",").map(s=>s.trim()).filter(Boolean),consumed:t};return{consumed:t}}function D(n){let t=[];for(let e=0;e<n.length;e++)if(n[e]==="--limit"&&e+1<n.length){t.push(e,e+1);let s=Number(n[e+1]);if(Number.isFinite(s)&&s>0)return{limit:s,consumed:t}}return{consumed:t}}function x(n){let t=[],e={label:"initial state",events:[],startedAt:n[0]?.t??null};t.push(e);for(let s of n)if(e.events.push(s),s.kind==="screen"||s.kind==="route"){let l=s.data,i=l?.phase;if(!i||i==="enter"||i==="appear"||i==="active"){let r=l?.name||l?.activeName||l?.path||l?.pathname||s.kind;t.length===1&&e.events.length===1?e.label=`${s.kind}: ${r}`:(e={label:`${s.kind}: ${r}`,events:[],startedAt:s.t},t.push(e))}}return t}async function J(n,t){let e=N(n,{port:t.port,stripBooleanFlags:["--summary","--all","--json","--no-advance","--help","-h","--flow","--noisy"],stripValueFlags:["--since","--kinds","--limit"]});(n.includes("--help")||n.includes("-h"))&&(console.log(`
|
|
3
3
|
sootsim what-happened \u2014 show recent events from the semantic timeline
|
|
4
4
|
|
|
5
5
|
usage:
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
2
|
-
import{d as i}from"./chunk-
|
|
1
|
+
/*! sootsim v0.1.151 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
+
import{d as i}from"./chunk-EKJWBS67.js";import{d as n}from"./chunk-R3PWYPRY.js";import"./chunk-LKQ2DNH2.js";import"./chunk-NJ5IKC7D.js";async function u(){let o=i();if(o||(console.log(" not signed in"),console.log(" set SOOTSIM_API_KEY=sk_sootsim_\u2026 or run `sootsim login`"),process.exit(1)),o.kind==="api-key"){let r=`${o.secret.slice(0,14)}\u2026`,t=o.source==="env"?"SOOTSIM_API_KEY env var":"saved key (~/.config/sootsim/credentials.json)";console.log(` api key ${r}`),console.log(` source: ${t}`);return}if(o.kind==="github"){console.log(` github token (${o.source})`),console.log(` repo: ${o.repoId}`);return}let e=await n(),s=e?.user;console.log(` ${s?.email||s?.name||s?.id||"signed in"}`),console.log(` origin: ${e?.origin??o.origin}`),e?.updatedAt&&console.log(` updated: ${e.updatedAt}`)}export{u as runWhoami};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.151 | (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.151 | (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.151 | (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.151 | (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.151 | (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.151 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.151 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.151 | (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.151 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.151 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.151 | (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.151 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.151 | (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.151 | (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.151 | (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.151 | (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.151 | (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.151 | (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.151 | (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/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.151 | (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.151 | (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.151 | (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.151 | (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
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.151 | (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
package/dist-lib/skills.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.151 | (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;
|
|
@@ -681,7 +681,7 @@ var init_registry = __esm({
|
|
|
681
681
|
coverage: 0.93,
|
|
682
682
|
note: "all SwiftUI-bridged components stubbed with pixel-faithful RN/canvas equivalents, plus iOS 26 Liquid Glass (glassEffect material)",
|
|
683
683
|
working: "Host, Form/Section/List, Button (default/bordered/borderedProminent/destructive via buttonStyle modifier), Toggle, Slider, Stepper, Picker (segmented/menu/inline via selection + tag children), ColorPicker, ProgressView, Gauge, DatePicker, TextField/SecureField, LabeledContent, Label, Image (SF Symbols), HStack/VStack/ZStack, DisclosureGroup, ContentUnavailableView, ContextMenu/Menu, glassEffect (regular/clear), GlassEffectContainer",
|
|
684
|
-
missing: "native SwiftUI spring animations, haptic feedback,
|
|
684
|
+
missing: "native SwiftUI spring animations, haptic feedback, exact iOS Liquid Glass shader calibration"
|
|
685
685
|
}
|
|
686
686
|
]
|
|
687
687
|
},
|
|
@@ -2511,7 +2511,7 @@ var init_registry = __esm({
|
|
|
2511
2511
|
coverage: 0.92,
|
|
2512
2512
|
note: "real canvaskit-wasm backing via the engine instance (`globalThis.__sootsimCanvasKit`); declarative <Canvas> snapshots each commit through an offscreen SkSurface and mounts the encoded PNG as a host image. zero second canvaskit bundle.",
|
|
2513
2513
|
working: "<Canvas> with offscreen SkSurface paint\u2192PNG\u2192host <Image>, <Path>/<Rect>/<RoundedRect>/<Circle>/<Oval>/<Line>/<Fill>/<Image>/<Text>/<Group> primitives, <LinearGradient>/<RadialGradient>/<SweepGradient>/<ColorShader> paint shaders, <BlurMask>/<Blur>/<Mask>/<Shadow> mask + image filters, <BackdropFilter>/<BackdropBlur>, <DashPathEffect>/<DiscretePathEffect>/<CornerPathEffect>, Skia.Path/Paint/Color/Shader/MaskFilter/ImageFilter/ColorFilter/Font/Typeface/FontMgr factories, Skia.MakeImageFromEncoded, Skia.XYWHRect/LTRBRect/RRectXY/Point/Matrix, useImage (fetches+decodes through canvaskit), useFont (loads typeface from ArrayBuffer / URL), useFonts (matchFamilyStyle), useCanvasRef + ref.makeImageSnapshot, useValue/useDerivedValue/useComputedValue/useValueEffect/useClockValue listener model, BlendMode/StrokeCap/StrokeJoin/FillType/PaintStyle/TileMode/BlurStyle/FontWeight/FontStyle/FontSlant/FontWidth/ClipOp/PathVerb/PathOp/TextAlign/TextDirection enums.",
|
|
2514
|
-
missing: "<RuntimeShader> SkSL compilation+uniform-binding pipeline, <Points>/<TextPath>/<Glyphs>/<ImageSVG>/<Vertices>/<Patch>/<Atlas>/<Picture>/<FitBox>/<Box>/<BoxShadow> (each logs a one-time hint and renders null), <Paint> as a declarative component, useTouchHandler full gesture state machine (we forward a minimal touch handler shape; consumers should use Pressable wrappers for hit-testing), reanimated worklet-driven canvas redraws (`useSharedValueEffect` listens but the redraw still goes through React reconciliation because sootsim reanimated runs on the JS thread today), Skia.ParagraphBuilder full layout (we keep measurement-only semantics matching the previous stub; for pixel-perfect skia paragraphs apps should wait on the upstream JsiSkParagraphBuilder adapter), Skia.SVG.MakeFromString (canvaskit-wasm omits svg parsing in the size-tuned builds we ship), GPU SkSurface backing on offscreen paints (we use software MakeSurface so each Canvas paint runs on cpu
|
|
2514
|
+
missing: "<RuntimeShader> SkSL compilation+uniform-binding pipeline, <Points>/<TextPath>/<Glyphs>/<ImageSVG>/<Vertices>/<Patch>/<Atlas>/<Picture>/<FitBox>/<Box>/<BoxShadow> (each logs a one-time hint and renders null), <Paint> as a declarative component, useTouchHandler full gesture state machine (we forward a minimal touch handler shape; consumers should use Pressable wrappers for hit-testing), reanimated worklet-driven canvas redraws (`useSharedValueEffect` listens but the redraw still goes through React reconciliation because sootsim reanimated runs on the JS thread today), Skia.ParagraphBuilder full layout (we keep measurement-only semantics matching the previous stub; for pixel-perfect skia paragraphs apps should wait on the upstream JsiSkParagraphBuilder adapter), Skia.SVG.MakeFromString (canvaskit-wasm omits svg parsing in the size-tuned builds we ship), GPU SkSurface backing on offscreen paints (we use software MakeSurface so each Canvas paint runs on cpu; deferred until a real engine host element owns its own GrDirectContext for paint-only animation)."
|
|
2515
2515
|
}
|
|
2516
2516
|
]
|
|
2517
2517
|
},
|
|
@@ -15363,41 +15363,17 @@ var init_frame_compose = __esm({
|
|
|
15363
15363
|
});
|
|
15364
15364
|
|
|
15365
15365
|
// cli/app-state-reset.ts
|
|
15366
|
-
|
|
15366
|
+
function resetGuestAppStateEval(resetStorage) {
|
|
15367
|
+
return `(async () => {
|
|
15368
|
+
const bridge = globalThis.SootSim && globalThis.SootSim.bridges && globalThis.SootSim.bridges.hotRemount
|
|
15369
|
+
if (!bridge || typeof bridge.reloadExternalApp !== 'function') return false
|
|
15370
|
+
await bridge.reloadExternalApp({ resetStorage: ${resetStorage ? "true" : "false"} })
|
|
15371
|
+
return true
|
|
15372
|
+
})()`;
|
|
15373
|
+
}
|
|
15367
15374
|
var init_app_state_reset = __esm({
|
|
15368
15375
|
"cli/app-state-reset.ts"() {
|
|
15369
15376
|
"use strict";
|
|
15370
|
-
CLEAR_APP_STATE_EVAL = `(async () => {
|
|
15371
|
-
try { localStorage.clear() } catch {}
|
|
15372
|
-
try { sessionStorage.clear() } catch {}
|
|
15373
|
-
try {
|
|
15374
|
-
const dbs = (await indexedDB.databases?.()) || []
|
|
15375
|
-
await Promise.all(
|
|
15376
|
-
dbs.map(
|
|
15377
|
-
(db) =>
|
|
15378
|
-
new Promise((resolve) => {
|
|
15379
|
-
if (!db.name) {
|
|
15380
|
-
resolve()
|
|
15381
|
-
return
|
|
15382
|
-
}
|
|
15383
|
-
const req = indexedDB.deleteDatabase(db.name)
|
|
15384
|
-
req.onsuccess = () => resolve()
|
|
15385
|
-
req.onerror = () => resolve()
|
|
15386
|
-
req.onblocked = () => resolve()
|
|
15387
|
-
}),
|
|
15388
|
-
),
|
|
15389
|
-
)
|
|
15390
|
-
} catch {}
|
|
15391
|
-
try {
|
|
15392
|
-
document.cookie.split(';').forEach((cookie) => {
|
|
15393
|
-
const name = cookie.split('=')[0]?.trim()
|
|
15394
|
-
if (name) {
|
|
15395
|
-
document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/'
|
|
15396
|
-
}
|
|
15397
|
-
})
|
|
15398
|
-
} catch {}
|
|
15399
|
-
return true
|
|
15400
|
-
})()`;
|
|
15401
15377
|
}
|
|
15402
15378
|
});
|
|
15403
15379
|
|
|
@@ -16641,11 +16617,52 @@ var init_bridge_flow_runner = __esm({
|
|
|
16641
16617
|
);
|
|
16642
16618
|
}
|
|
16643
16619
|
async findElement(opts) {
|
|
16620
|
+
if (opts.childOf != null || typeof opts.index === "number") {
|
|
16621
|
+
return this.findElementScoped(opts);
|
|
16622
|
+
}
|
|
16623
|
+
const wantRegex = !!opts.text && /[.*+?^$()[\]{}|\\]/.test(opts.text);
|
|
16644
16624
|
return this.evaluate(`(async () => {
|
|
16645
16625
|
const test = window.__sootsimTest
|
|
16646
16626
|
if (!test) return null
|
|
16647
16627
|
let node = null
|
|
16648
|
-
if (${JSON.stringify(!!opts.text)})
|
|
16628
|
+
if (${JSON.stringify(!!opts.text)}) {
|
|
16629
|
+
node = await test.findByText(${JSON.stringify(opts.text || "")})
|
|
16630
|
+
// maestro matches a text selector against the element's ACCESSIBILITY
|
|
16631
|
+
// text too, not just rendered glyphs \u2014 icon-only buttons (e.g. bluesky's
|
|
16632
|
+
// "Pin to Home" / "Mute accounts" pin/menu controls) carry the label on
|
|
16633
|
+
// accessibilityLabel with no visible text node, so findByText misses
|
|
16634
|
+
// them. fall back to an exact a11y-label match, mirroring the real
|
|
16635
|
+
// driver. findByLabel resolves a node, but its info shape omits nodeId/
|
|
16636
|
+
// isTextInput; re-resolve through findByTestId/findById when it exposes
|
|
16637
|
+
// an id so tapOn still gets a resolveTapTarget-able nodeId.
|
|
16638
|
+
if (!node) {
|
|
16639
|
+
const labelled = await test.findByLabel?.(${JSON.stringify(opts.text || "")})
|
|
16640
|
+
if (labelled) {
|
|
16641
|
+
const reId = labelled.testID || labelled.id
|
|
16642
|
+
node =
|
|
16643
|
+
(reId &&
|
|
16644
|
+
((await test.findByTestId?.(reId)) || (await test.findById?.(reId)))) ||
|
|
16645
|
+
labelled
|
|
16646
|
+
}
|
|
16647
|
+
}
|
|
16648
|
+
if (!node && ${JSON.stringify(wantRegex)} && test.queryAll) {
|
|
16649
|
+
// regex selector fallback: match the pattern against each visible
|
|
16650
|
+
// node's text; prefer the narrowest matching node so a tight <text>
|
|
16651
|
+
// wins over a wide container that merely contains it.
|
|
16652
|
+
let re = null
|
|
16653
|
+
try { re = new RegExp(${JSON.stringify(opts.text || "")}) } catch (e) { re = null }
|
|
16654
|
+
if (re) {
|
|
16655
|
+
const all = (await test.queryAll({ pruneHidden: true })) || []
|
|
16656
|
+
const hits = all.filter(
|
|
16657
|
+
(n) =>
|
|
16658
|
+
n && n.absolutePosition && n.layout &&
|
|
16659
|
+
typeof n.text === 'string' && re.test(n.text),
|
|
16660
|
+
)
|
|
16661
|
+
hits.sort((a, b) => (a.text || '').length - (b.text || '').length)
|
|
16662
|
+
if (hits[0]) node = hits[0]
|
|
16663
|
+
}
|
|
16664
|
+
}
|
|
16665
|
+
}
|
|
16649
16666
|
if (!node && ${JSON.stringify(!!opts.id)}) {
|
|
16650
16667
|
node = (await test.findByTestId(${JSON.stringify(opts.id || "")})) || (await test.findById(${JSON.stringify(opts.id || "")}))
|
|
16651
16668
|
}
|
|
@@ -16659,6 +16676,61 @@ var init_bridge_flow_runner = __esm({
|
|
|
16659
16676
|
layout: node.layout,
|
|
16660
16677
|
isTextInput: !!node.isTextInput,
|
|
16661
16678
|
}
|
|
16679
|
+
})()`);
|
|
16680
|
+
}
|
|
16681
|
+
// maestro `index:` (nth match) and `childOf:` (match scoped to a container)
|
|
16682
|
+
// resolver. queryAll returns every matching node in tree order; childOf keeps
|
|
16683
|
+
// only candidates whose center sits inside the container's bounds.
|
|
16684
|
+
async findElementScoped(opts) {
|
|
16685
|
+
const index = typeof opts.index === "number" ? opts.index : 0;
|
|
16686
|
+
return this.evaluate(`(async () => {
|
|
16687
|
+
const test = window.__sootsimTest
|
|
16688
|
+
if (!test || !test.queryAll) return null
|
|
16689
|
+
// NOT pruneHidden: that over-filters (it dropped every postDropdownBtn in a
|
|
16690
|
+
// feed and made index:0 resolve to nothing \u2014 worse than findByTestId). reach
|
|
16691
|
+
// for the same set findByTestId sees, then PREFER on-screen ones below.
|
|
16692
|
+
const filter = {}
|
|
16693
|
+
if (${JSON.stringify(!!opts.id)}) filter.hasId = ${JSON.stringify(opts.id || "")}
|
|
16694
|
+
if (${JSON.stringify(!!opts.text)}) filter.hasText = ${JSON.stringify(opts.text || "")}
|
|
16695
|
+
let candidates = (await test.queryAll(filter)) || []
|
|
16696
|
+
// a11y-label fallback (icon-only buttons) for text matchers, mirroring
|
|
16697
|
+
// findElement's simple path.
|
|
16698
|
+
if (${JSON.stringify(!!opts.text)} && candidates.length === 0) {
|
|
16699
|
+
const all = (await test.queryAll({})) || []
|
|
16700
|
+
candidates = all.filter((n) => (n.accessibilityLabel || '') === ${JSON.stringify(opts.text || "")})
|
|
16701
|
+
}
|
|
16702
|
+
candidates = candidates.filter((n) => n && n.absolutePosition && n.layout)
|
|
16703
|
+
// prefer on-screen matches (findByTestId's visible-first behavior); only
|
|
16704
|
+
// fall back to off-screen ones when nothing is on-screen, so index: still
|
|
16705
|
+
// resolves a target that needs scrolling into view.
|
|
16706
|
+
const onScreen = candidates.filter((n) => {
|
|
16707
|
+
const cy = n.absolutePosition.y + n.layout.height / 2
|
|
16708
|
+
return cy > 0 && cy < ${SCREEN_H}
|
|
16709
|
+
})
|
|
16710
|
+
if (onScreen.length > 0) candidates = onScreen
|
|
16711
|
+
${opts.childOf ? `
|
|
16712
|
+
const container = ${opts.childOf.id ? `(await test.findByTestId(${JSON.stringify(opts.childOf.id)})) || (await test.findById(${JSON.stringify(opts.childOf.id)}))` : `await test.findByText(${JSON.stringify(opts.childOf.text || "")})`}
|
|
16713
|
+
if (!container || !container.absolutePosition || !container.layout) return null
|
|
16714
|
+
const x0 = container.absolutePosition.x
|
|
16715
|
+
const y0 = container.absolutePosition.y
|
|
16716
|
+
const x1 = x0 + container.layout.width
|
|
16717
|
+
const y1 = y0 + container.layout.height
|
|
16718
|
+
candidates = candidates.filter((n) => {
|
|
16719
|
+
const cx = n.absolutePosition.x + n.layout.width / 2
|
|
16720
|
+
const cy = n.absolutePosition.y + n.layout.height / 2
|
|
16721
|
+
return cx >= x0 && cx <= x1 && cy >= y0 && cy <= y1
|
|
16722
|
+
})` : ""}
|
|
16723
|
+
const node = candidates[${index}]
|
|
16724
|
+
if (!node) return null
|
|
16725
|
+
return {
|
|
16726
|
+
nodeId: typeof node.nodeId === 'number' ? node.nodeId : null,
|
|
16727
|
+
id: node.id || null,
|
|
16728
|
+
testID: node.testID || null,
|
|
16729
|
+
text: node.text || null,
|
|
16730
|
+
absolutePosition: node.absolutePosition,
|
|
16731
|
+
layout: node.layout,
|
|
16732
|
+
isTextInput: !!node.isTextInput,
|
|
16733
|
+
}
|
|
16662
16734
|
})()`);
|
|
16663
16735
|
}
|
|
16664
16736
|
async resolveTapTarget(nodeId) {
|
|
@@ -17245,24 +17317,55 @@ var init_bridge_flow_runner = __esm({
|
|
|
17245
17317
|
}
|
|
17246
17318
|
throw new Error("extendedWaitUntil timed out");
|
|
17247
17319
|
}
|
|
17320
|
+
// relaunch the guest app for a clearState/launchApp step. two phases:
|
|
17321
|
+
// 1. clear tenant-scoped storage through the engine bridge (best-effort).
|
|
17322
|
+
// 2. ALWAYS hard-reload the page to reset the tenant worker.
|
|
17323
|
+
// phase 2 is the important one for a long suite: the engine soft reload alone
|
|
17324
|
+
// keeps the same worker alive across every flow, so a saturated event loop /
|
|
17325
|
+
// accumulated state from one flow's post-PDS-reset auth-failure storm carries
|
|
17326
|
+
// into the next and degrades until the worker wedges or the tab crashes (the
|
|
17327
|
+
// failures clustered in the tail of a 21-flow run). a full page reload starts
|
|
17328
|
+
// each flow on a fresh worker — worker-independent, so it also recovers a
|
|
17329
|
+
// worker the bridge clear couldn't even ack. storage persists across a page
|
|
17330
|
+
// reload, so the clear in phase 1 is what actually logs the guest out.
|
|
17331
|
+
async reloadGuestApp(resetStorage) {
|
|
17332
|
+
if (resetStorage) {
|
|
17333
|
+
const ATTEMPTS = 3;
|
|
17334
|
+
const PER_ATTEMPT_MS = 2e4;
|
|
17335
|
+
let cleared = false;
|
|
17336
|
+
for (let attempt = 0; attempt < ATTEMPTS && !cleared; attempt++) {
|
|
17337
|
+
try {
|
|
17338
|
+
cleared = await this.evaluate(
|
|
17339
|
+
resetGuestAppStateEval(true),
|
|
17340
|
+
PER_ATTEMPT_MS
|
|
17341
|
+
);
|
|
17342
|
+
} catch {
|
|
17343
|
+
await sleep(1e3);
|
|
17344
|
+
}
|
|
17345
|
+
}
|
|
17346
|
+
if (!cleared) {
|
|
17347
|
+
console.warn(
|
|
17348
|
+
" warn: tenant storage clear did not ack \u2014 hard-reloading anyway (worker reset follows)"
|
|
17349
|
+
);
|
|
17350
|
+
}
|
|
17351
|
+
}
|
|
17352
|
+
await this.evaluate("window.location.reload()").catch(() => {
|
|
17353
|
+
});
|
|
17354
|
+
await sleep(500);
|
|
17355
|
+
await this.refreshSimId();
|
|
17356
|
+
}
|
|
17248
17357
|
async launchApp(opts) {
|
|
17249
17358
|
await this.refreshSimId();
|
|
17250
17359
|
if (opts && typeof opts === "object" && opts.arguments) {
|
|
17251
17360
|
console.log("[flow] launchApp.arguments ignored (sootsim has no native process)");
|
|
17252
17361
|
}
|
|
17253
17362
|
const wantsClear = !!(opts && typeof opts === "object" && opts.clearState);
|
|
17254
|
-
if (wantsClear) {
|
|
17255
|
-
await this.evaluate(CLEAR_APP_STATE_EVAL, 6e4);
|
|
17256
|
-
}
|
|
17257
17363
|
if (!this.firstLaunchDone && !wantsClear) {
|
|
17258
17364
|
this.firstLaunchDone = true;
|
|
17259
17365
|
await this.waitForTree(3e4);
|
|
17260
17366
|
} else {
|
|
17261
17367
|
this.firstLaunchDone = true;
|
|
17262
|
-
await this.
|
|
17263
|
-
});
|
|
17264
|
-
await sleep(500);
|
|
17265
|
-
await this.refreshSimId();
|
|
17368
|
+
await this.reloadGuestApp(wantsClear);
|
|
17266
17369
|
await this.waitForTree(12e4);
|
|
17267
17370
|
if (this.opts.onAfterLaunch) {
|
|
17268
17371
|
try {
|
|
@@ -17400,23 +17503,17 @@ var init_bridge_flow_runner = __esm({
|
|
|
17400
17503
|
return result;
|
|
17401
17504
|
}
|
|
17402
17505
|
// maestro stopApp: tear down current app runtime. mirrors the real cli,
|
|
17403
|
-
// which kills the running process.
|
|
17404
|
-
//
|
|
17506
|
+
// which kills the running process. sootsim has no separate process, so we
|
|
17507
|
+
// soft-reload the guest app to a fresh cleared mount — the next launchApp
|
|
17508
|
+
// finds it ready. (does NOT unregister the service worker: it holds the
|
|
17509
|
+
// engine's own bundle chunks, and wiping them 404s the next heavy reload.)
|
|
17405
17510
|
async stopApp() {
|
|
17406
|
-
await this.
|
|
17407
|
-
try { await (${CLEAR_APP_STATE_EVAL}) } catch {}
|
|
17408
|
-
try {
|
|
17409
|
-
const regs = await navigator.serviceWorker?.getRegistrations?.()
|
|
17410
|
-
await Promise.all((regs || []).map((reg) => reg.unregister()))
|
|
17411
|
-
} catch {}
|
|
17412
|
-
})()`);
|
|
17511
|
+
await this.reloadGuestApp(true);
|
|
17413
17512
|
}
|
|
17414
|
-
// maestro clearState: wipe app-owned storage
|
|
17415
|
-
//
|
|
17513
|
+
// maestro clearState: wipe app-owned storage and relaunch fresh. routes
|
|
17514
|
+
// through the same engine soft-reload launchApp uses under `clearState: true`.
|
|
17416
17515
|
async clearState() {
|
|
17417
|
-
await this.
|
|
17418
|
-
await (${CLEAR_APP_STATE_EVAL})
|
|
17419
|
-
})()`);
|
|
17516
|
+
await this.reloadGuestApp(true);
|
|
17420
17517
|
}
|
|
17421
17518
|
// maestro clearKeychain: there is no real keychain in sootsim's browser
|
|
17422
17519
|
// sandbox. log loudly so the author notices, then continue — matching the
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.151 | (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
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.149 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a,b,c,d}from"./chunk-DYSZWMKF.js";import"./chunk-K6DR7C5H.js";import"./chunk-Q6KGWTG3.js";import"./chunk-L4SMKJAF.js";import"./chunk-CGBHDP72.js";import"./chunk-DVANCABF.js";export{c as ensureDaemonRunning,a as ensureRuntimeInstalled,d as ensureSootsimReady,b as resolveBootstrapPort};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.149 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.149 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.149 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|