stim 1.8.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.
Files changed (91) hide show
  1. package/README.md +23 -155
  2. package/dist/{android-DWssqHQ8.mjs → android-787HhP5w.mjs} +168 -39
  3. package/dist/{android-BRgBYzU0.mjs → android-DBkeHwpm.mjs} +250 -200
  4. package/dist/{android-DeYdjjBP.mjs → android-DPov-fv2.mjs} +2 -2
  5. package/dist/{android-cas-SWIjzeuL.mjs → android-cas-CITmIeWY.mjs} +22 -14
  6. package/dist/android-cas-compiler.mjs +2 -2
  7. package/dist/app-install-CrJ6t_bv.mjs +819 -0
  8. package/dist/budget-BP4jZZL4.mjs +620 -0
  9. package/dist/build-progress-BXx-ZBe4.mjs +512 -0
  10. package/dist/{cache-manifest-CYJi8-Hx.mjs → cache-manifest-Pubfp8wV.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 +7 -1
  14. package/dist/collector-run.mjs +10 -9
  15. package/dist/{command-output-B3ycpsYv.mjs → command-output-D5z2_bcF.mjs} +11 -2
  16. package/dist/{config-B7iyKWkL.mjs → config-BEq0Qw_a.mjs} +134 -121
  17. package/dist/{dependency-state-D0M7oKA7.mjs → dependency-state-r9UesA9a.mjs} +2 -2
  18. package/dist/{deps-oCXVNEqQ.mjs → deps-DP4eWqea.mjs} +8 -5
  19. package/dist/{detached-entry-Bpo6ZY_I.mjs → detached-entry-DJHoca49.mjs} +1 -1
  20. package/dist/{device-BUoZyMoR.mjs → dev-client-92U593KT.mjs} +1090 -660
  21. package/dist/{device-RdujjHLB.mjs → device-DhTZe7L4.mjs} +13 -20
  22. package/dist/{build-lock-CgtsB6TV.mjs → device-lease-CbEaIk7b.mjs} +481 -27
  23. package/dist/{device-pool-BxRwdufO.mjs → device-pool-Di8Q-9Ro.mjs} +7 -7
  24. package/dist/{device-remote-ByN8P6CB.mjs → device-remote-Dy1jGj3U.mjs} +645 -119
  25. package/dist/{doctor-BMt156qe.mjs → doctor-B-inAJmt.mjs} +137 -113
  26. package/dist/{error-diagnostics-D1Kaf-eT.mjs → error-diagnostics-xxWKNO3-.mjs} +22 -17
  27. package/dist/exec-DK8KaVHK.mjs +133 -0
  28. package/dist/{gc-v2YcoJvm.mjs → gc-ChPFZMRC.mjs} +836 -813
  29. package/dist/{guide-BTAlD1_y.mjs → guide-DwmaD_Wa.mjs} +953 -209
  30. package/dist/guide-status-CWvti2Lg.mjs +125 -0
  31. package/dist/idle-DpRLp5lj.mjs +157 -0
  32. package/dist/{build-slots-C-oAHRT1.mjs → in-use-CjUluqIX.mjs} +102 -8
  33. package/dist/{ios-BcCiI4TS.mjs → ios-B2Fpqvlb.mjs} +60 -71
  34. package/dist/{ios-BP04pY5f.mjs → ios-Dd-hYJBh.mjs} +241 -234
  35. package/dist/{ios-device-CFXA46ez.mjs → ios-device-BiOsSVzd.mjs} +3 -2
  36. package/dist/{ios-device-CauFJiYx.mjs → ios-device-CtRdEVjx.mjs} +149 -52
  37. package/dist/launch-verify-CQS_Kg-C.mjs +365 -0
  38. package/dist/{logs-CakdBTtm.mjs → logs-MARIy6m9.mjs} +20 -15
  39. package/dist/metro-BWLOJ_Wr.mjs +409 -0
  40. package/dist/{named-ports-DzMOlmaX.mjs → named-ports-DiTfSz6p.mjs} +4 -4
  41. package/dist/{ndjson-BZwI1NBv.mjs → ndjson-CDY9IkVC.mjs} +23 -43
  42. package/dist/{ndjson-DvHSsNU9.d.mts → ndjson-Du3j0AQ9.d.mts} +1 -0
  43. package/dist/{ownership-Cp52QAK1.mjs → ownership-D2xbLVoz.mjs} +2 -3
  44. package/dist/{teardown-BJqEzPo_.mjs → ownership-DZjdx8Gq.mjs} +664 -612
  45. package/dist/{ports-BIbJaKNW.mjs → ports-CLSSFOuz.mjs} +3 -3
  46. package/dist/{process-output-Dl5uKE03.mjs → process-output-Fpl8PYi8.mjs} +1 -1
  47. package/dist/{project-DDZWf_16.mjs → project-BXZzOABt.mjs} +8 -3
  48. package/dist/{reload-BdypPbjM.mjs → reload-DoETJ3rl.mjs} +11 -13
  49. package/dist/{server-bare-BQkyxa_b.mjs → server-bare-DVbb7kXH.mjs} +2 -2
  50. package/dist/{server-expo-BVAA1OqJ.mjs → server-expo-BvOCeakp.mjs} +8 -7
  51. package/dist/server-expo-DBVTdult.mjs +2 -0
  52. package/dist/{settings-BXXorVM2.mjs → settings-DOugPlPz.mjs} +59 -159
  53. package/dist/settings-EWYNwe72.mjs +378 -0
  54. package/dist/settings.schema.json +1064 -0
  55. package/dist/simslim-Ca3487H6.mjs +436 -0
  56. package/dist/{slot-launch-ZUUe0TQP.mjs → slot-launch-C5cg0fmk.mjs} +4 -4
  57. package/dist/spawn-claims-CUleC2cM.mjs +49 -0
  58. package/dist/{start-CmxtOKjU.mjs → start-F9gv5dcC.mjs} +159 -114
  59. package/dist/start-VoFsPSes.mjs +2 -0
  60. package/dist/{state-DZobzxLW.mjs → state-WGdIbi_d.mjs} +5 -3
  61. package/dist/{stats-BYcZ6n1h.mjs → stats-BAgJaLA4.mjs} +66 -5
  62. package/dist/{stats-CLg5RuDS.mjs → stats-DBYJ5bxL.mjs} +4 -4
  63. package/dist/status-DLCD-o3s.mjs +764 -0
  64. package/dist/status-Dr4fRkym.mjs +216 -0
  65. package/dist/{guide-status-Craq9z0t.mjs → stim-installations-CINXy_su.mjs} +3 -122
  66. package/dist/{stop-C8JW6kKp.mjs → stop-Dj4pfmyv.mjs} +111 -31
  67. package/dist/{stop-B1kOpYei.mjs → stop-ZvOeTmKb.mjs} +2 -2
  68. package/dist/supervisor-run.d.mts +11 -2
  69. package/dist/supervisor-run.mjs +228 -42
  70. package/dist/{workspace-process-lock-BYfZz_S-.mjs → workspace-process-lock-BXA96myD.mjs} +14 -9
  71. package/dist/workspaces-BTUyFfkv.mjs +1003 -0
  72. package/dist/worktree-4aZg2NnI.mjs +2 -0
  73. package/dist/{worktree-CFLA-6MX.mjs → worktree-BMS7GeqB.mjs} +523 -61
  74. package/dist/{worktree-FG_ZKKdb.mjs → worktree-BlizKDpZ.mjs} +200 -54
  75. package/dist/{xcode-B6YaWeg0.mjs → xcode-B2tBkf0m.mjs} +66 -57
  76. package/package.json +6 -6
  77. package/skill/SKILL.md +2 -0
  78. package/dist/app-install-BDbsSgCl.mjs +0 -1175
  79. package/dist/dev-client-BmT-ioFI.mjs +0 -797
  80. package/dist/device-lease-Ffz_M5t0.mjs +0 -359
  81. package/dist/exec-B29XNuhP.mjs +0 -77
  82. package/dist/logs-query-BGL-Pl12.mjs +0 -290
  83. package/dist/metro-C7bcJ0uo.mjs +0 -233
  84. package/dist/ownership-wolE-0Do.mjs +0 -470
  85. package/dist/public-http-probe-CyMDrQ3c.mjs +0 -61
  86. package/dist/reclaim-KJ-0uWEF.mjs +0 -361
  87. package/dist/server-expo-YDDG3eP7.mjs +0 -2
  88. package/dist/spawn-entry-nCE6m770.mjs +0 -14
  89. package/dist/status-DdkLki47.mjs +0 -426
  90. package/dist/workspace-state-BT5E3SA2.mjs +0 -146
  91. package/dist/{metro-store-CDDZHtPl.mjs → metro-store-DzeWkfqW.mjs} +1 -1
@@ -0,0 +1,1064 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://unpkg.com/stim/dist/settings.schema.json",
4
+ "title": "Stim settings",
5
+ "description": "Settings in a committed .stim.json. $defs.machine lists the machine settings in $STIM_HOME/config.json.",
6
+ "type": "object",
7
+ "properties": {
8
+ "optimizations": {
9
+ "type": "object",
10
+ "properties": {
11
+ "buildCache": {
12
+ "description": "Read and write native build artifacts",
13
+ "type": "boolean",
14
+ "default": true,
15
+ "x-stim": {
16
+ "key": "optimizations.buildCache",
17
+ "kind": "boolean",
18
+ "scopes": [
19
+ "machine",
20
+ "workspace",
21
+ "repo",
22
+ "committed"
23
+ ]
24
+ }
25
+ },
26
+ "remoteBuildCache": {
27
+ "description": "Use remote artifact providers",
28
+ "type": "boolean",
29
+ "default": true,
30
+ "x-stim": {
31
+ "key": "optimizations.remoteBuildCache",
32
+ "kind": "boolean",
33
+ "scopes": [
34
+ "machine",
35
+ "workspace",
36
+ "repo",
37
+ "committed"
38
+ ]
39
+ }
40
+ },
41
+ "releaseBundleSwap": {
42
+ "description": "Swap current JS into cached release builds",
43
+ "type": "boolean",
44
+ "default": true,
45
+ "x-stim": {
46
+ "key": "optimizations.releaseBundleSwap",
47
+ "kind": "boolean",
48
+ "scopes": [
49
+ "machine",
50
+ "workspace",
51
+ "repo",
52
+ "committed"
53
+ ]
54
+ }
55
+ },
56
+ "metroSharedCache": {
57
+ "description": "Append Stim's shared Metro cache store",
58
+ "type": "boolean",
59
+ "default": true,
60
+ "x-stim": {
61
+ "key": "optimizations.metroSharedCache",
62
+ "kind": "boolean",
63
+ "scopes": [
64
+ "machine",
65
+ "workspace",
66
+ "repo",
67
+ "committed"
68
+ ]
69
+ }
70
+ },
71
+ "metroWarmup": {
72
+ "description": "Prefetch the development bundle during ios and android",
73
+ "type": "boolean",
74
+ "default": true,
75
+ "x-stim": {
76
+ "key": "optimizations.metroWarmup",
77
+ "kind": "boolean",
78
+ "scopes": [
79
+ "machine",
80
+ "workspace",
81
+ "repo",
82
+ "committed"
83
+ ]
84
+ }
85
+ },
86
+ "ios": {
87
+ "type": "object",
88
+ "properties": {
89
+ "compilationCache": {
90
+ "description": "Xcode compilation caching",
91
+ "type": "boolean",
92
+ "default": true,
93
+ "x-stim": {
94
+ "key": "optimizations.ios.compilationCache",
95
+ "kind": "boolean",
96
+ "scopes": [
97
+ "machine",
98
+ "workspace",
99
+ "repo",
100
+ "committed"
101
+ ]
102
+ }
103
+ },
104
+ "swiftCompilationCache": {
105
+ "description": "Swift compilation caching; unset detects toolchain support",
106
+ "type": "boolean",
107
+ "x-stim": {
108
+ "key": "optimizations.ios.swiftCompilationCache",
109
+ "kind": "boolean",
110
+ "scopes": [
111
+ "machine",
112
+ "workspace",
113
+ "repo",
114
+ "committed"
115
+ ]
116
+ }
117
+ },
118
+ "prefixMapping": {
119
+ "description": "Clang source and DerivedData prefix mapping",
120
+ "type": "boolean",
121
+ "default": true,
122
+ "x-stim": {
123
+ "key": "optimizations.ios.prefixMapping",
124
+ "kind": "boolean",
125
+ "scopes": [
126
+ "machine",
127
+ "workspace",
128
+ "repo",
129
+ "committed"
130
+ ]
131
+ }
132
+ }
133
+ },
134
+ "additionalProperties": false
135
+ },
136
+ "android": {
137
+ "type": "object",
138
+ "properties": {
139
+ "compilerCache": {
140
+ "description": "Android compiler cache backend",
141
+ "type": "string",
142
+ "enum": [
143
+ "auto",
144
+ "ccache",
145
+ "cas",
146
+ "none"
147
+ ],
148
+ "default": "auto",
149
+ "x-stim": {
150
+ "key": "optimizations.android.compilerCache",
151
+ "kind": "choice",
152
+ "scopes": [
153
+ "machine",
154
+ "workspace",
155
+ "repo",
156
+ "committed"
157
+ ]
158
+ }
159
+ },
160
+ "casToolchain": {
161
+ "description": "Absolute path to the Android CAS toolchain manifest",
162
+ "type": "string",
163
+ "x-stim": {
164
+ "key": "optimizations.android.casToolchain",
165
+ "kind": "path",
166
+ "scopes": [
167
+ "machine",
168
+ "workspace",
169
+ "repo",
170
+ "committed"
171
+ ],
172
+ "absolute": true,
173
+ "env": "STIM_ANDROID_CAS_TOOLCHAIN"
174
+ }
175
+ },
176
+ "pch": {
177
+ "description": "Android precompiled headers",
178
+ "type": "string",
179
+ "enum": [
180
+ "auto",
181
+ "on",
182
+ "off"
183
+ ],
184
+ "default": "auto",
185
+ "x-stim": {
186
+ "key": "optimizations.android.pch",
187
+ "kind": "choice",
188
+ "scopes": [
189
+ "machine",
190
+ "workspace",
191
+ "repo",
192
+ "committed"
193
+ ]
194
+ }
195
+ },
196
+ "gradleBuildCache": {
197
+ "description": "Gradle build cache",
198
+ "type": "boolean",
199
+ "default": true,
200
+ "x-stim": {
201
+ "key": "optimizations.android.gradleBuildCache",
202
+ "kind": "boolean",
203
+ "scopes": [
204
+ "machine",
205
+ "workspace",
206
+ "repo",
207
+ "committed"
208
+ ]
209
+ }
210
+ },
211
+ "targetAbiOnly": {
212
+ "description": "Narrow Debug builds to the device ABI",
213
+ "type": "boolean",
214
+ "default": true,
215
+ "x-stim": {
216
+ "key": "optimizations.android.targetAbiOnly",
217
+ "kind": "boolean",
218
+ "scopes": [
219
+ "machine",
220
+ "workspace",
221
+ "repo",
222
+ "committed"
223
+ ]
224
+ }
225
+ }
226
+ },
227
+ "additionalProperties": false
228
+ }
229
+ },
230
+ "additionalProperties": false
231
+ },
232
+ "ios": {
233
+ "type": "object",
234
+ "properties": {
235
+ "deviceType": {
236
+ "description": "Simulator model for owned simulators",
237
+ "type": "string",
238
+ "x-stim": {
239
+ "key": "ios.deviceType",
240
+ "kind": "string",
241
+ "scopes": [
242
+ "workspace",
243
+ "repo",
244
+ "committed"
245
+ ]
246
+ }
247
+ },
248
+ "runtime": {
249
+ "description": "iOS runtime owned simulators are created on",
250
+ "type": "string",
251
+ "x-stim": {
252
+ "key": "ios.runtime",
253
+ "kind": "string",
254
+ "scopes": [
255
+ "workspace",
256
+ "repo",
257
+ "committed"
258
+ ]
259
+ }
260
+ },
261
+ "configuration": {
262
+ "description": "Xcode configuration to build, such as Debug or Release",
263
+ "type": "string",
264
+ "default": "Debug",
265
+ "x-stim": {
266
+ "key": "ios.configuration",
267
+ "kind": "string",
268
+ "scopes": [
269
+ "workspace",
270
+ "repo",
271
+ "committed"
272
+ ]
273
+ }
274
+ },
275
+ "remote": {
276
+ "description": "Default remote backend for iOS",
277
+ "type": "string",
278
+ "enum": [
279
+ "proxy",
280
+ "eas"
281
+ ],
282
+ "x-stim": {
283
+ "key": "ios.remote",
284
+ "kind": "choice",
285
+ "scopes": [
286
+ "workspace",
287
+ "repo",
288
+ "committed"
289
+ ]
290
+ }
291
+ },
292
+ "simslimProfile": {
293
+ "description": "SimSlim JSON profile under the app",
294
+ "type": "string",
295
+ "x-stim": {
296
+ "key": "ios.simslimProfile",
297
+ "kind": "path",
298
+ "scopes": [
299
+ "workspace",
300
+ "repo",
301
+ "committed"
302
+ ],
303
+ "relative": true
304
+ }
305
+ },
306
+ "signingIdentity": {
307
+ "description": "Keychain identity used to re-seal a device build",
308
+ "type": "string",
309
+ "x-stim": {
310
+ "key": "ios.signingIdentity",
311
+ "kind": "string",
312
+ "scopes": [
313
+ "workspace",
314
+ "repo",
315
+ "committed"
316
+ ]
317
+ }
318
+ },
319
+ "signingIdentitySha1": {
320
+ "description": "SHA-1 of the signing identity, when two share a name",
321
+ "type": "string",
322
+ "pattern": "^[0-9A-Fa-f]{40}$",
323
+ "x-stim": {
324
+ "key": "ios.signingIdentitySha1",
325
+ "kind": "string",
326
+ "scopes": [
327
+ "workspace",
328
+ "repo",
329
+ "committed"
330
+ ]
331
+ }
332
+ },
333
+ "lanHost": {
334
+ "description": "Address a phone uses to reach this workspace's Metro",
335
+ "type": "string",
336
+ "pattern": "^(?!-)[A-Za-z0-9-]+(?:\\.(?!-)[A-Za-z0-9-]+)*$",
337
+ "x-stim": {
338
+ "key": "ios.lanHost",
339
+ "kind": "string",
340
+ "scopes": [
341
+ "workspace",
342
+ "repo",
343
+ "committed"
344
+ ]
345
+ }
346
+ }
347
+ },
348
+ "additionalProperties": false
349
+ },
350
+ "android": {
351
+ "type": "object",
352
+ "properties": {
353
+ "systemImage": {
354
+ "description": "SDK system image for owned AVDs",
355
+ "type": "string",
356
+ "x-stim": {
357
+ "key": "android.systemImage",
358
+ "kind": "string",
359
+ "scopes": [
360
+ "workspace",
361
+ "repo",
362
+ "committed"
363
+ ]
364
+ }
365
+ },
366
+ "dataPartitionSizeGb": {
367
+ "description": "Data partition size of a new owned AVD, in GiB",
368
+ "type": "integer",
369
+ "minimum": 6,
370
+ "maximum": 16384,
371
+ "default": 8,
372
+ "x-stim": {
373
+ "key": "android.dataPartitionSizeGb",
374
+ "kind": "number",
375
+ "scopes": [
376
+ "workspace",
377
+ "repo",
378
+ "committed"
379
+ ]
380
+ }
381
+ },
382
+ "avdConfigFile": {
383
+ "description": "AVD config.ini fragment under the app",
384
+ "type": "string",
385
+ "x-stim": {
386
+ "key": "android.avdConfigFile",
387
+ "kind": "path",
388
+ "scopes": [
389
+ "workspace",
390
+ "repo",
391
+ "committed"
392
+ ],
393
+ "relative": true
394
+ }
395
+ },
396
+ "avdConfig": {
397
+ "description": "Validated AVD config values",
398
+ "type": "object",
399
+ "x-stim": {
400
+ "key": "android.avdConfig",
401
+ "kind": "object",
402
+ "scopes": [
403
+ "workspace",
404
+ "repo",
405
+ "committed"
406
+ ]
407
+ }
408
+ },
409
+ "variant": {
410
+ "description": "Gradle build variant",
411
+ "type": "string",
412
+ "x-stim": {
413
+ "key": "android.variant",
414
+ "kind": "string",
415
+ "scopes": [
416
+ "workspace",
417
+ "repo",
418
+ "committed"
419
+ ]
420
+ }
421
+ },
422
+ "keystore": {
423
+ "description": "Keystore a re-packed release APK is signed with",
424
+ "type": "string",
425
+ "x-stim": {
426
+ "key": "android.keystore",
427
+ "kind": "path",
428
+ "scopes": [
429
+ "workspace",
430
+ "repo",
431
+ "committed"
432
+ ]
433
+ }
434
+ },
435
+ "keystorePassword": {
436
+ "description": "Keystore password, or an apksigner env: or file: reference",
437
+ "type": "string",
438
+ "pattern": "^(env|file):\\S",
439
+ "x-stim": {
440
+ "key": "android.keystorePassword",
441
+ "kind": "string",
442
+ "scopes": [
443
+ "workspace",
444
+ "repo",
445
+ "committed"
446
+ ],
447
+ "sensitive": true
448
+ }
449
+ },
450
+ "remote": {
451
+ "description": "Default remote backend for Android",
452
+ "type": "string",
453
+ "enum": [
454
+ "proxy",
455
+ "eas"
456
+ ],
457
+ "x-stim": {
458
+ "key": "android.remote",
459
+ "kind": "choice",
460
+ "scopes": [
461
+ "workspace",
462
+ "repo",
463
+ "committed"
464
+ ]
465
+ }
466
+ }
467
+ },
468
+ "additionalProperties": false
469
+ },
470
+ "metro": {
471
+ "type": "object",
472
+ "properties": {
473
+ "tunnel": {
474
+ "description": "How a remote device reaches Metro",
475
+ "type": "string",
476
+ "enum": [
477
+ "auto",
478
+ "off",
479
+ "expo",
480
+ "cloudflared",
481
+ "ngrok"
482
+ ],
483
+ "default": "auto",
484
+ "x-stim": {
485
+ "key": "metro.tunnel",
486
+ "kind": "choice",
487
+ "scopes": [
488
+ "workspace",
489
+ "repo",
490
+ "committed"
491
+ ]
492
+ }
493
+ },
494
+ "ngrokUrl": {
495
+ "description": "Stable ngrok URL for the managed tunnel",
496
+ "type": "string",
497
+ "x-stim": {
498
+ "key": "metro.ngrokUrl",
499
+ "kind": "string",
500
+ "scopes": [
501
+ "workspace",
502
+ "repo",
503
+ "committed"
504
+ ]
505
+ }
506
+ },
507
+ "publicUrl": {
508
+ "description": "Existing public Metro URL",
509
+ "type": "string",
510
+ "x-stim": {
511
+ "key": "metro.publicUrl",
512
+ "kind": "string",
513
+ "scopes": [
514
+ "workspace",
515
+ "repo",
516
+ "committed"
517
+ ]
518
+ }
519
+ },
520
+ "warmupUrl": {
521
+ "type": "object",
522
+ "properties": {
523
+ "ios": {
524
+ "description": "Bundle URL `stim ios` prefetches to warm Metro",
525
+ "type": "string",
526
+ "x-stim": {
527
+ "key": "metro.warmupUrl.ios",
528
+ "kind": "bundle-url",
529
+ "scopes": [
530
+ "workspace",
531
+ "repo",
532
+ "committed"
533
+ ]
534
+ }
535
+ },
536
+ "android": {
537
+ "description": "Bundle URL `stim android` prefetches to warm Metro",
538
+ "type": "string",
539
+ "x-stim": {
540
+ "key": "metro.warmupUrl.android",
541
+ "kind": "bundle-url",
542
+ "scopes": [
543
+ "workspace",
544
+ "repo",
545
+ "committed"
546
+ ]
547
+ }
548
+ }
549
+ },
550
+ "additionalProperties": false
551
+ },
552
+ "idleStopMinutes": {
553
+ "description": "Minutes without a bundle request, client log or Stim command before the dev server stops; 0 never",
554
+ "type": "integer",
555
+ "minimum": 0,
556
+ "default": 60,
557
+ "x-stim": {
558
+ "key": "metro.idleStopMinutes",
559
+ "kind": "number",
560
+ "scopes": [
561
+ "workspace",
562
+ "repo",
563
+ "committed"
564
+ ]
565
+ }
566
+ }
567
+ },
568
+ "additionalProperties": false
569
+ },
570
+ "worktree": {
571
+ "type": "object",
572
+ "properties": {
573
+ "exclude": {
574
+ "description": "Ignored paths `worktree warm` skips",
575
+ "type": "array",
576
+ "items": {
577
+ "type": "string"
578
+ },
579
+ "x-stim": {
580
+ "key": "worktree.exclude",
581
+ "kind": "strings",
582
+ "scopes": [
583
+ "repo",
584
+ "committed"
585
+ ],
586
+ "committedAt": "repository"
587
+ }
588
+ },
589
+ "defaultBranch": {
590
+ "description": "Branch `worktree warm --refresh` expects the source checkout on",
591
+ "type": "string",
592
+ "x-stim": {
593
+ "key": "worktree.defaultBranch",
594
+ "kind": "string",
595
+ "scopes": [
596
+ "repo",
597
+ "committed"
598
+ ],
599
+ "committedAt": "repository"
600
+ }
601
+ }
602
+ },
603
+ "additionalProperties": false
604
+ },
605
+ "cache": {
606
+ "type": "object",
607
+ "properties": {
608
+ "provider": {
609
+ "description": "Second-tier cache provider module",
610
+ "type": "string",
611
+ "x-stim": {
612
+ "key": "cache.provider",
613
+ "kind": "string",
614
+ "scopes": [
615
+ "workspace",
616
+ "repo",
617
+ "committed"
618
+ ]
619
+ }
620
+ },
621
+ "options": {
622
+ "description": "Options passed to the cache provider",
623
+ "type": "object",
624
+ "x-stim": {
625
+ "key": "cache.options",
626
+ "kind": "object",
627
+ "scopes": [
628
+ "workspace",
629
+ "repo",
630
+ "committed"
631
+ ]
632
+ }
633
+ }
634
+ },
635
+ "additionalProperties": false
636
+ },
637
+ "$schema": {
638
+ "type": "string"
639
+ }
640
+ },
641
+ "additionalProperties": false,
642
+ "$defs": {
643
+ "machine": {
644
+ "type": "object",
645
+ "properties": {
646
+ "optimizations": {
647
+ "type": "object",
648
+ "properties": {
649
+ "buildCache": {
650
+ "description": "Read and write native build artifacts",
651
+ "type": "boolean",
652
+ "default": true,
653
+ "x-stim": {
654
+ "key": "optimizations.buildCache",
655
+ "kind": "boolean",
656
+ "scopes": [
657
+ "machine",
658
+ "workspace",
659
+ "repo",
660
+ "committed"
661
+ ]
662
+ }
663
+ },
664
+ "remoteBuildCache": {
665
+ "description": "Use remote artifact providers",
666
+ "type": "boolean",
667
+ "default": true,
668
+ "x-stim": {
669
+ "key": "optimizations.remoteBuildCache",
670
+ "kind": "boolean",
671
+ "scopes": [
672
+ "machine",
673
+ "workspace",
674
+ "repo",
675
+ "committed"
676
+ ]
677
+ }
678
+ },
679
+ "releaseBundleSwap": {
680
+ "description": "Swap current JS into cached release builds",
681
+ "type": "boolean",
682
+ "default": true,
683
+ "x-stim": {
684
+ "key": "optimizations.releaseBundleSwap",
685
+ "kind": "boolean",
686
+ "scopes": [
687
+ "machine",
688
+ "workspace",
689
+ "repo",
690
+ "committed"
691
+ ]
692
+ }
693
+ },
694
+ "metroSharedCache": {
695
+ "description": "Append Stim's shared Metro cache store",
696
+ "type": "boolean",
697
+ "default": true,
698
+ "x-stim": {
699
+ "key": "optimizations.metroSharedCache",
700
+ "kind": "boolean",
701
+ "scopes": [
702
+ "machine",
703
+ "workspace",
704
+ "repo",
705
+ "committed"
706
+ ]
707
+ }
708
+ },
709
+ "metroWarmup": {
710
+ "description": "Prefetch the development bundle during ios and android",
711
+ "type": "boolean",
712
+ "default": true,
713
+ "x-stim": {
714
+ "key": "optimizations.metroWarmup",
715
+ "kind": "boolean",
716
+ "scopes": [
717
+ "machine",
718
+ "workspace",
719
+ "repo",
720
+ "committed"
721
+ ]
722
+ }
723
+ },
724
+ "ios": {
725
+ "type": "object",
726
+ "properties": {
727
+ "compilationCache": {
728
+ "description": "Xcode compilation caching",
729
+ "type": "boolean",
730
+ "default": true,
731
+ "x-stim": {
732
+ "key": "optimizations.ios.compilationCache",
733
+ "kind": "boolean",
734
+ "scopes": [
735
+ "machine",
736
+ "workspace",
737
+ "repo",
738
+ "committed"
739
+ ]
740
+ }
741
+ },
742
+ "swiftCompilationCache": {
743
+ "description": "Swift compilation caching; unset detects toolchain support",
744
+ "type": "boolean",
745
+ "x-stim": {
746
+ "key": "optimizations.ios.swiftCompilationCache",
747
+ "kind": "boolean",
748
+ "scopes": [
749
+ "machine",
750
+ "workspace",
751
+ "repo",
752
+ "committed"
753
+ ]
754
+ }
755
+ },
756
+ "prefixMapping": {
757
+ "description": "Clang source and DerivedData prefix mapping",
758
+ "type": "boolean",
759
+ "default": true,
760
+ "x-stim": {
761
+ "key": "optimizations.ios.prefixMapping",
762
+ "kind": "boolean",
763
+ "scopes": [
764
+ "machine",
765
+ "workspace",
766
+ "repo",
767
+ "committed"
768
+ ]
769
+ }
770
+ }
771
+ },
772
+ "additionalProperties": false
773
+ },
774
+ "android": {
775
+ "type": "object",
776
+ "properties": {
777
+ "compilerCache": {
778
+ "description": "Android compiler cache backend",
779
+ "type": "string",
780
+ "enum": [
781
+ "auto",
782
+ "ccache",
783
+ "cas",
784
+ "none"
785
+ ],
786
+ "default": "auto",
787
+ "x-stim": {
788
+ "key": "optimizations.android.compilerCache",
789
+ "kind": "choice",
790
+ "scopes": [
791
+ "machine",
792
+ "workspace",
793
+ "repo",
794
+ "committed"
795
+ ]
796
+ }
797
+ },
798
+ "casToolchain": {
799
+ "description": "Absolute path to the Android CAS toolchain manifest",
800
+ "type": "string",
801
+ "x-stim": {
802
+ "key": "optimizations.android.casToolchain",
803
+ "kind": "path",
804
+ "scopes": [
805
+ "machine",
806
+ "workspace",
807
+ "repo",
808
+ "committed"
809
+ ],
810
+ "absolute": true,
811
+ "env": "STIM_ANDROID_CAS_TOOLCHAIN"
812
+ }
813
+ },
814
+ "pch": {
815
+ "description": "Android precompiled headers",
816
+ "type": "string",
817
+ "enum": [
818
+ "auto",
819
+ "on",
820
+ "off"
821
+ ],
822
+ "default": "auto",
823
+ "x-stim": {
824
+ "key": "optimizations.android.pch",
825
+ "kind": "choice",
826
+ "scopes": [
827
+ "machine",
828
+ "workspace",
829
+ "repo",
830
+ "committed"
831
+ ]
832
+ }
833
+ },
834
+ "gradleBuildCache": {
835
+ "description": "Gradle build cache",
836
+ "type": "boolean",
837
+ "default": true,
838
+ "x-stim": {
839
+ "key": "optimizations.android.gradleBuildCache",
840
+ "kind": "boolean",
841
+ "scopes": [
842
+ "machine",
843
+ "workspace",
844
+ "repo",
845
+ "committed"
846
+ ]
847
+ }
848
+ },
849
+ "targetAbiOnly": {
850
+ "description": "Narrow Debug builds to the device ABI",
851
+ "type": "boolean",
852
+ "default": true,
853
+ "x-stim": {
854
+ "key": "optimizations.android.targetAbiOnly",
855
+ "kind": "boolean",
856
+ "scopes": [
857
+ "machine",
858
+ "workspace",
859
+ "repo",
860
+ "committed"
861
+ ]
862
+ }
863
+ }
864
+ },
865
+ "additionalProperties": false
866
+ }
867
+ },
868
+ "additionalProperties": false
869
+ },
870
+ "iosSimulatorApp": {
871
+ "description": "App that displays an owned iOS simulator",
872
+ "type": "string",
873
+ "enum": [
874
+ "xcode",
875
+ "siniulator",
876
+ "stim-desktop"
877
+ ],
878
+ "default": "xcode",
879
+ "x-stim": {
880
+ "key": "iosSimulatorApp",
881
+ "kind": "choice",
882
+ "scopes": [
883
+ "machine"
884
+ ]
885
+ }
886
+ },
887
+ "concurrency": {
888
+ "type": "object",
889
+ "properties": {
890
+ "maxBuilds": {
891
+ "description": "Concurrent native builds; 0 means no limit",
892
+ "type": "integer",
893
+ "minimum": 0,
894
+ "default": 0,
895
+ "x-stim": {
896
+ "key": "concurrency.maxBuilds",
897
+ "kind": "number",
898
+ "scopes": [
899
+ "machine"
900
+ ],
901
+ "env": "STIM_MAX_BUILDS"
902
+ }
903
+ },
904
+ "maxDevices": {
905
+ "description": "Booted owned devices; 0 means no limit",
906
+ "type": "integer",
907
+ "minimum": 0,
908
+ "default": 0,
909
+ "x-stim": {
910
+ "key": "concurrency.maxDevices",
911
+ "kind": "number",
912
+ "scopes": [
913
+ "machine"
914
+ ],
915
+ "env": "STIM_MAX_DEVICES"
916
+ }
917
+ }
918
+ },
919
+ "additionalProperties": false
920
+ },
921
+ "budget": {
922
+ "type": "object",
923
+ "properties": {
924
+ "minFreeDiskGb": {
925
+ "description": "Free disk, in GB, ios, android and start reclaim toward; 0 reclaims only below the hard floor",
926
+ "type": "number",
927
+ "minimum": 0,
928
+ "default": 20,
929
+ "x-stim": {
930
+ "key": "budget.minFreeDiskGb",
931
+ "kind": "number",
932
+ "scopes": [
933
+ "machine"
934
+ ],
935
+ "env": "STIM_BUDGET_MIN_FREE_DISK_GB"
936
+ }
937
+ },
938
+ "hardFloorDiskGb": {
939
+ "description": "Free disk, in GB, below which ios, android and start refuse with STIM_LOW_DISK; 0 never refuses",
940
+ "type": "number",
941
+ "minimum": 0,
942
+ "default": 5,
943
+ "x-stim": {
944
+ "key": "budget.hardFloorDiskGb",
945
+ "kind": "number",
946
+ "scopes": [
947
+ "machine"
948
+ ],
949
+ "env": "STIM_BUDGET_HARD_FLOOR_DISK_GB"
950
+ }
951
+ },
952
+ "maxCommittedMemoryGb": {
953
+ "description": "Estimated memory, in GB, of live environments before idle ones are reclaimed; unset is 60% of RAM, 0 is off",
954
+ "type": "number",
955
+ "minimum": 0,
956
+ "x-stim": {
957
+ "key": "budget.maxCommittedMemoryGb",
958
+ "kind": "number",
959
+ "scopes": [
960
+ "machine"
961
+ ],
962
+ "env": "STIM_BUDGET_MAX_COMMITTED_MEMORY_GB"
963
+ }
964
+ },
965
+ "maxLiveWorkspaces": {
966
+ "description": "Live workspaces before idle ones are reclaimed; unset or 0 means no limit",
967
+ "type": "integer",
968
+ "minimum": 0,
969
+ "x-stim": {
970
+ "key": "budget.maxLiveWorkspaces",
971
+ "kind": "number",
972
+ "scopes": [
973
+ "machine"
974
+ ],
975
+ "env": "STIM_BUDGET_MAX_LIVE_WORKSPACES"
976
+ }
977
+ }
978
+ },
979
+ "additionalProperties": false
980
+ },
981
+ "pool": {
982
+ "type": "object",
983
+ "properties": {
984
+ "iosParkedMax": {
985
+ "description": "Parked simulators kept for adoption; 0 turns parking off",
986
+ "type": "integer",
987
+ "minimum": 0,
988
+ "default": 3,
989
+ "x-stim": {
990
+ "key": "pool.iosParkedMax",
991
+ "kind": "number",
992
+ "scopes": [
993
+ "machine"
994
+ ],
995
+ "env": "STIM_POOL_IOS_PARKED_MAX"
996
+ }
997
+ },
998
+ "androidParkedMax": {
999
+ "description": "Parked emulators kept for adoption; 0 turns parking off",
1000
+ "type": "integer",
1001
+ "minimum": 0,
1002
+ "default": 3,
1003
+ "x-stim": {
1004
+ "key": "pool.androidParkedMax",
1005
+ "kind": "number",
1006
+ "scopes": [
1007
+ "machine"
1008
+ ],
1009
+ "env": "STIM_POOL_ANDROID_PARKED_MAX"
1010
+ }
1011
+ }
1012
+ },
1013
+ "additionalProperties": false
1014
+ },
1015
+ "caches": {
1016
+ "type": "object",
1017
+ "properties": {
1018
+ "buildCache": {
1019
+ "description": "Absolute path of the shared build cache",
1020
+ "type": "string",
1021
+ "x-stim": {
1022
+ "key": "caches.buildCache",
1023
+ "kind": "path",
1024
+ "scopes": [
1025
+ "machine"
1026
+ ],
1027
+ "absolute": true,
1028
+ "env": "STIM_BUILD_CACHE"
1029
+ }
1030
+ },
1031
+ "metroCache": {
1032
+ "description": "Absolute parent path of the Metro transform caches",
1033
+ "type": "string",
1034
+ "x-stim": {
1035
+ "key": "caches.metroCache",
1036
+ "kind": "path",
1037
+ "scopes": [
1038
+ "machine"
1039
+ ],
1040
+ "absolute": true,
1041
+ "env": "STIM_METRO_CACHE"
1042
+ }
1043
+ }
1044
+ },
1045
+ "additionalProperties": false
1046
+ },
1047
+ "tempDir": {
1048
+ "description": "Absolute directory for large temporary copies",
1049
+ "type": "string",
1050
+ "x-stim": {
1051
+ "key": "tempDir",
1052
+ "kind": "path",
1053
+ "scopes": [
1054
+ "machine"
1055
+ ],
1056
+ "absolute": true,
1057
+ "env": "STIM_TMPDIR"
1058
+ }
1059
+ }
1060
+ },
1061
+ "additionalProperties": true
1062
+ }
1063
+ }
1064
+ }