sootsim 0.1.114 → 0.1.115
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-PPV725W2.js → agent-R3CYHNIF.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-RWVU7CO2.js → agent-wrapper-TRRE2GH5.js} +2 -2
- package/dist-cli/chunks/{assert-JC2FD3TU.js → assert-MRSNTOEC.js} +2 -2
- package/dist-cli/chunks/auto-bootstrap-7ABTFLLR.js +2 -0
- package/dist-cli/chunks/beta-ZJYYZEFR.js +2 -0
- package/dist-cli/chunks/{chunk-7EAARWHH.js → chunk-3PUOG2KU.js} +2 -2
- package/dist-cli/chunks/{chunk-D6U6XEI3.js → chunk-47VNJGW7.js} +3 -3
- package/dist-cli/chunks/{chunk-NU5KT7WW.js → chunk-5SL6CP7Y.js} +1 -1
- package/dist-cli/chunks/{chunk-D2PQBP3C.js → chunk-77VIOTR7.js} +2 -2
- package/dist-cli/chunks/{chunk-IOSPY7ZF.js → chunk-AJYQJMAY.js} +2 -2
- package/dist-cli/chunks/chunk-BZTJFTU2.js +1 -0
- package/dist-cli/chunks/{chunk-56HURVFV.js → chunk-CUHTXNJW.js} +1 -1
- package/dist-cli/chunks/{chunk-UKLINY7V.js → chunk-D6PRIVLD.js} +2 -2
- package/dist-cli/chunks/{chunk-NQH7JGEZ.js → chunk-DACZHUK2.js} +1 -1
- package/dist-cli/chunks/{chunk-7QWLHGAD.js → chunk-E53Y4O7H.js} +1 -1
- package/dist-cli/chunks/{chunk-UA5OIC5Y.js → chunk-F46PTRLM.js} +2 -2
- package/dist-cli/chunks/chunk-F4LJC2WB.js +1 -0
- package/dist-cli/chunks/{chunk-EIRP7XBM.js → chunk-GG5MTRXC.js} +1 -1
- package/dist-cli/chunks/{chunk-XPQUENRQ.js → chunk-GUDD5CIA.js} +2 -2
- package/dist-cli/chunks/{chunk-HPTCRK5L.js → chunk-GW5TVVRV.js} +2 -2
- package/dist-cli/chunks/{chunk-2DW25WOA.js → chunk-HAFZOF63.js} +3 -3
- package/dist-cli/chunks/{chunk-PQWCZXCN.js → chunk-HU2K2HVE.js} +2 -2
- package/dist-cli/chunks/{chunk-HIQPS53N.js → chunk-HYR63F7Z.js} +1 -1
- package/dist-cli/chunks/{chunk-ZVL24GTC.js → chunk-ICZSY2XS.js} +2 -2
- package/dist-cli/chunks/{chunk-UBDSTHBH.js → chunk-IWC4SYEG.js} +1 -1
- package/dist-cli/chunks/{chunk-TVETGSCD.js → chunk-ML5LV4WM.js} +1 -1
- package/dist-cli/chunks/{chunk-6TO3HND7.js → chunk-NXAESORG.js} +2 -2
- package/dist-cli/chunks/{chunk-O5WZBC2Y.js → chunk-OK2FCYQN.js} +2 -2
- package/dist-cli/chunks/{chunk-VD4CSXIK.js → chunk-PEP5GKW7.js} +2 -2
- package/dist-cli/chunks/{chunk-IDUGL3MK.js → chunk-Q3BVLSSD.js} +6 -6
- package/dist-cli/chunks/chunk-Q4SUC2SN.js +79 -0
- package/dist-cli/chunks/{chunk-WRB6MZBX.js → chunk-SLSNMSD7.js} +21 -4
- package/dist-cli/chunks/{chunk-VRS7EUIU.js → chunk-SPVHYFZ3.js} +1 -1
- package/dist-cli/chunks/{chunk-FPCP57JZ.js → chunk-SRXOV4BJ.js} +6 -6
- package/dist-cli/chunks/{chunk-HKRPDZOI.js → chunk-TF5LTELW.js} +1 -1
- package/dist-cli/chunks/{chunk-PFBRPOL6.js → chunk-TMR6MW5W.js} +1 -1
- package/dist-cli/chunks/{chunk-V4PAF3TJ.js → chunk-UDQHDFZW.js} +1 -1
- package/dist-cli/chunks/{chunk-M6LHGDWE.js → chunk-UNRBTUAA.js} +1 -1
- package/dist-cli/chunks/chunk-V2SPOLQA.js +1 -0
- package/dist-cli/chunks/chunk-VSKAOUZ5.js +2 -0
- package/dist-cli/chunks/{chunk-TSB4XTV3.js → chunk-W646EQFP.js} +2 -2
- package/dist-cli/chunks/{chunk-DUSFDC5U.js → chunk-WNIVVJR7.js} +2 -2
- package/dist-cli/chunks/{chunk-GR2XFJJF.js → chunk-X35ALXTD.js} +2 -2
- package/dist-cli/chunks/{chunk-7NXJ24HB.js → chunk-XMVEHJSM.js} +2 -2
- package/dist-cli/chunks/{chunk-MGWQ527R.js → chunk-XO3XTPFR.js} +1 -1
- package/dist-cli/chunks/{chunk-BBNJXYUW.js → chunk-XRBI3TG2.js} +2 -2
- package/dist-cli/chunks/{chunk-G5IBWOSU.js → chunk-YBAX43B5.js} +1 -1
- package/dist-cli/chunks/{chunk-FVPJJQCX.js → chunk-YTJONQGT.js} +3 -3
- package/dist-cli/chunks/{chunk-WPYPKVQP.js → chunk-ZPJDADTZ.js} +2 -2
- package/dist-cli/chunks/cli-version-RIP4ZUNM.js +2 -0
- package/dist-cli/chunks/{compat-BO4GOTHM.js → compat-4ZDISC6K.js} +3 -3
- package/dist-cli/chunks/{config-4W2CJ435.js → config-IWM4VJ6H.js} +2 -2
- package/dist-cli/chunks/control-FSKX3J4O.js +2 -0
- package/dist-cli/chunks/{cpu-profile-5BKUYSEY.js → cpu-profile-RPY4UFNI.js} +2 -2
- package/dist-cli/chunks/{daemon-KFYVGHQV.js → daemon-SL3D6Q4P.js} +2 -2
- package/dist-cli/chunks/{debug-QBCVIBVX.js → debug-WYNMZ7CT.js} +3 -3
- package/dist-cli/chunks/{detox-BKVDVNN3.js → detox-RMLUYFYI.js} +2 -2
- package/dist-cli/chunks/{device-YG2NZYU4.js → device-TYY7VA57.js} +2 -2
- package/dist-cli/chunks/{diagnose-QBHSWPOE.js → diagnose-7CXKCUT4.js} +2 -2
- package/dist-cli/chunks/drivers-OIAGQOCX.js +2 -0
- package/dist-cli/chunks/{electron-APIQFWWP.js → electron-IKCSDHAV.js} +3 -3
- package/dist-cli/chunks/flow-ZIV2ISC2.js +2 -0
- package/dist-cli/chunks/help-RUILKRB4.js +2 -0
- package/dist-cli/chunks/{hints-SVV3NUDM.js → hints-YHYKK5HQ.js} +2 -2
- package/dist-cli/chunks/{home-paths-IPIEZXKS.js → home-paths-OLHYRKN5.js} +2 -2
- package/dist-cli/chunks/{inspect-QA27PCCP.js → inspect-INJGRQD3.js} +3 -3
- package/dist-cli/chunks/install-BRAHILXG.js +2 -0
- package/dist-cli/chunks/{install-desktop-U4KFKLJI.js → install-desktop-FQS3WZ6W.js} +3 -3
- package/dist-cli/chunks/{keys-SWELRMTL.js → keys-JUYFKZD7.js} +2 -2
- package/dist-cli/chunks/{launch-KWK7AYPJ.js → launch-XW5OSSNC.js} +3 -3
- package/dist-cli/chunks/{login-AFK5TRXO.js → login-QSZQPSEA.js} +4 -4
- package/dist-cli/chunks/{logout-KJB2XZ4H.js → logout-2YSS6D65.js} +2 -2
- package/dist-cli/chunks/{maestro-IL7IRBBN.js → maestro-UG6C6KQ6.js} +2 -2
- package/dist-cli/chunks/{preview-DDOOW574.js → preview-4TH2YLNR.js} +2 -2
- package/dist-cli/chunks/{profile-UWDS7T6L.js → profile-63R3YOCR.js} +2 -2
- package/dist-cli/chunks/{react-EJOUNOBS.js → react-FMPGSG3A.js} +2 -2
- package/dist-cli/chunks/{record-7Q25DB46.js → record-F64J66JH.js} +2 -2
- package/dist-cli/chunks/runtime-NE4NMW4R.js +2 -0
- package/dist-cli/chunks/{runtime-delivery-Q4CEUD72.js → runtime-delivery-HJPB7EEU.js} +2 -2
- package/dist-cli/chunks/{screenshot-3ON5A5EY.js → screenshot-OF6QEH6B.js} +2 -2
- package/dist-cli/chunks/{screenshot-mode-MGACLSRL.js → screenshot-mode-BIZP42HF.js} +2 -2
- package/dist-cli/chunks/{screenshots-OWSKOBVC.js → screenshots-DKAYDLK5.js} +2 -2
- package/dist-cli/chunks/{server-T2NGFWJQ.js → server-ETFFUJ5R.js} +2 -2
- package/dist-cli/chunks/setup-repo-JE25CERB.js +2 -0
- package/dist-cli/chunks/{skills-SF5HOOMB.js → skills-H2OPZZLC.js} +2 -2
- package/dist-cli/chunks/{start-PEFKHFIU.js → start-OI245IG4.js} +4 -4
- package/dist-cli/chunks/store-2H5T4NFZ.js +2 -0
- package/dist-cli/chunks/telemetry-USTW2NVP.js +2 -0
- package/dist-cli/chunks/{test-OBVSN2TZ.js → test-HE6RK2ZX.js} +3 -3
- package/dist-cli/chunks/{three-mode-EZ332TID.js → three-mode-K2NTAVQP.js} +2 -2
- package/dist-cli/chunks/{timeline-E32QABRP.js → timeline-3DBCJWKF.js} +2 -2
- package/dist-cli/chunks/{upgrade-A42OZ5LT.js → upgrade-7YLEP6ED.js} +2 -2
- package/dist-cli/chunks/upload-T3AYMH27.js +2 -0
- package/dist-cli/chunks/{web-Q22CLCSN.js → web-BWUYH3SK.js} +2 -2
- package/dist-cli/chunks/{what-happened-6EHD4QJK.js → what-happened-VDTCMZNP.js} +2 -2
- package/dist-cli/chunks/{whoami-ZVBH6ZYC.js → whoami-2ZOUZSB3.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/demo-app-registry.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +22 -5
- package/dist-lib/sdk.mjs +22 -5
- package/dist-lib/skills.cjs +2 -6
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/dist-cli/chunks/auto-bootstrap-GJVEKHWE.js +0 -2
- package/dist-cli/chunks/beta-HTH4QNXO.js +0 -2
- package/dist-cli/chunks/chunk-JV6I42YD.js +0 -79
- package/dist-cli/chunks/chunk-MOSWK2MT.js +0 -2
- package/dist-cli/chunks/chunk-SJ6DSMZI.js +0 -1
- package/dist-cli/chunks/chunk-SMVEVXJN.js +0 -1
- package/dist-cli/chunks/chunk-ZL5NFGQ6.js +0 -1
- package/dist-cli/chunks/cli-version-O7RDJ2FI.js +0 -2
- package/dist-cli/chunks/control-4BKV5LMV.js +0 -2
- package/dist-cli/chunks/drivers-JUF5RIRB.js +0 -2
- package/dist-cli/chunks/flow-WSLHCPWR.js +0 -2
- package/dist-cli/chunks/help-LGGVMOHI.js +0 -2
- package/dist-cli/chunks/install-3W3VW6XD.js +0 -2
- package/dist-cli/chunks/runtime-M4BIM2UC.js +0 -2
- package/dist-cli/chunks/setup-repo-6CZGK337.js +0 -2
- package/dist-cli/chunks/store-ZUZGIBZL.js +0 -2
- package/dist-cli/chunks/telemetry-DSKEFDAZ.js +0 -2
- package/dist-cli/chunks/upload-KZOOYKHT.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
2
|
-
import{A as y,L as x,y as F,z as T}from"./chunk-
|
|
1
|
+
/*! sootsim v0.1.115 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
+
import{A as y,L as x,y as F,z as T}from"./chunk-SLSNMSD7.js";import{c as S,e as N}from"./chunk-Q3BVLSSD.js";import{b as k}from"./chunk-SPVHYFZ3.js";import"./chunk-ML5LV4WM.js";import"./chunk-UNRBTUAA.js";import"./chunk-E53Y4O7H.js";function _(n){let e=[];for(let t=0;t<n.length;t++)if(n[t]==="--since"&&t+1<n.length){e.push(t,t+1);let s=n[t+1].trim(),l=/^(\d+(?:\.\d+)?)(ms|s|m)?$/.exec(s);if(l){let a=Number(l[1]),m=l[2]??"ms",$=m==="s"?a*1e3:m==="m"?a*6e4:a;return{since:Date.now()-$,consumed:e}}let o=Number(s);if(Number.isFinite(o)&&o>1e12)return{since:o,consumed:e}}return{consumed:e}}function K(n){let e=[];for(let t=0;t<n.length;t++)if(n[t]==="--kinds"&&t+1<n.length)return e.push(t,t+1),{kinds:n[t+1].split(",").map(s=>s.trim()).filter(Boolean),consumed:e};return{consumed:e}}function O(n){let e=[];for(let t=0;t<n.length;t++)if(n[t]==="--limit"&&t+1<n.length){e.push(t,t+1);let s=Number(n[t+1]);if(Number.isFinite(s)&&s>0)return{limit:s,consumed:e}}return{consumed:e}}function j(n,e){if(e===null)return new Date(n).toLocaleTimeString();let t=(n-e)/1e3;return`${t>=0?"+":""}${t.toFixed(2)}s`}function B(n,e){switch(n){case"app-launch":return e.phase==="launch"?`launch ${e.appName??e.toAppId??""}`:`dismiss ${e.appName??e.fromAppId??""} \u2192 ${e.toAppId??""}`;case"toast":return`"${e.text??""}"${e.durationMs?` (${e.durationMs}ms)`:""}`;case"keyboard":return`${e.phase??"?"}${e.heightPx?` h=${e.heightPx}`:""}${e.mode?` ${e.mode}`:""}`;case"screen":return`${e.phase??"?"} ${e.name??e.activeName??""}`;case"route":return`${e.phase??"?"} ${e.path??e.pathname??""}`;case"alert":case"actionsheet":case"picker":return`${e.phase??"?"} ${e.title??e.message??""}`;case"notification":return`${e.title??""}${e.body?` \u2014 ${e.body}`:""}`;case"fetch":return`${e.method??"GET"} ${e.url??""}${e.status?` -> ${e.status}`:""}`;case"console":return`${e.level??"log"}: ${(e.message??"").toString().slice(0,120)}`;case"shell":return`${e.event??e.type??e.phase??""}`;case"scroll":return`${e.phase??"?"} ${e.target??""}`;case"gesture":return`${e.phase??"?"} ${e.type??""}`;case"text-input":return`${e.phase??"?"}${e.value!==void 0?` "${String(e.value).slice(0,40)}"`:""}`;case"layout":return`${e.kind??"?"} ${e.testID??e.type??""}${e.skipped?` skipped:${e.reason??"unknown"}`:""}`;case"react-commit":{let t=e.slowest;return`${e.fiberCount??"?"} fibers ${e.durationMs??"?"}ms${t?.displayName?` \xB7 ${t.displayName} ${t.durationMs??"?"}ms`:""}`}case"reanimated":case"animation":return`${e.kind??""} ${e.target??""}${e.durationMs?` ${e.durationMs}ms`:""}`}}function A(n,e){let t=j(n.t,e).padStart(8),s=n.context.padEnd(6),l=`[${n.kind}]`.padEnd(15),o="",a=n.data;return a&&typeof a=="object"&&(o=B(n.kind,a)),` ${t} ${s} ${l} ${o}`}function M(n){let e=[],t={label:"initial state",events:[],startedAt:n[0]?.t??null};e.push(t);for(let s of n)if(t.events.push(s),s.kind==="screen"||s.kind==="route"){let l=s.data,o=l?.phase;if(!o||o==="enter"||o==="appear"||o==="active"){let a=l?.name||l?.activeName||l?.path||l?.pathname||s.kind;e.length===1&&t.events.length===1?t.label=`${s.kind}: ${a}`:(t={label:`${s.kind}: ${a}`,events:[],startedAt:s.t},e.push(t))}}return e}async function J(n,e){let t=S(n,{port:e.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.115 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
+
import{d as i}from"./chunk-D6PRIVLD.js";import{d as n}from"./chunk-ZPJDADTZ.js";import"./chunk-UNRBTUAA.js";import"./chunk-E53Y4O7H.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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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.115 | (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;
|
|
@@ -312,6 +312,7 @@ function resolveFindMode(q) {
|
|
|
312
312
|
mode: "testid",
|
|
313
313
|
code: `(async () => {
|
|
314
314
|
const t = window.__sootsimTest
|
|
315
|
+
if (!t) return null
|
|
315
316
|
return (await t.findByTestId(${JSON.stringify(q.testId)})) || (await t.findById(${JSON.stringify(q.testId)}))
|
|
316
317
|
})()`
|
|
317
318
|
};
|
|
@@ -319,13 +320,21 @@ function resolveFindMode(q) {
|
|
|
319
320
|
if (q.role) {
|
|
320
321
|
return {
|
|
321
322
|
mode: "role",
|
|
322
|
-
code: `(async () =>
|
|
323
|
+
code: `(async () => {
|
|
324
|
+
const t = window.__sootsimTest
|
|
325
|
+
if (!t) return []
|
|
326
|
+
return await t.queryAll({ hasRole: ${JSON.stringify(q.role)}, pruneHidden: true })
|
|
327
|
+
})()`
|
|
323
328
|
};
|
|
324
329
|
}
|
|
325
330
|
if (q.type) {
|
|
326
331
|
return {
|
|
327
332
|
mode: "type",
|
|
328
|
-
code: `(async () =>
|
|
333
|
+
code: `(async () => {
|
|
334
|
+
const t = window.__sootsimTest
|
|
335
|
+
if (!t) return []
|
|
336
|
+
return await t.queryAll({ type: ${JSON.stringify(q.type)}, pruneHidden: true })
|
|
337
|
+
})()`
|
|
329
338
|
};
|
|
330
339
|
}
|
|
331
340
|
if (q.pressable) {
|
|
@@ -333,6 +342,7 @@ function resolveFindMode(q) {
|
|
|
333
342
|
mode: "pressable",
|
|
334
343
|
code: `(async () => {
|
|
335
344
|
const t = window.__sootsimTest
|
|
345
|
+
if (!t) return []
|
|
336
346
|
${FIND_INSPECTABLE_TARGETS}
|
|
337
347
|
const inspectable = await fromInspectable()
|
|
338
348
|
if (inspectable) return inspectable.filter(n => n.pressable && isVisibleTarget(n))
|
|
@@ -346,6 +356,7 @@ ${FIND_INSPECTABLE_TARGETS}
|
|
|
346
356
|
mode: "interactive-targets",
|
|
347
357
|
code: `(async () => {
|
|
348
358
|
const t = window.__sootsimTest
|
|
359
|
+
if (!t) return []
|
|
349
360
|
${FIND_INSPECTABLE_TARGETS}
|
|
350
361
|
const inspectable = await fromInspectable()
|
|
351
362
|
if (inspectable) {
|
|
@@ -360,7 +371,9 @@ ${FIND_INSPECTABLE_TARGETS}
|
|
|
360
371
|
return {
|
|
361
372
|
mode: "visible",
|
|
362
373
|
code: `(async () => {
|
|
363
|
-
const
|
|
374
|
+
const t = window.__sootsimTest
|
|
375
|
+
if (!t) return []
|
|
376
|
+
const all = await t.queryAll({ pruneHidden: true })
|
|
364
377
|
return all.filter(n => n.layout && n.layout.width > 0 && n.layout.height > 0)
|
|
365
378
|
})()`
|
|
366
379
|
};
|
|
@@ -368,7 +381,11 @@ ${FIND_INSPECTABLE_TARGETS}
|
|
|
368
381
|
if (q.text) {
|
|
369
382
|
return {
|
|
370
383
|
mode: "text",
|
|
371
|
-
code: `(async () =>
|
|
384
|
+
code: `(async () => {
|
|
385
|
+
const t = window.__sootsimTest
|
|
386
|
+
if (!t) return null
|
|
387
|
+
return await t.findByText(${JSON.stringify(q.text)})
|
|
388
|
+
})()`
|
|
372
389
|
};
|
|
373
390
|
}
|
|
374
391
|
return null;
|
package/dist-lib/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.115 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// cli/commands/inspect/core.ts
|
|
4
4
|
function resolveMaxMsFlag(args, fallbackMs) {
|
|
@@ -233,6 +233,7 @@ function resolveFindMode(q) {
|
|
|
233
233
|
mode: "testid",
|
|
234
234
|
code: `(async () => {
|
|
235
235
|
const t = window.__sootsimTest
|
|
236
|
+
if (!t) return null
|
|
236
237
|
return (await t.findByTestId(${JSON.stringify(q.testId)})) || (await t.findById(${JSON.stringify(q.testId)}))
|
|
237
238
|
})()`
|
|
238
239
|
};
|
|
@@ -240,13 +241,21 @@ function resolveFindMode(q) {
|
|
|
240
241
|
if (q.role) {
|
|
241
242
|
return {
|
|
242
243
|
mode: "role",
|
|
243
|
-
code: `(async () =>
|
|
244
|
+
code: `(async () => {
|
|
245
|
+
const t = window.__sootsimTest
|
|
246
|
+
if (!t) return []
|
|
247
|
+
return await t.queryAll({ hasRole: ${JSON.stringify(q.role)}, pruneHidden: true })
|
|
248
|
+
})()`
|
|
244
249
|
};
|
|
245
250
|
}
|
|
246
251
|
if (q.type) {
|
|
247
252
|
return {
|
|
248
253
|
mode: "type",
|
|
249
|
-
code: `(async () =>
|
|
254
|
+
code: `(async () => {
|
|
255
|
+
const t = window.__sootsimTest
|
|
256
|
+
if (!t) return []
|
|
257
|
+
return await t.queryAll({ type: ${JSON.stringify(q.type)}, pruneHidden: true })
|
|
258
|
+
})()`
|
|
250
259
|
};
|
|
251
260
|
}
|
|
252
261
|
if (q.pressable) {
|
|
@@ -254,6 +263,7 @@ function resolveFindMode(q) {
|
|
|
254
263
|
mode: "pressable",
|
|
255
264
|
code: `(async () => {
|
|
256
265
|
const t = window.__sootsimTest
|
|
266
|
+
if (!t) return []
|
|
257
267
|
${FIND_INSPECTABLE_TARGETS}
|
|
258
268
|
const inspectable = await fromInspectable()
|
|
259
269
|
if (inspectable) return inspectable.filter(n => n.pressable && isVisibleTarget(n))
|
|
@@ -267,6 +277,7 @@ ${FIND_INSPECTABLE_TARGETS}
|
|
|
267
277
|
mode: "interactive-targets",
|
|
268
278
|
code: `(async () => {
|
|
269
279
|
const t = window.__sootsimTest
|
|
280
|
+
if (!t) return []
|
|
270
281
|
${FIND_INSPECTABLE_TARGETS}
|
|
271
282
|
const inspectable = await fromInspectable()
|
|
272
283
|
if (inspectable) {
|
|
@@ -281,7 +292,9 @@ ${FIND_INSPECTABLE_TARGETS}
|
|
|
281
292
|
return {
|
|
282
293
|
mode: "visible",
|
|
283
294
|
code: `(async () => {
|
|
284
|
-
const
|
|
295
|
+
const t = window.__sootsimTest
|
|
296
|
+
if (!t) return []
|
|
297
|
+
const all = await t.queryAll({ pruneHidden: true })
|
|
285
298
|
return all.filter(n => n.layout && n.layout.width > 0 && n.layout.height > 0)
|
|
286
299
|
})()`
|
|
287
300
|
};
|
|
@@ -289,7 +302,11 @@ ${FIND_INSPECTABLE_TARGETS}
|
|
|
289
302
|
if (q.text) {
|
|
290
303
|
return {
|
|
291
304
|
mode: "text",
|
|
292
|
-
code: `(async () =>
|
|
305
|
+
code: `(async () => {
|
|
306
|
+
const t = window.__sootsimTest
|
|
307
|
+
if (!t) return null
|
|
308
|
+
return await t.findByText(${JSON.stringify(q.text)})
|
|
309
|
+
})()`
|
|
293
310
|
};
|
|
294
311
|
}
|
|
295
312
|
return null;
|
package/dist-lib/skills.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.115 | (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;
|
|
@@ -15076,11 +15076,7 @@ function createBridge(wsPort, opts = {}) {
|
|
|
15076
15076
|
const commandTimeoutMs = opts.commandTimeoutMs ?? 15e3;
|
|
15077
15077
|
const pending = /* @__PURE__ */ new Map();
|
|
15078
15078
|
const ws = new import_ws3.WebSocket(`ws://localhost:${wsPort}`);
|
|
15079
|
-
const identity =
|
|
15080
|
-
key: `sim:${opts.simId}`,
|
|
15081
|
-
source: "explicit-sim-id",
|
|
15082
|
-
stable: true
|
|
15083
|
-
} : getCliIdentity();
|
|
15079
|
+
const identity = getCliIdentity();
|
|
15084
15080
|
const ready = new Promise((resolve7, reject) => {
|
|
15085
15081
|
ws.on("open", () => {
|
|
15086
15082
|
try {
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.115 | (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.114 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a,b,c,d}from"./chunk-D6U6XEI3.js";import"./chunk-IDUGL3MK.js";import"./chunk-VRS7EUIU.js";import"./chunk-TVETGSCD.js";import"./chunk-M6LHGDWE.js";import"./chunk-7QWLHGAD.js";export{c as ensureDaemonRunning,a as ensureRuntimeInstalled,d as ensureSootsimReady,b as resolveBootstrapPort};
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.114 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{d as de,e as pe,f as fe}from"./chunk-UKLINY7V.js";import{c as ue}from"./chunk-HKRPDZOI.js";import{c as le,e as ce,g as I}from"./chunk-IDUGL3MK.js";import{d as ae}from"./chunk-UBDSTHBH.js";import{a as ie,b as P}from"./chunk-6TO3HND7.js";import{a as se}from"./chunk-WPYPKVQP.js";import{createHash as ye}from"crypto";import{readFileSync as K}from"fs";import{gzipSync as me}from"zlib";function ge(e){let t=(e||"").toLowerCase().split(";")[0].trim();return t?!(t.startsWith("image/")||t.startsWith("video/")||t.startsWith("audio/")||t==="font/woff2"||t==="application/font-woff2"||t==="application/zip"||t==="application/gzip"):!0}function G(e,t){let r=new AbortController,o=setTimeout(()=>r.abort(new Error(`${t} timed out after ${e/1e3}s`)),e);return{signal:r.signal,cancel:()=>clearTimeout(o)}}async function Le(e){let t=G(12e4,`PUT ${e.url}`),r;try{r=await fetch(e.url,{method:"PUT",headers:{"content-type":e.contentType},body:e.bytes,signal:t.signal})}finally{t.cancel()}if(!r.ok){let o=await r.text().catch(()=>"");throw new Error(`PUT ${e.url} failed ${r.status}: ${o.slice(0,200)}`)}}async function Ee(e,t=8,r){let o=0,s=0,a=e.length;await Promise.all(Array.from({length:Math.min(t,a)},async()=>{for(;o<a;){let c=e[o++];await Le(c),s++,r?.(s,a)}}))}function Fe(e,t,r,o){let s=[];s.push({url:e.bundle.putUrl,contentType:e.bundle.contentType,bytes:t});for(let a of e.files){let c=r.get(a.urlhash);c&&s.push({url:a.putUrl,contentType:a.contentType,bytes:c})}e.events&&o?.eventsBytes&&s.push({url:e.events.putUrl,contentType:e.events.contentType,bytes:o.eventsBytes}),e.flowVideo&&o?.videoBytes&&s.push({url:e.flowVideo.putUrl,contentType:e.flowVideo.contentType,bytes:o.videoBytes}),e.storage&&o?.storageBytes&&s.push({url:e.storage.putUrl,contentType:e.storage.contentType,bytes:o.storageBytes});for(let a of e.snapshots??[]){let c=o?.snapshotBytes?.get(a.id);c&&s.push({url:a.putUrl,contentType:a.contentType,bytes:c})}return s}function Ae(e){return e.replace(/\/+$/,"")}var A=class extends Error{constructor(r,o,s,a=""){super(r);this.status=o;this.phase=s;this.responseText=a;this.name="PresignedUploadError"}};async function he(e){let t=Ae(e.originBase),r={"content-type":"application/json"};e.authHeader&&(r.authorization=e.authHeader),e.adminBypassToken&&(r["x-soot-admin-upload-bypass"]=e.adminBypassToken);let o=G(3e4,"init"),s;try{s=await fetch(`${t}/api/preview/upload/init`,{method:"POST",headers:r,body:JSON.stringify(e.initBody),signal:o.signal})}finally{o.cancel()}if(!s.ok){let f=await s.text().catch(()=>"");throw new A(`init failed: ${s.status} ${f.slice(0,200)}`,s.status,"init",f)}let a=await s.json(),c=Fe(a,e.bundleBytes,e.filesByHash,e.extras);await Ee(c,e.concurrency??8,e.onPutProgress);let y=G(3e4,"finalize"),d;try{d=await fetch(`${t}/api/preview/upload/finalize`,{method:"POST",headers:r,body:JSON.stringify({token:a.token}),signal:y.signal})}finally{y.cancel()}if(!d.ok){let f=await d.text().catch(()=>"");throw new A(`finalize failed: ${d.status} ${f.slice(0,200)}`,d.status,"finalize",f)}let $=await d.json();return{init:a,finalize:$}}function ze(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.message=="string"&&t.message?t.message:null}catch{return null}}var ve=process.env.SOOTSIM_UPLOAD_ORIGIN||"https://sootbean.com",Ue=process.env.SOOTSIM_PREVIEW_ORIGIN||"https://sootsim.com",Y="http://localhost:3000",He=2e3;async function Me(e){if(e)return e;if(process.env.SOOTSIM_UPLOAD_ORIGIN)return process.env.SOOTSIM_UPLOAD_ORIGIN;try{let t=await fetch(`${Y}/api/preview/upload/init`,{method:"OPTIONS",signal:AbortSignal.timeout(He)});if(t.ok||t.status===204||t.status===405)return Y}catch{}return ve}function S(e){return e.replace(/\/$/,"")}function Ce(e){try{let r=new URL(e).hostname.replace(/^\[|\]$/g,"").toLowerCase();return r==="localhost"||r.endsWith(".localhost")||r==="0.0.0.0"||r==="::1"||/^127(?:\.\d{1,3}){3}$/.test(r)}catch{return!1}}function Ne(e){try{let t=new URL(e).hostname.toLowerCase();return t==="sootbean.com"||t.endsWith(".sootbean.com")}catch{return!1}}function We(e,t){return t?S(t):process.env.SOOTSIM_PREVIEW_ORIGIN?S(process.env.SOOTSIM_PREVIEW_ORIGIN):Ce(e)?S(e):Ne(e)?S(Ue):S(e)}function qe(){console.log(`
|
|
3
|
-
sootsim upload \u2014 publish the current recorded bundle as a /preview/<id> link
|
|
4
|
-
|
|
5
|
-
usage:
|
|
6
|
-
sootsim upload [--origin <url>] [--public-origin <url>] (--events <path> | --video <path>) [--screenshot <path>] [--owner <org> --repo <repo>] [--sim <sim>] [--open] [--assets-only]
|
|
7
|
-
|
|
8
|
-
options:
|
|
9
|
-
--origin <url> upload target (default: auto)
|
|
10
|
-
prefers ${Y} when available, otherwise
|
|
11
|
-
falls back to ${ve}
|
|
12
|
-
override with SOOTSIM_UPLOAD_ORIGIN env var
|
|
13
|
-
--public-origin <url>
|
|
14
|
-
public /preview link origin (default: ${Ue}
|
|
15
|
-
for prod uploads, upload origin for localhost/custom origins).
|
|
16
|
-
override with SOOTSIM_PREVIEW_ORIGIN env var
|
|
17
|
-
--events <path> path to a gzipped events .jsonl.gz file to attach
|
|
18
|
-
required unless --video is present; previews must
|
|
19
|
-
have replay or recording playback data
|
|
20
|
-
--screenshot <path>
|
|
21
|
-
path to a PNG thumbnail to attach to the share
|
|
22
|
-
--video <path> path to a webm/mp4/gif flow recording. embedded inline
|
|
23
|
-
in the pr sticky comment served at
|
|
24
|
-
/api/preview/flow-video?id=<share-id>
|
|
25
|
-
--video-duration-ms <ms>
|
|
26
|
-
duration hint for attached flow video
|
|
27
|
-
--owner <org> associate a session upload with a linked org repo
|
|
28
|
-
--repo <repo> repo name for --owner; the signed-in user must belong
|
|
29
|
-
to the local/org team that owns the link
|
|
30
|
-
--sim <sim> target a specific sim (see: sootsim list)
|
|
31
|
-
--open open the resulting /preview/<id> url in the browser
|
|
32
|
-
--assets-only drop API/JSON/HTML records before upload; keep images,
|
|
33
|
-
fonts, css, js, and binary blobs. live-data demos hit
|
|
34
|
-
the real network at replay time instead of serving
|
|
35
|
-
recorded API snapshots
|
|
36
|
-
-h, --help
|
|
37
|
-
|
|
38
|
-
examples:
|
|
39
|
-
sootsim upload --events ./my-session.jsonl.gz
|
|
40
|
-
sootsim upload --origin http://localhost:3000 --events ./my-session.jsonl.gz --open
|
|
41
|
-
sootsim upload --video /tmp/soot-flow.webm --video-duration-ms 12000
|
|
42
|
-
`)}function b(e,t){let r=e.findIndex(s=>s===t);if(r<0)return;let o=e[r+1];return e.splice(r,2),o}function we(e,t){let r=e.findIndex(o=>o===t);return r<0?!1:(e.splice(r,1),!0)}function be(e){let t=(e||"").toLowerCase().split(";")[0].trim();return t?!!(t.startsWith("image/")||t.startsWith("font/")||t.startsWith("video/")||t.startsWith("audio/")||t.startsWith("model/")||t==="text/css"||t==="application/javascript"||t==="text/javascript"||t==="application/wasm"||t==="application/font-woff"||t==="application/font-woff2"||t==="application/octet-stream"):!1}async function j(e){let t=await fetch(e);if(!t.ok)throw new Error(`fetch ${e} -> ${t.status} ${t.statusText}`);return new Uint8Array(await t.arrayBuffer())}function Ve(e){return/\.bundle($|\?)/.test(e)||/\.js($|\?)/.test(e)?"application/javascript":/\.zip($|\?)/.test(e)?"application/zip":"application/javascript"}function De(e){try{return new URL(e).searchParams.get("appFonts")||""}catch{return""}}function Ge(e){let t=(e.split("?")[0].split(".").pop()||"").toLowerCase();return t==="ttf"?"font/ttf":t==="otf"?"font/otf":t==="woff"?"font/woff":t==="woff2"?"font/woff2":"application/octet-stream"}function Ke(e){try{let t=new URL(e);return t.searchParams.get("lazy")==="true"?(t.searchParams.set("lazy","false"),t.toString()):e}catch{return e}}async function je(e,t){let o=[];for(let s=0;s<t;s+=15e5){let a=Math.min(s+15e5,t),c=await I(e,`(window.__sootsimLastTransformedBundle?.text || "").slice(${s}, ${a})`);if(typeof c!="string")return null;o.push(c)}return o.join("")}function J(e){let t=new Map;for(let r of e)t.set(r.urlhash||r.url,r);return Array.from(t.values())}async function ct(e,t){(e.includes("--help")||e.includes("-h"))&&(qe(),process.exit(0));let r=[...e],o=await Me(b(r,"--origin")),s=We(o,b(r,"--public-origin")),a=b(r,"--events"),c=b(r,"--screenshot"),y=b(r,"--video"),d=b(r,"--video-duration-ms"),$=b(r,"--owner"),f=b(r,"--repo"),Te=we(r,"--open");($&&!f||!$&&f)&&(console.error(" --owner and --repo must be provided together"),process.exit(1)),!a&&!y&&(console.error(" preview uploads require playback data: pass --events or --video.\n for a normal local preview, use `sootsim record --mode combined --open`\n or `sootsim flow --preview` instead of uploading a bundle-only snapshot."),process.exit(1));let Q=we(r,"--assets-only"),Be=le(r,{stripBooleanFlags:[],stripValueFlags:[]}),v=ce(Be),l,X=[],m=[],z=null;try{if(l=await I(v,'(typeof window.__sootsimCaptureBundle === "function") ? window.__sootsimCaptureBundle() : null'),l?.bundleUrl){let n=new URL(l.bundleUrl).origin,[i,T]=await Promise.all([I(v,`(window.__sootsimPreviewRecorder?.list?.(${JSON.stringify(n)}) || [])`),I(v,`(async () => {
|
|
43
|
-
const list = window.__sootsimListWorkerFetchRecorder
|
|
44
|
-
return typeof list === 'function'
|
|
45
|
-
? await list(${JSON.stringify(n)})
|
|
46
|
-
: []
|
|
47
|
-
})()`)]);X=J([...i,...T]).filter(p=>{try{return!new URL(p.url).pathname.startsWith("/api/")}catch{return!0}});let u=await I(v,`(async () => {
|
|
48
|
-
const rec = window.__sootsimPreviewRecorder
|
|
49
|
-
const workerList = window.__sootsimListWorkerFetchRecorder
|
|
50
|
-
return {
|
|
51
|
-
main: rec?.list ? rec.list() : [],
|
|
52
|
-
worker: typeof workerList === 'function' ? await workerList() : [],
|
|
53
|
-
}
|
|
54
|
-
})()`),_=(u?J([...u.main,...u.worker]):[]).filter(p=>{try{return new URL(p.url).origin!==n}catch{return!1}}),B=_.length>0?{count:_.length,totalBytes:_.reduce((p,O)=>p+(O.size||0),0)}:null;if(B&&B.count>0){console.log(` ${B.count} recorded cross-origin responses (${(B.totalBytes/1024).toFixed(1)} KiB)`);let p=await I(v,`(async () => {
|
|
55
|
-
const rec = window.__sootsimPreviewRecorder
|
|
56
|
-
const workerDump = window.__sootsimDumpWorkerFetchRecorder
|
|
57
|
-
const bundleUrl = ${JSON.stringify(l.bundleUrl)}
|
|
58
|
-
const keep = (r) => {
|
|
59
|
-
try {
|
|
60
|
-
const u = new URL(r.url)
|
|
61
|
-
if (u.origin !== ${JSON.stringify(n)}) return true
|
|
62
|
-
// bundle-origin api responses came from the rewritten
|
|
63
|
-
// /__app-api proxy at record time (re-keyed by the
|
|
64
|
-
// recorder's unwrap step). they need bodies attached the
|
|
65
|
-
// same way as cross-origin records \u2014 direct re-fetch from
|
|
66
|
-
// the dev server lacks the bundle's session cookies.
|
|
67
|
-
if (r.url !== bundleUrl && u.pathname.startsWith('/api/')) return true
|
|
68
|
-
return false
|
|
69
|
-
} catch { return false }
|
|
70
|
-
}
|
|
71
|
-
return {
|
|
72
|
-
main: rec?.dump ? rec.dump().filter(keep) : [],
|
|
73
|
-
worker: typeof workerDump === 'function'
|
|
74
|
-
? (await workerDump()).filter(keep)
|
|
75
|
-
: [],
|
|
76
|
-
}
|
|
77
|
-
})()`);if(m=J([...p.main,...p.worker]),Q){let O=m.length;m=m.filter(D=>be(D.contentType));let V=B.totalBytes-m.reduce((D,ke)=>D+(ke.size||0),0);console.log(` --assets-only: kept ${m.length}/${O} records (dropped ${(V/1024).toFixed(1)} KiB of API responses)`)}}}l?.transformedBundle&&(z=await je(v,l.transformedBundle.byteLength))}finally{v.close()}l||(console.error(" could not read bundle snapshot \u2014 is sootsim running and is the bundle loaded?"),process.exit(2)),l.bundleUrl||(console.error(` no ?bundle= URL on the current sootsim tab.
|
|
78
|
-
open the app you want to share first (e.g. sootsim open 8082), then run upload.`),process.exit(2));let g,H=!1;if(z!==null)g=new TextEncoder().encode(z),H=!0,console.log(` using post-transform bundle: ${(g.byteLength/1024).toFixed(1)} KiB`);else{let n=Ke(l.bundleUrl);n!==l.bundleUrl&&console.log(" forcing lazy=false for self-contained bundle"),console.log(` capturing: ${n}`),g=await j(n),console.log(` main bundle: ${(g.byteLength/1024).toFixed(1)} KiB`)}let L=X.filter(n=>n.url!==l.bundleUrl);Q&&(L=L.filter(n=>be(n.contentType))),console.log(` fetching ${L.length} extra files\u2026`);let E=(await Promise.all(L.map(async n=>{try{let i=await j(n.url);return{...n,bytes:i}}catch(i){return console.error(` warning: failed to re-fetch ${n.url}: ${i instanceof Error?i.message:i}`),null}}))).filter(n=>!!n),Pe=E.reduce((n,i)=>n+i.bytes.byteLength,0);console.log(` ${E.length} extra files: ${(Pe/1024).toFixed(1)} KiB`);let U;a&&(U=K(a));let h;c&&(h=K(c),console.log(` attaching screenshot: ${(h.byteLength/1024).toFixed(1)} KiB`));let w,F,Z;if(y){if(w=K(y),F=y.endsWith(".mp4")?"video/mp4":y.endsWith(".gif")?"image/gif":"video/webm",d){let n=Number(d);(!Number.isFinite(n)||n<=0)&&(console.error(` invalid --video-duration-ms: ${d}`),await P(),process.exit(1)),Z=Math.round(n)}console.log(` attaching flow video: ${(w.byteLength/1024).toFixed(1)} KiB (${F})`)}let R=de(),x=fe(R),Ie=se();ie({event:"preview_upload_started",identity:{userId:R?.kind==="session"?Ie?.user?.id??null:null,repoId:x?.repoId??null,installationId:x?.installationId??null},properties:{origin:o,hasAuth:!!R,authMode:R?.kind??"none",bundleBytes:g.byteLength,isTransformed:H,extraFiles:E.length,recordedFetches:m.length,hasEvents:!!U,hasScreenshot:!!h,hasVideo:!!w}}),R||(console.error(" preview uploads need auth."),console.error(" set SOOTSIM_API_KEY=sk_sootsim_..., run `sootsim login`, or use the soot github runner."),await P(),process.exit(1));let Re=pe(R),xe=(()=>{try{return new URL(l.bundleUrl).origin}catch{return null}})(),M=(n,i,T,u,oe,_,B,p)=>{let O=ge(_),V=O?me(n):n;return{url:i,urlhash:T,method:u,bodyHash:oe,requestVaryHash:p,contentType:_,responseHeaders:B,bytes:V,encoding:O?"gzip":void 0}},ee=[],C=De(l.pageHref)||"";if(C){let n=new Set;for(let i of ue(C)){let T=ye("sha256").update(i).digest("hex");if(!n.has(T)){n.add(T);try{let u=await j(i);ee.push(M(u,i,T,"GET","-",Ge(i))),console.log(` staged app font: ${i} (${(u.byteLength/1024).toFixed(1)} KiB)`)}catch(u){console.error(` warning: failed to fetch app font ${i}: ${u instanceof Error?u.message:u}`)}}}}let N=[...E.map(n=>M(n.bytes,n.url,n.urlhash,"GET","-",n.contentType,n.responseHeaders,n.requestVaryHash)),...m.map(n=>M(Buffer.from(n.bodyBase64,"base64"),n.url,n.urlhash,n.method||"GET",n.bodyHash||"-",n.contentType,n.responseHeaders,n.requestVaryHash)),...ee],W=me(g),_e=ye("sha256").update(g).digest("hex");console.log(` bundle raw=${(g.byteLength/1024).toFixed(1)} KiB gz=${(W.byteLength/1024).toFixed(1)} KiB`);let Oe={contentHash:_e,bundleSizeBytes:g.byteLength,bundleContentType:Ve(l.bundleUrl),bundleEncoding:"gzip",bundleOrigin:xe,appFonts:C||void 0,entry:l.entry,isTransformed:H,deviceSpec:l.deviceSpec,installationId:x?.installationId??void 0,repoId:x?.repoId,owner:$??x?.owner,repo:f??x?.repo,files:N.map(n=>({url:n.url,urlhash:n.urlhash,method:n.method,bodyHash:n.bodyHash,contentType:n.contentType,responseHeaders:n.responseHeaders,requestVaryHash:n.requestVaryHash,encoding:n.encoding,sizeBytes:n.bytes.byteLength})),events:U?{sizeBytes:U.byteLength}:void 0,snapshots:h?[{id:"landing",label:"Landing",kind:"landing",t:0,contentType:"image/png",sizeBytes:h.byteLength}]:void 0,flowVideo:w&&F?{sizeBytes:w.byteLength,contentType:F,durationMs:Z}:void 0},te=new Map;for(let n of N)te.set(n.urlhash,n.bytes);let ne=new Map;h&&ne.set("landing",h);let Se=Date.now(),k=W.byteLength;for(let n of N)k+=n.bytes.byteLength;U&&(k+=U.byteLength),h&&(k+=h.byteLength),w&&(k+=w.byteLength);let $e=`${S(o)}/api/preview/upload/init`;console.log(` init: ${$e}`);let q;try{let n=await he({originBase:o,initBody:Oe,bundleBytes:W,filesByHash:te,extras:{eventsBytes:U,videoBytes:w,snapshotBytes:ne},authHeader:Re,concurrency:16});q=n.finalize;let i=1+n.init.files.length+(n.init.events?1:0)+n.init.snapshots.length+(n.init.flowVideo?1:0);console.log(` PUT ${i} objects in ${Date.now()-Se}ms (${(k/1024).toFixed(1)} KiB)`)}catch(n){let i=n;i.phase==="init"&&i.status===401&&(console.error(" preview upload requires a valid login."),console.error(" run `sootsim login` and retry."),await P(),process.exit(1)),i.status===402&&(console.error(` ${ze(i.responseText)??"preview uploads require Personal, Team, or an active trial \u2014 upgrade from the billing dialog."}`),await P(),process.exit(1)),console.error(` ${i.message??`${i.phase??"upload"} failed: ${String(n)}`}`),await P(),process.exit(1)}let re=`${s}${q.url}`;console.log(`
|
|
79
|
-
stored ${q.filesStored??0} extra files`),console.log(` preview: ${re}`),Te&&await ae(re),await P()}export{Me as a,We as b,ct as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.114 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.114 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.114 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.114 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{d as a,e as b,f as c,g as d,h as e,i as f,j as g,k as h,l as i,m as j,n as k,o as l,p as m,q as n,r as o,s as p,t as q,u as r,v as s}from"./chunk-FPCP57JZ.js";import"./chunk-GR2XFJJF.js";import"./chunk-ZVL24GTC.js";import"./chunk-WRB6MZBX.js";import"./chunk-HKRPDZOI.js";import"./chunk-IDUGL3MK.js";import"./chunk-VRS7EUIU.js";import"./chunk-O5WZBC2Y.js";import"./chunk-MGWQ527R.js";import"./chunk-ZL5NFGQ6.js";import"./chunk-XPQUENRQ.js";import"./chunk-UBDSTHBH.js";import"./chunk-MOSWK2MT.js";import"./chunk-TVETGSCD.js";import"./chunk-M6LHGDWE.js";import"./chunk-7QWLHGAD.js";export{e as buildOpenUrl,d as buildShellUrl,q as closeSimsBulk,r as planBulkCloseTargets,i as playwrightHostPidForSim,g as printConnectedSims,b as resolveBundleTarget,c as resolveDefaultShellBaseUrl,a as resolveDriverConnectWaitOptions,p as runClaimCommand,s as runCloseCommand,o as runFocusCommand,l as runListCommand,m as runOpenCommand,n as runUseCommand,j as signalDriverLaunchConnected,f as summarizeSimUrl,k as terminatePlaywrightHostsForSims,h as waitForSimMatch};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.114 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import"./chunk-SMVEVXJN.js";import{a,b,c,d,e,f,g,h,i}from"./chunk-O5WZBC2Y.js";import"./chunk-MGWQ527R.js";import"./chunk-ZL5NFGQ6.js";import"./chunk-XPQUENRQ.js";import"./chunk-UBDSTHBH.js";import"./chunk-M6LHGDWE.js";import"./chunk-7QWLHGAD.js";export{e as ALL_DRIVERS,i as buildDriverListRows,a as chromiumDriver,b as electronDriver,f as getAllDrivers,g as getDriver,c as playwrightDriver,h as resolveDriver,d as systemDriver};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.114 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a as c,b as d,c as e,d as f}from"./chunk-2DW25WOA.js";import"./chunk-D2PQBP3C.js";import"./chunk-SJ6DSMZI.js";import"./chunk-TSB4XTV3.js";import"./chunk-JV6I42YD.js";import"./chunk-UKLINY7V.js";import{d as a,e as b}from"./chunk-7EAARWHH.js";import"./chunk-FPCP57JZ.js";import"./chunk-GR2XFJJF.js";import"./chunk-ZVL24GTC.js";import"./chunk-WRB6MZBX.js";import"./chunk-HKRPDZOI.js";import"./chunk-IDUGL3MK.js";import"./chunk-VRS7EUIU.js";import"./chunk-O5WZBC2Y.js";import"./chunk-MGWQ527R.js";import"./chunk-ZL5NFGQ6.js";import"./chunk-XPQUENRQ.js";import"./chunk-UBDSTHBH.js";import"./chunk-6TO3HND7.js";import"./chunk-WPYPKVQP.js";import"./chunk-DUSFDC5U.js";import"./chunk-MOSWK2MT.js";import"./chunk-TVETGSCD.js";import"./chunk-PQWCZXCN.js";import"./chunk-EIRP7XBM.js";import"./chunk-M6LHGDWE.js";import"./chunk-7QWLHGAD.js";export{c as discoverSootsimUrl,e as hoistLeadingSimFlag,a as parseFlowFile,f as runFlow,d as runFlowPlayback,b as validateFlowFile};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.114 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a,b,c}from"./chunk-HPTCRK5L.js";import"./chunk-DUSFDC5U.js";import"./chunk-PFBRPOL6.js";import"./chunk-MOSWK2MT.js";import"./chunk-TVETGSCD.js";import"./chunk-NU5KT7WW.js";import"./chunk-HIQPS53N.js";import"./chunk-EIRP7XBM.js";import"./chunk-M6LHGDWE.js";import"./chunk-7QWLHGAD.js";export{c as printCommandHelp,b as printGroupHelp,a as printHelp};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.114 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a as o}from"./chunk-IOSPY7ZF.js";import"./chunk-NQH7JGEZ.js";import"./chunk-D6U6XEI3.js";import"./chunk-IDUGL3MK.js";import"./chunk-VRS7EUIU.js";import"./chunk-6TO3HND7.js";import"./chunk-WPYPKVQP.js";import"./chunk-TVETGSCD.js";import"./chunk-M6LHGDWE.js";import"./chunk-7QWLHGAD.js";async function t(n){console.error(" note: `sootsim install` is now `sootsim setup-repo`. forwarding\u2026\n"),await o(n)}export{t as runInstall};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.114 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a}from"./chunk-FVPJJQCX.js";import"./chunk-IDUGL3MK.js";import"./chunk-VRS7EUIU.js";import"./chunk-TVETGSCD.js";import"./chunk-VD4CSXIK.js";import"./chunk-M6LHGDWE.js";import"./chunk-7QWLHGAD.js";export{a as runRuntime};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.114 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a}from"./chunk-IOSPY7ZF.js";import"./chunk-NQH7JGEZ.js";import"./chunk-D6U6XEI3.js";import"./chunk-IDUGL3MK.js";import"./chunk-VRS7EUIU.js";import"./chunk-6TO3HND7.js";import"./chunk-WPYPKVQP.js";import"./chunk-TVETGSCD.js";import"./chunk-M6LHGDWE.js";import"./chunk-7QWLHGAD.js";export{a as runSetupRepo};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! sootsim v0.1.114 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
-
import{a,b,c}from"./chunk-JV6I42YD.js";import"./chunk-UKLINY7V.js";import"./chunk-HKRPDZOI.js";import"./chunk-IDUGL3MK.js";import"./chunk-VRS7EUIU.js";import"./chunk-ZL5NFGQ6.js";import"./chunk-UBDSTHBH.js";import"./chunk-6TO3HND7.js";import"./chunk-WPYPKVQP.js";import"./chunk-TVETGSCD.js";import"./chunk-M6LHGDWE.js";import"./chunk-7QWLHGAD.js";export{a as resolveDefaultUploadOrigin,b as resolvePublicPreviewOrigin,c as runUpload};
|