sootsim 0.1.39 → 0.1.41
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 +15 -15
- package/dist-cli/bin.js +16 -15
- package/dist-cli/chunks/{agent-HZP3LUGJ.js → agent-7BJ2ZP22.js} +2 -2
- package/dist-cli/chunks/{agent-wrapper-CS6TV5UR.js → agent-wrapper-OXBYRJVT.js} +2 -2
- package/dist-cli/chunks/{assert-WVTX4CNR.js → assert-NZTYFTTT.js} +2 -2
- package/dist-cli/chunks/auto-bootstrap-4KQT4TCR.js +2 -0
- package/dist-cli/chunks/beta-3S56PNSS.js +2 -0
- package/dist-cli/chunks/{chunk-NYZGZDHI.js → chunk-2T6UOHPO.js} +1 -1
- package/dist-cli/chunks/chunk-334L67M2.js +2 -0
- package/dist-cli/chunks/{chunk-7J4UIBA5.js → chunk-33R6QMNO.js} +2 -2
- package/dist-cli/chunks/{chunk-XYTDYBXJ.js → chunk-4UA6P3T2.js} +1 -1
- package/dist-cli/chunks/{chunk-GUHXSXNO.js → chunk-5JOYGXCS.js} +2 -2
- package/dist-cli/chunks/chunk-6PLNIOJP.js +17 -0
- package/dist-cli/chunks/{chunk-YGUQSPU6.js → chunk-7YZJHZ7X.js} +1 -1
- package/dist-cli/chunks/{chunk-4YUHJ5FX.js → chunk-ANDSHXLU.js} +2 -2
- package/dist-cli/chunks/chunk-AOYBIMKL.js +4 -0
- package/dist-cli/chunks/chunk-ASSV2FFC.js +1 -0
- package/dist-cli/chunks/chunk-BR6QRN7U.js +11 -0
- package/dist-cli/chunks/{chunk-C6GUAXKO.js → chunk-C4AMFYK3.js} +2 -2
- package/dist-cli/chunks/{chunk-B2SCT4DL.js → chunk-ECIRRKKE.js} +2 -2
- package/dist-cli/chunks/{chunk-FEMOLCB5.js → chunk-FZB4W23Y.js} +2 -2
- package/dist-cli/chunks/chunk-G2QUPNHI.js +2 -0
- package/dist-cli/chunks/chunk-GB3G5LVB.js +108 -0
- package/dist-cli/chunks/{chunk-NJ4WXWKO.js → chunk-GI7FXE7J.js} +2 -2
- package/dist-cli/chunks/{chunk-JXKW62SL.js → chunk-GOFKXREQ.js} +2 -2
- package/dist-cli/chunks/chunk-HAVQS3PI.js +2 -0
- package/dist-cli/chunks/{chunk-223TXYOC.js → chunk-HZVPHAJX.js} +20 -20
- package/dist-cli/chunks/{runtime-YJPWA3XA.js → chunk-I5Y4IECP.js} +3 -3
- package/dist-cli/chunks/{chunk-YHYSOUIJ.js → chunk-IF33CQL4.js} +2 -2
- package/dist-cli/chunks/chunk-IP2MARRU.js +27 -0
- package/dist-cli/chunks/{chunk-ECDPQ6S7.js → chunk-J3JJRXIP.js} +1 -1
- package/dist-cli/chunks/{chunk-2ESCYOZW.js → chunk-LMNB7NYI.js} +2 -2
- package/dist-cli/chunks/{chunk-YUKH7HF6.js → chunk-LX6KS6TL.js} +1 -1
- package/dist-cli/chunks/{chunk-RJQ73DLG.js → chunk-MBGNDWGV.js} +4 -4
- package/dist-cli/chunks/{chunk-WD54RD4K.js → chunk-N7DDNZTO.js} +1 -1
- package/dist-cli/chunks/chunk-NZ5O2OEL.js +56 -0
- package/dist-cli/chunks/{chunk-ZBB7YS6C.js → chunk-OJFHAMXD.js} +2 -2
- package/dist-cli/chunks/{chunk-VLUFTHBB.js → chunk-OPDPXAYA.js} +2 -2
- package/dist-cli/chunks/chunk-OXTFYLZJ.js +4 -0
- package/dist-cli/chunks/{chunk-MGVTLDI3.js → chunk-Q6DGMQ2V.js} +2 -2
- package/dist-cli/chunks/{chunk-UWRBEBML.js → chunk-S3SQITOO.js} +2 -2
- package/dist-cli/chunks/{chunk-P6F636LU.js → chunk-SHHUVGL2.js} +1 -1
- package/dist-cli/chunks/{chunk-RLGCJT2D.js → chunk-SWHWVYZS.js} +1 -1
- package/dist-cli/chunks/{chunk-CBPTHIJV.js → chunk-TBIGAH3T.js} +1 -1
- package/dist-cli/chunks/chunk-UNJTJDZZ.js +62 -0
- package/dist-cli/chunks/chunk-WN6YFWS5.js +117 -0
- package/dist-cli/chunks/{chunk-E5RYQUFB.js → chunk-WZDE344I.js} +3 -3
- package/dist-cli/chunks/{chunk-NF65BNJR.js → chunk-Y2YNXUBT.js} +2 -2
- package/dist-cli/chunks/chunk-YFX2XIR4.js +1 -0
- package/dist-cli/chunks/chunk-YKFRPIVC.js +1 -0
- package/dist-cli/chunks/chunk-ZPURE62G.js +1 -0
- package/dist-cli/chunks/{compat-UMJ2IXUW.js → compat-BA6HDW3Q.js} +5 -5
- package/dist-cli/chunks/{config-YMJK426V.js → config-QQ63IS5P.js} +2 -2
- package/dist-cli/chunks/control-GNJNC524.js +2 -0
- package/dist-cli/chunks/cpu-profile-3DDV2SYN.js +2 -0
- package/dist-cli/chunks/{daemon-LIVCJZR3.js → daemon-RYSVONEV.js} +2 -2
- package/dist-cli/chunks/{debug-EV73WC7H.js → debug-YXE4XZLP.js} +20 -20
- package/dist-cli/chunks/demo-app-registry-3VFEW4NV.js +2 -0
- package/dist-cli/chunks/{detox-NBT5BVX3.js → detox-2UI3EAXA.js} +2 -2
- package/dist-cli/chunks/{device-MMROWQZ3.js → device-UGDJBZKD.js} +2 -2
- package/dist-cli/chunks/diagnose-IRDRYKYZ.js +41 -0
- package/dist-cli/chunks/drivers-EAONIWG3.js +2 -0
- package/dist-cli/chunks/{electron-F5DT7CFY.js → electron-ZCYWIZAE.js} +3 -3
- package/dist-cli/chunks/flow-ECSMFTKS.js +2 -0
- package/dist-cli/chunks/{hints-RODH4XE4.js → hints-OWOBCWJH.js} +2 -2
- package/dist-cli/chunks/{home-paths-PCUMN33Z.js → home-paths-5QMCFTBP.js} +2 -2
- package/dist-cli/chunks/inspect-K4VXPM5J.js +995 -0
- package/dist-cli/chunks/install-YFE7C2NU.js +2 -0
- package/dist-cli/chunks/{install-desktop-ASRNFHZU.js → install-desktop-U3723T63.js} +3 -3
- package/dist-cli/chunks/{keys-DOOCGNTD.js → keys-IFVXJ7C2.js} +2 -2
- package/dist-cli/chunks/{launch-DTVAQMZG.js → launch-NDGFTRZ5.js} +3 -3
- package/dist-cli/chunks/{login-JA6VEDEP.js → login-KEU6RAV3.js} +4 -4
- package/dist-cli/chunks/{logout-H4WFWTPC.js → logout-KNFLP5OQ.js} +2 -2
- package/dist-cli/chunks/{maestro-4TR7U6TS.js → maestro-GBUBLS6L.js} +2 -2
- package/dist-cli/chunks/{preview-GP7XXDW6.js → preview-7OKMPPMN.js} +2 -2
- package/dist-cli/chunks/{profile-3FESGAZD.js → profile-CHKDPGJF.js} +2 -2
- package/dist-cli/chunks/{react-SJD2DQQV.js → react-GYI5VITJ.js} +2 -2
- package/dist-cli/chunks/record-DQR2TEIF.js +45 -0
- package/dist-cli/chunks/runtime-XXNKSGFE.js +2 -0
- package/dist-cli/chunks/runtime-delivery-JCAY2QVQ.js +2 -0
- package/dist-cli/chunks/{screenshot-45SAK7EW.js → screenshot-3T6MNPH7.js} +2 -2
- package/dist-cli/chunks/{screenshot-mode-TCY7FBGR.js → screenshot-mode-BUGXY7SQ.js} +2 -2
- package/dist-cli/chunks/{screenshots-KZ364S2O.js → screenshots-EMTXGI2Q.js} +2 -2
- package/dist-cli/chunks/server-46H2M4TF.js +35 -0
- package/dist-cli/chunks/setup-repo-P4LCPAF6.js +2 -0
- package/dist-cli/chunks/{skills-SMXCCJCM.js → skills-2RP2CFPD.js} +2 -2
- package/dist-cli/chunks/start-QFREXALP.js +23 -0
- package/dist-cli/chunks/store-GH77HGEB.js +2 -0
- package/dist-cli/chunks/telemetry-WC5J4TE5.js +2 -0
- package/dist-cli/chunks/{test-ZXTSA5GV.js → test-LI4PGGTE.js} +3 -3
- package/dist-cli/chunks/{three-mode-4Q65J2ZA.js → three-mode-PKINB46T.js} +2 -2
- package/dist-cli/chunks/{timeline-ISEDS6XR.js → timeline-5AREJDL5.js} +2 -2
- package/dist-cli/chunks/upgrade-W2AGIOSC.js +4 -0
- package/dist-cli/chunks/upload-RLS6KTG6.js +2 -0
- package/dist-cli/chunks/web-JM6WDSZQ.js +2 -0
- package/dist-cli/chunks/what-happened-SVCASJKT.js +15 -0
- package/dist-cli/chunks/whoami-5NJ6IPLT.js +2 -0
- 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/bridge-constants.cjs +1 -1
- package/dist-lib/cli-constants.cjs +1 -1
- package/dist-lib/config.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 +127 -88
- package/dist-lib/host/fetch-proxy-handler.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/vite-base.cjs +152 -94
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/dist-cli/chunks/auto-bootstrap-3TUCG2BC.js +0 -2
- package/dist-cli/chunks/beta-3SCMB3IN.js +0 -2
- package/dist-cli/chunks/chunk-4LHQRDSN.js +0 -2
- package/dist-cli/chunks/chunk-4UI5OHEO.js +0 -1
- package/dist-cli/chunks/chunk-5L5SZXXG.js +0 -2
- package/dist-cli/chunks/chunk-5RSSCKBF.js +0 -1
- package/dist-cli/chunks/chunk-6TSUQHSC.js +0 -4
- package/dist-cli/chunks/chunk-B3OEHV2C.js +0 -1
- package/dist-cli/chunks/chunk-DSDLGFWH.js +0 -61
- package/dist-cli/chunks/chunk-HWRR23AJ.js +0 -17
- package/dist-cli/chunks/chunk-MIE6NMPJ.js +0 -117
- package/dist-cli/chunks/chunk-NFJDHJHK.js +0 -1
- package/dist-cli/chunks/chunk-OB3TB4AN.js +0 -4
- package/dist-cli/chunks/chunk-SLQ2GTYF.js +0 -27
- package/dist-cli/chunks/chunk-W4QHQT64.js +0 -2
- package/dist-cli/chunks/chunk-WHQWINDB.js +0 -11
- package/dist-cli/chunks/control-DJR3DUAB.js +0 -2
- package/dist-cli/chunks/cpu-profile-67MCPAA2.js +0 -22
- package/dist-cli/chunks/demo-app-registry-NZBZVJ52.js +0 -2
- package/dist-cli/chunks/diagnose-WXOKGBAJ.js +0 -41
- package/dist-cli/chunks/drivers-NSPV5S6T.js +0 -2
- package/dist-cli/chunks/flow-T6DZQWHE.js +0 -2
- package/dist-cli/chunks/inspect-BIMFJFDR.js +0 -1101
- package/dist-cli/chunks/install-5YPVP466.js +0 -2
- package/dist-cli/chunks/record-PQUAMW5K.js +0 -37
- package/dist-cli/chunks/server-S5CRYXXZ.js +0 -35
- package/dist-cli/chunks/setup-repo-TH3GXOP7.js +0 -2
- package/dist-cli/chunks/start-KLSAQM3C.js +0 -23
- package/dist-cli/chunks/store-E2N5NOUS.js +0 -2
- package/dist-cli/chunks/telemetry-RJXVYJSN.js +0 -2
- package/dist-cli/chunks/upload-KB7INQRC.js +0 -2
- package/dist-cli/chunks/what-happened-STY3AOCQ.js +0 -15
- package/dist-cli/chunks/whoami-VKRQOG2U.js +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.41 | (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;
|
|
@@ -972,8 +972,8 @@ async function discoverListeningProcesses(excludePorts = []) {
|
|
|
972
972
|
var cwdByPid = /* @__PURE__ */ new Map();
|
|
973
973
|
async function resolveProcessCwd(pid) {
|
|
974
974
|
if (pid <= 0) return null;
|
|
975
|
-
const
|
|
976
|
-
if (
|
|
975
|
+
const cached2 = cwdByPid.get(pid);
|
|
976
|
+
if (cached2) return cached2;
|
|
977
977
|
try {
|
|
978
978
|
const { stdout } = await execP(`lsof -p ${pid} -a -d cwd -Fn 2>/dev/null`, {
|
|
979
979
|
encoding: "utf8",
|
|
@@ -1181,12 +1181,12 @@ async function scanDevServers(opts = {}) {
|
|
|
1181
1181
|
const results = [];
|
|
1182
1182
|
const toProbe = [];
|
|
1183
1183
|
for (const { port, pid } of processes) {
|
|
1184
|
-
const
|
|
1185
|
-
if (
|
|
1186
|
-
if (
|
|
1184
|
+
const cached2 = portCache.get(port);
|
|
1185
|
+
if (cached2 && __shouldReuseScannerCacheEntry(cached2, pid)) {
|
|
1186
|
+
if (cached2.result) results.push(cached2.result);
|
|
1187
1187
|
continue;
|
|
1188
1188
|
}
|
|
1189
|
-
if (
|
|
1189
|
+
if (cached2 && cached2.pid !== pid) {
|
|
1190
1190
|
knownNonPatched.delete(port);
|
|
1191
1191
|
knownNonExpo.delete(port);
|
|
1192
1192
|
knownOne.delete(port);
|
|
@@ -1226,8 +1226,33 @@ async function scanDevServers(opts = {}) {
|
|
|
1226
1226
|
// src/bridge-constants.ts
|
|
1227
1227
|
var DEFAULT_SOOTSIM_BRIDGE_PORT = 7668;
|
|
1228
1228
|
|
|
1229
|
+
// src/cli-version.ts
|
|
1230
|
+
var import_node_fs2 = require("node:fs");
|
|
1231
|
+
var import_node_url = require("node:url");
|
|
1232
|
+
var import_meta = {};
|
|
1233
|
+
var cached = null;
|
|
1234
|
+
function getCliVersion() {
|
|
1235
|
+
if (cached != null) return cached;
|
|
1236
|
+
const candidates = [
|
|
1237
|
+
() => (0, import_node_url.fileURLToPath)(import_meta.resolve("sootsim/package.json")),
|
|
1238
|
+
() => (0, import_node_url.fileURLToPath)(new URL("../package.json", __sootsim_import_meta_url))
|
|
1239
|
+
];
|
|
1240
|
+
for (const resolve2 of candidates) {
|
|
1241
|
+
try {
|
|
1242
|
+
const version = JSON.parse((0, import_node_fs2.readFileSync)(resolve2(), "utf8")).version;
|
|
1243
|
+
if (typeof version === "string" && version) {
|
|
1244
|
+
cached = version;
|
|
1245
|
+
return cached;
|
|
1246
|
+
}
|
|
1247
|
+
} catch {
|
|
1248
|
+
}
|
|
1249
|
+
}
|
|
1250
|
+
cached = "0.0.0";
|
|
1251
|
+
return cached;
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1229
1254
|
// src/home-paths.ts
|
|
1230
|
-
var
|
|
1255
|
+
var import_node_fs3 = __toESM(require("node:fs"), 1);
|
|
1231
1256
|
var import_node_os2 = require("node:os");
|
|
1232
1257
|
var import_node_path2 = __toESM(require("node:path"), 1);
|
|
1233
1258
|
var SOOTSIM_HOME_ENV = "SOOTSIM_HOME";
|
|
@@ -1269,7 +1294,7 @@ function configFilePath() {
|
|
|
1269
1294
|
}
|
|
1270
1295
|
function readSharedConfig() {
|
|
1271
1296
|
try {
|
|
1272
|
-
const raw =
|
|
1297
|
+
const raw = import_node_fs3.default.readFileSync(configFilePath(), "utf8");
|
|
1273
1298
|
const parsed = JSON.parse(raw);
|
|
1274
1299
|
return parsed && typeof parsed === "object" ? parsed : {};
|
|
1275
1300
|
} catch {
|
|
@@ -1287,34 +1312,34 @@ function writeSharedConfig(patch) {
|
|
|
1287
1312
|
};
|
|
1288
1313
|
}
|
|
1289
1314
|
const tmp = `${configFilePath()}.tmp`;
|
|
1290
|
-
|
|
1315
|
+
import_node_fs3.default.writeFileSync(tmp, `${JSON.stringify(next, null, 2)}
|
|
1291
1316
|
`, "utf8");
|
|
1292
|
-
|
|
1317
|
+
import_node_fs3.default.renameSync(tmp, configFilePath());
|
|
1293
1318
|
return next;
|
|
1294
1319
|
}
|
|
1295
1320
|
function ensureSootsimHome() {
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1321
|
+
import_node_fs3.default.mkdirSync(sootsimHomeDir(), { recursive: true });
|
|
1322
|
+
import_node_fs3.default.mkdirSync(runtimesDir(), { recursive: true });
|
|
1323
|
+
import_node_fs3.default.mkdirSync(electronDir(), { recursive: true });
|
|
1324
|
+
import_node_fs3.default.mkdirSync(profilesDir(), { recursive: true });
|
|
1325
|
+
import_node_fs3.default.mkdirSync(cacheDir(), { recursive: true });
|
|
1301
1326
|
}
|
|
1302
1327
|
function readActiveRuntime() {
|
|
1303
1328
|
try {
|
|
1304
|
-
const value =
|
|
1329
|
+
const value = import_node_fs3.default.readFileSync(activeRuntimeFile(), "utf8").trim();
|
|
1305
1330
|
return value.length > 0 ? value : null;
|
|
1306
1331
|
} catch {
|
|
1307
1332
|
return null;
|
|
1308
1333
|
}
|
|
1309
1334
|
}
|
|
1310
1335
|
function writeActiveRuntime(version) {
|
|
1311
|
-
|
|
1312
|
-
|
|
1336
|
+
import_node_fs3.default.mkdirSync(runtimesDir(), { recursive: true });
|
|
1337
|
+
import_node_fs3.default.writeFileSync(activeRuntimeFile(), `${version}
|
|
1313
1338
|
`, "utf8");
|
|
1314
1339
|
}
|
|
1315
1340
|
function listInstalledRuntimes() {
|
|
1316
1341
|
try {
|
|
1317
|
-
return
|
|
1342
|
+
return import_node_fs3.default.readdirSync(runtimesDir(), { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name).sort(compareSemver);
|
|
1318
1343
|
} catch {
|
|
1319
1344
|
return [];
|
|
1320
1345
|
}
|
|
@@ -1345,7 +1370,7 @@ function activeRuntimeDir() {
|
|
|
1345
1370
|
if (!version) return null;
|
|
1346
1371
|
const dir = runtimeDir(version);
|
|
1347
1372
|
try {
|
|
1348
|
-
if (
|
|
1373
|
+
if (import_node_fs3.default.statSync(dir).isDirectory()) return dir;
|
|
1349
1374
|
} catch {
|
|
1350
1375
|
}
|
|
1351
1376
|
return null;
|
|
@@ -1353,10 +1378,10 @@ function activeRuntimeDir() {
|
|
|
1353
1378
|
var DAEMON_LOCKFILE_MAX_BYTES = 16 * 1024;
|
|
1354
1379
|
function readDaemonLockfile() {
|
|
1355
1380
|
try {
|
|
1356
|
-
const fd =
|
|
1381
|
+
const fd = import_node_fs3.default.openSync(daemonLockfilePath(), "r");
|
|
1357
1382
|
try {
|
|
1358
1383
|
const buf = Buffer.alloc(DAEMON_LOCKFILE_MAX_BYTES);
|
|
1359
|
-
const bytesRead =
|
|
1384
|
+
const bytesRead = import_node_fs3.default.readSync(fd, buf, 0, DAEMON_LOCKFILE_MAX_BYTES, 0);
|
|
1360
1385
|
const raw = buf.subarray(0, bytesRead).toString("utf8");
|
|
1361
1386
|
const parsed = JSON.parse(raw);
|
|
1362
1387
|
if (parsed && parsed.schema === 1 && typeof parsed.pid === "number" && typeof parsed.bridgePort === "number" && typeof parsed.runtimePort === "number" && typeof parsed.startedAt === "number" && typeof parsed.heartbeatAt === "number") {
|
|
@@ -1364,7 +1389,7 @@ function readDaemonLockfile() {
|
|
|
1364
1389
|
}
|
|
1365
1390
|
return null;
|
|
1366
1391
|
} finally {
|
|
1367
|
-
|
|
1392
|
+
import_node_fs3.default.closeSync(fd);
|
|
1368
1393
|
}
|
|
1369
1394
|
} catch {
|
|
1370
1395
|
return null;
|
|
@@ -1383,9 +1408,9 @@ function isDaemonLockfileFresh(lock, now = Date.now()) {
|
|
|
1383
1408
|
function writeDaemonLockfile(data) {
|
|
1384
1409
|
ensureSootsimHome();
|
|
1385
1410
|
const tmp = `${daemonLockfilePath()}.tmp`;
|
|
1386
|
-
|
|
1411
|
+
import_node_fs3.default.writeFileSync(tmp, `${JSON.stringify(data, null, 2)}
|
|
1387
1412
|
`, "utf8");
|
|
1388
|
-
|
|
1413
|
+
import_node_fs3.default.renameSync(tmp, daemonLockfilePath());
|
|
1389
1414
|
}
|
|
1390
1415
|
function claimDaemonLockfile(data) {
|
|
1391
1416
|
ensureSootsimHome();
|
|
@@ -1398,7 +1423,7 @@ function claimDaemonLockfile(data) {
|
|
|
1398
1423
|
}
|
|
1399
1424
|
function removeDaemonLockfile() {
|
|
1400
1425
|
try {
|
|
1401
|
-
|
|
1426
|
+
import_node_fs3.default.unlinkSync(daemonLockfilePath());
|
|
1402
1427
|
} catch {
|
|
1403
1428
|
}
|
|
1404
1429
|
}
|
|
@@ -1615,13 +1640,13 @@ function extractTarball(tarPath, destDir) {
|
|
|
1615
1640
|
}
|
|
1616
1641
|
|
|
1617
1642
|
// src/host/agent-host.ts
|
|
1618
|
-
var
|
|
1643
|
+
var import_node_fs6 = __toESM(require("node:fs"), 1);
|
|
1619
1644
|
var import_node_path5 = __toESM(require("node:path"), 1);
|
|
1620
1645
|
|
|
1621
1646
|
// src/agent-sessions.ts
|
|
1622
1647
|
var import_node_child_process = require("node:child_process");
|
|
1623
1648
|
var import_node_crypto2 = require("node:crypto");
|
|
1624
|
-
var
|
|
1649
|
+
var import_node_fs5 = __toESM(require("node:fs"), 1);
|
|
1625
1650
|
var import_node_path4 = __toESM(require("node:path"), 1);
|
|
1626
1651
|
var import_node_readline = __toESM(require("node:readline"), 1);
|
|
1627
1652
|
|
|
@@ -1666,7 +1691,7 @@ function encodeAgentPromptEnvelope(input) {
|
|
|
1666
1691
|
|
|
1667
1692
|
// src/attached-projects.ts
|
|
1668
1693
|
var import_node_crypto = require("node:crypto");
|
|
1669
|
-
var
|
|
1694
|
+
var import_node_fs4 = __toESM(require("node:fs"), 1);
|
|
1670
1695
|
var import_node_path3 = __toESM(require("node:path"), 1);
|
|
1671
1696
|
var overrideDir = null;
|
|
1672
1697
|
function userDataDir() {
|
|
@@ -1693,7 +1718,7 @@ function loadStore() {
|
|
|
1693
1718
|
const file = storeFile();
|
|
1694
1719
|
let raw;
|
|
1695
1720
|
try {
|
|
1696
|
-
raw =
|
|
1721
|
+
raw = import_node_fs4.default.readFileSync(file, "utf8");
|
|
1697
1722
|
} catch (err) {
|
|
1698
1723
|
if (err.code === "ENOENT") return cloneEmpty();
|
|
1699
1724
|
throw err;
|
|
@@ -1710,7 +1735,7 @@ function loadStore() {
|
|
|
1710
1735
|
} catch (err) {
|
|
1711
1736
|
const quarantine = `${file}.corrupt-${Date.now()}`;
|
|
1712
1737
|
try {
|
|
1713
|
-
|
|
1738
|
+
import_node_fs4.default.renameSync(file, quarantine);
|
|
1714
1739
|
console.warn(
|
|
1715
1740
|
`[sootsim] attached-projects.json was unparseable; quarantined to ${quarantine}. original error: ${err.message}`
|
|
1716
1741
|
);
|
|
@@ -1721,16 +1746,16 @@ function loadStore() {
|
|
|
1721
1746
|
}
|
|
1722
1747
|
function writeStore(store) {
|
|
1723
1748
|
const file = storeFile();
|
|
1724
|
-
|
|
1749
|
+
import_node_fs4.default.mkdirSync(import_node_path3.default.dirname(file), { recursive: true });
|
|
1725
1750
|
const tmp = `${file}.tmp-${process.pid}-${Date.now()}`;
|
|
1726
|
-
const fd =
|
|
1751
|
+
const fd = import_node_fs4.default.openSync(tmp, "w", 384);
|
|
1727
1752
|
try {
|
|
1728
|
-
|
|
1729
|
-
|
|
1753
|
+
import_node_fs4.default.writeFileSync(fd, JSON.stringify(store, null, 2));
|
|
1754
|
+
import_node_fs4.default.fsyncSync(fd);
|
|
1730
1755
|
} finally {
|
|
1731
|
-
|
|
1756
|
+
import_node_fs4.default.closeSync(fd);
|
|
1732
1757
|
}
|
|
1733
|
-
|
|
1758
|
+
import_node_fs4.default.renameSync(tmp, file);
|
|
1734
1759
|
}
|
|
1735
1760
|
function mutateStore(fn) {
|
|
1736
1761
|
const store = loadStore();
|
|
@@ -1911,7 +1936,7 @@ async function seedFromDemoAppRegistry() {
|
|
|
1911
1936
|
const apps = APPS2;
|
|
1912
1937
|
mutateStore((store) => {
|
|
1913
1938
|
for (const app of apps) {
|
|
1914
|
-
if (!
|
|
1939
|
+
if (!import_node_fs4.default.existsSync(app.dir)) continue;
|
|
1915
1940
|
const cwd = import_node_path3.default.resolve(app.dir);
|
|
1916
1941
|
const id = projectIdForCwd(cwd);
|
|
1917
1942
|
if (store.attachedProjects.some((p) => p.id === id)) continue;
|
|
@@ -1955,7 +1980,7 @@ function pidIsAlive(pid, sessionId) {
|
|
|
1955
1980
|
return false;
|
|
1956
1981
|
}
|
|
1957
1982
|
if (sessionId) {
|
|
1958
|
-
if (!
|
|
1983
|
+
if (!import_node_fs5.default.existsSync(sessionDir(sessionId))) return false;
|
|
1959
1984
|
}
|
|
1960
1985
|
return true;
|
|
1961
1986
|
}
|
|
@@ -1971,7 +1996,7 @@ function resolveSootsimInvocation() {
|
|
|
1971
1996
|
import_node_path4.default.join(resourcesPath, "bin", `sootsim-${process.platform}-${process.arch}`)
|
|
1972
1997
|
];
|
|
1973
1998
|
for (const c of candidates) {
|
|
1974
|
-
if (
|
|
1999
|
+
if (import_node_fs5.default.existsSync(c)) return { cmd: c, prefixArgs: [] };
|
|
1975
2000
|
}
|
|
1976
2001
|
}
|
|
1977
2002
|
}
|
|
@@ -1995,14 +2020,14 @@ function tryWorkspaceSootsim() {
|
|
|
1995
2020
|
if (!sootsimDir) return null;
|
|
1996
2021
|
const binaryName = `sootsim-${process.platform}-${process.arch}`;
|
|
1997
2022
|
const distBinary = import_node_path4.default.join(sootsimDir, "dist-bin", binaryName);
|
|
1998
|
-
if (
|
|
2023
|
+
if (import_node_fs5.default.existsSync(distBinary)) return { cmd: distBinary, prefixArgs: [] };
|
|
1999
2024
|
const distBin = import_node_path4.default.join(sootsimDir, "dist-cli", "bin.js");
|
|
2000
|
-
if (
|
|
2025
|
+
if (import_node_fs5.default.existsSync(distBin)) {
|
|
2001
2026
|
try {
|
|
2002
2027
|
const src = import_node_path4.default.join(sootsimDir, "cli", "commands", "agent-wrapper.ts");
|
|
2003
|
-
if (
|
|
2004
|
-
const srcMtime =
|
|
2005
|
-
const buildMtime =
|
|
2028
|
+
if (import_node_fs5.default.existsSync(src)) {
|
|
2029
|
+
const srcMtime = import_node_fs5.default.statSync(src).mtimeMs;
|
|
2030
|
+
const buildMtime = import_node_fs5.default.statSync(distBin).mtimeMs;
|
|
2006
2031
|
if (buildMtime < srcMtime) {
|
|
2007
2032
|
console.warn(
|
|
2008
2033
|
`[sootsim] dist-cli/bin.js is older than agent-wrapper.ts \u2014 rebuild with \`bun run --cwd packages/sootsim build:cli\` (watch:cli:binary builds dist-bin/ instead).`
|
|
@@ -2030,8 +2055,8 @@ function resolveSootsimPackageDir() {
|
|
|
2030
2055
|
for (let i = 0; i < 8; i++) {
|
|
2031
2056
|
const pkg = import_node_path4.default.join(cur, "package.json");
|
|
2032
2057
|
try {
|
|
2033
|
-
if (
|
|
2034
|
-
const parsed = JSON.parse(
|
|
2058
|
+
if (import_node_fs5.default.existsSync(pkg)) {
|
|
2059
|
+
const parsed = JSON.parse(import_node_fs5.default.readFileSync(pkg, "utf8"));
|
|
2035
2060
|
if (parsed.name === "sootsim") return cur;
|
|
2036
2061
|
}
|
|
2037
2062
|
} catch {
|
|
@@ -2053,9 +2078,9 @@ function fileFromImportMeta() {
|
|
|
2053
2078
|
}
|
|
2054
2079
|
async function withStartLock(projectId, provider, fn) {
|
|
2055
2080
|
const lockDir = import_node_path4.default.join(getUserDataDir(), "locks");
|
|
2056
|
-
|
|
2081
|
+
import_node_fs5.default.mkdirSync(lockDir, { recursive: true });
|
|
2057
2082
|
try {
|
|
2058
|
-
|
|
2083
|
+
import_node_fs5.default.chmodSync(lockDir, 448);
|
|
2059
2084
|
} catch {
|
|
2060
2085
|
}
|
|
2061
2086
|
const lockPath = import_node_path4.default.join(lockDir, `start-${projectId}-${provider}.lock`);
|
|
@@ -2063,17 +2088,17 @@ async function withStartLock(projectId, provider, fn) {
|
|
|
2063
2088
|
let fd = null;
|
|
2064
2089
|
while (fd === null) {
|
|
2065
2090
|
try {
|
|
2066
|
-
fd =
|
|
2091
|
+
fd = import_node_fs5.default.openSync(
|
|
2067
2092
|
lockPath,
|
|
2068
|
-
|
|
2093
|
+
import_node_fs5.constants.O_WRONLY | import_node_fs5.constants.O_CREAT | import_node_fs5.constants.O_EXCL,
|
|
2069
2094
|
384
|
|
2070
2095
|
);
|
|
2071
2096
|
} catch (err) {
|
|
2072
2097
|
if (err.code !== "EEXIST") throw err;
|
|
2073
2098
|
try {
|
|
2074
|
-
const stale = Number(
|
|
2099
|
+
const stale = Number(import_node_fs5.default.readFileSync(lockPath, "utf8").trim());
|
|
2075
2100
|
if (stale && !isProcessAlive(stale)) {
|
|
2076
|
-
|
|
2101
|
+
import_node_fs5.default.unlinkSync(lockPath);
|
|
2077
2102
|
continue;
|
|
2078
2103
|
}
|
|
2079
2104
|
} catch {
|
|
@@ -2087,15 +2112,15 @@ async function withStartLock(projectId, provider, fn) {
|
|
|
2087
2112
|
}
|
|
2088
2113
|
}
|
|
2089
2114
|
try {
|
|
2090
|
-
|
|
2115
|
+
import_node_fs5.default.writeFileSync(fd, String(process.pid));
|
|
2091
2116
|
return await fn();
|
|
2092
2117
|
} finally {
|
|
2093
2118
|
try {
|
|
2094
|
-
|
|
2119
|
+
import_node_fs5.default.closeSync(fd);
|
|
2095
2120
|
} catch {
|
|
2096
2121
|
}
|
|
2097
2122
|
try {
|
|
2098
|
-
|
|
2123
|
+
import_node_fs5.default.unlinkSync(lockPath);
|
|
2099
2124
|
} catch {
|
|
2100
2125
|
}
|
|
2101
2126
|
}
|
|
@@ -2110,24 +2135,24 @@ function isProcessAlive(pid) {
|
|
|
2110
2135
|
}
|
|
2111
2136
|
function mkfifoSync(p) {
|
|
2112
2137
|
const parent = import_node_path4.default.dirname(p);
|
|
2113
|
-
|
|
2138
|
+
import_node_fs5.default.mkdirSync(parent, { recursive: true });
|
|
2114
2139
|
try {
|
|
2115
|
-
|
|
2140
|
+
import_node_fs5.default.chmodSync(parent, 448);
|
|
2116
2141
|
} catch {
|
|
2117
2142
|
}
|
|
2118
|
-
if (
|
|
2143
|
+
if (import_node_fs5.default.existsSync(p)) {
|
|
2119
2144
|
try {
|
|
2120
|
-
const stat =
|
|
2145
|
+
const stat = import_node_fs5.default.statSync(p);
|
|
2121
2146
|
if (stat.isFIFO()) {
|
|
2122
2147
|
try {
|
|
2123
|
-
|
|
2148
|
+
import_node_fs5.default.chmodSync(p, 384);
|
|
2124
2149
|
} catch {
|
|
2125
2150
|
}
|
|
2126
2151
|
return;
|
|
2127
2152
|
}
|
|
2128
|
-
|
|
2153
|
+
import_node_fs5.default.unlinkSync(p);
|
|
2129
2154
|
} catch {
|
|
2130
|
-
|
|
2155
|
+
import_node_fs5.default.unlinkSync(p);
|
|
2131
2156
|
}
|
|
2132
2157
|
}
|
|
2133
2158
|
const result = (0, import_node_child_process.spawnSync)("mkfifo", ["-m", "600", p]);
|
|
@@ -2175,9 +2200,9 @@ async function startSession(opts) {
|
|
|
2175
2200
|
mkfifoSync(promptIn);
|
|
2176
2201
|
mkfifoSync(eventsOut);
|
|
2177
2202
|
const transcriptDir = import_node_path4.default.dirname(transcript);
|
|
2178
|
-
|
|
2203
|
+
import_node_fs5.default.mkdirSync(transcriptDir, { recursive: true });
|
|
2179
2204
|
try {
|
|
2180
|
-
|
|
2205
|
+
import_node_fs5.default.chmodSync(transcriptDir, 448);
|
|
2181
2206
|
} catch {
|
|
2182
2207
|
}
|
|
2183
2208
|
const { cmd, prefixArgs } = resolveSootsimInvocation();
|
|
@@ -2228,7 +2253,7 @@ async function startSession(opts) {
|
|
|
2228
2253
|
}
|
|
2229
2254
|
}
|
|
2230
2255
|
try {
|
|
2231
|
-
|
|
2256
|
+
import_node_fs5.default.rmSync(sessionDir(session.id), { recursive: true, force: true });
|
|
2232
2257
|
} catch {
|
|
2233
2258
|
}
|
|
2234
2259
|
updateSessionStatus(session.id, { status: "ended" });
|
|
@@ -2256,18 +2281,18 @@ async function sendPrompt(sessionId, prompt) {
|
|
|
2256
2281
|
);
|
|
2257
2282
|
}
|
|
2258
2283
|
const fifo = promptFifoPath(sessionId);
|
|
2259
|
-
if (!
|
|
2284
|
+
if (!import_node_fs5.default.existsSync(fifo)) {
|
|
2260
2285
|
throw new AgentSessionError("NO_FIFO", `prompt FIFO missing: ${fifo}`);
|
|
2261
2286
|
}
|
|
2262
|
-
const fd =
|
|
2287
|
+
const fd = import_node_fs5.default.openSync(fifo, import_node_fs5.constants.O_WRONLY);
|
|
2263
2288
|
try {
|
|
2264
2289
|
const wireText = encodeAgentPromptEnvelope(prompt);
|
|
2265
2290
|
if (!wireText) {
|
|
2266
2291
|
throw new AgentSessionError("EMPTY_PROMPT", "prompt text is empty");
|
|
2267
2292
|
}
|
|
2268
|
-
|
|
2293
|
+
import_node_fs5.default.writeSync(fd, wireText + "\n");
|
|
2269
2294
|
} finally {
|
|
2270
|
-
|
|
2295
|
+
import_node_fs5.default.closeSync(fd);
|
|
2271
2296
|
}
|
|
2272
2297
|
updateSessionStatus(sessionId, {
|
|
2273
2298
|
lastPrompt: prompt.displayText ?? prompt.text,
|
|
@@ -2289,7 +2314,7 @@ async function endSession(sessionId) {
|
|
|
2289
2314
|
const base = getUserDataDir();
|
|
2290
2315
|
if (dir.startsWith(base)) {
|
|
2291
2316
|
try {
|
|
2292
|
-
|
|
2317
|
+
import_node_fs5.default.rmSync(dir, { recursive: true, force: true });
|
|
2293
2318
|
} catch {
|
|
2294
2319
|
}
|
|
2295
2320
|
}
|
|
@@ -2297,11 +2322,11 @@ async function endSession(sessionId) {
|
|
|
2297
2322
|
}
|
|
2298
2323
|
function subscribeEvents(sessionId, onEvent) {
|
|
2299
2324
|
const fifo = eventsFifoPath(sessionId);
|
|
2300
|
-
if (!
|
|
2325
|
+
if (!import_node_fs5.default.existsSync(fifo)) {
|
|
2301
2326
|
throw new AgentSessionError("NO_FIFO", `events FIFO missing: ${fifo}`);
|
|
2302
2327
|
}
|
|
2303
|
-
const fd =
|
|
2304
|
-
const stream =
|
|
2328
|
+
const fd = import_node_fs5.default.openSync(fifo, import_node_fs5.constants.O_RDWR);
|
|
2329
|
+
const stream = import_node_fs5.default.createReadStream("", { fd, autoClose: true });
|
|
2305
2330
|
const rl = import_node_readline.default.createInterface({ input: stream, crlfDelay: Infinity });
|
|
2306
2331
|
rl.on("line", (line) => {
|
|
2307
2332
|
const event = parseAgentEventLine(line);
|
|
@@ -2322,7 +2347,7 @@ function subscribeEvents(sessionId, onEvent) {
|
|
|
2322
2347
|
};
|
|
2323
2348
|
}
|
|
2324
2349
|
async function waitForFirstEvent(fifo, predicate, timeoutMs) {
|
|
2325
|
-
const fd =
|
|
2350
|
+
const fd = import_node_fs5.default.openSync(fifo, import_node_fs5.constants.O_RDWR | import_node_fs5.constants.O_NONBLOCK);
|
|
2326
2351
|
const buf = Buffer.alloc(8192);
|
|
2327
2352
|
let leftover = "";
|
|
2328
2353
|
const deadline = Date.now() + timeoutMs;
|
|
@@ -2330,7 +2355,7 @@ async function waitForFirstEvent(fifo, predicate, timeoutMs) {
|
|
|
2330
2355
|
while (Date.now() < deadline) {
|
|
2331
2356
|
let n = 0;
|
|
2332
2357
|
try {
|
|
2333
|
-
n =
|
|
2358
|
+
n = import_node_fs5.default.readSync(fd, buf, 0, buf.length, null);
|
|
2334
2359
|
} catch (err) {
|
|
2335
2360
|
if (err.code !== "EAGAIN") throw err;
|
|
2336
2361
|
n = 0;
|
|
@@ -2350,7 +2375,7 @@ async function waitForFirstEvent(fifo, predicate, timeoutMs) {
|
|
|
2350
2375
|
}
|
|
2351
2376
|
return null;
|
|
2352
2377
|
} finally {
|
|
2353
|
-
|
|
2378
|
+
import_node_fs5.default.closeSync(fd);
|
|
2354
2379
|
}
|
|
2355
2380
|
}
|
|
2356
2381
|
|
|
@@ -2532,10 +2557,10 @@ var AgentHost = class {
|
|
|
2532
2557
|
}
|
|
2533
2558
|
getTranscript(sessionId) {
|
|
2534
2559
|
const p = transcriptPath(sessionId);
|
|
2535
|
-
if (!
|
|
2560
|
+
if (!import_node_fs6.default.existsSync(p)) {
|
|
2536
2561
|
return { error: "transcript not found", code: "NO_TRANSCRIPT" };
|
|
2537
2562
|
}
|
|
2538
|
-
return
|
|
2563
|
+
return import_node_fs6.default.readFileSync(p, "utf8");
|
|
2539
2564
|
}
|
|
2540
2565
|
getPaths() {
|
|
2541
2566
|
const dir = getUserDataDir();
|
|
@@ -3114,9 +3139,7 @@ function buildChromiumUrlCommand(url, options = {}) {
|
|
|
3114
3139
|
throw new Error("browser launch requires Chrome, Chromium, Edge, Brave, or Arc");
|
|
3115
3140
|
}
|
|
3116
3141
|
const args = [];
|
|
3117
|
-
if (options.
|
|
3118
|
-
args.push("--headless=new");
|
|
3119
|
-
} else if (options.newWindow !== false) {
|
|
3142
|
+
if (options.newWindow !== false) {
|
|
3120
3143
|
args.push("--new-window");
|
|
3121
3144
|
}
|
|
3122
3145
|
args.push(url);
|
|
@@ -3187,7 +3210,7 @@ var HTTP_MIME_TYPES = {
|
|
|
3187
3210
|
".map": "application/json",
|
|
3188
3211
|
".txt": "text/plain; charset=utf-8"
|
|
3189
3212
|
};
|
|
3190
|
-
function injectSharedConfigIntoHtml(data) {
|
|
3213
|
+
function injectSharedConfigIntoHtml(data, bridgePort, sootbeanOrigin) {
|
|
3191
3214
|
let payload;
|
|
3192
3215
|
try {
|
|
3193
3216
|
const cfg = readSharedConfig();
|
|
@@ -3195,7 +3218,9 @@ function injectSharedConfigIntoHtml(data) {
|
|
|
3195
3218
|
} catch {
|
|
3196
3219
|
payload = "{}";
|
|
3197
3220
|
}
|
|
3198
|
-
const
|
|
3221
|
+
const bridgePortTag = bridgePort > 0 ? `window.__sootsimBridgePort=${bridgePort};` : "";
|
|
3222
|
+
const sootbeanOriginTag = sootbeanOrigin ? `window.__sootsimSootbeanOrigin=${JSON.stringify(sootbeanOrigin)};` : "";
|
|
3223
|
+
const tag = `<script>window.__sootsimSharedConfig=${payload};` + bridgePortTag + sootbeanOriginTag + `window.__sootsimCliVersion=${JSON.stringify(getCliVersion())};</script>`;
|
|
3199
3224
|
const html = data.toString("utf8");
|
|
3200
3225
|
if (html.includes("</head>")) return html.replace("</head>", tag + "</head>");
|
|
3201
3226
|
if (html.includes("</body>")) return html.replace("</body>", tag + "</body>");
|
|
@@ -3231,6 +3256,7 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
|
|
|
3231
3256
|
preferredPort;
|
|
3232
3257
|
portFallbackCount;
|
|
3233
3258
|
shouldWriteLockfile;
|
|
3259
|
+
sootbeanOrigin = null;
|
|
3234
3260
|
effectivePort = 0;
|
|
3235
3261
|
startedAt = 0;
|
|
3236
3262
|
heartbeatTimer = null;
|
|
@@ -3263,6 +3289,7 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
|
|
|
3263
3289
|
this.portFallbackCount = Math.max(1, opts.portFallbackCount ?? 10);
|
|
3264
3290
|
this.openUrlHandler = opts.openUrl;
|
|
3265
3291
|
this.agentHost = new AgentHost({ getExcludePorts: opts.agentScanExcludes });
|
|
3292
|
+
this.sootbeanOrigin = opts.sootbeanOrigin?.replace(/\/$/, "") || null;
|
|
3266
3293
|
}
|
|
3267
3294
|
/** expose the agent host so tests and embedders can inspect state or
|
|
3268
3295
|
* inject behavior. not part of the public WS protocol. */
|
|
@@ -3460,6 +3487,12 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
|
|
|
3460
3487
|
sim.url = registration.url;
|
|
3461
3488
|
sim.title = registration.title;
|
|
3462
3489
|
sim.userAgent = registration.userAgent;
|
|
3490
|
+
if (typeof registration.kind === "string" && registration.kind.trim()) {
|
|
3491
|
+
sim.kind = registration.kind.trim();
|
|
3492
|
+
}
|
|
3493
|
+
if (registration.meta && typeof registration.meta === "object") {
|
|
3494
|
+
sim.meta = registration.meta;
|
|
3495
|
+
}
|
|
3463
3496
|
if (restored) {
|
|
3464
3497
|
this.broadcastSimAssignments();
|
|
3465
3498
|
this.broadcastSimClientStates();
|
|
@@ -4139,7 +4172,9 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
|
|
|
4139
4172
|
res.end();
|
|
4140
4173
|
return;
|
|
4141
4174
|
}
|
|
4142
|
-
res.end(
|
|
4175
|
+
res.end(
|
|
4176
|
+
injectSharedConfigIntoHtml(data, this.effectivePort, this.sootbeanOrigin)
|
|
4177
|
+
);
|
|
4143
4178
|
});
|
|
4144
4179
|
return;
|
|
4145
4180
|
}
|
|
@@ -4162,7 +4197,9 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
|
|
|
4162
4197
|
}
|
|
4163
4198
|
return;
|
|
4164
4199
|
}
|
|
4165
|
-
res.end(
|
|
4200
|
+
res.end(
|
|
4201
|
+
injectSharedConfigIntoHtml(data, this.effectivePort, this.sootbeanOrigin)
|
|
4202
|
+
);
|
|
4166
4203
|
});
|
|
4167
4204
|
return;
|
|
4168
4205
|
}
|
|
@@ -4384,7 +4421,9 @@ var SootSimBridgeHost = class _SootSimBridgeHost {
|
|
|
4384
4421
|
lockedBy: lease ? lease.cliLabel || lease.cliIdentityKey : void 0,
|
|
4385
4422
|
lockedByKind: lease ? lease.kind : void 0,
|
|
4386
4423
|
lockExpiresAt: lease ? lease.expiresAt : void 0,
|
|
4387
|
-
userFocused: sim.userFocused || void 0
|
|
4424
|
+
userFocused: sim.userFocused || void 0,
|
|
4425
|
+
kind: sim.kind,
|
|
4426
|
+
meta: sim.meta
|
|
4388
4427
|
};
|
|
4389
4428
|
}
|
|
4390
4429
|
getActiveLease(sim) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.41 | (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/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! sootsim v0.1.
|
|
1
|
+
/*! sootsim v0.1.41 | (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.41 | (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.41 | (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.41 | (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;
|