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
@@ -0,0 +1,989 @@
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
+ },
553
+ "additionalProperties": false
554
+ },
555
+ "worktree": {
556
+ "type": "object",
557
+ "properties": {
558
+ "exclude": {
559
+ "description": "Ignored paths `worktree warm` skips",
560
+ "type": "array",
561
+ "items": {
562
+ "type": "string"
563
+ },
564
+ "x-stim": {
565
+ "key": "worktree.exclude",
566
+ "kind": "strings",
567
+ "scopes": [
568
+ "repo",
569
+ "committed"
570
+ ],
571
+ "committedAt": "repository"
572
+ }
573
+ },
574
+ "defaultBranch": {
575
+ "description": "Branch `worktree warm --refresh` expects the source checkout on",
576
+ "type": "string",
577
+ "x-stim": {
578
+ "key": "worktree.defaultBranch",
579
+ "kind": "string",
580
+ "scopes": [
581
+ "repo",
582
+ "committed"
583
+ ],
584
+ "committedAt": "repository"
585
+ }
586
+ }
587
+ },
588
+ "additionalProperties": false
589
+ },
590
+ "cache": {
591
+ "type": "object",
592
+ "properties": {
593
+ "provider": {
594
+ "description": "Second-tier cache provider module",
595
+ "type": "string",
596
+ "x-stim": {
597
+ "key": "cache.provider",
598
+ "kind": "string",
599
+ "scopes": [
600
+ "workspace",
601
+ "repo",
602
+ "committed"
603
+ ]
604
+ }
605
+ },
606
+ "options": {
607
+ "description": "Options passed to the cache provider",
608
+ "type": "object",
609
+ "x-stim": {
610
+ "key": "cache.options",
611
+ "kind": "object",
612
+ "scopes": [
613
+ "workspace",
614
+ "repo",
615
+ "committed"
616
+ ]
617
+ }
618
+ }
619
+ },
620
+ "additionalProperties": false
621
+ },
622
+ "$schema": {
623
+ "type": "string"
624
+ }
625
+ },
626
+ "additionalProperties": false,
627
+ "$defs": {
628
+ "machine": {
629
+ "type": "object",
630
+ "properties": {
631
+ "optimizations": {
632
+ "type": "object",
633
+ "properties": {
634
+ "buildCache": {
635
+ "description": "Read and write native build artifacts",
636
+ "type": "boolean",
637
+ "default": true,
638
+ "x-stim": {
639
+ "key": "optimizations.buildCache",
640
+ "kind": "boolean",
641
+ "scopes": [
642
+ "machine",
643
+ "workspace",
644
+ "repo",
645
+ "committed"
646
+ ]
647
+ }
648
+ },
649
+ "remoteBuildCache": {
650
+ "description": "Use remote artifact providers",
651
+ "type": "boolean",
652
+ "default": true,
653
+ "x-stim": {
654
+ "key": "optimizations.remoteBuildCache",
655
+ "kind": "boolean",
656
+ "scopes": [
657
+ "machine",
658
+ "workspace",
659
+ "repo",
660
+ "committed"
661
+ ]
662
+ }
663
+ },
664
+ "releaseBundleSwap": {
665
+ "description": "Swap current JS into cached release builds",
666
+ "type": "boolean",
667
+ "default": true,
668
+ "x-stim": {
669
+ "key": "optimizations.releaseBundleSwap",
670
+ "kind": "boolean",
671
+ "scopes": [
672
+ "machine",
673
+ "workspace",
674
+ "repo",
675
+ "committed"
676
+ ]
677
+ }
678
+ },
679
+ "metroSharedCache": {
680
+ "description": "Append Stim's shared Metro cache store",
681
+ "type": "boolean",
682
+ "default": true,
683
+ "x-stim": {
684
+ "key": "optimizations.metroSharedCache",
685
+ "kind": "boolean",
686
+ "scopes": [
687
+ "machine",
688
+ "workspace",
689
+ "repo",
690
+ "committed"
691
+ ]
692
+ }
693
+ },
694
+ "metroWarmup": {
695
+ "description": "Prefetch the development bundle during ios and android",
696
+ "type": "boolean",
697
+ "default": true,
698
+ "x-stim": {
699
+ "key": "optimizations.metroWarmup",
700
+ "kind": "boolean",
701
+ "scopes": [
702
+ "machine",
703
+ "workspace",
704
+ "repo",
705
+ "committed"
706
+ ]
707
+ }
708
+ },
709
+ "ios": {
710
+ "type": "object",
711
+ "properties": {
712
+ "compilationCache": {
713
+ "description": "Xcode compilation caching",
714
+ "type": "boolean",
715
+ "default": true,
716
+ "x-stim": {
717
+ "key": "optimizations.ios.compilationCache",
718
+ "kind": "boolean",
719
+ "scopes": [
720
+ "machine",
721
+ "workspace",
722
+ "repo",
723
+ "committed"
724
+ ]
725
+ }
726
+ },
727
+ "swiftCompilationCache": {
728
+ "description": "Swift compilation caching; unset detects toolchain support",
729
+ "type": "boolean",
730
+ "x-stim": {
731
+ "key": "optimizations.ios.swiftCompilationCache",
732
+ "kind": "boolean",
733
+ "scopes": [
734
+ "machine",
735
+ "workspace",
736
+ "repo",
737
+ "committed"
738
+ ]
739
+ }
740
+ },
741
+ "prefixMapping": {
742
+ "description": "Clang source and DerivedData prefix mapping",
743
+ "type": "boolean",
744
+ "default": true,
745
+ "x-stim": {
746
+ "key": "optimizations.ios.prefixMapping",
747
+ "kind": "boolean",
748
+ "scopes": [
749
+ "machine",
750
+ "workspace",
751
+ "repo",
752
+ "committed"
753
+ ]
754
+ }
755
+ }
756
+ },
757
+ "additionalProperties": false
758
+ },
759
+ "android": {
760
+ "type": "object",
761
+ "properties": {
762
+ "compilerCache": {
763
+ "description": "Android compiler cache backend",
764
+ "type": "string",
765
+ "enum": [
766
+ "auto",
767
+ "ccache",
768
+ "cas",
769
+ "none"
770
+ ],
771
+ "default": "auto",
772
+ "x-stim": {
773
+ "key": "optimizations.android.compilerCache",
774
+ "kind": "choice",
775
+ "scopes": [
776
+ "machine",
777
+ "workspace",
778
+ "repo",
779
+ "committed"
780
+ ]
781
+ }
782
+ },
783
+ "casToolchain": {
784
+ "description": "Absolute path to the Android CAS toolchain manifest",
785
+ "type": "string",
786
+ "x-stim": {
787
+ "key": "optimizations.android.casToolchain",
788
+ "kind": "path",
789
+ "scopes": [
790
+ "machine",
791
+ "workspace",
792
+ "repo",
793
+ "committed"
794
+ ],
795
+ "absolute": true,
796
+ "env": "STIM_ANDROID_CAS_TOOLCHAIN"
797
+ }
798
+ },
799
+ "pch": {
800
+ "description": "Android precompiled headers",
801
+ "type": "string",
802
+ "enum": [
803
+ "auto",
804
+ "on",
805
+ "off"
806
+ ],
807
+ "default": "auto",
808
+ "x-stim": {
809
+ "key": "optimizations.android.pch",
810
+ "kind": "choice",
811
+ "scopes": [
812
+ "machine",
813
+ "workspace",
814
+ "repo",
815
+ "committed"
816
+ ]
817
+ }
818
+ },
819
+ "gradleBuildCache": {
820
+ "description": "Gradle build cache",
821
+ "type": "boolean",
822
+ "default": true,
823
+ "x-stim": {
824
+ "key": "optimizations.android.gradleBuildCache",
825
+ "kind": "boolean",
826
+ "scopes": [
827
+ "machine",
828
+ "workspace",
829
+ "repo",
830
+ "committed"
831
+ ]
832
+ }
833
+ },
834
+ "targetAbiOnly": {
835
+ "description": "Narrow Debug builds to the device ABI",
836
+ "type": "boolean",
837
+ "default": true,
838
+ "x-stim": {
839
+ "key": "optimizations.android.targetAbiOnly",
840
+ "kind": "boolean",
841
+ "scopes": [
842
+ "machine",
843
+ "workspace",
844
+ "repo",
845
+ "committed"
846
+ ]
847
+ }
848
+ }
849
+ },
850
+ "additionalProperties": false
851
+ }
852
+ },
853
+ "additionalProperties": false
854
+ },
855
+ "iosSimulatorApp": {
856
+ "description": "App that displays an owned iOS simulator",
857
+ "type": "string",
858
+ "enum": [
859
+ "xcode",
860
+ "siniulator",
861
+ "stim-desktop"
862
+ ],
863
+ "default": "xcode",
864
+ "x-stim": {
865
+ "key": "iosSimulatorApp",
866
+ "kind": "choice",
867
+ "scopes": [
868
+ "machine"
869
+ ]
870
+ }
871
+ },
872
+ "concurrency": {
873
+ "type": "object",
874
+ "properties": {
875
+ "maxBuilds": {
876
+ "description": "Concurrent native builds; 0 means no limit",
877
+ "type": "integer",
878
+ "minimum": 0,
879
+ "default": 0,
880
+ "x-stim": {
881
+ "key": "concurrency.maxBuilds",
882
+ "kind": "number",
883
+ "scopes": [
884
+ "machine"
885
+ ],
886
+ "env": "STIM_MAX_BUILDS"
887
+ }
888
+ },
889
+ "maxDevices": {
890
+ "description": "Booted owned devices; 0 means no limit",
891
+ "type": "integer",
892
+ "minimum": 0,
893
+ "default": 0,
894
+ "x-stim": {
895
+ "key": "concurrency.maxDevices",
896
+ "kind": "number",
897
+ "scopes": [
898
+ "machine"
899
+ ],
900
+ "env": "STIM_MAX_DEVICES"
901
+ }
902
+ }
903
+ },
904
+ "additionalProperties": false
905
+ },
906
+ "pool": {
907
+ "type": "object",
908
+ "properties": {
909
+ "iosParkedMax": {
910
+ "description": "Parked simulators kept for adoption; 0 turns parking off",
911
+ "type": "integer",
912
+ "minimum": 0,
913
+ "default": 3,
914
+ "x-stim": {
915
+ "key": "pool.iosParkedMax",
916
+ "kind": "number",
917
+ "scopes": [
918
+ "machine"
919
+ ],
920
+ "env": "STIM_POOL_IOS_PARKED_MAX"
921
+ }
922
+ },
923
+ "androidParkedMax": {
924
+ "description": "Parked emulators kept for adoption; 0 turns parking off",
925
+ "type": "integer",
926
+ "minimum": 0,
927
+ "default": 3,
928
+ "x-stim": {
929
+ "key": "pool.androidParkedMax",
930
+ "kind": "number",
931
+ "scopes": [
932
+ "machine"
933
+ ],
934
+ "env": "STIM_POOL_ANDROID_PARKED_MAX"
935
+ }
936
+ }
937
+ },
938
+ "additionalProperties": false
939
+ },
940
+ "caches": {
941
+ "type": "object",
942
+ "properties": {
943
+ "buildCache": {
944
+ "description": "Absolute path of the shared build cache",
945
+ "type": "string",
946
+ "x-stim": {
947
+ "key": "caches.buildCache",
948
+ "kind": "path",
949
+ "scopes": [
950
+ "machine"
951
+ ],
952
+ "absolute": true,
953
+ "env": "STIM_BUILD_CACHE"
954
+ }
955
+ },
956
+ "metroCache": {
957
+ "description": "Absolute parent path of the Metro transform caches",
958
+ "type": "string",
959
+ "x-stim": {
960
+ "key": "caches.metroCache",
961
+ "kind": "path",
962
+ "scopes": [
963
+ "machine"
964
+ ],
965
+ "absolute": true,
966
+ "env": "STIM_METRO_CACHE"
967
+ }
968
+ }
969
+ },
970
+ "additionalProperties": false
971
+ },
972
+ "tempDir": {
973
+ "description": "Absolute directory for large temporary copies",
974
+ "type": "string",
975
+ "x-stim": {
976
+ "key": "tempDir",
977
+ "kind": "path",
978
+ "scopes": [
979
+ "machine"
980
+ ],
981
+ "absolute": true,
982
+ "env": "STIM_TMPDIR"
983
+ }
984
+ }
985
+ },
986
+ "additionalProperties": true
987
+ }
988
+ }
989
+ }