stim 1.8.0 → 1.9.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.
Files changed (80) hide show
  1. package/README.md +23 -155
  2. package/dist/{android-BRgBYzU0.mjs → android-BPGizezh.mjs} +112 -135
  3. package/dist/{android-DeYdjjBP.mjs → android-DEgo4oCo.mjs} +2 -2
  4. package/dist/{android-DWssqHQ8.mjs → android-_y4Ohi5z.mjs} +54 -15
  5. package/dist/android-cas-compiler.mjs +2 -2
  6. package/dist/{android-cas-SWIjzeuL.mjs → android-cas-eiExNLf7.mjs} +21 -14
  7. package/dist/app-install-Uf3a83Tv.mjs +819 -0
  8. package/dist/{build-lock-CgtsB6TV.mjs → build-lock-DPXPLgTc.mjs} +120 -24
  9. package/dist/build-progress-CVqkfPC6.mjs +188 -0
  10. package/dist/{cache-manifest-CYJi8-Hx.mjs → cache-manifest-Dg7OnMrp.mjs} +4 -4
  11. package/dist/cache-manifest.mjs +1 -1
  12. package/dist/cli.mjs +22 -19
  13. package/dist/collector-run.d.mts +2 -0
  14. package/dist/collector-run.mjs +10 -9
  15. package/dist/{command-output-B3ycpsYv.mjs → command-output-gByVmIjy.mjs} +11 -2
  16. package/dist/{config-B7iyKWkL.mjs → config-Cp9lM3wX.mjs} +187 -57
  17. package/dist/{dependency-state-D0M7oKA7.mjs → dependency-state-Bq5DcLGn.mjs} +2 -2
  18. package/dist/{deps-oCXVNEqQ.mjs → deps-Cip5vUm1.mjs} +8 -5
  19. package/dist/{detached-entry-Bpo6ZY_I.mjs → detached-entry-KEu0_AXL.mjs} +1 -1
  20. package/dist/{device-BUoZyMoR.mjs → dev-client-HyqISM0h.mjs} +1178 -635
  21. package/dist/{device-RdujjHLB.mjs → device-D4U-xLty.mjs} +13 -20
  22. package/dist/{device-lease-Ffz_M5t0.mjs → device-lease-Crs-HkJY.mjs} +16 -9
  23. package/dist/{device-pool-BxRwdufO.mjs → device-pool-CnTAz8X1.mjs} +7 -7
  24. package/dist/{device-remote-ByN8P6CB.mjs → device-remote-AQ5rQPqr.mjs} +482 -35
  25. package/dist/{doctor-BMt156qe.mjs → doctor-B_Ei3bZu.mjs} +95 -107
  26. package/dist/{error-diagnostics-D1Kaf-eT.mjs → error-diagnostics-Vfz83GCF.mjs} +22 -16
  27. package/dist/exec-jIAlgilk.mjs +132 -0
  28. package/dist/{gc-v2YcoJvm.mjs → gc-Ckw8RQHi.mjs} +763 -126
  29. package/dist/{guide-BTAlD1_y.mjs → guide-BiAbhs1J.mjs} +891 -501
  30. package/dist/{guide-status-Craq9z0t.mjs → guide-status-BAMVU0ZA.mjs} +5 -3
  31. package/dist/{ios-BcCiI4TS.mjs → ios-BL2NFckr.mjs} +43 -20
  32. package/dist/{ios-BP04pY5f.mjs → ios-BzUJWk1K.mjs} +141 -175
  33. package/dist/{ios-device-CauFJiYx.mjs → ios-device-D972i9wf.mjs} +149 -52
  34. package/dist/{ios-device-CFXA46ez.mjs → ios-device-DPsSm0v_.mjs} +3 -2
  35. package/dist/launch-verify-Q_OtW1Rf.mjs +365 -0
  36. package/dist/{logs-CakdBTtm.mjs → logs-CI9NQSK7.mjs} +18 -13
  37. package/dist/{logs-query-BGL-Pl12.mjs → logs-query-Cqma3WIu.mjs} +36 -28
  38. package/dist/{metro-C7bcJ0uo.mjs → metro-DrLHaMn2.mjs} +78 -8
  39. package/dist/{named-ports-DzMOlmaX.mjs → named-ports-CmLQSIRj.mjs} +4 -4
  40. package/dist/{ndjson-BZwI1NBv.mjs → ndjson-9uFNRwfe.mjs} +36 -3
  41. package/dist/{ownership-Cp52QAK1.mjs → ownership-D15Op8vN.mjs} +3 -3
  42. package/dist/{ownership-wolE-0Do.mjs → ownership-DCQPuWEc.mjs} +26 -7
  43. package/dist/{ports-BIbJaKNW.mjs → ports-BNKoWVWZ.mjs} +3 -3
  44. package/dist/{process-output-Dl5uKE03.mjs → process-output-Fpl8PYi8.mjs} +1 -1
  45. package/dist/{project-DDZWf_16.mjs → project-DS112DYB.mjs} +8 -3
  46. package/dist/{reload-BdypPbjM.mjs → reload-ZNJUo1pl.mjs} +12 -13
  47. package/dist/{server-bare-BQkyxa_b.mjs → server-bare-DWkkcIxV.mjs} +2 -2
  48. package/dist/{server-expo-BVAA1OqJ.mjs → server-expo-B_lctBR3.mjs} +8 -7
  49. package/dist/server-expo-CeILEu86.mjs +2 -0
  50. package/dist/settings-BKNh5rl4.mjs +376 -0
  51. package/dist/{settings-BXXorVM2.mjs → settings-D030k0t4.mjs} +464 -152
  52. package/dist/settings.schema.json +989 -0
  53. package/dist/{teardown-BJqEzPo_.mjs → sim-pool-KaIsp2Ft.mjs} +14 -419
  54. package/dist/simslim-B_LsGLuJ.mjs +259 -0
  55. package/dist/{slot-launch-ZUUe0TQP.mjs → slot-launch-DU9A-gYw.mjs} +4 -4
  56. package/dist/spawn-claims-Dn3C_N6w.mjs +49 -0
  57. package/dist/{start-CmxtOKjU.mjs → start-DYkkKF0s.mjs} +27 -31
  58. package/dist/{state-DZobzxLW.mjs → state-NcJzMEBF.mjs} +5 -3
  59. package/dist/{stats-CLg5RuDS.mjs → stats-B63-JVAY.mjs} +4 -4
  60. package/dist/{stats-BYcZ6n1h.mjs → stats-DG9e66Rz.mjs} +66 -5
  61. package/dist/status-S6ehL4Ui.mjs +932 -0
  62. package/dist/{stop-C8JW6kKp.mjs → stop-BO28HGqF.mjs} +101 -25
  63. package/dist/{stop-B1kOpYei.mjs → stop-T1R-cZRz.mjs} +2 -2
  64. package/dist/supervisor-run.mjs +52 -34
  65. package/dist/{workspace-process-lock-BYfZz_S-.mjs → workspace-process-lock-DWaiRD0e.mjs} +14 -9
  66. package/dist/{workspace-state-BT5E3SA2.mjs → workspace-state-DF2gCFhx.mjs} +52 -29
  67. package/dist/worktree-DKhSF0UX.mjs +2 -0
  68. package/dist/{worktree-CFLA-6MX.mjs → worktree-LGB-UwgG.mjs} +603 -59
  69. package/dist/{worktree-FG_ZKKdb.mjs → worktree-R_cUlE7s.mjs} +62 -41
  70. package/dist/{xcode-B6YaWeg0.mjs → xcode-BZqyxh3e.mjs} +216 -58
  71. package/package.json +5 -6
  72. package/skill/SKILL.md +2 -0
  73. package/dist/app-install-BDbsSgCl.mjs +0 -1175
  74. package/dist/build-slots-C-oAHRT1.mjs +0 -151
  75. package/dist/dev-client-BmT-ioFI.mjs +0 -797
  76. package/dist/exec-B29XNuhP.mjs +0 -77
  77. package/dist/reclaim-KJ-0uWEF.mjs +0 -361
  78. package/dist/server-expo-YDDG3eP7.mjs +0 -2
  79. package/dist/status-DdkLki47.mjs +0 -426
  80. package/dist/{metro-store-CDDZHtPl.mjs → metro-store-DzeWkfqW.mjs} +1 -1
@@ -1,151 +0,0 @@
1
- import { E as ownership_claim_exports, u as getConfigDir } from "./config-B7iyKWkL.mjs";
2
- import { a as formatElapsed } from "./command-output-B3ycpsYv.mjs";
3
- import { readdirSync, statSync } from "node:fs";
4
- import { join } from "node:path";
5
- //#region src/engine/build-slots.ts
6
- const SLOT_PREFIX = "slot-";
7
- const SLOT_LABEL = "build slot";
8
- const SLOT_POLL_MS = 1e3;
9
- const SLOT_PROGRESS_MS = 3e4;
10
- const SLOT_CEILING_MS = 54e5;
11
- function sleepAsync(ms) {
12
- return new Promise((resolve) => setTimeout(resolve, ms));
13
- }
14
- function buildSlotsDir() {
15
- return join(getConfigDir(), "build-slots");
16
- }
17
- function buildSlotPath(index) {
18
- return join(buildSlotsDir(), `${SLOT_PREFIX}${index}`);
19
- }
20
- function toRecord(holder) {
21
- const details = holder.details;
22
- return {
23
- pid: holder.owner.pid,
24
- index: typeof details.index === "number" ? details.index : null,
25
- projectRoot: typeof details.projectRoot === "string" ? details.projectRoot : null,
26
- startedAt: holder.startedAt || null,
27
- logFile: typeof details.logFile === "string" ? details.logFile : null
28
- };
29
- }
30
- function tryAcquireBuildSlot({ max, root = null, logFile = null }) {
31
- if (!max || max <= 0) return {
32
- acquired: true,
33
- unlimited: true
34
- };
35
- let refusal = null;
36
- let busy = false;
37
- for (let index = 0; index < max; index++) {
38
- const path = buildSlotPath(index);
39
- let attempt;
40
- try {
41
- attempt = (0, ownership_claim_exports.tryAcquireClaim)({
42
- root: path,
43
- mode: "exclusive",
44
- label: SLOT_LABEL,
45
- details: {
46
- index,
47
- projectRoot: root,
48
- logFile
49
- }
50
- });
51
- } catch (err) {
52
- if (!(0, ownership_claim_exports.isClaimRefusal)(err)) throw err;
53
- refusal ??= err;
54
- continue;
55
- }
56
- if (attempt.pending) (0, ownership_claim_exports.releaseClaim)(attempt.pending);
57
- if (!attempt.acquired) {
58
- busy = true;
59
- continue;
60
- }
61
- return {
62
- acquired: true,
63
- path,
64
- index,
65
- slot: {
66
- pid: attempt.acquired.owner.pid,
67
- index,
68
- projectRoot: root,
69
- startedAt: attempt.acquired.startedAt,
70
- logFile
71
- },
72
- claim: attempt.acquired
73
- };
74
- }
75
- if (refusal && !busy) throw refusal;
76
- return null;
77
- }
78
- function slotWaitingLine({ max, elapsedMs }) {
79
- return `${"build".padEnd(11)} waiting for a build slot (all ${max} in use, ${formatElapsed(elapsedMs)} elapsed) -- stim guide lifecycle concurrency`;
80
- }
81
- async function acquireBuildSlot({ max, root = null, logFile = null, now = Date.now, out = () => {}, sleep = sleepAsync, intervalMs = SLOT_POLL_MS, progressMs = SLOT_PROGRESS_MS, ceilingMs = SLOT_CEILING_MS }) {
82
- if (!max || max <= 0) return {
83
- acquired: true,
84
- unlimited: true
85
- };
86
- const started = now();
87
- let lastProgress = started;
88
- for (;;) {
89
- const got = tryAcquireBuildSlot({
90
- max,
91
- root,
92
- logFile
93
- });
94
- if (got) return got;
95
- const elapsed = now() - started;
96
- if (elapsed >= ceilingMs) {
97
- const err = /* @__PURE__ */ new Error(`Waited ${formatElapsed(elapsed)} for one of ${max} build slots, and every slot is held by a process that is still running, or by a holder Stim cannot identify. Slots live under ` + buildSlotsDir() + "; remove a slot directory whose builder is not really building, or raise concurrency.maxBuilds.");
98
- err.code = "STIM_BUILD_SLOT_TIMEOUT";
99
- throw err;
100
- }
101
- if (now() - lastProgress >= progressMs) {
102
- lastProgress = now();
103
- out(slotWaitingLine({
104
- max,
105
- elapsedMs: elapsed
106
- }));
107
- }
108
- await sleep(intervalMs);
109
- }
110
- }
111
- function releaseBuildSlot(handle) {
112
- if (!handle || handle.unlimited) return false;
113
- return (0, ownership_claim_exports.releaseClaim)(handle.claim);
114
- }
115
- function listBuildSlots() {
116
- const dir = buildSlotsDir();
117
- let names;
118
- try {
119
- names = readdirSync(dir);
120
- } catch {
121
- return [];
122
- }
123
- const slots = [];
124
- for (const name of names) {
125
- if (!name.startsWith(SLOT_PREFIX)) continue;
126
- const path = join(dir, name);
127
- try {
128
- if (!statSync(path).isDirectory()) continue;
129
- } catch {
130
- continue;
131
- }
132
- const survey = (0, ownership_claim_exports.readClaimSet)(path);
133
- const holder = survey.live[0] ?? survey.dead[0];
134
- const info = holder ? toRecord(holder) : null;
135
- const index = Number(name.slice(5));
136
- slots.push({
137
- path,
138
- name,
139
- index: Number.isFinite(index) ? index : null,
140
- pid: info?.pid ?? null,
141
- projectRoot: info?.projectRoot ?? null,
142
- startedAt: info?.startedAt ?? null,
143
- logFile: info?.logFile ?? null,
144
- alive: survey.live.length > 0,
145
- unresolved: survey.unresolved.length > 0
146
- });
147
- }
148
- return slots;
149
- }
150
- //#endregion
151
- export { listBuildSlots as n, releaseBuildSlot as r, acquireBuildSlot as t };