stim 1.9.0 → 1.10.0
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/{android-_y4Ohi5z.mjs → android-787HhP5w.mjs} +119 -29
- package/dist/{android-BPGizezh.mjs → android-DBkeHwpm.mjs} +168 -95
- package/dist/{android-DEgo4oCo.mjs → android-DPov-fv2.mjs} +2 -2
- package/dist/{android-cas-eiExNLf7.mjs → android-cas-CITmIeWY.mjs} +9 -8
- package/dist/android-cas-compiler.mjs +1 -1
- package/dist/{app-install-Uf3a83Tv.mjs → app-install-CrJ6t_bv.mjs} +2 -2
- package/dist/budget-BP4jZZL4.mjs +620 -0
- package/dist/build-progress-BXx-ZBe4.mjs +512 -0
- package/dist/{cache-manifest-Dg7OnMrp.mjs → cache-manifest-Pubfp8wV.mjs} +1 -1
- package/dist/cache-manifest.mjs +1 -1
- package/dist/cli.mjs +16 -16
- package/dist/collector-run.d.mts +5 -1
- package/dist/collector-run.mjs +7 -7
- package/dist/{command-output-gByVmIjy.mjs → command-output-D5z2_bcF.mjs} +1 -1
- package/dist/{config-Cp9lM3wX.mjs → config-BEq0Qw_a.mjs} +14 -131
- package/dist/{dependency-state-Bq5DcLGn.mjs → dependency-state-r9UesA9a.mjs} +2 -2
- package/dist/{deps-Cip5vUm1.mjs → deps-DP4eWqea.mjs} +3 -3
- package/dist/{detached-entry-KEu0_AXL.mjs → detached-entry-DJHoca49.mjs} +1 -1
- package/dist/{dev-client-HyqISM0h.mjs → dev-client-92U593KT.mjs} +137 -250
- package/dist/{device-D4U-xLty.mjs → device-DhTZe7L4.mjs} +7 -7
- package/dist/{build-lock-DPXPLgTc.mjs → device-lease-CbEaIk7b.mjs} +370 -12
- package/dist/{device-pool-CnTAz8X1.mjs → device-pool-Di8Q-9Ro.mjs} +4 -4
- package/dist/{device-remote-AQ5rQPqr.mjs → device-remote-Dy1jGj3U.mjs} +547 -468
- package/dist/{doctor-B_Ei3bZu.mjs → doctor-B-inAJmt.mjs} +58 -22
- package/dist/{error-diagnostics-Vfz83GCF.mjs → error-diagnostics-xxWKNO3-.mjs} +11 -12
- package/dist/{exec-jIAlgilk.mjs → exec-DK8KaVHK.mjs} +3 -2
- package/dist/{gc-Ckw8RQHi.mjs → gc-ChPFZMRC.mjs} +500 -1114
- package/dist/{guide-BiAbhs1J.mjs → guide-DwmaD_Wa.mjs} +882 -528
- package/dist/guide-status-CWvti2Lg.mjs +125 -0
- package/dist/idle-DpRLp5lj.mjs +157 -0
- package/dist/in-use-CjUluqIX.mjs +245 -0
- package/dist/{ios-BL2NFckr.mjs → ios-B2Fpqvlb.mjs} +25 -59
- package/dist/{ios-BzUJWk1K.mjs → ios-Dd-hYJBh.mjs} +130 -89
- package/dist/{ios-device-DPsSm0v_.mjs → ios-device-BiOsSVzd.mjs} +1 -1
- package/dist/{ios-device-D972i9wf.mjs → ios-device-CtRdEVjx.mjs} +3 -3
- package/dist/{launch-verify-Q_OtW1Rf.mjs → launch-verify-CQS_Kg-C.mjs} +5 -5
- package/dist/{logs-CI9NQSK7.mjs → logs-MARIy6m9.mjs} +9 -9
- package/dist/{metro-DrLHaMn2.mjs → metro-BWLOJ_Wr.mjs} +116 -10
- package/dist/{named-ports-CmLQSIRj.mjs → named-ports-DiTfSz6p.mjs} +4 -4
- package/dist/{ndjson-9uFNRwfe.mjs → ndjson-CDY9IkVC.mjs} +3 -56
- package/dist/{ndjson-DvHSsNU9.d.mts → ndjson-Du3j0AQ9.d.mts} +1 -0
- package/dist/{ownership-D15Op8vN.mjs → ownership-D2xbLVoz.mjs} +2 -3
- package/dist/ownership-DZjdx8Gq.mjs +1180 -0
- package/dist/{ports-BNKoWVWZ.mjs → ports-CLSSFOuz.mjs} +3 -3
- package/dist/{project-DS112DYB.mjs → project-BXZzOABt.mjs} +2 -2
- package/dist/{reload-ZNJUo1pl.mjs → reload-DoETJ3rl.mjs} +9 -10
- package/dist/{server-bare-DWkkcIxV.mjs → server-bare-DVbb7kXH.mjs} +1 -1
- package/dist/{server-expo-B_lctBR3.mjs → server-expo-BvOCeakp.mjs} +4 -4
- package/dist/server-expo-DBVTdult.mjs +2 -0
- package/dist/{settings-D030k0t4.mjs → settings-DOugPlPz.mjs} +16 -428
- package/dist/{settings-BKNh5rl4.mjs → settings-EWYNwe72.mjs} +16 -14
- package/dist/settings.schema.json +75 -0
- package/dist/{simslim-B_LsGLuJ.mjs → simslim-Ca3487H6.mjs} +182 -5
- package/dist/{slot-launch-DU9A-gYw.mjs → slot-launch-C5cg0fmk.mjs} +4 -4
- package/dist/{spawn-claims-Dn3C_N6w.mjs → spawn-claims-CUleC2cM.mjs} +1 -1
- package/dist/{start-DYkkKF0s.mjs → start-F9gv5dcC.mjs} +147 -98
- package/dist/start-VoFsPSes.mjs +2 -0
- package/dist/{state-NcJzMEBF.mjs → state-WGdIbi_d.mjs} +2 -2
- package/dist/{stats-DG9e66Rz.mjs → stats-BAgJaLA4.mjs} +1 -1
- package/dist/{stats-B63-JVAY.mjs → stats-DBYJ5bxL.mjs} +4 -4
- package/dist/{status-S6ehL4Ui.mjs → status-DLCD-o3s.mjs} +63 -231
- package/dist/status-Dr4fRkym.mjs +216 -0
- package/dist/{guide-status-BAMVU0ZA.mjs → stim-installations-CINXy_su.mjs} +3 -124
- package/dist/{stop-BO28HGqF.mjs → stop-Dj4pfmyv.mjs} +22 -18
- package/dist/{stop-T1R-cZRz.mjs → stop-ZvOeTmKb.mjs} +2 -2
- package/dist/supervisor-run.d.mts +11 -2
- package/dist/supervisor-run.mjs +185 -17
- package/dist/{workspace-process-lock-DWaiRD0e.mjs → workspace-process-lock-BXA96myD.mjs} +2 -2
- package/dist/workspaces-BTUyFfkv.mjs +1003 -0
- package/dist/{worktree-DKhSF0UX.mjs → worktree-4aZg2NnI.mjs} +1 -1
- package/dist/{worktree-LGB-UwgG.mjs → worktree-BMS7GeqB.mjs} +40 -122
- package/dist/{worktree-R_cUlE7s.mjs → worktree-BlizKDpZ.mjs} +143 -18
- package/dist/{xcode-BZqyxh3e.mjs → xcode-B2tBkf0m.mjs} +9 -158
- package/package.json +6 -5
- package/dist/build-progress-CVqkfPC6.mjs +0 -188
- package/dist/device-lease-Crs-HkJY.mjs +0 -366
- package/dist/logs-query-Cqma3WIu.mjs +0 -298
- package/dist/ownership-DCQPuWEc.mjs +0 -489
- package/dist/public-http-probe-CyMDrQ3c.mjs +0 -61
- package/dist/server-expo-CeILEu86.mjs +0 -2
- package/dist/sim-pool-KaIsp2Ft.mjs +0 -723
- package/dist/spawn-entry-nCE6m770.mjs +0 -14
- package/dist/workspace-state-DF2gCFhx.mjs +0 -169
|
@@ -1,32 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as getExecutor } from "./exec-
|
|
3
|
-
import { r as createNdjsonWriter } from "./ndjson-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { a as detectIsExpo, i as detectBundleId, n as appProjectProblem, o as findProjectRoot, t as NO_PROJECT_REFUSAL } from "./project-
|
|
7
|
-
import { n as MODE_EXPO, p as writeWorkspaceLaunch, t as MODE_BARE } from "./state-
|
|
8
|
-
import {
|
|
9
|
-
import { n as
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { n as
|
|
17
|
-
import {
|
|
18
|
-
import { c as clearOtherUserApps, h as iosAppProcess, m as installIosApp, r as DEFAULT_METRO_PORT, u as devClientUrl, v as launchIosApp } from "./app-install-
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import { a as
|
|
22
|
-
import { a as
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import { n as
|
|
26
|
-
import { t as
|
|
27
|
-
import {
|
|
28
|
-
import { a as
|
|
29
|
-
import { a as
|
|
1
|
+
import { L as deviceSlotFileKey, R as deviceSlotKey, V as parseDeviceSlotOption, W as validateDeviceSlot, f as getProject, k as ownership_claim_exports, l as getConcurrencyLimits, w as upsertProject } from "./config-BEq0Qw_a.mjs";
|
|
2
|
+
import { t as getExecutor } from "./exec-DK8KaVHK.mjs";
|
|
3
|
+
import { r as createNdjsonWriter } from "./ndjson-CDY9IkVC.mjs";
|
|
4
|
+
import { O as workspaceDir, c as signalProcessTree, h as recordWorkspaceUse, i as pidExists, j as workspaceLogsDir, m as readWorkspaceState, s as resolveProjectMetro, y as writeWorkspaceState } from "./metro-BWLOJ_Wr.mjs";
|
|
5
|
+
import { D as makeTemporaryDirectory, O as removeTemporaryEntry, s as gitCommonDir, y as repoRoot } from "./worktree-BlizKDpZ.mjs";
|
|
6
|
+
import { a as detectIsExpo, i as detectBundleId, n as appProjectProblem, o as findProjectRoot, t as NO_PROJECT_REFUSAL } from "./project-BXZzOABt.mjs";
|
|
7
|
+
import { n as MODE_EXPO, p as writeWorkspaceLaunch, t as MODE_BARE } from "./state-WGdIbi_d.mjs";
|
|
8
|
+
import { t as withWorkspaceProcessLock } from "./workspace-process-lock-BXA96myD.mjs";
|
|
9
|
+
import { _ as stepTimer, c as launchErrorReport, g as stepClock, h as shortUdid, i as formatDuration, l as phaseLine, m as shortHash, n as appReadinessMessage, v as launchErrorPreview } from "./command-output-D5z2_bcF.mjs";
|
|
10
|
+
import { A as resolveBuild, C as fingerprintDiffRecord, D as providerDownloadPath, E as prepareProviderDownloadDir, N as untrackedMissLine, O as providerUploadOutcome, P as untrackedNativeFiles, S as filesystemBuildCapability, T as fingerprintProject, _ as waitForBuild, b as describeFingerprintMiss, g as releaseBuildLock, j as storeBuild, k as refingerprintAfterMutation, m as acquireBuildLock, v as waitForSharedBuild, w as fingerprintDiffSuffix, y as buildCacheKey } from "./device-lease-CbEaIk7b.mjs";
|
|
11
|
+
import { n as NO_BUILD_PROGRESS, s as startBuildProgress } from "./build-progress-BXx-ZBe4.mjs";
|
|
12
|
+
import { A as resolveCacheProviderConfig, E as publicUrlSetting, I as tunnelModeSetting, L as unknownSettingKeys, P as settingShapeErrors, S as metroWarmupUrlSetting, U as optimizationBuildProfile, V as artifactCachePolicy, W as resolveOptimizations, _ as iosSigningIdentitySha1SettingError, a as SETTING_SHAPE_REMEDY, d as cacheProviderSettingError, f as iosLanHostSetting, g as iosSigningIdentitySha1Setting, h as iosSigningIdentitySettingError, j as resolveSettings, k as remoteIosSetting, m as iosSigningIdentitySetting, p as iosLanHostSettingError, r as REMOTE_DEVICE_BACKENDS, z as detectProviders } from "./settings-DOugPlPz.mjs";
|
|
13
|
+
import { h as POOL_SETTING_REMEDY, y as parkedMaxSetting } from "./ownership-DZjdx8Gq.mjs";
|
|
14
|
+
import { D as parseIosSimulatorApp, f as listIosRuntimes } from "./ios-B2Fpqvlb.mjs";
|
|
15
|
+
import { a as acquireBuildSlot, s as releaseBuildSlot } from "./in-use-CjUluqIX.mjs";
|
|
16
|
+
import { n as verifyCollectorOwnership } from "./ownership-D2xbLVoz.mjs";
|
|
17
|
+
import { A as UPLOAD_TIMEOUT_MS, B as resolveRemote, F as isEasAuthFailureText, I as loadProjectProvider, M as checkEasAuth, N as easAuthNote, O as gateMetroOrigin, P as exitAfterFlush, V as uploadRemote, a as ensureMetroReachable, j as cacheLevel, k as RESOLVE_TIMEOUT_MS, l as remoteIosDeps, n as binOnPath, o as ensureRemoteBootOwned, r as bundleEntryPoint, u as resolveRemoteContext, w as ownedSessionName, z as resolveEasCliBin } from "./device-remote-Dy1jGj3U.mjs";
|
|
18
|
+
import { c as clearOtherUserApps, h as iosAppProcess, m as installIosApp, r as DEFAULT_METRO_PORT, u as devClientUrl, v as launchIosApp } from "./app-install-CrJ6t_bv.mjs";
|
|
19
|
+
import { c as readMetroRecords, d as verifyLaunch, f as verifyReleaseLaunch, i as RELEASE_VERIFY_WAIT_MS, l as unverifiedLaunchLines, n as LAUNCH_FATAL, o as isBundleProof, r as LAUNCH_UNVERIFIED, s as readCollectorRecords, t as LAUNCH_BUNDLING } from "./launch-verify-CQS_Kg-C.mjs";
|
|
20
|
+
import { c as unknownIosRuntimeRefusal, d as isEasBuildFailure, f as resolveEasDevelopmentBuild, r as checkDeviceCapacity, s as unknownIosDeviceTypeRefusal, u as easDeviceBuildRemedy } from "./simslim-Ca3487H6.mjs";
|
|
21
|
+
import { a as lostLine, c as releaseLeaseOnSignal, i as leaseExpiryText, l as runLease, n as DEBUG_VERIFY_STEP_MS, o as lostRefusal, r as acquireRunLease, s as parseDeviceWait, t as selectFromPool, u as waitFlagConflict } from "./device-pool-Di8Q-9Ro.mjs";
|
|
22
|
+
import { _ as isPhysicalDeviceRequest, a as swapJsBundle, b as warmMetro, c as runPrebuild, d as ensureOwnedDevice, g as ensureWorkspaceStorageSafely, h as ensureDevServer, l as staleNativeDirRefusal, m as clearIosAdoptionPending, n as pickDevClientScheme, o as planPrebuild, r as schemesFromInfoPlist, s as recordPrebuild, t as devClientScheme, u as ensureBooted, v as launchOutcomeRecord, y as sleep } from "./dev-client-92U593KT.mjs";
|
|
23
|
+
import { t as budgetGate } from "./budget-BP4jZZL4.mjs";
|
|
24
|
+
import { f as spawnEntry, s as startDevServer } from "./start-F9gv5dcC.mjs";
|
|
25
|
+
import { a as statsProjectKey, i as recordRunStats, n as readRunEstimates, t as createRunRecorder } from "./stats-BAgJaLA4.mjs";
|
|
26
|
+
import { a as compilationCacheActivityLine, c as readBundleExecutable, l as readBundleId, p as describeDiagnostic, r as buildIos, s as discoverXcodeProject, t as COMPILATION_CACHE_NOT_RUN, u as resolveScheme } from "./xcode-B2tBkf0m.mjs";
|
|
27
|
+
import { n as nativeRunCommand, t as launchSlotScope } from "./slot-launch-C5cg0fmk.mjs";
|
|
28
|
+
import { a as printNativeCrashReport, n as IOS_CRASH_REPORT_RETRY, o as simulatorConsolePaths, r as captureNativeCrashes, t as errorDiagnostics } from "./error-diagnostics-xxWKNO3-.mjs";
|
|
29
|
+
import { a as iosPoolCandidates, c as listIosDevices, d as verifyIosDeviceReleaseLaunch, i as iosDeviceProcess, l as localNetworkPending, n as installIosDeviceApp, o as iosPoolNoCandidatesRefusal, r as iosDeviceBounds, s as isWirelessIosDevice, t as awaitIosDeviceLaunch, u as resolveIosPhysicalDevice } from "./ios-device-CtRdEVjx.mjs";
|
|
30
|
+
import { a as runPodInstall, n as podsAreStale, r as readPodState } from "./deps-DP4eWqea.mjs";
|
|
30
31
|
import { existsSync, mkdirSync, mkdtempSync, openSync, rmSync, writeFileSync } from "node:fs";
|
|
31
32
|
import { InvalidArgumentError } from "commander";
|
|
32
33
|
import { basename, join } from "node:path";
|
|
@@ -250,7 +251,7 @@ function lastBuildRecord({ fingerprint = null, cacheKey = null, cacheHit = false
|
|
|
250
251
|
if (errorCode) record.errorCode = errorCode;
|
|
251
252
|
return record;
|
|
252
253
|
}
|
|
253
|
-
function iosFacts({ slot, udid, deviceName, deviceType = null, runtime = null, fingerprint, configuration = null, scheme = null, cacheKey, cacheHit, cacheSkipped = false, compilationCache = COMPILATION_CACHE_NOT_RUN, waitedForBuild = null, appPath, bundleId, installSkipped = false, metroPort, logsDir, durationMs, launched = true, webPreviewUrl = null, lease }) {
|
|
254
|
+
function iosFacts({ slot, udid, deviceName, deviceType = null, runtime = null, fingerprint, configuration = null, scheme = null, cacheKey, cacheHit, cacheSkipped = false, compilationCache = COMPILATION_CACHE_NOT_RUN, waitedForBuild = null, appPath, bundleId, installSkipped = false, metroPort, logsDir, durationMs, launched = true, webPreviewUrl = null, lease, devServer = null }) {
|
|
254
255
|
return {
|
|
255
256
|
platform: "ios",
|
|
256
257
|
...slot && slot !== "default" ? { slot } : {},
|
|
@@ -277,7 +278,8 @@ function iosFacts({ slot, udid, deviceName, deviceType = null, runtime = null, f
|
|
|
277
278
|
logs: { dir: logsDir },
|
|
278
279
|
durationMs,
|
|
279
280
|
...webPreviewUrl ? { webPreviewUrl } : {},
|
|
280
|
-
...lease === void 0 ? {} : { lease }
|
|
281
|
+
...lease === void 0 ? {} : { lease },
|
|
282
|
+
...devServer ? { devServer } : {}
|
|
281
283
|
};
|
|
282
284
|
}
|
|
283
285
|
function writeLastBuild(root, record, { write = writeWorkspaceState } = {}) {
|
|
@@ -303,7 +305,7 @@ async function finishIosUpload(uploadPending, remote, phase, note) {
|
|
|
303
305
|
}
|
|
304
306
|
return false;
|
|
305
307
|
}
|
|
306
|
-
function reportIosResult({ slot, d, root, json, release, configuration, buildScheme = null, metroCheck, metroPort, logsDir, device, udid, appPath, bundleId, installSkipped, elapsed, startedAt, storeHash, storeKey, cacheHit, compilationCache, useBuildCache, waitedForBuild, launchState, launchWarning, providerName, closeWriter, webPreviewUrl, lease, recordRun }) {
|
|
308
|
+
function reportIosResult({ slot, d, root, json, release, configuration, buildScheme = null, metroCheck, metroPort, logsDir, device, udid, appPath, bundleId, installSkipped, elapsed, startedAt, storeHash, storeKey, cacheHit, compilationCache, useBuildCache, waitedForBuild, launchState, launchWarning, providerName, closeWriter, webPreviewUrl, lease, recordRun, reclaimed = [], devServer = null }) {
|
|
307
309
|
const durationMs = elapsed();
|
|
308
310
|
recordRun({
|
|
309
311
|
failed: false,
|
|
@@ -345,15 +347,19 @@ function reportIosResult({ slot, d, root, json, release, configuration, buildSch
|
|
|
345
347
|
durationMs,
|
|
346
348
|
launched: launchState,
|
|
347
349
|
webPreviewUrl,
|
|
348
|
-
lease
|
|
350
|
+
lease,
|
|
351
|
+
devServer
|
|
349
352
|
});
|
|
350
|
-
if (json) console.log(JSON.stringify(
|
|
353
|
+
if (json) console.log(JSON.stringify(reclaimed.length ? {
|
|
354
|
+
...facts,
|
|
355
|
+
reclaimed
|
|
356
|
+
} : facts));
|
|
351
357
|
else {
|
|
352
358
|
const summary = `${launchWarning ? "WARNING" : "OK"}: ${bundleId} on ${deviceLabel(device, udid)}, ` + (release ? `${configuration} (embedded JS, no Metro)` : `Metro port ${metroPort}`) + ` (${cacheDescription(cacheHit, providerName)}, ${formatDuration(durationMs)})`;
|
|
353
359
|
const outcome = launchWarning ? chalk.yellow(`${summary} -- ${launchWarning}`) : launchState === "unverified" ? chalk.yellow(`${summary} -- launch UNVERIFIED`) : launchState === "bundling" ? chalk.green(`${summary} -- bundle requested, still building`) : chalk.green(summary);
|
|
354
360
|
const deviceName = device?.deviceName ?? device?.name ?? udid;
|
|
355
361
|
const cacheResult = useBuildCache ? cacheDescription(cacheHit, providerName) : "bypassed; built";
|
|
356
|
-
const metroResult = release ? `embedded (${configuration})` : !metroCheck ? `check skipped on port ${metroPort}` : launchState === "unverified" ? `state unverified on port ${metroPort}` : `running on port ${metroPort}`;
|
|
362
|
+
const metroResult = release ? `embedded (${configuration})` : !metroCheck ? `check skipped on port ${metroPort}` : launchState === "unverified" ? `state unverified on port ${metroPort}` : `running on port ${metroPort}${devServer ? ` (started: ${devServer.reason})` : ""}`;
|
|
357
363
|
console.log([
|
|
358
364
|
outcome,
|
|
359
365
|
phaseLine("device", `${deviceName} (${udid})`),
|
|
@@ -762,9 +768,19 @@ async function acquireIosArtifact({ root, logFile, udid, remoteDestination, devi
|
|
|
762
768
|
note(chalk.yellow(phaseLine("build", `could not take a build slot: ${e?.message || e}; building anyway`)));
|
|
763
769
|
}
|
|
764
770
|
const mutatingSteps = [];
|
|
765
|
-
|
|
771
|
+
const prebuild = d.planPrebuild(root, "ios", {
|
|
772
|
+
isExpo,
|
|
773
|
+
fingerprint,
|
|
774
|
+
sources: fingerprintSources
|
|
775
|
+
});
|
|
776
|
+
if (prebuild === "refuse") fail({
|
|
777
|
+
...staleNativeDirRefusal("ios"),
|
|
778
|
+
build: buildFailure
|
|
779
|
+
});
|
|
780
|
+
if (prebuild === "generate" || prebuild === "regenerate") {
|
|
766
781
|
step("prebuild");
|
|
767
|
-
|
|
782
|
+
recordPrebuild(root, "ios", null);
|
|
783
|
+
const result = await d.runPrebuild(root, "ios", logWriter(), { clean: prebuild === "regenerate" });
|
|
768
784
|
if (result?.failed) {
|
|
769
785
|
phase("prebuild", "FAILED");
|
|
770
786
|
fail({
|
|
@@ -775,9 +791,21 @@ async function acquireIosArtifact({ root, logFile, udid, remoteDestination, devi
|
|
|
775
791
|
build: buildFailure
|
|
776
792
|
});
|
|
777
793
|
}
|
|
778
|
-
phase("prebuild",
|
|
794
|
+
phase("prebuild", `${prebuild === "generate" ? "ios/ absent -> generated" : "ios/ not generated from this fingerprint -> regenerated with --clean"} (${formatDuration(result?.durationMs ?? 0)})`);
|
|
779
795
|
mutatingSteps.push("prebuild");
|
|
780
796
|
}
|
|
797
|
+
if (isExpo && buildScheme !== void 0) {
|
|
798
|
+
const project = d.discoverXcodeProject(root);
|
|
799
|
+
if (project.error) fail({
|
|
800
|
+
...project.error,
|
|
801
|
+
build: buildFailure
|
|
802
|
+
});
|
|
803
|
+
const schemeError = d.resolveScheme(project, { scheme: buildScheme }).error;
|
|
804
|
+
if (schemeError) fail({
|
|
805
|
+
...schemeError,
|
|
806
|
+
build: buildFailure
|
|
807
|
+
});
|
|
808
|
+
}
|
|
781
809
|
const podState = d.readPodState(root);
|
|
782
810
|
const action = podAction(podState, d.podsAreStale(podState.lockText, podState.manifestText));
|
|
783
811
|
if (action.install) {
|
|
@@ -806,6 +834,7 @@ async function acquireIosArtifact({ root, logFile, udid, remoteDestination, devi
|
|
|
806
834
|
previousHash: fingerprint,
|
|
807
835
|
fingerprint: d.fingerprintProject
|
|
808
836
|
});
|
|
837
|
+
if (after && mutatingSteps.includes("prebuild")) recordPrebuild(root, "ios", after.hash);
|
|
809
838
|
if (!after) {
|
|
810
839
|
storeHash = null;
|
|
811
840
|
storeKey = null;
|
|
@@ -1567,6 +1596,7 @@ const DEFAULT_DEPS = {
|
|
|
1567
1596
|
getProject,
|
|
1568
1597
|
upsertProject,
|
|
1569
1598
|
checkDeviceCapacity,
|
|
1599
|
+
budgetGate,
|
|
1570
1600
|
ensureOwnedDevice,
|
|
1571
1601
|
listIosRuntimes,
|
|
1572
1602
|
ensureBooted,
|
|
@@ -1576,7 +1606,7 @@ const DEFAULT_DEPS = {
|
|
|
1576
1606
|
ensureRemoteBootOwned,
|
|
1577
1607
|
detectProviders,
|
|
1578
1608
|
resolveProjectMetro,
|
|
1579
|
-
|
|
1609
|
+
startDevServer,
|
|
1580
1610
|
warmMetro,
|
|
1581
1611
|
readWorkspaceState,
|
|
1582
1612
|
pidExists,
|
|
@@ -1597,7 +1627,7 @@ const DEFAULT_DEPS = {
|
|
|
1597
1627
|
resolveEasCliBin,
|
|
1598
1628
|
resolveRemote,
|
|
1599
1629
|
uploadRemote,
|
|
1600
|
-
|
|
1630
|
+
planPrebuild,
|
|
1601
1631
|
runPrebuild,
|
|
1602
1632
|
readPodState,
|
|
1603
1633
|
podsAreStale,
|
|
@@ -1822,10 +1852,14 @@ function recordIosReloadTarget({ d, root, physical, remoteDevice, bundleId, udid
|
|
|
1822
1852
|
note(chalk.yellow(phaseLine("state", `could not record iOS launch: ${error?.message || error}`)));
|
|
1823
1853
|
}
|
|
1824
1854
|
}
|
|
1825
|
-
function
|
|
1826
|
-
return
|
|
1855
|
+
function installFailureRemedy(remoteDevice) {
|
|
1856
|
+
return remoteDevice?.failureRemedy() ?? "Check that the simulator is booted and that the app was built for the simulator SDK.";
|
|
1857
|
+
}
|
|
1858
|
+
function launchFailureRemedy(remoteDevice, udid, bundleId, logFile) {
|
|
1859
|
+
if (remoteDevice) return remoteDevice.failureRemedy();
|
|
1860
|
+
return `If the simulator timed out, run \`stim doctor --platform ios\` and resolve any reported host memory pressure before retrying. Otherwise run \`xcrun simctl launch --terminate-running-process --console ${udid} ${bundleId}\` to see what the app reports, and check ${logFile}.`;
|
|
1827
1861
|
}
|
|
1828
|
-
async function finishIosRun({ artifact, d, root, slot, json, release, configuration, buildScheme, isExpo, metroCheck, metroPort, logsDir, logFile, device, udid, physical, wireless, lanAddress, lanOriginUrl, remoteDevice, bootPromise, bootDuration, fail, phase, note, logWriter, elapsed, startedAt, closeWriter, lease, releaseLease, recordRun, enterPhase }) {
|
|
1862
|
+
async function finishIosRun({ artifact, d, root, slot, json, release, configuration, buildScheme, isExpo, metroCheck, metroPort, logsDir, logFile, device, udid, physical, wireless, lanAddress, lanOriginUrl, remoteDevice, bootPromise, bootDuration, fail, phase, note, logWriter, elapsed, startedAt, closeWriter, lease, releaseLease, recordRun, reclaimed, devServer, enterPhase }) {
|
|
1829
1863
|
const { path: appPath, bundleId: initialBundleId, failureFields: buildFailure, cache } = artifact;
|
|
1830
1864
|
const { hit: cacheHit, providerName, readEnabled: useBuildCache, waitedForBuild, compilation: compilationCache } = cache;
|
|
1831
1865
|
const storeHash = cache.identity?.fingerprint ?? null;
|
|
@@ -2020,7 +2054,7 @@ async function finishIosRun({ artifact, d, root, slot, json, release, configurat
|
|
|
2020
2054
|
if (installed?.failed) return fail({
|
|
2021
2055
|
code: installed.code || "STIM_INSTALL_FAILED",
|
|
2022
2056
|
message: installed.reason,
|
|
2023
|
-
remedy:
|
|
2057
|
+
remedy: installFailureRemedy(remoteDevice),
|
|
2024
2058
|
build: {
|
|
2025
2059
|
...buildFailure,
|
|
2026
2060
|
appPath,
|
|
@@ -2081,7 +2115,7 @@ async function finishIosRun({ artifact, d, root, slot, json, release, configurat
|
|
|
2081
2115
|
return fail({
|
|
2082
2116
|
code: launched.code || "STIM_LAUNCH_FAILED",
|
|
2083
2117
|
message: launched.reason,
|
|
2084
|
-
remedy:
|
|
2118
|
+
remedy: launchFailureRemedy(remoteDevice, udid, bundleId, logFile),
|
|
2085
2119
|
build: {
|
|
2086
2120
|
...buildFailure,
|
|
2087
2121
|
appPath,
|
|
@@ -2194,7 +2228,9 @@ async function finishIosRun({ artifact, d, root, slot, json, release, configurat
|
|
|
2194
2228
|
closeWriter,
|
|
2195
2229
|
webPreviewUrl: remoteDevice?.webPreviewUrl() ?? null,
|
|
2196
2230
|
lease: physical ? leaseFacts : void 0,
|
|
2197
|
-
recordRun
|
|
2231
|
+
recordRun,
|
|
2232
|
+
reclaimed,
|
|
2233
|
+
devServer
|
|
2198
2234
|
}),
|
|
2199
2235
|
uploadsAbandoned
|
|
2200
2236
|
};
|
|
@@ -2211,7 +2247,7 @@ function iosCommand(program) {
|
|
|
2211
2247
|
registerIos(program);
|
|
2212
2248
|
}
|
|
2213
2249
|
function registerIos(program, deps = {}) {
|
|
2214
|
-
program.command("ios").description("Build (or restore from the fingerprint cache), install and launch this workspace's app on its owned simulator, wired to the reserved Metro port.
|
|
2250
|
+
program.command("ios").description("Build (or restore from the fingerprint cache), install and launch this workspace's app on its owned simulator, wired to the reserved Metro port. A Debug run starts the dev server when it is not running.").option("--eas-profile <name>", "Download a matching EAS development build; on a miss, print the build command without running it").option("--slot <name>", "Reusable device slot within this workspace (default: default)", parseDeviceSlotOption).option("--json", "Emit the facts as a single JSON line on stdout; every other line goes to stderr").option("--scheme <name>", "Shared Xcode app scheme to build; overrides automatic scheme selection, not the app URL scheme").option("--no-metro-check", "Skip the \"is this workspace's dev server running?\" check: do not start it, and build anyway").option("--no-build-cache", "Build fresh, ignoring cached artifacts (local and the project's build-cache provider); the fresh build still replaces the cache entry").option("--configuration <name>", "Xcode configuration to build (e.g. Release). A non-Debug configuration embeds the JS bundle and skips Metro entirely. Overrides the ios.configuration setting. Default: Debug").option("--device-type <name>", "Simulator model to create this workspace's owned sim as, exactly as `xcrun simctl list devicetypes` names it (e.g. \"iPad Pro 13-inch (M5)\"). Overrides the ios.deviceType setting for this invocation. A model no installed runtime can create refuses with STIM_BAD_ARG and prints the models they do offer.").option("--runtime <version>", "Simulator runtime to create this workspace's owned sim on, as a version (\"18.5\") or a runtime's full name (\"iOS 18.5\"); nothing else matches. Overrides the ios.runtime setting for this invocation. An unknown version refuses with STIM_BAD_ARG and prints the installed runtimes.").option("--simulator-app <app>", "Open the owned simulator in xcode, siniulator, or stim-desktop for this run, overriding the machine iosSimulatorApp setting. Also opens an already running simulator; local simulators only.").option("--device [udid]", "Build the iphoneos slice for a connected iPhone, install it, and launch it, instead of using this workspace's owned simulator. The phone can be cabled or paired over Wi-Fi. With no UDID, the first cabled device this workspace can lease is used, waiting for one that is busy; a Wi-Fi device is used only when no cabled one is connected and ready. In Debug the app is wired to this workspace's Metro over the LAN. Stim never creates, boots, or deletes a physical device.").option("--remote <backend>", "Install and launch on a remote device with proxy or EAS. Builds are local unless --eas-profile selects an existing EAS build.", (value) => {
|
|
2215
2251
|
if (REMOTE_DEVICE_BACKENDS.includes(value)) return value;
|
|
2216
2252
|
throw new InvalidArgumentError(`expected one of: ${REMOTE_DEVICE_BACKENDS.join(", ")}`);
|
|
2217
2253
|
}).option("--wait <seconds>", "How long to wait for another workspace to release the phone it leases, before refusing with STIM_DEVICE_BUSY (default 60, 0 refuses at once). Only with --device.").option("--no-wait", "Install on a phone another workspace leases instead of waiting: this run takes no lease and, when both workspaces build the same app id, the install terminates the holder's running app. Only with --device.").action(async (opts) => {
|
|
@@ -2250,7 +2286,7 @@ function explicitSchemeRefusal(root, scheme, isExpo, d) {
|
|
|
2250
2286
|
message: "--scheme must name a non-empty shared Xcode app scheme.",
|
|
2251
2287
|
remedy: "Pass the exact scheme name shown by xcodebuild -list."
|
|
2252
2288
|
};
|
|
2253
|
-
if (
|
|
2289
|
+
if (isExpo) return null;
|
|
2254
2290
|
const project = d.discoverXcodeProject(root);
|
|
2255
2291
|
if (project.error) return project.error;
|
|
2256
2292
|
return d.resolveScheme(project, { scheme }).error ?? null;
|
|
@@ -2374,6 +2410,7 @@ async function runIos(opts = {}, overrides = {}, progress = NO_BUILD_PROGRESS) {
|
|
|
2374
2410
|
});
|
|
2375
2411
|
const recordRun = stats.record;
|
|
2376
2412
|
let compilationCache = COMPILATION_CACHE_NOT_RUN;
|
|
2413
|
+
let reclaimed = [];
|
|
2377
2414
|
const fail = ({ code, message, remedy = null, lines = [], logPath = null, build = null, lease }) => {
|
|
2378
2415
|
releaseLease();
|
|
2379
2416
|
if (message) note(chalk.red(phaseLine("error", message)));
|
|
@@ -2397,7 +2434,8 @@ async function runIos(opts = {}, overrides = {}, progress = NO_BUILD_PROGRESS) {
|
|
|
2397
2434
|
message: message ?? null,
|
|
2398
2435
|
remedy: remedy ?? null,
|
|
2399
2436
|
...compilationCache.status === "not-run" ? {} : { compilationCache },
|
|
2400
|
-
...lease === void 0 ? {} : { lease }
|
|
2437
|
+
...lease === void 0 ? {} : { lease },
|
|
2438
|
+
...reclaimed.length ? { reclaimed } : {}
|
|
2401
2439
|
}));
|
|
2402
2440
|
writer?.close?.();
|
|
2403
2441
|
process.exitCode = 1;
|
|
@@ -2514,23 +2552,12 @@ async function runIos(opts = {}, overrides = {}, progress = NO_BUILD_PROGRESS) {
|
|
|
2514
2552
|
listRuntimes: d.listIosRuntimes
|
|
2515
2553
|
});
|
|
2516
2554
|
if (modelRefusal) return fail(modelRefusal);
|
|
2517
|
-
const
|
|
2555
|
+
const budget = await d.budgetGate({
|
|
2518
2556
|
root,
|
|
2519
|
-
|
|
2520
|
-
profile: opts.easProfile,
|
|
2521
|
-
note,
|
|
2522
|
-
isExpo,
|
|
2523
|
-
physical,
|
|
2524
|
-
selectors: [opts.scheme, opts.configuration],
|
|
2525
|
-
buildCache: opts.buildCache
|
|
2526
|
-
});
|
|
2527
|
-
if (isEasBuildFailure(easBuild)) return fail(easBuild);
|
|
2528
|
-
const registerProject = () => d.upsertProject(root, {
|
|
2529
|
-
bundleId: d.detectBundleId(root) ?? void 0,
|
|
2530
|
-
isExpo
|
|
2557
|
+
note
|
|
2531
2558
|
});
|
|
2532
|
-
|
|
2533
|
-
|
|
2559
|
+
reclaimed = budget.reclaimed;
|
|
2560
|
+
if (budget.refusal) return fail(budget.refusal);
|
|
2534
2561
|
let remoteDevice = null;
|
|
2535
2562
|
if (remoteBackend) {
|
|
2536
2563
|
const resolved = await d.resolveRemoteContext({
|
|
@@ -2553,6 +2580,23 @@ async function runIos(opts = {}, overrides = {}, progress = NO_BUILD_PROGRESS) {
|
|
|
2553
2580
|
launchIosApp: remoteDevice.launchIosApp
|
|
2554
2581
|
};
|
|
2555
2582
|
}
|
|
2583
|
+
const easBuild = await d.resolveEasDevelopmentBuild({
|
|
2584
|
+
root,
|
|
2585
|
+
platform: "ios",
|
|
2586
|
+
profile: opts.easProfile,
|
|
2587
|
+
note,
|
|
2588
|
+
isExpo,
|
|
2589
|
+
physical,
|
|
2590
|
+
selectors: [opts.scheme, opts.configuration],
|
|
2591
|
+
buildCache: opts.buildCache
|
|
2592
|
+
});
|
|
2593
|
+
if (isEasBuildFailure(easBuild)) return fail(easBuild);
|
|
2594
|
+
const registerProject = () => d.upsertProject(root, {
|
|
2595
|
+
bundleId: d.detectBundleId(root) ?? void 0,
|
|
2596
|
+
isExpo
|
|
2597
|
+
});
|
|
2598
|
+
if (remoteBackend !== "eas") registerProject();
|
|
2599
|
+
const proj = d.getProject(root);
|
|
2556
2600
|
const limits = d.getConcurrencyLimits();
|
|
2557
2601
|
let physicalDevice = null;
|
|
2558
2602
|
let wireless = false;
|
|
@@ -2613,6 +2657,7 @@ async function runIos(opts = {}, overrides = {}, progress = NO_BUILD_PROGRESS) {
|
|
|
2613
2657
|
let metroPort = proj?.metroPort ?? null;
|
|
2614
2658
|
let lanAddress = null;
|
|
2615
2659
|
let lanOriginUrl = null;
|
|
2660
|
+
let devServer = null;
|
|
2616
2661
|
if (!await resolveMetroPort()) return null;
|
|
2617
2662
|
let device;
|
|
2618
2663
|
if (physicalDevice) device = {
|
|
@@ -2655,34 +2700,28 @@ async function runIos(opts = {}, overrides = {}, progress = NO_BUILD_PROGRESS) {
|
|
|
2655
2700
|
metroPort = null;
|
|
2656
2701
|
phase("metro", `skipped (${configuration}: the JS bundle is embedded, no dev server is used)`);
|
|
2657
2702
|
} else if (metroCheck) {
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2703
|
+
const gate = await ensureDevServer({
|
|
2704
|
+
root,
|
|
2705
|
+
port: metroPort,
|
|
2706
|
+
settings,
|
|
2707
|
+
remote: Boolean(remoteDevice),
|
|
2708
|
+
note,
|
|
2709
|
+
resolve: d.resolveProjectMetro,
|
|
2710
|
+
start: d.startDevServer,
|
|
2711
|
+
readState: d.readWorkspaceState
|
|
2712
|
+
});
|
|
2713
|
+
reclaimed = [...reclaimed, ...gate.reclaimed];
|
|
2714
|
+
if (!gate.ok) {
|
|
2670
2715
|
fail({
|
|
2671
|
-
code:
|
|
2672
|
-
message:
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
supervisor,
|
|
2676
|
-
supervisorAlive
|
|
2677
|
-
}),
|
|
2678
|
-
remedy: noMetroRemedy({
|
|
2679
|
-
port: metroPort,
|
|
2680
|
-
supervisor,
|
|
2681
|
-
supervisorAlive
|
|
2682
|
-
})
|
|
2716
|
+
code: gate.code,
|
|
2717
|
+
message: gate.message,
|
|
2718
|
+
remedy: gate.remedy,
|
|
2719
|
+
lines: gate.lines
|
|
2683
2720
|
});
|
|
2684
2721
|
return false;
|
|
2685
2722
|
}
|
|
2723
|
+
metroPort = gate.port;
|
|
2724
|
+
devServer = gate.devServer;
|
|
2686
2725
|
} else if (!metroPort) {
|
|
2687
2726
|
metroPort = DEFAULT_METRO_PORT;
|
|
2688
2727
|
note(chalk.yellow(`No Metro port is reserved for this workspace; wiring the app to ${metroPort}.`));
|
|
@@ -2889,6 +2928,8 @@ async function runIos(opts = {}, overrides = {}, progress = NO_BUILD_PROGRESS) {
|
|
|
2889
2928
|
lease: leaseHandle,
|
|
2890
2929
|
releaseLease,
|
|
2891
2930
|
recordRun,
|
|
2931
|
+
reclaimed,
|
|
2932
|
+
devServer,
|
|
2892
2933
|
enterPhase: progress.step
|
|
2893
2934
|
});
|
|
2894
2935
|
} finally {
|
|
@@ -2905,4 +2946,4 @@ async function runIos(opts = {}, overrides = {}, progress = NO_BUILD_PROGRESS) {
|
|
|
2905
2946
|
}
|
|
2906
2947
|
}
|
|
2907
2948
|
//#endregion
|
|
2908
|
-
export { appNameFromPath, buildLogFile, cacheDescription, collectorEntry, iosCommand as default, devClientScheme, deviceLabel, ensureWorkspaceStorageSafely, formatDuration,
|
|
2949
|
+
export { appNameFromPath, buildLogFile, cacheDescription, collectorEntry, iosCommand as default, devClientScheme, deviceLabel, ensureWorkspaceStorageSafely, formatDuration, iosConfigurationSetting, iosFacts, isReleaseConfiguration, lastBuildRecord, phaseLine, pickDevClientScheme, podAction, registerIos, replaceCollector, resolveConfiguration, resolveDeviceType, resolveRuntime, schemesFromInfoPlist, shortHash, shortUdid, writeLastBuild };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as getExecutor } from "./exec-
|
|
2
|
-
import { n as TOOL_ERROR_PREFIX } from "./ios-device-
|
|
3
|
-
import { i as INSTALL_ERROR } from "./app-install-
|
|
1
|
+
import { t as getExecutor } from "./exec-DK8KaVHK.mjs";
|
|
2
|
+
import { n as TOOL_ERROR_PREFIX } from "./ios-device-BiOsSVzd.mjs";
|
|
3
|
+
import { i as INSTALL_ERROR } from "./app-install-CrJ6t_bv.mjs";
|
|
4
4
|
import { mkdtempSync, readFileSync, rmSync } from "node:fs";
|
|
5
5
|
import { join } from "node:path";
|
|
6
6
|
import { tmpdir } from "node:os";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as getExecutor } from "./exec-
|
|
2
|
-
import { o as readNdjsonGenerations } from "./ndjson-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { d as deviceShellArg, n as ANDROID_DISABLE_AUTO_LAUNCH_EXTRA, o as androidAppProcess } from "./app-install-
|
|
1
|
+
import { t as getExecutor } from "./exec-DK8KaVHK.mjs";
|
|
2
|
+
import { o as readNdjsonGenerations } from "./ndjson-CDY9IkVC.mjs";
|
|
3
|
+
import { s as isAppLaunchError } from "./command-output-D5z2_bcF.mjs";
|
|
4
|
+
import { t as DEV_MENU_LAUNCH_ARGS } from "./ios-device-BiOsSVzd.mjs";
|
|
5
|
+
import { d as deviceShellArg, n as ANDROID_DISABLE_AUTO_LAUNCH_EXTRA, o as androidAppProcess } from "./app-install-CrJ6t_bv.mjs";
|
|
6
6
|
import { join } from "node:path";
|
|
7
7
|
//#region src/engine/app-readiness.ts
|
|
8
8
|
const APP_READINESS_TIMEOUT_MS = 3e4;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as SOURCES, t as LEVELS } from "./ndjson-
|
|
3
|
-
import {
|
|
4
|
-
import { o as findProjectRoot } from "./project-
|
|
5
|
-
import { f as refuseNoProject, v as launchErrorPreview } from "./command-output-
|
|
6
|
-
import { i as captureWorkspaceCrashes, t as errorDiagnostics } from "./error-diagnostics-
|
|
7
|
-
import { a as fileSizes, c as parseSince, i as compileGrep, l as queryLogs, o as followLogs, r as buildCriteria, s as logFiles, u as readLogRecords } from "./logs-query-Cqma3WIu.mjs";
|
|
1
|
+
import { V as parseDeviceSlotOption, g as loadConfig$1, h as isPathPrefix } from "./config-BEq0Qw_a.mjs";
|
|
2
|
+
import { n as SOURCES, t as LEVELS } from "./ndjson-CDY9IkVC.mjs";
|
|
3
|
+
import { j as workspaceLogsDir, m as readWorkspaceState$1 } from "./metro-BWLOJ_Wr.mjs";
|
|
4
|
+
import { o as findProjectRoot } from "./project-BXZzOABt.mjs";
|
|
5
|
+
import { f as refuseNoProject, v as launchErrorPreview } from "./command-output-D5z2_bcF.mjs";
|
|
6
|
+
import { i as captureWorkspaceCrashes, t as errorDiagnostics } from "./error-diagnostics-xxWKNO3-.mjs";
|
|
8
7
|
import { realpathSync } from "node:fs";
|
|
8
|
+
import { buildCriteria, compileGrep, fileSizes, followLogs, logFiles, parseSince, queryLogs, readLogRecords } from "@stim-cli/core/state";
|
|
9
9
|
import { relative, sep } from "node:path";
|
|
10
10
|
import chalk from "chalk";
|
|
11
11
|
//#region src/commands/logs.ts
|
|
@@ -70,7 +70,7 @@ function nearestRegisteredLogsProject(root, candidates) {
|
|
|
70
70
|
})[0] ?? null;
|
|
71
71
|
}
|
|
72
72
|
function registeredDescendantWithLogs(root) {
|
|
73
|
-
const candidates = Object.keys(loadConfig()?.projects ?? {}).flatMap((path) => {
|
|
73
|
+
const candidates = Object.keys(loadConfig$1()?.projects ?? {}).flatMap((path) => {
|
|
74
74
|
try {
|
|
75
75
|
const canonical = realpathSync(path);
|
|
76
76
|
return logFiles(workspaceLogsDir(canonical)).length > 0 ? [canonical] : [];
|
|
@@ -157,7 +157,7 @@ function logsCommand(program) {
|
|
|
157
157
|
...query,
|
|
158
158
|
records: timeline
|
|
159
159
|
});
|
|
160
|
-
const supervisorPort = readWorkspaceState(root)?.supervisor?.port;
|
|
160
|
+
const supervisorPort = readWorkspaceState$1(root)?.supervisor?.port;
|
|
161
161
|
const records = opts.json ? rawRecords : await errorDiagnostics(rawRecords, {
|
|
162
162
|
root,
|
|
163
163
|
logsDir: dir,
|