sootsim 0.1.218 → 0.1.219
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/detox/index.ts +6 -7
- package/dist-cli/bin.js +4 -4
- package/dist-cli/chunks/{agent-TQJDQNML.js → agent-ZV6ME4EG.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-OAOFXHX2.js → agent-wrapper-EGFEAPFH.js} +2 -2
- package/dist-cli/chunks/{app-fonts-4VPAP3RZ.js → app-fonts-ZWVEYPCN.js} +2 -2
- package/dist-cli/chunks/{assert-DKNRGH4M.js → assert-SC3W6UNR.js} +2 -2
- package/dist-cli/chunks/{auth-ZYOAQEI2.js → auth-7OTPNXUI.js} +2 -2
- package/dist-cli/chunks/beta-QPKHTN3A.js +2 -0
- package/dist-cli/chunks/{camera-BJCRYG27.js → camera-RQGNYESB.js} +2 -2
- package/dist-cli/chunks/{chunk-AHTGZMT4.js → chunk-2CCJGEVS.js} +2 -2
- package/dist-cli/chunks/{chunk-OTCJCVFR.js → chunk-2DOBRWPU.js} +3 -3
- package/dist-cli/chunks/{chunk-T2NAWDMZ.js → chunk-2U4CK5R5.js} +2 -2
- package/dist-cli/chunks/{chunk-AY5S4CWZ.js → chunk-3B5UXJ3Y.js} +1 -1
- package/dist-cli/chunks/{chunk-V64N734Y.js → chunk-3GQ2VZT3.js} +2 -2
- package/dist-cli/chunks/{chunk-TNEHHCMZ.js → chunk-3PMTZACY.js} +2 -2
- package/dist-cli/chunks/{chunk-KLBOD2JL.js → chunk-3QEIIJ4U.js} +2 -2
- package/dist-cli/chunks/{chunk-NN7XOWXY.js → chunk-4KBHOKFR.js} +3 -3
- package/dist-cli/chunks/{chunk-LIR2VPPJ.js → chunk-7EMJ67H5.js} +9 -9
- package/dist-cli/chunks/{chunk-SXS5SPIZ.js → chunk-7RSH52LR.js} +1 -1
- package/dist-cli/chunks/{chunk-73WAFGRP.js → chunk-7VZLWO2D.js} +2 -2
- package/dist-cli/chunks/{chunk-4DLUGQXQ.js → chunk-AWM244TZ.js} +3 -3
- package/dist-cli/chunks/{chunk-YMFQOXT4.js → chunk-BTLNZG23.js} +1 -1
- package/dist-cli/chunks/{chunk-CJHPCUUV.js → chunk-C5LRFEF4.js} +1 -1
- package/dist-cli/chunks/{chunk-JDCABF7Y.js → chunk-EMWJQRT7.js} +2 -2
- package/dist-cli/chunks/{chunk-XB6FCXX3.js → chunk-FGIGSM4Z.js} +2 -2
- package/dist-cli/chunks/{chunk-TGXLBFTC.js → chunk-FJPEIFZW.js} +1 -1
- package/dist-cli/chunks/{chunk-QWJG2WVA.js → chunk-G26OO66G.js} +1 -1
- package/dist-cli/chunks/{chunk-F5H6XTMN.js → chunk-GXIL7GMS.js} +1 -1
- package/dist-cli/chunks/{chunk-Q7U5TPQN.js → chunk-I6SPORCZ.js} +1 -1
- package/dist-cli/chunks/{chunk-CRPOEKYT.js → chunk-ITYDRFAM.js} +3 -3
- package/dist-cli/chunks/chunk-J3WU2XCQ.js +1 -0
- package/dist-cli/chunks/{chunk-6WWKUDWP.js → chunk-JEMQ2DRI.js} +2 -2
- package/dist-cli/chunks/{chunk-ZJI2JP7F.js → chunk-JT5JOWHK.js} +1 -1
- package/dist-cli/chunks/{chunk-FEMAFOUH.js → chunk-JVJNG6BQ.js} +2 -2
- package/dist-cli/chunks/{chunk-Z4QP44SI.js → chunk-JYU7BIGJ.js} +2 -2
- package/dist-cli/chunks/{chunk-DVZVP32W.js → chunk-KLTHI6RE.js} +2 -2
- package/dist-cli/chunks/{chunk-L5HYRG4P.js → chunk-LNNBPSAL.js} +2 -2
- package/dist-cli/chunks/{chunk-AK4CONMS.js → chunk-LUWFFYQL.js} +2 -2
- package/dist-cli/chunks/chunk-NVDHSK33.js +119 -0
- package/dist-cli/chunks/{chunk-FAUOGIHF.js → chunk-PMERG7PS.js} +1 -1
- package/dist-cli/chunks/{chunk-EEUNNW2P.js → chunk-PYIMY6VO.js} +1 -1
- package/dist-cli/chunks/{chunk-IKZ4Z6ND.js → chunk-QH5KCAPX.js} +1 -1
- package/dist-cli/chunks/{chunk-VOZZ62OJ.js → chunk-RCHJJ5GW.js} +1 -1
- package/dist-cli/chunks/{chunk-RZMI7IKL.js → chunk-UEA4JYEY.js} +2 -2
- package/dist-cli/chunks/{chunk-MW3G72KG.js → chunk-V4VPUZVL.js} +91 -14
- package/dist-cli/chunks/{chunk-24FHNNST.js → chunk-WTWTKL3R.js} +6 -6
- package/dist-cli/chunks/chunk-Y6Y7QQLA.js +1 -0
- package/dist-cli/chunks/{chunk-7NP5BWIH.js → chunk-Y7GPDSA2.js} +1 -1
- package/dist-cli/chunks/{chunk-CMGPYPUE.js → chunk-ZGTMYSKV.js} +2 -2
- package/dist-cli/chunks/{chunk-Q7K5GJR4.js → chunk-ZHMKPUDR.js} +2 -2
- package/dist-cli/chunks/{chunk-2HJU3NAO.js → chunk-ZNDD2KOF.js} +1 -1
- package/dist-cli/chunks/{chunk-B4KB5TBV.js → chunk-ZXFWW4MR.js} +1 -1
- package/dist-cli/chunks/cli-version-ZUBCW7QA.js +2 -0
- package/dist-cli/chunks/{compat-IETPHSZ3.js → compat-WICAPL25.js} +3 -3
- package/dist-cli/chunks/{config-BOOBJ25W.js → config-MGQCNMDQ.js} +2 -2
- package/dist-cli/chunks/{control-U52Q4YES.js → control-GW7OQZ2R.js} +2 -2
- package/dist-cli/chunks/daemon-2A2YTRXY.js +2 -0
- package/dist-cli/chunks/{debug-X4AW6CXJ.js → debug-54HQV7MN.js} +3 -3
- package/dist-cli/chunks/{desktop-HHREMDE2.js → desktop-5FWYDFK2.js} +3 -3
- package/dist-cli/chunks/{detox-AXETJDTZ.js → detox-75KJXI7K.js} +2 -2
- package/dist-cli/chunks/{device-B7PBIMER.js → device-VRR2CFKN.js} +2 -2
- package/dist-cli/chunks/{diagnose-7YEDF42J.js → diagnose-DS623ULB.js} +2 -2
- package/dist-cli/chunks/drivers-6QFTJGK6.js +2 -0
- package/dist-cli/chunks/{film-XQMAOELQ.js → film-6I22LQ4E.js} +3 -3
- package/dist-cli/chunks/flow-4RXVOUUF.js +2 -0
- package/dist-cli/chunks/help-IXPZBF5H.js +2 -0
- package/dist-cli/chunks/{home-paths-I3NOFS6P.js → home-paths-D7QIYKT2.js} +2 -2
- package/dist-cli/chunks/inspect-SU5K5IER.js +2 -0
- package/dist-cli/chunks/install-desktop-PN4SCIMA.js +2 -0
- package/dist-cli/chunks/{login-O4ZPWWEU.js → login-ETKHVL7Z.js} +4 -4
- package/dist-cli/chunks/{logout-REEPRXWZ.js → logout-FLW7LPE3.js} +2 -2
- package/dist-cli/chunks/{maestro-OCUCS5DY.js → maestro-D3MAAOMX.js} +3 -3
- package/dist-cli/chunks/{maestro-generate-VHUHJFHR.js → maestro-generate-73HS4LME.js} +3 -3
- package/dist-cli/chunks/{mode-T24V4RZ4.js → mode-SOXJRJIN.js} +2 -2
- package/dist-cli/chunks/optional-demo-registry-N2J3NEGC.js +2 -0
- package/dist-cli/chunks/{perf-ZUER6TVQ.js → perf-YAKR4GMN.js} +2 -2
- package/dist-cli/chunks/{record-XDKPMUBK.js → record-HWKSSN3E.js} +3 -3
- package/dist-cli/chunks/runtime-ZUWXQ46T.js +2 -0
- package/dist-cli/chunks/{screenshot-command-MMUGPJ4I.js → screenshot-command-UNDC4C2R.js} +3 -3
- package/dist-cli/chunks/screenshots-capture-QZSUIT4R.js +41 -0
- package/dist-cli/chunks/{serve-BCATAS4S.js → serve-D66T2PP3.js} +2 -2
- package/dist-cli/chunks/{setup-LXPQLQ6I.js → setup-FML4JBOA.js} +9 -9
- package/dist-cli/chunks/{skills-OOPLWNI2.js → skills-O2KIPSJ6.js} +2 -2
- package/dist-cli/chunks/{storage-E7MGHPIG.js → storage-T7MGNCI7.js} +2 -2
- package/dist-cli/chunks/store-WTRJT3P5.js +2 -0
- package/dist-cli/chunks/telemetry-7HV5GWEK.js +2 -0
- package/dist-cli/chunks/{timeline-4AN6A5CV.js → timeline-OQEJCRNZ.js} +2 -2
- package/dist-cli/chunks/upgrade-TL36WOFS.js +4 -0
- package/dist-cli/chunks/upload-7CIEKZM6.js +2 -0
- package/dist-cli/chunks/{version-LI2X5HLA.js → version-XG3TA6TB.js} +2 -2
- package/dist-cli/chunks/web-LVUK3CHP.js +2 -0
- package/dist-cli/chunks/{what-happened-2NTKQ4AT.js → what-happened-SASUKQEF.js} +2 -2
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.cjs +1 -1
- package/dist-lib/attached-projects.cjs +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 +53 -7
- 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/jump-to-source-babel.cjs +1 -1
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro.cjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/render-mode.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +164 -20
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/src/skills/builtin/a11y-review.ts +4 -1
- package/src/skills/builtin/perf-profile.ts +4 -1
- package/src/skills/builtin/screenshot-all.ts +4 -1
- package/src/skills/builtin/visual-diff.ts +4 -1
- package/dist-cli/chunks/beta-HL46FNX3.js +0 -2
- package/dist-cli/chunks/chunk-BZRIJJIK.js +0 -1
- package/dist-cli/chunks/chunk-FP3DRAKI.js +0 -119
- package/dist-cli/chunks/chunk-OUZAVYUG.js +0 -1
- package/dist-cli/chunks/cli-version-5FG6LIHX.js +0 -2
- package/dist-cli/chunks/daemon-EJDBU2UY.js +0 -2
- package/dist-cli/chunks/drivers-325S27FC.js +0 -2
- package/dist-cli/chunks/flow-V2SWGBAR.js +0 -2
- package/dist-cli/chunks/help-F4VH4LXF.js +0 -2
- package/dist-cli/chunks/inspect-NY5VGZNC.js +0 -2
- package/dist-cli/chunks/install-desktop-X7SXH7IN.js +0 -2
- package/dist-cli/chunks/optional-demo-registry-HPLGNZCO.js +0 -2
- package/dist-cli/chunks/runtime-4A24ALGX.js +0 -2
- package/dist-cli/chunks/screenshots-capture-OM6BE572.js +0 -41
- package/dist-cli/chunks/store-3DU64I7C.js +0 -2
- package/dist-cli/chunks/telemetry-AKRLP3AR.js +0 -2
- package/dist-cli/chunks/upgrade-FRBWFDPI.js +0 -4
- package/dist-cli/chunks/upload-XGUWNMYV.js +0 -2
- package/dist-cli/chunks/web-UDCVLGPU.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
2
|
-
import{C as N,D as F,F as y,Q as T,R as b,S}from"./chunk-
|
|
1
|
+
/*! sootsim v0.1.219 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
|
+
import{C as N,D as F,F as y,Q as T,R as b,S}from"./chunk-Y7GPDSA2.js";import{g as A,i as _}from"./chunk-2CCJGEVS.js";import"./chunk-I6SPORCZ.js";import{b as k}from"./chunk-C5LRFEF4.js";import"./chunk-BTLNZG23.js";import"./chunk-PYIMY6VO.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=A(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,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.219 | (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.219 | (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.219 | (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.219 | (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.219 | (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.219 | (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.219 | (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.219 | (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.219 | (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.219 | (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.219 | (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.219 | (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;
|
|
@@ -118,6 +118,7 @@ async function launchReapedScoped(launch) {
|
|
|
118
118
|
};
|
|
119
119
|
return { browser, reapNow };
|
|
120
120
|
}
|
|
121
|
+
var gpuChromeMissing = false;
|
|
121
122
|
function gpuChromeArgs() {
|
|
122
123
|
const angle = process.platform === "darwin" ? "metal" : process.platform === "linux" ? "vulkan" : "default";
|
|
123
124
|
return [
|
|
@@ -128,6 +129,52 @@ function gpuChromeArgs() {
|
|
|
128
129
|
"--ignore-gpu-blocklist"
|
|
129
130
|
];
|
|
130
131
|
}
|
|
132
|
+
function gpuChromeLaunchOptions(opts = {}) {
|
|
133
|
+
const callerArgs = Array.isArray(opts.args) ? opts.args : [];
|
|
134
|
+
const callerIgnored = Array.isArray(opts.ignoreDefaultArgs) ? opts.ignoreDefaultArgs : [];
|
|
135
|
+
return {
|
|
136
|
+
...opts,
|
|
137
|
+
channel: "chrome",
|
|
138
|
+
args: [...gpuChromeArgs(), ...callerArgs],
|
|
139
|
+
ignoreDefaultArgs: [...callerIgnored, "--enable-unsafe-swiftshader"]
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function preferGpuChrome(launch, opts) {
|
|
143
|
+
return async () => {
|
|
144
|
+
const allowSoftwareFallback = process.env.CI === "true" || process.env.CI === "1" || process.env.GITHUB_ACTIONS === "true";
|
|
145
|
+
if (!gpuChromeMissing) {
|
|
146
|
+
try {
|
|
147
|
+
const callerArgs = Array.isArray(opts.args) ? opts.args : [];
|
|
148
|
+
if (!allowSoftwareFallback && callerArgs.some(
|
|
149
|
+
(arg) => arg === "--enable-unsafe-swiftshader" || /^--use-angle=(?:swiftshader|swiftshader-webgl)$/i.test(String(arg))
|
|
150
|
+
)) {
|
|
151
|
+
throw new Error("[reap-browser] refused local SwiftShader launch arguments");
|
|
152
|
+
}
|
|
153
|
+
return await launch(gpuChromeLaunchOptions(opts));
|
|
154
|
+
} catch (err) {
|
|
155
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
156
|
+
const missing = /not found at|not installed|Chromium distribution|Executable doesn't exist|No such file/i.test(
|
|
157
|
+
msg
|
|
158
|
+
);
|
|
159
|
+
if (!missing) throw err;
|
|
160
|
+
if (!allowSoftwareFallback) {
|
|
161
|
+
throw new Error(
|
|
162
|
+
"[reap-browser] system Chrome is required for local GPU browser work; bundled Chromium/SwiftShader fallback is disabled. Install Chrome or run `npx playwright install chrome`.",
|
|
163
|
+
{ cause: err }
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
gpuChromeMissing = true;
|
|
167
|
+
console.warn(
|
|
168
|
+
"[reap-browser] CI system Chrome not found, falling back to bundled Chromium software rendering."
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return launch(opts);
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
async function launchReapedChromeScoped(launch, opts = {}) {
|
|
176
|
+
return launchReapedScoped(preferGpuChrome(launch, opts));
|
|
177
|
+
}
|
|
131
178
|
|
|
132
179
|
// detox/gestures.ts
|
|
133
180
|
async function waitForSootsimGestureHandler(page, viewTag, handlerName) {
|
|
@@ -1651,13 +1698,12 @@ var device = {
|
|
|
1651
1698
|
_platform: DETOX_PLATFORM,
|
|
1652
1699
|
async launchApp(opts) {
|
|
1653
1700
|
if (!_browser) {
|
|
1654
|
-
const launched = await
|
|
1655
|
-
() => import_playwright.chromium.launch(
|
|
1656
|
-
|
|
1701
|
+
const launched = await launchReapedChromeScoped(
|
|
1702
|
+
(options) => import_playwright.chromium.launch(options),
|
|
1703
|
+
{
|
|
1657
1704
|
headless: true,
|
|
1658
|
-
args: [
|
|
1659
|
-
|
|
1660
|
-
})
|
|
1705
|
+
args: ["--enable-unsafe-webgpu"]
|
|
1706
|
+
}
|
|
1661
1707
|
);
|
|
1662
1708
|
_browser = launched.browser;
|
|
1663
1709
|
_reapBrowserNow = launched.reapNow;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.219 | (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.219 | (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.219 | (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.219 | (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.219 | (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.219 | (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.219 | (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.219 | (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.219 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/menu.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.219 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/menu.mjs
CHANGED
package/dist-lib/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.219 | (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.219 | (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.219 | (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.219 | (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.219 | (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.219 | (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;
|
|
@@ -103,8 +103,8 @@ var init_registry = __esm({
|
|
|
103
103
|
range: ">=2.30.0",
|
|
104
104
|
coverage: 0.9,
|
|
105
105
|
note: "tap, pan, pinch, rotation, fling, long press, race, manual, simultaneous",
|
|
106
|
-
working: "GestureDetector, Gesture.Tap/Pan/Pinch/Rotation/Fling/LongPress/Manual/Race/Simultaneous/Exclusive/Hover, ScrollView/FlatList, Switch/RefreshControl, Pressable/Text, Touchables, BaseButton/RawButton/RectButton/BorderlessButton/PureNativeButton, Swipeable, ReanimatedSwipeable, GestureHandlerRootView, createNativeWrapper, gestureHandlerRootHOC, PointerType/MouseButton/HoverEffect exports, velocity tracking, activeOffsets, multi-tap",
|
|
107
|
-
missing: "DrawerLayout (passthrough noop), NativeViewGestureHandler still lacks native-scroll coupling and handlerTag semantics,
|
|
106
|
+
working: "GestureDetector, Gesture.Tap/Pan/Pinch/Rotation/Fling/LongPress/Manual/Race/Simultaneous/Exclusive/Hover, simultaneousWithExternalGesture/requireExternalGestureToFail/blocksExternalGesture, ScrollView/FlatList, Switch/RefreshControl, Pressable/Text, Touchables, BaseButton/RawButton/RectButton/BorderlessButton/PureNativeButton, Swipeable, ReanimatedSwipeable, GestureHandlerRootView, createNativeWrapper, gestureHandlerRootHOC, PointerType/MouseButton/HoverEffect exports, velocity tracking, activeOffsets, multi-tap",
|
|
107
|
+
missing: "DrawerLayout (passthrough noop), NativeViewGestureHandler still lacks native-scroll coupling and handlerTag semantics, ForceTouch semantics are placeholder-only"
|
|
108
108
|
}
|
|
109
109
|
]
|
|
110
110
|
},
|
|
@@ -268,10 +268,10 @@ var init_registry = __esm({
|
|
|
268
268
|
versions: [
|
|
269
269
|
{
|
|
270
270
|
range: ">=0.1.0",
|
|
271
|
-
coverage: 0.
|
|
272
|
-
note: "core thread
|
|
273
|
-
working: "runOnJS, runOnUI/Sync/Async, scheduleOnRN/UI
|
|
274
|
-
missing: "
|
|
271
|
+
coverage: 0.9,
|
|
272
|
+
note: "core RN\u2194UI thread bridging, runtime-kind guards, UI-runtime-id execution, shareable/synchronizable guards, custom serializable registration, and feature flag readers use the SAB-backed tenant\u2194shell runtime.",
|
|
273
|
+
working: "runOnJS, runOnUI/Sync/Async, scheduleOnRN/UI, UI-runtime runOnRuntime/runOnRuntimeSyncWithId/scheduleOnRuntimeWithId, makeShareable, createShareable (3-arg form with hostDecorator), createSerializable, createSynchronizable, isShareable, isSynchronizable, isWorkletFunction, isShareableRef, isSerializableRef, makeShareableCloneRecursive/OnUIRecursive, executeOnUIRuntimeSync, callMicrotasks, WorkletsModule, RuntimeKind enum, getRuntimeKind, isRNRuntime, isUIRuntime, isWorkerRuntime, isWorkletRuntime, UIRuntimeId, getUIRuntimeHolder, getUISchedulerHolder, registerCustomSerializable, getStaticFeatureFlag, getDynamicFeatureFlag, setDynamicFeatureFlag, Worklets namespace",
|
|
274
|
+
missing: "isolated named runtimes are not implemented: createWorkletRuntime, Worklets.createRuntime/createContext, and named run/schedule calls throw explicitly instead of returning inert handles; cross-runtime structured-clone hooks for custom registered classes; dynamic feature flag fan-out across the tenant\u2194shell split"
|
|
275
275
|
}
|
|
276
276
|
]
|
|
277
277
|
},
|
|
@@ -11611,7 +11611,7 @@ function mkfifoSync(p) {
|
|
|
11611
11611
|
import_node_fs4.default.unlinkSync(p);
|
|
11612
11612
|
}
|
|
11613
11613
|
}
|
|
11614
|
-
const result = (0,
|
|
11614
|
+
const result = (0, import_node_child_process2.spawnSync)("mkfifo", ["-m", "600", p]);
|
|
11615
11615
|
if (result.status !== 0) {
|
|
11616
11616
|
throw new Error(
|
|
11617
11617
|
`mkfifo(${p}) failed: ${result.stderr?.toString().trim() || "unknown error"}`
|
|
@@ -11679,7 +11679,7 @@ async function startSession(opts) {
|
|
|
11679
11679
|
if (claudeSessionUuid) {
|
|
11680
11680
|
wrapperArgs.push("--claude-session-uuid", claudeSessionUuid);
|
|
11681
11681
|
}
|
|
11682
|
-
const child = (0,
|
|
11682
|
+
const child = (0, import_node_child_process2.spawn)(cmd, wrapperArgs, {
|
|
11683
11683
|
detached: true,
|
|
11684
11684
|
stdio: "ignore",
|
|
11685
11685
|
env: {
|
|
@@ -11827,11 +11827,11 @@ async function waitForFirstEvent(fifo, predicate, timeoutMs) {
|
|
|
11827
11827
|
import_node_fs4.default.closeSync(fd);
|
|
11828
11828
|
}
|
|
11829
11829
|
}
|
|
11830
|
-
var
|
|
11830
|
+
var import_node_child_process2, import_node_crypto2, import_node_fs4, import_node_path3, import_node_readline, AgentSessionError;
|
|
11831
11831
|
var init_agent_sessions = __esm({
|
|
11832
11832
|
"src/agent-sessions.ts"() {
|
|
11833
11833
|
"use strict";
|
|
11834
|
-
|
|
11834
|
+
import_node_child_process2 = require("node:child_process");
|
|
11835
11835
|
import_node_crypto2 = require("node:crypto");
|
|
11836
11836
|
import_node_fs4 = __toESM(require("node:fs"), 1);
|
|
11837
11837
|
import_node_path3 = __toESM(require("node:path"), 1);
|
|
@@ -11892,7 +11892,7 @@ async function sendPromptToAgentbusSession(input) {
|
|
|
11892
11892
|
const command = resolveAgentbusCommand(input.command);
|
|
11893
11893
|
const timeoutMs = input.timeoutMs ?? 15e3;
|
|
11894
11894
|
await new Promise((resolve5, reject) => {
|
|
11895
|
-
const child = (0,
|
|
11895
|
+
const child = (0, import_node_child_process3.spawn)(command, ["send", sessionId, text], {
|
|
11896
11896
|
stdio: ["ignore", "ignore", "pipe"],
|
|
11897
11897
|
env: process.env
|
|
11898
11898
|
});
|
|
@@ -11927,11 +11927,11 @@ async function sendPromptToAgentbusSession(input) {
|
|
|
11927
11927
|
});
|
|
11928
11928
|
});
|
|
11929
11929
|
}
|
|
11930
|
-
var
|
|
11930
|
+
var import_node_child_process3, import_node_fs5, import_node_os2, import_node_path4;
|
|
11931
11931
|
var init_agentbus_prompt = __esm({
|
|
11932
11932
|
"src/agentbus-prompt.ts"() {
|
|
11933
11933
|
"use strict";
|
|
11934
|
-
|
|
11934
|
+
import_node_child_process3 = require("node:child_process");
|
|
11935
11935
|
import_node_fs5 = __toESM(require("node:fs"), 1);
|
|
11936
11936
|
import_node_os2 = __toESM(require("node:os"), 1);
|
|
11937
11937
|
import_node_path4 = __toESM(require("node:path"), 1);
|
|
@@ -13385,8 +13385,8 @@ var init_bridge_host = __esm({
|
|
|
13385
13385
|
}
|
|
13386
13386
|
if (msg.type === "runtime:use") {
|
|
13387
13387
|
const version = typeof msg.version === "string" ? msg.version : "";
|
|
13388
|
-
const
|
|
13389
|
-
if (!
|
|
13388
|
+
const installed2 = listInstalledRuntimes();
|
|
13389
|
+
if (!installed2.includes(version)) {
|
|
13390
13390
|
try {
|
|
13391
13391
|
ws.send(
|
|
13392
13392
|
JSON.stringify({
|
|
@@ -18852,6 +18852,142 @@ module.exports = __toCommonJS(registry_exports);
|
|
|
18852
18852
|
var fs10 = __toESM(require("fs"), 1);
|
|
18853
18853
|
var path10 = __toESM(require("path"), 1);
|
|
18854
18854
|
|
|
18855
|
+
// ../../scripts/lib/reap-browser.ts
|
|
18856
|
+
var import_node_child_process = require("node:child_process");
|
|
18857
|
+
function rootChromePid(b) {
|
|
18858
|
+
const w = b;
|
|
18859
|
+
if (w && typeof w.process === "function") {
|
|
18860
|
+
try {
|
|
18861
|
+
const p = w.process();
|
|
18862
|
+
if (p && typeof p.pid === "number" && p.pid > 0) return p.pid;
|
|
18863
|
+
} catch {
|
|
18864
|
+
}
|
|
18865
|
+
}
|
|
18866
|
+
if (w && typeof w.browser === "function") {
|
|
18867
|
+
try {
|
|
18868
|
+
const child = w.browser();
|
|
18869
|
+
if (child) return rootChromePid(child);
|
|
18870
|
+
} catch {
|
|
18871
|
+
}
|
|
18872
|
+
}
|
|
18873
|
+
return null;
|
|
18874
|
+
}
|
|
18875
|
+
function killTree(pid) {
|
|
18876
|
+
let kids = [];
|
|
18877
|
+
try {
|
|
18878
|
+
kids = (0, import_node_child_process.execSync)(`pgrep -P ${pid} || true`).toString().split("\n").filter(Boolean);
|
|
18879
|
+
} catch {
|
|
18880
|
+
}
|
|
18881
|
+
for (const k of kids) killTree(Number(k));
|
|
18882
|
+
try {
|
|
18883
|
+
process.kill(pid, "SIGKILL");
|
|
18884
|
+
} catch {
|
|
18885
|
+
}
|
|
18886
|
+
}
|
|
18887
|
+
var reapPids = /* @__PURE__ */ new Set();
|
|
18888
|
+
var installed = false;
|
|
18889
|
+
function installReaper() {
|
|
18890
|
+
if (installed) return;
|
|
18891
|
+
installed = true;
|
|
18892
|
+
const reap = () => {
|
|
18893
|
+
for (const pid of reapPids) killTree(pid);
|
|
18894
|
+
};
|
|
18895
|
+
process.on("SIGTERM", () => {
|
|
18896
|
+
reap();
|
|
18897
|
+
process.exit(0);
|
|
18898
|
+
});
|
|
18899
|
+
process.on("SIGINT", () => {
|
|
18900
|
+
reap();
|
|
18901
|
+
process.exit(0);
|
|
18902
|
+
});
|
|
18903
|
+
process.on("exit", reap);
|
|
18904
|
+
}
|
|
18905
|
+
async function launchReapedScoped(launch) {
|
|
18906
|
+
const browser = await launch();
|
|
18907
|
+
const root = rootChromePid(browser);
|
|
18908
|
+
const mine = /* @__PURE__ */ new Set();
|
|
18909
|
+
if (root != null) {
|
|
18910
|
+
mine.add(root);
|
|
18911
|
+
reapPids.add(root);
|
|
18912
|
+
installReaper();
|
|
18913
|
+
}
|
|
18914
|
+
const evented = browser;
|
|
18915
|
+
if (typeof evented.on === "function") {
|
|
18916
|
+
evented.on("disconnected", () => {
|
|
18917
|
+
for (const pid of mine) reapPids.delete(pid);
|
|
18918
|
+
});
|
|
18919
|
+
}
|
|
18920
|
+
const reapNow = () => {
|
|
18921
|
+
for (const pid of mine) {
|
|
18922
|
+
killTree(pid);
|
|
18923
|
+
reapPids.delete(pid);
|
|
18924
|
+
}
|
|
18925
|
+
mine.clear();
|
|
18926
|
+
};
|
|
18927
|
+
return { browser, reapNow };
|
|
18928
|
+
}
|
|
18929
|
+
async function launchReaped(launch) {
|
|
18930
|
+
const { browser } = await launchReapedScoped(launch);
|
|
18931
|
+
return browser;
|
|
18932
|
+
}
|
|
18933
|
+
var gpuChromeMissing = false;
|
|
18934
|
+
function gpuChromeArgs() {
|
|
18935
|
+
const angle = process.platform === "darwin" ? "metal" : process.platform === "linux" ? "vulkan" : "default";
|
|
18936
|
+
return [
|
|
18937
|
+
`--use-angle=${angle}`,
|
|
18938
|
+
"--enable-gpu",
|
|
18939
|
+
"--enable-gpu-rasterization",
|
|
18940
|
+
"--enable-zero-copy",
|
|
18941
|
+
"--ignore-gpu-blocklist"
|
|
18942
|
+
];
|
|
18943
|
+
}
|
|
18944
|
+
function gpuChromeLaunchOptions(opts = {}) {
|
|
18945
|
+
const callerArgs = Array.isArray(opts.args) ? opts.args : [];
|
|
18946
|
+
const callerIgnored = Array.isArray(opts.ignoreDefaultArgs) ? opts.ignoreDefaultArgs : [];
|
|
18947
|
+
return {
|
|
18948
|
+
...opts,
|
|
18949
|
+
channel: "chrome",
|
|
18950
|
+
args: [...gpuChromeArgs(), ...callerArgs],
|
|
18951
|
+
ignoreDefaultArgs: [...callerIgnored, "--enable-unsafe-swiftshader"]
|
|
18952
|
+
};
|
|
18953
|
+
}
|
|
18954
|
+
function preferGpuChrome(launch, opts) {
|
|
18955
|
+
return async () => {
|
|
18956
|
+
const allowSoftwareFallback = process.env.CI === "true" || process.env.CI === "1" || process.env.GITHUB_ACTIONS === "true";
|
|
18957
|
+
if (!gpuChromeMissing) {
|
|
18958
|
+
try {
|
|
18959
|
+
const callerArgs = Array.isArray(opts.args) ? opts.args : [];
|
|
18960
|
+
if (!allowSoftwareFallback && callerArgs.some(
|
|
18961
|
+
(arg) => arg === "--enable-unsafe-swiftshader" || /^--use-angle=(?:swiftshader|swiftshader-webgl)$/i.test(String(arg))
|
|
18962
|
+
)) {
|
|
18963
|
+
throw new Error("[reap-browser] refused local SwiftShader launch arguments");
|
|
18964
|
+
}
|
|
18965
|
+
return await launch(gpuChromeLaunchOptions(opts));
|
|
18966
|
+
} catch (err) {
|
|
18967
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
18968
|
+
const missing = /not found at|not installed|Chromium distribution|Executable doesn't exist|No such file/i.test(
|
|
18969
|
+
msg
|
|
18970
|
+
);
|
|
18971
|
+
if (!missing) throw err;
|
|
18972
|
+
if (!allowSoftwareFallback) {
|
|
18973
|
+
throw new Error(
|
|
18974
|
+
"[reap-browser] system Chrome is required for local GPU browser work; bundled Chromium/SwiftShader fallback is disabled. Install Chrome or run `npx playwright install chrome`.",
|
|
18975
|
+
{ cause: err }
|
|
18976
|
+
);
|
|
18977
|
+
}
|
|
18978
|
+
gpuChromeMissing = true;
|
|
18979
|
+
console.warn(
|
|
18980
|
+
"[reap-browser] CI system Chrome not found, falling back to bundled Chromium software rendering."
|
|
18981
|
+
);
|
|
18982
|
+
}
|
|
18983
|
+
}
|
|
18984
|
+
return launch(opts);
|
|
18985
|
+
};
|
|
18986
|
+
}
|
|
18987
|
+
async function launchReapedChrome(launch, opts = {}) {
|
|
18988
|
+
return launchReaped(preferGpuChrome(launch, opts));
|
|
18989
|
+
}
|
|
18990
|
+
|
|
18855
18991
|
// src/skills/builtin/a11y-review.ts
|
|
18856
18992
|
var skill = {
|
|
18857
18993
|
name: "a11y-review",
|
|
@@ -18870,7 +19006,9 @@ var skill = {
|
|
|
18870
19006
|
const { chromium } = await import("playwright");
|
|
18871
19007
|
const path11 = await import("path");
|
|
18872
19008
|
const fs11 = await import("fs");
|
|
18873
|
-
const browser = await chromium.launch(
|
|
19009
|
+
const browser = await launchReapedChrome((options) => chromium.launch(options), {
|
|
19010
|
+
headless: true
|
|
19011
|
+
});
|
|
18874
19012
|
const page = await browser.newPage({ viewport: { width: 500, height: 900 } });
|
|
18875
19013
|
try {
|
|
18876
19014
|
await page.goto(context.url, { waitUntil: "networkidle" });
|
|
@@ -19148,7 +19286,9 @@ var skill4 = {
|
|
|
19148
19286
|
const { chromium } = await import("playwright");
|
|
19149
19287
|
const path11 = await import("path");
|
|
19150
19288
|
const fs11 = await import("fs");
|
|
19151
|
-
const browser = await chromium.launch(
|
|
19289
|
+
const browser = await launchReapedChrome((options) => chromium.launch(options), {
|
|
19290
|
+
headless: true
|
|
19291
|
+
});
|
|
19152
19292
|
const page = await browser.newPage({ viewport: { width: 500, height: 900 } });
|
|
19153
19293
|
try {
|
|
19154
19294
|
await page.goto(context.url, { waitUntil: "networkidle" });
|
|
@@ -19207,7 +19347,9 @@ var skill5 = {
|
|
|
19207
19347
|
const { chromium } = await import("playwright");
|
|
19208
19348
|
const path11 = await import("path");
|
|
19209
19349
|
const fs11 = await import("fs");
|
|
19210
|
-
const browser = await chromium.launch(
|
|
19350
|
+
const browser = await launchReapedChrome((options) => chromium.launch(options), {
|
|
19351
|
+
headless: true
|
|
19352
|
+
});
|
|
19211
19353
|
const page = await browser.newPage({ viewport: { width: 500, height: 900 } });
|
|
19212
19354
|
try {
|
|
19213
19355
|
await page.goto(context.url, { waitUntil: "networkidle" });
|
|
@@ -19255,7 +19397,9 @@ var skill6 = {
|
|
|
19255
19397
|
const { chromium } = await import("playwright");
|
|
19256
19398
|
const path11 = await import("path");
|
|
19257
19399
|
const fs11 = await import("fs");
|
|
19258
|
-
const browser = await chromium.launch(
|
|
19400
|
+
const browser = await launchReapedChrome((options) => chromium.launch(options), {
|
|
19401
|
+
headless: true
|
|
19402
|
+
});
|
|
19259
19403
|
const page = await browser.newPage({ viewport: { width: 500, height: 900 } });
|
|
19260
19404
|
try {
|
|
19261
19405
|
await page.goto(context.url, { waitUntil: "networkidle" });
|
package/dist-lib/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.219 | (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,5 +1,6 @@
|
|
|
1
1
|
// built-in skill: accessibility audit
|
|
2
2
|
|
|
3
|
+
import { launchReapedChrome } from '../../../../../scripts/lib/reap-browser'
|
|
3
4
|
import type { SootSimSkill } from '../types'
|
|
4
5
|
|
|
5
6
|
export const skill: SootSimSkill = {
|
|
@@ -23,7 +24,9 @@ export const skill: SootSimSkill = {
|
|
|
23
24
|
// sootsim renders CanvasKit — require GPU-backed Chrome (Metal). the
|
|
24
25
|
// bundled swiftshader shell software-renders the canvas and pegs every
|
|
25
26
|
// core; never use it for sootsim.
|
|
26
|
-
const browser = await chromium.launch(
|
|
27
|
+
const browser = await launchReapedChrome((options) => chromium.launch(options), {
|
|
28
|
+
headless: true,
|
|
29
|
+
})
|
|
27
30
|
const page = await browser.newPage({ viewport: { width: 500, height: 900 } })
|
|
28
31
|
|
|
29
32
|
try {
|