fleetfizz 0.13.0 → 0.14.1

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 (5) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +29 -0
  3. package/dist/fleetfizz.mjs +34406 -34385
  4. package/package.json +18 -1
  5. package/schema.json +1002 -62
package/schema.json CHANGED
@@ -6,6 +6,14 @@
6
6
  "$schema": {
7
7
  "type": "string"
8
8
  },
9
+ "version": {
10
+ "type": "string",
11
+ "allOf": [
12
+ {
13
+ "description": "The fleetfizz version every Machine runs. A fizz of any other version installs this one before it does anything else."
14
+ }
15
+ ]
16
+ },
9
17
  "machines": {
10
18
  "type": "array",
11
19
  "items": {
@@ -20,6 +28,203 @@
20
28
  }
21
29
  ]
22
30
  },
31
+ "shell": {
32
+ "type": "object",
33
+ "properties": {
34
+ "init": {
35
+ "anyOf": [
36
+ {
37
+ "anyOf": [
38
+ {
39
+ "type": "object",
40
+ "properties": {
41
+ "platforms": {
42
+ "type": "array",
43
+ "prefixItems": [
44
+ {
45
+ "type": "string",
46
+ "enum": ["darwin", "linux"]
47
+ }
48
+ ],
49
+ "minItems": 1,
50
+ "items": {
51
+ "type": "string",
52
+ "enum": ["darwin", "linux"]
53
+ },
54
+ "allOf": [
55
+ {
56
+ "description": "`darwin`, `linux`, or both."
57
+ }
58
+ ]
59
+ },
60
+ "machines": {
61
+ "type": "array",
62
+ "prefixItems": [
63
+ {
64
+ "type": "string",
65
+ "minLength": 1
66
+ }
67
+ ],
68
+ "minItems": 1,
69
+ "items": {
70
+ "type": "string",
71
+ "minLength": 1
72
+ },
73
+ "allOf": [
74
+ {
75
+ "description": "Machine names from `machines`."
76
+ }
77
+ ]
78
+ },
79
+ "command": {
80
+ "type": "string",
81
+ "minLength": 1
82
+ }
83
+ },
84
+ "required": ["command"],
85
+ "additionalProperties": false
86
+ },
87
+ {
88
+ "type": "string",
89
+ "minLength": 1
90
+ }
91
+ ]
92
+ },
93
+ {
94
+ "type": "array",
95
+ "prefixItems": [
96
+ {
97
+ "anyOf": [
98
+ {
99
+ "type": "object",
100
+ "properties": {
101
+ "platforms": {
102
+ "type": "array",
103
+ "prefixItems": [
104
+ {
105
+ "type": "string",
106
+ "enum": ["darwin", "linux"]
107
+ }
108
+ ],
109
+ "minItems": 1,
110
+ "items": {
111
+ "type": "string",
112
+ "enum": ["darwin", "linux"]
113
+ },
114
+ "allOf": [
115
+ {
116
+ "description": "`darwin`, `linux`, or both."
117
+ }
118
+ ]
119
+ },
120
+ "machines": {
121
+ "type": "array",
122
+ "prefixItems": [
123
+ {
124
+ "type": "string",
125
+ "minLength": 1
126
+ }
127
+ ],
128
+ "minItems": 1,
129
+ "items": {
130
+ "type": "string",
131
+ "minLength": 1
132
+ },
133
+ "allOf": [
134
+ {
135
+ "description": "Machine names from `machines`."
136
+ }
137
+ ]
138
+ },
139
+ "command": {
140
+ "type": "string",
141
+ "minLength": 1
142
+ }
143
+ },
144
+ "required": ["command"],
145
+ "additionalProperties": false
146
+ },
147
+ {
148
+ "type": "string",
149
+ "minLength": 1
150
+ }
151
+ ]
152
+ }
153
+ ],
154
+ "minItems": 1,
155
+ "items": {
156
+ "anyOf": [
157
+ {
158
+ "type": "object",
159
+ "properties": {
160
+ "platforms": {
161
+ "type": "array",
162
+ "prefixItems": [
163
+ {
164
+ "type": "string",
165
+ "enum": ["darwin", "linux"]
166
+ }
167
+ ],
168
+ "minItems": 1,
169
+ "items": {
170
+ "type": "string",
171
+ "enum": ["darwin", "linux"]
172
+ },
173
+ "allOf": [
174
+ {
175
+ "description": "`darwin`, `linux`, or both."
176
+ }
177
+ ]
178
+ },
179
+ "machines": {
180
+ "type": "array",
181
+ "prefixItems": [
182
+ {
183
+ "type": "string",
184
+ "minLength": 1
185
+ }
186
+ ],
187
+ "minItems": 1,
188
+ "items": {
189
+ "type": "string",
190
+ "minLength": 1
191
+ },
192
+ "allOf": [
193
+ {
194
+ "description": "Machine names from `machines`."
195
+ }
196
+ ]
197
+ },
198
+ "command": {
199
+ "type": "string",
200
+ "minLength": 1
201
+ }
202
+ },
203
+ "required": ["command"],
204
+ "additionalProperties": false
205
+ },
206
+ {
207
+ "type": "string",
208
+ "minLength": 1
209
+ }
210
+ ]
211
+ }
212
+ }
213
+ ],
214
+ "allOf": [
215
+ {
216
+ "description": "Shell run before every script a Ship runs on a Machine (`source ~/.zshrc`): a command, or a list of `{ command, platforms?, machines? }` where a Machine gets the first that targets it. By default no rc file is read; the known bin directories of vp, pnpm, bun, mise, volta, nvm, and fnm are on PATH."
217
+ }
218
+ ]
219
+ }
220
+ },
221
+ "additionalProperties": false,
222
+ "allOf": [
223
+ {
224
+ "description": "How a Ship's scripts start on each Machine."
225
+ }
226
+ ]
227
+ },
23
228
  "files": {
24
229
  "type": "object",
25
230
  "properties": {
@@ -65,7 +270,7 @@
65
270
  "type": "array",
66
271
  "items": {
67
272
  "type": "string",
68
- "enum": ["files", "vp", "brew", "cask", "skills", "repos"]
273
+ "enum": ["brew", "cask", "files", "vp", "npm", "bun", "pnpm", "skills", "repos"]
69
274
  },
70
275
  "allOf": [
71
276
  {
@@ -146,6 +351,15 @@
146
351
  "description": "Globs inside a directory that are neither copied nor deleted. One without a `/` matches a name at any depth. `.DS_Store` and `._*` are always excluded. Every Variant of one Shared File has the same exclude."
147
352
  }
148
353
  ]
354
+ },
355
+ "after": {
356
+ "type": "string",
357
+ "minLength": 1,
358
+ "allOf": [
359
+ {
360
+ "description": "A command run after a Ship writes the file there, in its directory, with shell.init and the known bin directories set up (`mise install`). If it fails, the next Ship runs it again."
361
+ }
362
+ ]
149
363
  }
150
364
  },
151
365
  "required": ["path"],
@@ -227,6 +441,15 @@
227
441
  "description": "Globs inside a directory that are neither copied nor deleted. One without a `/` matches a name at any depth. `.DS_Store` and `._*` are always excluded. Every Variant of one Shared File has the same exclude."
228
442
  }
229
443
  ]
444
+ },
445
+ "after": {
446
+ "type": "string",
447
+ "minLength": 1,
448
+ "allOf": [
449
+ {
450
+ "description": "A command run after a Ship writes the file there, in its directory, with shell.init and the known bin directories set up (`mise install`). If it fails, the next Ship runs it again."
451
+ }
452
+ ]
230
453
  }
231
454
  },
232
455
  "required": ["path"],
@@ -307,6 +530,15 @@
307
530
  "description": "Globs inside a directory that are neither copied nor deleted. One without a `/` matches a name at any depth. `.DS_Store` and `._*` are always excluded. Every Variant of one Shared File has the same exclude."
308
531
  }
309
532
  ]
533
+ },
534
+ "after": {
535
+ "type": "string",
536
+ "minLength": 1,
537
+ "allOf": [
538
+ {
539
+ "description": "A command run after a Ship writes the file there, in its directory, with shell.init and the known bin directories set up (`mise install`). If it fails, the next Ship runs it again."
540
+ }
541
+ ]
310
542
  }
311
543
  },
312
544
  "required": ["path"],
@@ -325,7 +557,7 @@
325
557
  },
326
558
  "allOf": [
327
559
  {
328
- "description": "Shared Files, keyed by name, which names the `files:<name>` Item. Each is a path, `{ path, exclude?, platforms?, machines? }`, or a list of Variants, of which a Machine gets the first that targets it."
560
+ "description": "Shared Files, keyed by name, which names the `files:<name>` Item. Each is a path, `{ path, exclude?, after?, platforms?, machines? }`, or a list of Variants, of which a Machine gets the first that targets it."
329
561
  }
330
562
  ]
331
563
  }
@@ -382,7 +614,7 @@
382
614
  "type": "array",
383
615
  "items": {
384
616
  "type": "string",
385
- "enum": ["files", "vp", "brew", "cask", "skills", "repos"]
617
+ "enum": ["brew", "cask", "files", "vp", "npm", "bun", "pnpm", "skills", "repos"]
386
618
  },
387
619
  "allOf": [
388
620
  {
@@ -906,7 +1138,7 @@
906
1138
  "type": "array",
907
1139
  "items": {
908
1140
  "type": "string",
909
- "enum": ["files", "vp", "brew", "cask", "skills", "repos"]
1141
+ "enum": ["brew", "cask", "files", "vp", "npm", "bun", "pnpm", "skills", "repos"]
910
1142
  },
911
1143
  "allOf": [
912
1144
  {
@@ -914,57 +1146,765 @@
914
1146
  }
915
1147
  ]
916
1148
  },
917
- "version": {
918
- "type": "string",
919
- "minLength": 1,
920
- "allOf": [
921
- {
922
- "description": "The vp version. Pin it exactly."
923
- }
924
- ]
925
- },
926
- "node": {
927
- "type": "string",
928
- "minLength": 1,
929
- "allOf": [
930
- {
931
- "description": "The default Node version. Pin it exactly."
932
- }
933
- ]
934
- },
935
- "npm": {
936
- "type": "string",
937
- "minLength": 1,
938
- "allOf": [
939
- {
940
- "description": "The default npm version."
941
- }
942
- ]
943
- },
944
- "pnpm": {
945
- "type": "string",
946
- "minLength": 1,
947
- "allOf": [
948
- {
949
- "description": "The default pnpm version."
950
- }
951
- ]
952
- },
953
- "yarn": {
954
- "type": "string",
955
- "minLength": 1,
956
- "allOf": [
957
- {
958
- "description": "The default Yarn version."
959
- }
960
- ]
961
- },
962
- "bun": {
963
- "type": "string",
964
- "minLength": 1,
965
- "allOf": [
966
- {
967
- "description": "The default Bun version."
1149
+ "items": {
1150
+ "type": "object",
1151
+ "propertyNames": {
1152
+ "type": "string",
1153
+ "minLength": 1
1154
+ },
1155
+ "additionalProperties": {
1156
+ "anyOf": [
1157
+ {
1158
+ "anyOf": [
1159
+ {
1160
+ "type": "object",
1161
+ "properties": {
1162
+ "platforms": {
1163
+ "type": "array",
1164
+ "prefixItems": [
1165
+ {
1166
+ "type": "string",
1167
+ "enum": ["darwin", "linux"]
1168
+ }
1169
+ ],
1170
+ "minItems": 1,
1171
+ "items": {
1172
+ "type": "string",
1173
+ "enum": ["darwin", "linux"]
1174
+ },
1175
+ "allOf": [
1176
+ {
1177
+ "description": "`darwin`, `linux`, or both."
1178
+ }
1179
+ ]
1180
+ },
1181
+ "machines": {
1182
+ "type": "array",
1183
+ "prefixItems": [
1184
+ {
1185
+ "type": "string",
1186
+ "minLength": 1
1187
+ }
1188
+ ],
1189
+ "minItems": 1,
1190
+ "items": {
1191
+ "type": "string",
1192
+ "minLength": 1
1193
+ },
1194
+ "allOf": [
1195
+ {
1196
+ "description": "Machine names from `machines`."
1197
+ }
1198
+ ]
1199
+ },
1200
+ "range": {
1201
+ "type": "string",
1202
+ "minLength": 1
1203
+ }
1204
+ },
1205
+ "required": ["range"],
1206
+ "additionalProperties": false
1207
+ },
1208
+ {
1209
+ "type": "string",
1210
+ "minLength": 1
1211
+ }
1212
+ ]
1213
+ },
1214
+ {
1215
+ "type": "array",
1216
+ "prefixItems": [
1217
+ {
1218
+ "anyOf": [
1219
+ {
1220
+ "type": "object",
1221
+ "properties": {
1222
+ "platforms": {
1223
+ "type": "array",
1224
+ "prefixItems": [
1225
+ {
1226
+ "type": "string",
1227
+ "enum": ["darwin", "linux"]
1228
+ }
1229
+ ],
1230
+ "minItems": 1,
1231
+ "items": {
1232
+ "type": "string",
1233
+ "enum": ["darwin", "linux"]
1234
+ },
1235
+ "allOf": [
1236
+ {
1237
+ "description": "`darwin`, `linux`, or both."
1238
+ }
1239
+ ]
1240
+ },
1241
+ "machines": {
1242
+ "type": "array",
1243
+ "prefixItems": [
1244
+ {
1245
+ "type": "string",
1246
+ "minLength": 1
1247
+ }
1248
+ ],
1249
+ "minItems": 1,
1250
+ "items": {
1251
+ "type": "string",
1252
+ "minLength": 1
1253
+ },
1254
+ "allOf": [
1255
+ {
1256
+ "description": "Machine names from `machines`."
1257
+ }
1258
+ ]
1259
+ },
1260
+ "range": {
1261
+ "type": "string",
1262
+ "minLength": 1
1263
+ }
1264
+ },
1265
+ "required": ["range"],
1266
+ "additionalProperties": false
1267
+ },
1268
+ {
1269
+ "type": "string",
1270
+ "minLength": 1
1271
+ }
1272
+ ]
1273
+ }
1274
+ ],
1275
+ "minItems": 1,
1276
+ "items": {
1277
+ "anyOf": [
1278
+ {
1279
+ "type": "object",
1280
+ "properties": {
1281
+ "platforms": {
1282
+ "type": "array",
1283
+ "prefixItems": [
1284
+ {
1285
+ "type": "string",
1286
+ "enum": ["darwin", "linux"]
1287
+ }
1288
+ ],
1289
+ "minItems": 1,
1290
+ "items": {
1291
+ "type": "string",
1292
+ "enum": ["darwin", "linux"]
1293
+ },
1294
+ "allOf": [
1295
+ {
1296
+ "description": "`darwin`, `linux`, or both."
1297
+ }
1298
+ ]
1299
+ },
1300
+ "machines": {
1301
+ "type": "array",
1302
+ "prefixItems": [
1303
+ {
1304
+ "type": "string",
1305
+ "minLength": 1
1306
+ }
1307
+ ],
1308
+ "minItems": 1,
1309
+ "items": {
1310
+ "type": "string",
1311
+ "minLength": 1
1312
+ },
1313
+ "allOf": [
1314
+ {
1315
+ "description": "Machine names from `machines`."
1316
+ }
1317
+ ]
1318
+ },
1319
+ "range": {
1320
+ "type": "string",
1321
+ "minLength": 1
1322
+ }
1323
+ },
1324
+ "required": ["range"],
1325
+ "additionalProperties": false
1326
+ },
1327
+ {
1328
+ "type": "string",
1329
+ "minLength": 1
1330
+ }
1331
+ ]
1332
+ }
1333
+ }
1334
+ ]
1335
+ },
1336
+ "allOf": [
1337
+ {
1338
+ "description": "Globals the section's package manager installs, keyed by package. Each is a Range, `{ range, platforms?, machines? }` to target it, or a list of Variants, of which a Machine gets the first that targets it."
1339
+ }
1340
+ ]
1341
+ }
1342
+ },
1343
+ "additionalProperties": false,
1344
+ "allOf": [
1345
+ {
1346
+ "description": "Globals installed with vp's global install. Needs vp on the Machine; a Ship never installs it."
1347
+ }
1348
+ ]
1349
+ },
1350
+ "npm": {
1351
+ "type": "object",
1352
+ "properties": {
1353
+ "platforms": {
1354
+ "type": "array",
1355
+ "prefixItems": [
1356
+ {
1357
+ "type": "string",
1358
+ "enum": ["darwin", "linux"]
1359
+ }
1360
+ ],
1361
+ "minItems": 1,
1362
+ "items": {
1363
+ "type": "string",
1364
+ "enum": ["darwin", "linux"]
1365
+ },
1366
+ "allOf": [
1367
+ {
1368
+ "description": "`darwin`, `linux`, or both."
1369
+ }
1370
+ ]
1371
+ },
1372
+ "machines": {
1373
+ "type": "array",
1374
+ "prefixItems": [
1375
+ {
1376
+ "type": "string",
1377
+ "minLength": 1
1378
+ }
1379
+ ],
1380
+ "minItems": 1,
1381
+ "items": {
1382
+ "type": "string",
1383
+ "minLength": 1
1384
+ },
1385
+ "allOf": [
1386
+ {
1387
+ "description": "Machine names from `machines`."
1388
+ }
1389
+ ]
1390
+ },
1391
+ "dependsOn": {
1392
+ "type": "array",
1393
+ "items": {
1394
+ "type": "string",
1395
+ "enum": ["brew", "cask", "files", "vp", "npm", "bun", "pnpm", "skills", "repos"]
1396
+ },
1397
+ "allOf": [
1398
+ {
1399
+ "description": "Providers whose Items must succeed on a Machine before this one changes there."
1400
+ }
1401
+ ]
1402
+ },
1403
+ "items": {
1404
+ "type": "object",
1405
+ "propertyNames": {
1406
+ "type": "string",
1407
+ "minLength": 1
1408
+ },
1409
+ "additionalProperties": {
1410
+ "anyOf": [
1411
+ {
1412
+ "anyOf": [
1413
+ {
1414
+ "type": "object",
1415
+ "properties": {
1416
+ "platforms": {
1417
+ "type": "array",
1418
+ "prefixItems": [
1419
+ {
1420
+ "type": "string",
1421
+ "enum": ["darwin", "linux"]
1422
+ }
1423
+ ],
1424
+ "minItems": 1,
1425
+ "items": {
1426
+ "type": "string",
1427
+ "enum": ["darwin", "linux"]
1428
+ },
1429
+ "allOf": [
1430
+ {
1431
+ "description": "`darwin`, `linux`, or both."
1432
+ }
1433
+ ]
1434
+ },
1435
+ "machines": {
1436
+ "type": "array",
1437
+ "prefixItems": [
1438
+ {
1439
+ "type": "string",
1440
+ "minLength": 1
1441
+ }
1442
+ ],
1443
+ "minItems": 1,
1444
+ "items": {
1445
+ "type": "string",
1446
+ "minLength": 1
1447
+ },
1448
+ "allOf": [
1449
+ {
1450
+ "description": "Machine names from `machines`."
1451
+ }
1452
+ ]
1453
+ },
1454
+ "range": {
1455
+ "type": "string",
1456
+ "minLength": 1
1457
+ }
1458
+ },
1459
+ "required": ["range"],
1460
+ "additionalProperties": false
1461
+ },
1462
+ {
1463
+ "type": "string",
1464
+ "minLength": 1
1465
+ }
1466
+ ]
1467
+ },
1468
+ {
1469
+ "type": "array",
1470
+ "prefixItems": [
1471
+ {
1472
+ "anyOf": [
1473
+ {
1474
+ "type": "object",
1475
+ "properties": {
1476
+ "platforms": {
1477
+ "type": "array",
1478
+ "prefixItems": [
1479
+ {
1480
+ "type": "string",
1481
+ "enum": ["darwin", "linux"]
1482
+ }
1483
+ ],
1484
+ "minItems": 1,
1485
+ "items": {
1486
+ "type": "string",
1487
+ "enum": ["darwin", "linux"]
1488
+ },
1489
+ "allOf": [
1490
+ {
1491
+ "description": "`darwin`, `linux`, or both."
1492
+ }
1493
+ ]
1494
+ },
1495
+ "machines": {
1496
+ "type": "array",
1497
+ "prefixItems": [
1498
+ {
1499
+ "type": "string",
1500
+ "minLength": 1
1501
+ }
1502
+ ],
1503
+ "minItems": 1,
1504
+ "items": {
1505
+ "type": "string",
1506
+ "minLength": 1
1507
+ },
1508
+ "allOf": [
1509
+ {
1510
+ "description": "Machine names from `machines`."
1511
+ }
1512
+ ]
1513
+ },
1514
+ "range": {
1515
+ "type": "string",
1516
+ "minLength": 1
1517
+ }
1518
+ },
1519
+ "required": ["range"],
1520
+ "additionalProperties": false
1521
+ },
1522
+ {
1523
+ "type": "string",
1524
+ "minLength": 1
1525
+ }
1526
+ ]
1527
+ }
1528
+ ],
1529
+ "minItems": 1,
1530
+ "items": {
1531
+ "anyOf": [
1532
+ {
1533
+ "type": "object",
1534
+ "properties": {
1535
+ "platforms": {
1536
+ "type": "array",
1537
+ "prefixItems": [
1538
+ {
1539
+ "type": "string",
1540
+ "enum": ["darwin", "linux"]
1541
+ }
1542
+ ],
1543
+ "minItems": 1,
1544
+ "items": {
1545
+ "type": "string",
1546
+ "enum": ["darwin", "linux"]
1547
+ },
1548
+ "allOf": [
1549
+ {
1550
+ "description": "`darwin`, `linux`, or both."
1551
+ }
1552
+ ]
1553
+ },
1554
+ "machines": {
1555
+ "type": "array",
1556
+ "prefixItems": [
1557
+ {
1558
+ "type": "string",
1559
+ "minLength": 1
1560
+ }
1561
+ ],
1562
+ "minItems": 1,
1563
+ "items": {
1564
+ "type": "string",
1565
+ "minLength": 1
1566
+ },
1567
+ "allOf": [
1568
+ {
1569
+ "description": "Machine names from `machines`."
1570
+ }
1571
+ ]
1572
+ },
1573
+ "range": {
1574
+ "type": "string",
1575
+ "minLength": 1
1576
+ }
1577
+ },
1578
+ "required": ["range"],
1579
+ "additionalProperties": false
1580
+ },
1581
+ {
1582
+ "type": "string",
1583
+ "minLength": 1
1584
+ }
1585
+ ]
1586
+ }
1587
+ }
1588
+ ]
1589
+ },
1590
+ "allOf": [
1591
+ {
1592
+ "description": "Globals the section's package manager installs, keyed by package. Each is a Range, `{ range, platforms?, machines? }` to target it, or a list of Variants, of which a Machine gets the first that targets it."
1593
+ }
1594
+ ]
1595
+ }
1596
+ },
1597
+ "additionalProperties": false,
1598
+ "allOf": [
1599
+ {
1600
+ "description": "Globals installed with npm's global install. Needs npm on the Machine; a Ship never installs it."
1601
+ }
1602
+ ]
1603
+ },
1604
+ "bun": {
1605
+ "type": "object",
1606
+ "properties": {
1607
+ "platforms": {
1608
+ "type": "array",
1609
+ "prefixItems": [
1610
+ {
1611
+ "type": "string",
1612
+ "enum": ["darwin", "linux"]
1613
+ }
1614
+ ],
1615
+ "minItems": 1,
1616
+ "items": {
1617
+ "type": "string",
1618
+ "enum": ["darwin", "linux"]
1619
+ },
1620
+ "allOf": [
1621
+ {
1622
+ "description": "`darwin`, `linux`, or both."
1623
+ }
1624
+ ]
1625
+ },
1626
+ "machines": {
1627
+ "type": "array",
1628
+ "prefixItems": [
1629
+ {
1630
+ "type": "string",
1631
+ "minLength": 1
1632
+ }
1633
+ ],
1634
+ "minItems": 1,
1635
+ "items": {
1636
+ "type": "string",
1637
+ "minLength": 1
1638
+ },
1639
+ "allOf": [
1640
+ {
1641
+ "description": "Machine names from `machines`."
1642
+ }
1643
+ ]
1644
+ },
1645
+ "dependsOn": {
1646
+ "type": "array",
1647
+ "items": {
1648
+ "type": "string",
1649
+ "enum": ["brew", "cask", "files", "vp", "npm", "bun", "pnpm", "skills", "repos"]
1650
+ },
1651
+ "allOf": [
1652
+ {
1653
+ "description": "Providers whose Items must succeed on a Machine before this one changes there."
1654
+ }
1655
+ ]
1656
+ },
1657
+ "items": {
1658
+ "type": "object",
1659
+ "propertyNames": {
1660
+ "type": "string",
1661
+ "minLength": 1
1662
+ },
1663
+ "additionalProperties": {
1664
+ "anyOf": [
1665
+ {
1666
+ "anyOf": [
1667
+ {
1668
+ "type": "object",
1669
+ "properties": {
1670
+ "platforms": {
1671
+ "type": "array",
1672
+ "prefixItems": [
1673
+ {
1674
+ "type": "string",
1675
+ "enum": ["darwin", "linux"]
1676
+ }
1677
+ ],
1678
+ "minItems": 1,
1679
+ "items": {
1680
+ "type": "string",
1681
+ "enum": ["darwin", "linux"]
1682
+ },
1683
+ "allOf": [
1684
+ {
1685
+ "description": "`darwin`, `linux`, or both."
1686
+ }
1687
+ ]
1688
+ },
1689
+ "machines": {
1690
+ "type": "array",
1691
+ "prefixItems": [
1692
+ {
1693
+ "type": "string",
1694
+ "minLength": 1
1695
+ }
1696
+ ],
1697
+ "minItems": 1,
1698
+ "items": {
1699
+ "type": "string",
1700
+ "minLength": 1
1701
+ },
1702
+ "allOf": [
1703
+ {
1704
+ "description": "Machine names from `machines`."
1705
+ }
1706
+ ]
1707
+ },
1708
+ "range": {
1709
+ "type": "string",
1710
+ "minLength": 1
1711
+ }
1712
+ },
1713
+ "required": ["range"],
1714
+ "additionalProperties": false
1715
+ },
1716
+ {
1717
+ "type": "string",
1718
+ "minLength": 1
1719
+ }
1720
+ ]
1721
+ },
1722
+ {
1723
+ "type": "array",
1724
+ "prefixItems": [
1725
+ {
1726
+ "anyOf": [
1727
+ {
1728
+ "type": "object",
1729
+ "properties": {
1730
+ "platforms": {
1731
+ "type": "array",
1732
+ "prefixItems": [
1733
+ {
1734
+ "type": "string",
1735
+ "enum": ["darwin", "linux"]
1736
+ }
1737
+ ],
1738
+ "minItems": 1,
1739
+ "items": {
1740
+ "type": "string",
1741
+ "enum": ["darwin", "linux"]
1742
+ },
1743
+ "allOf": [
1744
+ {
1745
+ "description": "`darwin`, `linux`, or both."
1746
+ }
1747
+ ]
1748
+ },
1749
+ "machines": {
1750
+ "type": "array",
1751
+ "prefixItems": [
1752
+ {
1753
+ "type": "string",
1754
+ "minLength": 1
1755
+ }
1756
+ ],
1757
+ "minItems": 1,
1758
+ "items": {
1759
+ "type": "string",
1760
+ "minLength": 1
1761
+ },
1762
+ "allOf": [
1763
+ {
1764
+ "description": "Machine names from `machines`."
1765
+ }
1766
+ ]
1767
+ },
1768
+ "range": {
1769
+ "type": "string",
1770
+ "minLength": 1
1771
+ }
1772
+ },
1773
+ "required": ["range"],
1774
+ "additionalProperties": false
1775
+ },
1776
+ {
1777
+ "type": "string",
1778
+ "minLength": 1
1779
+ }
1780
+ ]
1781
+ }
1782
+ ],
1783
+ "minItems": 1,
1784
+ "items": {
1785
+ "anyOf": [
1786
+ {
1787
+ "type": "object",
1788
+ "properties": {
1789
+ "platforms": {
1790
+ "type": "array",
1791
+ "prefixItems": [
1792
+ {
1793
+ "type": "string",
1794
+ "enum": ["darwin", "linux"]
1795
+ }
1796
+ ],
1797
+ "minItems": 1,
1798
+ "items": {
1799
+ "type": "string",
1800
+ "enum": ["darwin", "linux"]
1801
+ },
1802
+ "allOf": [
1803
+ {
1804
+ "description": "`darwin`, `linux`, or both."
1805
+ }
1806
+ ]
1807
+ },
1808
+ "machines": {
1809
+ "type": "array",
1810
+ "prefixItems": [
1811
+ {
1812
+ "type": "string",
1813
+ "minLength": 1
1814
+ }
1815
+ ],
1816
+ "minItems": 1,
1817
+ "items": {
1818
+ "type": "string",
1819
+ "minLength": 1
1820
+ },
1821
+ "allOf": [
1822
+ {
1823
+ "description": "Machine names from `machines`."
1824
+ }
1825
+ ]
1826
+ },
1827
+ "range": {
1828
+ "type": "string",
1829
+ "minLength": 1
1830
+ }
1831
+ },
1832
+ "required": ["range"],
1833
+ "additionalProperties": false
1834
+ },
1835
+ {
1836
+ "type": "string",
1837
+ "minLength": 1
1838
+ }
1839
+ ]
1840
+ }
1841
+ }
1842
+ ]
1843
+ },
1844
+ "allOf": [
1845
+ {
1846
+ "description": "Globals the section's package manager installs, keyed by package. Each is a Range, `{ range, platforms?, machines? }` to target it, or a list of Variants, of which a Machine gets the first that targets it."
1847
+ }
1848
+ ]
1849
+ }
1850
+ },
1851
+ "additionalProperties": false,
1852
+ "allOf": [
1853
+ {
1854
+ "description": "Globals installed with bun's global install. Needs bun on the Machine; a Ship never installs it."
1855
+ }
1856
+ ]
1857
+ },
1858
+ "pnpm": {
1859
+ "type": "object",
1860
+ "properties": {
1861
+ "platforms": {
1862
+ "type": "array",
1863
+ "prefixItems": [
1864
+ {
1865
+ "type": "string",
1866
+ "enum": ["darwin", "linux"]
1867
+ }
1868
+ ],
1869
+ "minItems": 1,
1870
+ "items": {
1871
+ "type": "string",
1872
+ "enum": ["darwin", "linux"]
1873
+ },
1874
+ "allOf": [
1875
+ {
1876
+ "description": "`darwin`, `linux`, or both."
1877
+ }
1878
+ ]
1879
+ },
1880
+ "machines": {
1881
+ "type": "array",
1882
+ "prefixItems": [
1883
+ {
1884
+ "type": "string",
1885
+ "minLength": 1
1886
+ }
1887
+ ],
1888
+ "minItems": 1,
1889
+ "items": {
1890
+ "type": "string",
1891
+ "minLength": 1
1892
+ },
1893
+ "allOf": [
1894
+ {
1895
+ "description": "Machine names from `machines`."
1896
+ }
1897
+ ]
1898
+ },
1899
+ "dependsOn": {
1900
+ "type": "array",
1901
+ "items": {
1902
+ "type": "string",
1903
+ "enum": ["brew", "cask", "files", "vp", "npm", "bun", "pnpm", "skills", "repos"]
1904
+ },
1905
+ "allOf": [
1906
+ {
1907
+ "description": "Providers whose Items must succeed on a Machine before this one changes there."
968
1908
  }
969
1909
  ]
970
1910
  },
@@ -1157,7 +2097,7 @@
1157
2097
  },
1158
2098
  "allOf": [
1159
2099
  {
1160
- "description": "Globals, keyed by package. Each is a Range, `{ range, platforms?, machines? }` to target it, or a list of Variants, of which a Machine gets the first that targets it."
2100
+ "description": "Globals the section's package manager installs, keyed by package. Each is a Range, `{ range, platforms?, machines? }` to target it, or a list of Variants, of which a Machine gets the first that targets it."
1161
2101
  }
1162
2102
  ]
1163
2103
  }
@@ -1165,7 +2105,7 @@
1165
2105
  "additionalProperties": false,
1166
2106
  "allOf": [
1167
2107
  {
1168
- "description": "The vite-plus toolchain."
2108
+ "description": "Globals installed with pnpm's global install. Needs pnpm on the Machine; a Ship never installs it."
1169
2109
  }
1170
2110
  ]
1171
2111
  },
@@ -1214,7 +2154,7 @@
1214
2154
  "type": "array",
1215
2155
  "items": {
1216
2156
  "type": "string",
1217
- "enum": ["files", "vp", "brew", "cask", "skills", "repos"]
2157
+ "enum": ["brew", "cask", "files", "vp", "npm", "bun", "pnpm", "skills", "repos"]
1218
2158
  },
1219
2159
  "allOf": [
1220
2160
  {
@@ -1474,7 +2414,7 @@
1474
2414
  "type": "array",
1475
2415
  "items": {
1476
2416
  "type": "string",
1477
- "enum": ["files", "vp", "brew", "cask", "skills", "repos"]
2417
+ "enum": ["brew", "cask", "files", "vp", "npm", "bun", "pnpm", "skills", "repos"]
1478
2418
  },
1479
2419
  "allOf": [
1480
2420
  {
@@ -1734,7 +2674,7 @@
1734
2674
  "type": "array",
1735
2675
  "items": {
1736
2676
  "type": "string",
1737
- "enum": ["files", "vp", "brew", "cask", "skills", "repos"]
2677
+ "enum": ["brew", "cask", "files", "vp", "npm", "bun", "pnpm", "skills", "repos"]
1738
2678
  },
1739
2679
  "allOf": [
1740
2680
  {
@@ -2058,12 +2998,12 @@
2058
2998
  "additionalProperties": false,
2059
2999
  "allOf": [
2060
3000
  {
2061
- "description": "Agent skills, installed with the skills CLI, which `vp.items` must list. Kept at their source's ref."
3001
+ "description": "Agent skills, installed with the skills CLI, which a package manager's section must list as a Global. Kept at their source's ref."
2062
3002
  }
2063
3003
  ]
2064
3004
  }
2065
3005
  },
2066
- "required": ["machines"],
3006
+ "required": ["version", "machines"],
2067
3007
  "additionalProperties": false,
2068
3008
  "$defs": {}
2069
3009
  }