stim 1.21.0 → 1.23.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/README.md +60 -7
- package/dist/{acquire-artifact-CD4lbiWE.mjs → acquire-artifact-ybouwJSR.mjs} +21 -3
- package/dist/{act-DHAw2A2S.mjs → act-DG54PWtJ.mjs} +298 -164
- package/dist/{activity-BzVfHSrY.mjs → activity-B5RtpFda.mjs} +33 -12
- package/dist/{agent-device-usage-output-zh1vhbLp.mjs → agent-device-usage-output-UJ5gC80l.mjs} +7 -7
- package/dist/{android-BLgbNqox.mjs → android-BoUJKbfz.mjs} +66 -52
- package/dist/{android-DUYkNF4u.mjs → android-C7sVmyI9.mjs} +160 -59
- package/dist/{android-CV_GCELZ.mjs → android-CHH4KLOR.mjs} +5 -5
- package/dist/{android-BEJ8Jpl7.mjs → android-DR5lZ2Az.mjs} +2 -2
- package/dist/android-cas-compiler.mjs +1 -1
- package/dist/{android-cas-Ct5b1xCK.mjs → android-cas-ngferVq2.mjs} +3 -3
- package/dist/{client-B7QVOlCr.d.mts → android-project-DVWyCbWU.d.mts} +145 -7
- package/dist/api.d.mts +132 -118
- package/dist/api.mjs +239 -42
- package/dist/{artifact-DAuZ-FNU.mjs → artifact-5RteZem7.mjs} +69 -40
- package/dist/{artifact-B8T3S5gi.mjs → artifact-Dwdo7k1E.mjs} +40 -35
- package/dist/artifact-platform-CXcmX_j3.mjs +27 -0
- package/dist/{browser-web-QQzVjz3O.mjs → browser-web-CeEVlGug.mjs} +187 -59
- package/dist/{budget-Bs6SxxzO.mjs → budget-DnPX3DXj.mjs} +830 -699
- package/dist/{build-CoPzQRNw.mjs → build-CqufZFqy.mjs} +34 -27
- package/dist/{build-cache-DmyR9Zzc.mjs → build-cache-Dv7RN200.mjs} +4 -4
- package/dist/{build-plan-CaFskB7_.mjs → build-plan-C8CIvRyi.mjs} +74 -14
- package/dist/{cache-manifest-DkkqguoK.mjs → cache-manifest-DSeQjt-Q.mjs} +1 -1
- package/dist/cache-manifest.mjs +1 -1
- package/dist/{ccache-BJRZ9pG3.mjs → ccache-RcAy92gH.mjs} +6 -6
- package/dist/{cdp-CWmIUMbw.mjs → cdp-3fwICjzi.mjs} +1 -1
- package/dist/{chrome-B6tfCta1.mjs → chrome-Bbw689-6.mjs} +1 -1
- package/dist/{cli-0DYf8QhQ.mjs → cli-D-J9fWGV.mjs} +20 -20
- package/dist/cli.mjs +1 -1
- package/dist/{client-UXD70ZbM.mjs → client-yyso1bwi.mjs} +218 -47
- package/dist/collector-run.d.mts +1 -1
- package/dist/collector-run.mjs +6 -6
- package/dist/{command-output-B1UrjZHL.mjs → command-output-Db8BqzxH.mjs} +1 -1
- package/dist/{config-CYcBF478.mjs → config-DlrsduwG.mjs} +17 -11
- package/dist/{created-devices-CqeBlrEn.mjs → created-devices-x9rN6bhs.mjs} +13 -3
- package/dist/{dependency-state-BbKQW83h.mjs → dependency-state-1I9KZT1Y.mjs} +2 -2
- package/dist/{detached-entry-DFRyG1_o.mjs → detached-entry-BwNEtIrP.mjs} +1 -1
- package/dist/{dev-client-UOeESKm6.mjs → dev-client-BnYSDiKa.mjs} +2 -2
- package/dist/{device-DCxH7_By.mjs → device-BvzPUBs3.mjs} +16 -16
- package/dist/{device-ExJq8Ei7.mjs → device-CCkWmkAA.mjs} +71 -14
- package/dist/{device-capacity-CMlqEcvw.mjs → device-capacity-CjaSdrhg.mjs} +9 -10
- package/dist/device-host-worker.mjs +25 -32
- package/dist/{device-ios-DRUeKaFV.mjs → device-ios-uOiEETX2.mjs} +39 -16
- package/dist/{device-lease-run-C8raGFoP.mjs → device-lease-run-BgwPHc6u.mjs} +5 -5
- package/dist/{device-pool-DMRpVX9a.mjs → device-pool-C-ptmZTa.mjs} +3 -3
- package/dist/{doctor-DTvaDOda.mjs → doctor-8sr2tFOL.mjs} +24 -37
- package/dist/{doctor-Dhqebm0q.mjs → doctor-D2SN3Ltx.mjs} +19 -16
- package/dist/doctor-fingerprint-DZLoYFVb.mjs +16 -0
- package/dist/doctor-fingerprint.mjs +1 -1
- package/dist/{doctor-BLHCYxzi.mjs → doctor-pxxvipYC.mjs} +1 -1
- package/dist/{doctor-watchman-Cv1F10Kj.mjs → doctor-watchman-sy_RNhFt.mjs} +5 -5
- package/dist/{eas-build-BomfRnFT.mjs → eas-build-CyjU5K7E.mjs} +4 -4
- package/dist/{eas-fallback-DJwZpy0c.mjs → eas-fallback-DV3Wytf1.mjs} +27 -18
- package/dist/{eas-session-ledger-op6A54yi.mjs → eas-session-ledger-BzzsX97d.mjs} +8 -7
- package/dist/{error-diagnostics-Bf0rZvG9.mjs → error-diagnostics-C6sVoeqO.mjs} +10 -10
- package/dist/{exec-_UbtCQcG.mjs → exec-DEoAhcze.mjs} +155 -47
- package/dist/{exec-H20xSg2T.d.mts → exec-DnYc4HGH.d.mts} +17 -4
- package/dist/{gc-_-dCXdyL.mjs → gc-CDoogxAI.mjs} +587 -313
- package/dist/gc-DLbzvTP2.mjs +3 -0
- package/dist/{guide-Yqwt2bd6.mjs → guide-BC37GcDG.mjs} +288 -59
- package/dist/{hosted-android-Bw-honsd.mjs → hosted-android-CkclQig_.mjs} +6 -6
- package/dist/{hosted-client-DB_gBPfY.mjs → hosted-client-ByuMMO5s.mjs} +4 -4
- package/dist/{hosted-ios-CUvOf4Vr.mjs → hosted-ios-DtYHeuYR.mjs} +1 -1
- package/dist/{hosted-logs-DL_P5AdN.mjs → hosted-logs-Br84qWy1.mjs} +5 -5
- package/dist/{hosted-macos-QI141yKk.mjs → hosted-macos-DdtYajZt.mjs} +21 -12
- package/dist/{hosted-native-Ksyjgzq-.mjs → hosted-native-UPI9zdZ4.mjs} +27 -14
- package/dist/{idle-BVeRGroT.d.mts → idle-C4cZ757K.d.mts} +3 -3
- package/dist/{idle-shutdown-DaKmZi0z.mjs → idle-shutdown-DO7oIRlc.mjs} +7 -7
- package/dist/ios-CDvlmUs7.d.mts +24 -0
- package/dist/{ios-ubFsBzwq.mjs → ios-DZZbNYlY.mjs} +59 -50
- package/dist/{ios-device-CXGP1bsD.mjs → ios-device-BXZ0c7Kb.mjs} +1 -1
- package/dist/{ios-device-CwFMehUS.mjs → ios-device-JC3uWM4K.mjs} +3 -3
- package/dist/{ios-CpByZy12.mjs → ios-hcBpnEGk.mjs} +81 -34
- package/dist/{ios-project-WuwwBdvW.mjs → ios-project-CVyNwjAF.mjs} +5 -5
- package/dist/{ios-signing-DTTIChGs.mjs → ios-signing-BtAffm0A.mjs} +2 -2
- package/dist/{ios-state-DvFX-K_l.mjs → ios-state-Dtw5K2aI.mjs} +1 -1
- package/dist/{ios-CQ68hG9s.mjs → ios-vbUOqGXu.mjs} +8 -8
- package/dist/{ios-qNJt4dFm.mjs → ios-xtlRHaeB.mjs} +1 -1
- package/dist/{js-swap-Cc1dttps.mjs → js-swap-C3QxUFJR.mjs} +7 -29
- package/dist/{launch-CD1yVc7U.mjs → launch-Bz7JtaC4.mjs} +16 -16
- package/dist/{launch-Zq2mOSDy.mjs → launch-CHY3p-yz.mjs} +40 -39
- package/dist/{logs-CMm05HxN.mjs → logs-CtNeNDuq.mjs} +10 -17
- package/dist/{logs-BS00Anxf.mjs → logs-mxqsWpJs.mjs} +151 -24
- package/dist/{macos-B65--pPd.mjs → macos-inNFbBWc.mjs} +1 -1
- package/dist/macos-run.mjs +1 -1
- package/dist/{macos-C-0qJ6zq.mjs → macos-u0BoHKnO.mjs} +143 -46
- package/dist/maintenance-run.mjs +8 -8
- package/dist/{metro-DEXpIhHC.mjs → metro-DiXtA3Ty.mjs} +59 -37
- package/dist/{metro-gateway-BMJNlj3E.mjs → metro-gateway-CKZqKqx7.mjs} +120 -22
- package/dist/{named-ports-BWTzt6mu.mjs → named-ports-DkEzOfzO.mjs} +40 -33
- package/dist/{native-android-JACyjTZs.mjs → native-android-CdCSylTn.mjs} +43 -242
- package/dist/native-gradle-artifact-inputs-DHFnmrVf.mjs +270 -0
- package/dist/{native-gradle-inputs-Bep9JcSF.mjs → native-gradle-inputs-Dnh84Zbd.mjs} +3 -129
- package/dist/{native-run-DY_RLx3C.mjs → native-run-BUTu8T7A.mjs} +4 -5
- package/dist/{native-runtime-Dg1Q7tfF.mjs → native-runtime-CRSOZxKY.mjs} +8 -7
- package/dist/native-source-Y0yLhFyQ.mjs +133 -0
- package/dist/{native-xcode-inputs-CB2iQeWq.mjs → native-xcode-inputs-G6rkkhxu.mjs} +2 -3
- package/dist/{native-xcode-ios-CXX39F7o.mjs → native-xcode-ios-_os2PlCD.mjs} +27 -32
- package/dist/offload-worker.d.mts +65 -2
- package/dist/offload-worker.mjs +305 -73
- package/dist/operation-exec-BW0em61G.mjs +171 -0
- package/dist/{ownership-DEmM5vhh.mjs → ownership-C5fo5Edb.mjs} +3 -3
- package/dist/{page-CPaHeYqj.mjs → page-DBL2PiUU.mjs} +8 -4
- package/dist/{placement-log-BqGbTa61.mjs → placement-log-BnGgJRRZ.mjs} +1 -1
- package/dist/{plan-placement-Bwj-IjY1.mjs → plan-placement-BU42oOyT.mjs} +12 -8
- package/dist/{ports-D-MmCTdv.mjs → ports-BSmQKzW7.mjs} +3 -3
- package/dist/{prebuild-uD_ipCxF.mjs → prebuild-BFm63bQ0.mjs} +63 -16
- package/dist/{project-BZNjmW_8.mjs → project-CTLNHCfE.mjs} +16 -16
- package/dist/{pull-request-Lfetn8Kr.mjs → pull-request-W1IuLXDt.mjs} +102 -20
- package/dist/{pull-request-zjCSAryH.d.mts → pull-request-eODyIqZF.d.mts} +6 -2
- package/dist/pull-requests.d.mts +2 -2
- package/dist/pull-requests.mjs +2 -2
- package/dist/{react-native-android-DuzH0cn3.mjs → react-native-android-CFgUroxW.mjs} +73 -53
- package/dist/{react-native-build-rhk4smwQ.mjs → react-native-build-CmJkTljQ.mjs} +8 -8
- package/dist/{react-native-doctor-CQpuIMso.mjs → react-native-doctor-LTF-Xt8l.mjs} +7 -7
- package/dist/{react-native-ios-Bhq1rJeV.mjs → react-native-ios-ChBF1MkB.mjs} +43 -29
- package/dist/{recordings-DYteQSu4.mjs → recordings-CQmfzAh7.mjs} +1 -1
- package/dist/registration-BcRgF6Ox.mjs +51 -0
- package/dist/{reload-CmTRFJaX.mjs → reload-DF9hqUUB.mjs} +16 -15
- package/dist/{reload-DzjSl5P_.mjs → reload-RBi1nj6Z.mjs} +1 -1
- package/dist/{remote-ByYkXdGD.mjs → remote-BmvMCcJw.mjs} +18 -15
- package/dist/{result-DNiS-tTP.mjs → result-Cx5CRLvS.mjs} +24 -23
- package/dist/{run-D23HmJMs.mjs → run-DidHghD1.mjs} +3 -2
- package/dist/{selection-CSl9i5qU.mjs → selection-DSMbWEX2.mjs} +6 -5
- package/dist/{server-bare-CxTrvDg8.mjs → server-bare-CafzuyFB.mjs} +2 -2
- package/dist/{server-command-CtzloH3v.mjs → server-command-BTiGPEjS.mjs} +5 -5
- package/dist/server-expo-C-Buqvn_.mjs +2 -0
- package/dist/{server-expo-DT_F_uVI.mjs → server-expo-D9lEz4aq.mjs} +7 -5
- package/dist/{settings-CsJDEXgK.mjs → settings-C7O8A6ZI.mjs} +223 -243
- package/dist/{settings-T1gtc3bf.mjs → settings-eKF_vJJs.mjs} +1 -1
- package/dist/{settings-write-HyVZ8eQ8.mjs → settings-write-79mQRr9C.mjs} +7 -6
- package/dist/settings.schema.json +13 -0
- package/dist/{simslim-Cgk17SXV.mjs → simslim-BNckWpXi.mjs} +2 -2
- package/dist/{slot-launch-DF8VfT64.mjs → slot-launch-D7M2nE4b.mjs} +6 -6
- package/dist/{stage-BIS0ydsV.mjs → stage-DKNM4ZPd.mjs} +21 -4
- package/dist/{start-RChynRDp.mjs → start-CRfN1kWV.mjs} +1 -1
- package/dist/{start-7lpH7hmN.mjs → start-bjfiScgz.mjs} +622 -393
- package/dist/{state-C4ZtUisW.mjs → state--smjFSTL.mjs} +22 -7
- package/dist/{state-XMziexv2.mjs → state-08I3hw3_.mjs} +2 -2
- package/dist/{stats-53T7OTb9.mjs → stats-DioA6cBU.mjs} +5 -5
- package/dist/{stats-report-BFfMpWWF.mjs → stats-report-BzaPrRm6.mjs} +1 -1
- package/dist/{status-DqEUSSxs.mjs → status-BRROykC8.mjs} +2 -2
- package/dist/{status-CSi6tlRq.mjs → status-Eqx_20WC.mjs} +1 -1
- package/dist/{status-BL7jVyAB.mjs → status-kzbeWk4x.mjs} +43 -29
- package/dist/{status-watch-GDCfqpTE.mjs → status-watch-BIqqbJ6q.mjs} +48 -16
- package/dist/status-worker.mjs +1 -1
- package/dist/{stim-desktop-C12we7lz.mjs → stim-desktop-D5OGpYZM.mjs} +2 -2
- package/dist/{stop-Bk_1qiV6.mjs → stop-B18d8KDw.mjs} +2 -2
- package/dist/{stop-CPzlM1L-.mjs → stop-B2uLQfoM.mjs} +15 -16
- package/dist/{stop-D7h6jAXQ.mjs → stop-DzLJc7Ei.mjs} +31 -22
- package/dist/supervisor-run.d.mts +3 -3
- package/dist/supervisor-run.mjs +28 -36
- package/dist/{support-Dlu37g6H.mjs → support-BTpZ6RAJ.mjs} +15 -11
- package/dist/{support-67vraa1Q.mjs → support-DTBV56gy.mjs} +8 -8
- package/dist/swiftpm-artifact-inputs-DFcGsXDP.mjs +153 -0
- package/dist/swiftpm-macos-r_WSKlXr.mjs +532 -0
- package/dist/{toolchain-Hp9sCpK4.mjs → toolchain-CWeGJgCc.mjs} +9 -6
- package/dist/toolchain-GVgnf8d1.mjs +2 -0
- package/dist/{trigger-BAahxUPq.mjs → trigger-Cbyc41d_.mjs} +3 -3
- package/dist/trigger-yb_nFzPF.mjs +2 -0
- package/dist/{warm-progress-BHX5r0Ei.mjs → warm-progress-CA3TgT3-.mjs} +29 -16
- package/dist/web-Cduk0NSE.mjs +2 -0
- package/dist/{web-CJmIj6AI.mjs → web-CwREhjD-.mjs} +11 -10
- package/dist/web-run.mjs +11 -9
- package/dist/windows-report.mjs +1 -1
- package/dist/{workspace-state-Cjuigeeu.mjs → workspace-state-U08dEzhG.mjs} +3 -3
- package/dist/{workspaces-BccMFmGQ.mjs → workspaces-BxzYlo3P.mjs} +594 -266
- package/dist/{worktree-DQ6Zi2Mv.mjs → worktree-8lqn_lBp.mjs} +850 -551
- package/dist/worktree-BxfVxG_b.mjs +2 -0
- package/dist/{xcode-Zlx3qjEs.mjs → xcode-iQnROM5o.mjs} +5 -5
- package/package.json +7 -7
- package/shim/android-audio/Main.java +24 -0
- package/shim/android-audio/README.md +17 -0
- package/shim/android-audio.jar +0 -0
- package/dist/gc-C-WwL0yi.mjs +0 -3
- package/dist/git-C3iTsJaZ.mjs +0 -73
- package/dist/server-expo-C-90EhcG.mjs +0 -2
- package/dist/settings-DkdmlelE.d.mts +0 -15
- package/dist/swiftpm-macos-p8WZbxKU.mjs +0 -130
- package/dist/toolchain-DhKwp9iI.mjs +0 -2
- package/dist/trigger-Bf3uDcpv.mjs +0 -2
- package/dist/web-DknQETPs.mjs +0 -2
- package/dist/workspace-process-lock-1_1OoVW5.mjs +0 -57
- package/dist/worktree-CK2MpJW5.mjs +0 -2
package/README.md
CHANGED
|
@@ -44,12 +44,22 @@ Stim builds or restores the app, installs it, launches it, and checks launch
|
|
|
44
44
|
readiness. Plain output streams progress and reports the complete result. Use
|
|
45
45
|
`--json` when a script needs structured data.
|
|
46
46
|
|
|
47
|
-
For native Xcode simulator builds,
|
|
47
|
+
For native Xcode simulator builds, declared repeatable SwiftPM macOS builds,
|
|
48
|
+
and React Native/Expo iOS Simulator or Android development builds, a local and configured-provider miss can
|
|
48
49
|
reuse an exact completed artifact from an enabled paired build worker. Reuse
|
|
49
50
|
checks the full source, toolchain, SDK, architecture and target cache key and
|
|
50
51
|
verifies the downloaded archive. It needs no compilation slot. An explicit
|
|
51
|
-
local build and remote build mode off skip peer lookup
|
|
52
|
-
|
|
52
|
+
local build and remote build mode off skip peer lookup. React Native archives
|
|
53
|
+
match the native fingerprint, build choices and compatible toolchain verified
|
|
54
|
+
around compilation; they remain reusable after the worker changes checkouts.
|
|
55
|
+
Release and physical device builds keep their existing cache paths. See `stim guide settings` for placement.
|
|
56
|
+
SwiftPM peer reuse requires `macos.artifactInputs` and a capable worker. Its
|
|
57
|
+
receipt verifies actual worker source and rechecks worker-private files,
|
|
58
|
+
environment and Swift/Xcode/SDK identity. Private values are not transferred;
|
|
59
|
+
worker identities are separate from local cache keys. Compiler overrides
|
|
60
|
+
(`SWIFT_EXEC` and `SWIFT_EXEC_MANIFEST`) are resolved and versioned separately.
|
|
61
|
+
Overrides and custom toolchain launchers
|
|
62
|
+
require the worker checkout to revalidate their selection. See `stim guide macos`.
|
|
53
63
|
|
|
54
64
|
## Native Android build workers
|
|
55
65
|
|
|
@@ -107,6 +117,28 @@ execution budget and 35 second cleanup budget, with the report timeout and
|
|
|
107
117
|
cleanup refusals described below. Cancellation stops pending work but cannot
|
|
108
118
|
retract a request already sent. Reload never retries automatically.
|
|
109
119
|
|
|
120
|
+
`warmWorktree({ signal?, beforeWarm? })` copies missing ignored state from the
|
|
121
|
+
source checkout into the client's linked worktree in process, returning
|
|
122
|
+
`{ exitCode: 0 | 1 }`. It preserves existing entries and tracked files, shares
|
|
123
|
+
the source's read claim, and takes an exclusive claim on the target while copying.
|
|
124
|
+
`beforeWarm(workspace)` admits each canonical workspace in the resolved warming
|
|
125
|
+
scope before registration or copying; throwing refuses warming. Progress uses
|
|
126
|
+
`onProgress`. Cancellation drains the copy child before removing its partial
|
|
127
|
+
entry or releasing claims. Unverifiable cleanup retains the claims and reports
|
|
128
|
+
`STIM_CLAIM_UNAVAILABLE` with recovery paths. Warming has a 90 minute execution
|
|
129
|
+
budget and a 35 second cleanup budget. Source refresh remains available through
|
|
130
|
+
`stim worktree warm --refresh`; this API does not refresh or install dependencies.
|
|
131
|
+
|
|
132
|
+
`removeWorktree({ target?, force?, signal? })` uses the CLI's removal checks and
|
|
133
|
+
cleanup in process. The target defaults to `projectRoot`; relative paths resolve
|
|
134
|
+
against it. It returns `{ removed, exitCode }` without changing `process.exitCode`.
|
|
135
|
+
Source checkout environment cleanup can succeed with `removed: false` and
|
|
136
|
+
`exitCode: 0`; a linked worktree deleted before a branch-cleanup failure returns
|
|
137
|
+
`removed: true` and `exitCode: 1`. `force` means CLI `--force`, including discarding
|
|
138
|
+
unsaved work. It uses the 60 second execution and 35 second cleanup budgets below.
|
|
139
|
+
Cancellation stops pending actions and drains owned cleanup; completed deletions
|
|
140
|
+
remain applied.
|
|
141
|
+
|
|
110
142
|
`setSetting(key, text, { scope?, signal? })` and `unsetSetting(key, { scope?, signal? })`
|
|
111
143
|
share the CLI's validation and return its JSON write result, including masked
|
|
112
144
|
sensitive values. Values use CLI text syntax, including JSON for arrays and
|
|
@@ -114,7 +146,10 @@ objects. Config lock waits and device-pool probes are asynchronous. Cancellation
|
|
|
114
146
|
prevents a pending write; a committed write finishes its recording cleanup
|
|
115
147
|
before settling. Recording changes serialize through cleanup within the home.
|
|
116
148
|
|
|
117
|
-
|
|
149
|
+
Native lifecycle operations run in the importing process. Custom Expo
|
|
150
|
+
`buildCacheProvider` modules are not supported. Use EAS or a Stim cache provider.
|
|
151
|
+
|
|
152
|
+
`settings()` and `stats()`
|
|
118
153
|
read the `stim settings --json` and `stim stats --json` payloads. All
|
|
119
154
|
use the client's own home and leave the caller's cwd, environment,
|
|
120
155
|
output, signal handlers and exit listeners as they were. The API and CLI call
|
|
@@ -126,6 +161,16 @@ Cancelling `stop()` while it waits for another native operation ends that wait.
|
|
|
126
161
|
Once teardown starts, it finishes cleanup before rejecting with `STIM_CANCELLED`;
|
|
127
162
|
its config, workspace-state, and lease lock waits are asynchronous.
|
|
128
163
|
|
|
164
|
+
`plan({ platform: 'ios' | 'android' | 'macos', signal? })` predicts the next
|
|
165
|
+
configured native build, as the CLI's `--plan --json` reports it, without building
|
|
166
|
+
or launching. iOS and Android also accept `slot`; build and device selectors
|
|
167
|
+
come from the project's settings. Plans use the report execution and cleanup
|
|
168
|
+
budgets below. Fingerprinting uses the existing cancellable report helper;
|
|
169
|
+
native probes and cache downloads finish cleanup before the report settles.
|
|
170
|
+
Cache providers must settle after cancellation. If cleanup cannot finish within
|
|
171
|
+
35 seconds, the plan refuses with `STIM_CLAIM_UNAVAILABLE` and retains the download
|
|
172
|
+
directory; it does not delete files a broken provider may still be writing.
|
|
173
|
+
|
|
129
174
|
`doctor({ platform?, record? })` and `gc({ cache?, olderThan?, worktrees? })` read their CLI
|
|
130
175
|
JSON reports with a 60 second execution budget and optional `signal`. Doctor
|
|
131
176
|
never repairs; its `stim.runningPath` is null. By default it does not record a
|
|
@@ -153,12 +198,19 @@ On Windows, report probes require the built-in Windows PowerShell for process-tr
|
|
|
153
198
|
`home` and `buildCache` accept absolute paths. Omit them to use normal Stim
|
|
154
199
|
settings. A cache used by concurrent writers needs the same coordinating Stim
|
|
155
200
|
home; do not point independent homes at a concurrently writable artifact cache.
|
|
201
|
+
`start({ remote?, resetCache?, waitSeconds?, signal?, beforeStart? })` starts or
|
|
202
|
+
reuses the managed dev server and returns flat start facts.
|
|
203
|
+
The optional admission callback receives the resolved app before startup effects.
|
|
204
|
+
Cancellation accounts for newly spawned processes before returning; a verified
|
|
205
|
+
supervisor handed off to its workspace can remain running. Unconfirmed cleanup
|
|
206
|
+
reports `STIM_CLAIM_UNAVAILABLE` with the retained ownership claims' recovery remedy.
|
|
207
|
+
|
|
156
208
|
Ownership checks and cache locks remain active. `stop()` acts on this workspace,
|
|
157
209
|
including resources from earlier runs, so use a dedicated workspace in CI.
|
|
158
210
|
|
|
159
211
|
Stim failures are `StimError` instances with `code`, `message`, `remedy`, and
|
|
160
212
|
`details`. An exception thrown by `onProgress` stops further progress and is
|
|
161
|
-
propagated unchanged: `build()` or `run()` is cancelled, and
|
|
213
|
+
propagated unchanged: `start()`, `build()` or `run()` is cancelled, and
|
|
162
214
|
`stop()` or read finishes its work first.
|
|
163
215
|
`logs({ tail, sources, minLevel, slot, since, grep, errorsOnly })` reads the same
|
|
164
216
|
merged records as `stim logs --json`, including crash capture and agent actions.
|
|
@@ -170,8 +222,9 @@ no `tail`, timeline batches hold at most 500 records. Agent attribution still
|
|
|
170
222
|
retains its matching records during backfill. These reads run in process and yield between log chunks.
|
|
171
223
|
Local follow uses filesystem hints with a ten-second repair scan. While a
|
|
172
224
|
directory watch is unavailable, it retries and scans every 500 ms; Expo error
|
|
173
|
-
context uses a timer only while pending.
|
|
174
|
-
|
|
225
|
+
context uses a timer only while pending. Local agent actions use filesystem
|
|
226
|
+
notifications for state and claim changes, with the same repair timing. Active hosted log
|
|
227
|
+
queries retain their pull cadence.
|
|
175
228
|
Attachment schedules one 500 ms recovery scan. A moved directory on Windows can
|
|
176
229
|
require the ten-second repair scan.
|
|
177
230
|
Hosted targets join and leave the follow stream from local state notifications;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { r as WorkspaceProcessCleanupError } from "./exec-DEoAhcze.mjs";
|
|
2
|
+
import { I as waitForSharedBuild } from "./activity-B5RtpFda.mjs";
|
|
2
3
|
import { rmSync } from "node:fs";
|
|
3
4
|
//#region src/engine/artifact-lifecycle.ts
|
|
4
5
|
async function runArtifactLifecycle(phases) {
|
|
@@ -63,6 +64,14 @@ function createCleanupScope(report) {
|
|
|
63
64
|
}
|
|
64
65
|
//#endregion
|
|
65
66
|
//#region src/engine/acquire-artifact.ts
|
|
67
|
+
function unresolvedCleanup(error) {
|
|
68
|
+
return error instanceof WorkspaceProcessCleanupError || error instanceof Error && "reportCleanup" in error;
|
|
69
|
+
}
|
|
70
|
+
/** Waits for upload readers; unresolved child cleanup refuses deletion of their temporary inputs. */
|
|
71
|
+
async function settleArtifactUploads(...uploads) {
|
|
72
|
+
const unresolved = (await Promise.allSettled(uploads)).find((result) => result.status === "rejected" && unresolvedCleanup(result.reason));
|
|
73
|
+
if (unresolved?.status === "rejected") throw unresolved.reason;
|
|
74
|
+
}
|
|
66
75
|
async function acquireArtifact(adapter, { root, logFile, deps }) {
|
|
67
76
|
const owned = createCleanupScope((error) => adapter.temporaryReleaseFailed(error));
|
|
68
77
|
let closeOffload = null;
|
|
@@ -138,7 +147,16 @@ async function acquireArtifact(adapter, { root, logFile, deps }) {
|
|
|
138
147
|
release: owned.transfer()
|
|
139
148
|
};
|
|
140
149
|
} catch (error) {
|
|
141
|
-
|
|
150
|
+
try {
|
|
151
|
+
await adapter.settleFailed?.();
|
|
152
|
+
} catch (cleanupError) {
|
|
153
|
+
if (unresolvedCleanup(cleanupError)) owned.transfer();
|
|
154
|
+
throw cleanupError;
|
|
155
|
+
}
|
|
156
|
+
if (unresolvedCleanup(error)) {
|
|
157
|
+
owned.transfer();
|
|
158
|
+
throw error;
|
|
159
|
+
}
|
|
142
160
|
const failure = adapter.refuse(error);
|
|
143
161
|
if (failure === null) throw error;
|
|
144
162
|
return {
|
|
@@ -150,4 +168,4 @@ async function acquireArtifact(adapter, { root, logFile, deps }) {
|
|
|
150
168
|
}
|
|
151
169
|
}
|
|
152
170
|
//#endregion
|
|
153
|
-
export { acquireArtifact as t };
|
|
171
|
+
export { settleArtifactUploads as n, acquireArtifact as t };
|