@rightkit/release 0.2.134 → 0.2.136

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 (86) hide show
  1. package/README.md +62 -0
  2. package/addon-command.mjs +53 -34
  3. package/apple-profile-renew.mjs +30 -12
  4. package/artifact-storage.mjs +53 -12
  5. package/background-process.mjs +18 -0
  6. package/build-release.mjs +4 -3
  7. package/cache-command.mjs +4 -3
  8. package/cargo-contract.mjs +1 -1
  9. package/cargo-guard.mjs +4 -3
  10. package/cargo-registry-readback.mjs +51 -0
  11. package/cargo-target.mjs +3 -1
  12. package/cli/right-release.mjs +26 -0
  13. package/codesign-argv.mjs +64 -0
  14. package/codesign-environment.mjs +58 -0
  15. package/codesign-shim.mjs +51 -0
  16. package/committed-source.mjs +3 -3
  17. package/development.mjs +11 -9
  18. package/direct-bootstrap.mjs +19 -9
  19. package/dmg-build.mjs +117 -0
  20. package/dmg-layout.mjs +123 -0
  21. package/github-release.mjs +74 -37
  22. package/heavy-command.mjs +3 -2
  23. package/install-app.mjs +358 -0
  24. package/inventory-check.mjs +980 -0
  25. package/macos-notarization.mjs +24 -8
  26. package/macos-signing-session.mjs +50 -2
  27. package/managed-cargo.mjs +23 -19
  28. package/managed-host-secrets.mjs +30 -0
  29. package/managed-roots.mjs +39 -0
  30. package/model-promote.mjs +31 -37
  31. package/notarize-macos.mjs +5 -5
  32. package/notary-auth.mjs +4 -0
  33. package/osascript-guard.mjs +24 -0
  34. package/ownership-approval-command.mjs +15 -4
  35. package/ownership-approval.mjs +114 -49
  36. package/ownership-availability.mjs +25 -0
  37. package/ownership-catalog-config.json +18 -0
  38. package/ownership-catalog.mjs +94 -0
  39. package/ownership-command.mjs +17 -10
  40. package/ownership-declaration.json +15 -0
  41. package/ownership-default-policy.json +1 -11
  42. package/ownership-evidence.mjs +10 -8
  43. package/ownership-git-inventory.mjs +29 -1
  44. package/ownership-helper-paths.json +4 -4
  45. package/ownership-hooks.mjs +107 -0
  46. package/ownership-internal-owners.json +44 -0
  47. package/ownership-key-authority.mjs +112 -7
  48. package/ownership-key-command.mjs +76 -19
  49. package/ownership-key-trust.mjs +97 -9
  50. package/ownership-lockfiles.mjs +311 -0
  51. package/ownership-report-command.mjs +12 -3
  52. package/ownership-report.mjs +20 -17
  53. package/ownership-repositories.json +19 -0
  54. package/ownership-scan-worker.mjs +96 -11
  55. package/ownership-source.mjs +39 -0
  56. package/ownership-staged.mjs +193 -0
  57. package/ownership-verdict.mjs +74 -0
  58. package/ownership.mjs +215 -107
  59. package/package.json +1 -1
  60. package/protected-credentials.mjs +111 -0
  61. package/prune-r2.mjs +4 -3
  62. package/pub-upload.mjs +3 -85
  63. package/publication-artifacts.mjs +108 -0
  64. package/publication-gate.mjs +28 -7
  65. package/publish-cargo.mjs +47 -16
  66. package/publish-swift.mjs +46 -17
  67. package/publish-update.mjs +61 -39
  68. package/r2-verified-upload.mjs +41 -0
  69. package/registry-parity.mjs +5 -3
  70. package/release-state.mjs +1 -0
  71. package/release-token.mjs +2 -0
  72. package/release.mjs +2 -1
  73. package/rightkit-drift.mjs +3 -2
  74. package/rightkit-ownership.json +2028 -139
  75. package/rightkit-signing-agent.mjs +161 -19
  76. package/rightkit-sync.mjs +6 -2
  77. package/rightkit-versions.json +220 -106
  78. package/runtime-artifact-manifest.mjs +20 -6
  79. package/sign-updater.mjs +5 -0
  80. package/signing-agent-client.mjs +78 -22
  81. package/signing-agent-command.mjs +5 -4
  82. package/signing-agent-install.mjs +31 -4
  83. package/standalone-clone-verify.mjs +3 -2
  84. package/tauri-bundle-marker.mjs +3 -2
  85. package/upload-large.mjs +36 -82
  86. package/verifier.mjs +5 -1
@@ -13,28 +13,28 @@
13
13
  "@rightkit/updates": "0.2.3"
14
14
  },
15
15
  "stagedNpm": {
16
- "@rightkit/app-shell": "0.2.1",
16
+ "@rightkit/app-shell": "0.3.0",
17
17
  "@rightkit/ax": "0.2.4",
18
- "@rightkit/doc-render": "0.1.3",
19
- "@rightkit/git": "0.2.26",
20
- "@rightkit/hooks": "0.1.1",
18
+ "@rightkit/doc-render": "0.1.4",
19
+ "@rightkit/git": "0.2.29",
20
+ "@rightkit/hooks": "0.1.2",
21
21
  "@rightkit/i18n": "0.1.0",
22
22
  "@rightkit/legal": "0.3.1",
23
- "@rightkit/legal-ui": "0.1.3",
23
+ "@rightkit/legal-ui": "0.2.0",
24
24
  "@rightkit/license": "0.1.8",
25
25
  "@rightkit/logs": "0.1.4",
26
- "@rightkit/media-ui": "0.2.6",
27
- "@rightkit/onboarding": "0.2.3",
26
+ "@rightkit/media-ui": "0.3.0",
27
+ "@rightkit/onboarding": "0.3.0",
28
28
  "@rightkit/pdf-ui": "0.1.2",
29
- "@rightkit/platform-ui": "0.1.2",
30
- "@rightkit/qa": "0.3.1",
29
+ "@rightkit/platform-ui": "0.2.0",
30
+ "@rightkit/qa": "0.4.0",
31
31
  "@rightkit/qa-chrome": "0.1.3",
32
- "@rightkit/release": "0.2.134",
33
- "@rightkit/settings-ui": "0.2.7",
32
+ "@rightkit/release": "0.2.136",
33
+ "@rightkit/settings-ui": "0.3.0",
34
34
  "@rightkit/shell": "0.1.0",
35
- "@rightkit/tauri": "0.1.1",
35
+ "@rightkit/tauri": "0.2.0",
36
36
  "@rightkit/theme": "0.2.1",
37
- "@rightkit/updates": "0.2.4"
37
+ "@rightkit/updates": "0.2.5"
38
38
  },
39
39
  "legacyNpm": {
40
40
  "@rightkit/ax": [
@@ -67,15 +67,20 @@
67
67
  "0.2.22",
68
68
  "0.2.23",
69
69
  "0.2.24",
70
- "0.2.25"
70
+ "0.2.25",
71
+ "0.2.26",
72
+ "0.2.27",
73
+ "0.2.28"
71
74
  ],
72
75
  "@rightkit/legal-ui": [
73
76
  "0.1.0",
74
77
  "0.1.1",
75
- "0.1.2"
78
+ "0.1.2",
79
+ "0.1.3"
76
80
  ],
77
81
  "@rightkit/hooks": [
78
- "0.1.0"
82
+ "0.1.0",
83
+ "0.1.1"
79
84
  ],
80
85
  "@rightkit/legal": [
81
86
  "0.3.0"
@@ -157,7 +162,9 @@
157
162
  "0.2.130",
158
163
  "0.2.131",
159
164
  "0.2.132",
160
- "0.2.133"
165
+ "0.2.133",
166
+ "0.2.134",
167
+ "0.2.135"
161
168
  ],
162
169
  "@rightkit/qa": [
163
170
  "0.1.0",
@@ -166,11 +173,14 @@
166
173
  "0.2.2",
167
174
  "0.2.3",
168
175
  "0.2.4",
169
- "0.3.0"
176
+ "0.3.0",
177
+ "0.3.1",
178
+ "0.3.2"
170
179
  ],
171
180
  "@rightkit/app-shell": [
172
181
  "0.1.0",
173
- "0.2.0"
182
+ "0.2.0",
183
+ "0.2.1"
174
184
  ],
175
185
  "@rightkit/media-ui": [
176
186
  "0.1.0",
@@ -179,7 +189,8 @@
179
189
  "0.2.2",
180
190
  "0.2.3",
181
191
  "0.2.4",
182
- "0.2.5"
192
+ "0.2.5",
193
+ "0.2.6"
183
194
  ],
184
195
  "@rightkit/theme": [
185
196
  "0.1.0",
@@ -192,21 +203,25 @@
192
203
  "0.2.3",
193
204
  "0.2.4",
194
205
  "0.2.5",
195
- "0.2.6"
206
+ "0.2.6",
207
+ "0.2.7"
196
208
  ],
197
209
  "@rightkit/onboarding": [
198
210
  "0.1.0",
199
211
  "0.2.0",
200
212
  "0.2.1",
201
- "0.2.2"
213
+ "0.2.2",
214
+ "0.2.3"
202
215
  ],
203
216
  "@rightkit/doc-render": [
204
217
  "0.1.0",
205
218
  "0.1.1",
206
- "0.1.2"
219
+ "0.1.2",
220
+ "0.1.3"
207
221
  ],
208
222
  "@rightkit/platform-ui": [
209
- "0.1.1"
223
+ "0.1.1",
224
+ "0.1.2"
210
225
  ],
211
226
  "@rightkit/pdf-ui": [
212
227
  "0.1.0",
@@ -216,6 +231,12 @@
216
231
  "0.1.0",
217
232
  "0.1.1",
218
233
  "0.1.2"
234
+ ],
235
+ "@rightkit/updates": [
236
+ "0.2.4"
237
+ ],
238
+ "@rightkit/tauri": [
239
+ "0.1.1"
219
240
  ]
220
241
  },
221
242
  "cargo": {
@@ -236,41 +257,50 @@
236
257
  "rightkit-tauri": "0.1.0"
237
258
  },
238
259
  "stagedCargo": {
239
- "rightkit-audio": "0.1.1",
260
+ "agent-room-core": "0.3.0",
261
+ "rightkit-asr": "0.0.2",
262
+ "rightkit-audio": "0.2.0",
240
263
  "rightkit-automation": "0.1.0",
241
- "rightkit-browser": "0.2.2",
264
+ "rightkit-browser": "0.2.3",
242
265
  "rightkit-cache": "0.1.0",
243
- "rightkit-control": "0.1.8",
244
- "rightkit-crash": "0.1.0",
245
- "rightkit-db": "0.3.0",
246
- "rightkit-embed": "0.2.2",
266
+ "rightkit-contracts": "0.1.2",
267
+ "rightkit-control": "0.1.9",
268
+ "rightkit-crash": "0.2.0",
269
+ "rightkit-db": "0.3.2",
270
+ "rightkit-embed": "0.3.1",
247
271
  "rightkit-framed-sidecar": "0.1.0",
248
- "rightkit-fs": "0.1.0",
249
- "rightkit-http": "0.1.0",
250
- "rightkit-jobs": "0.2.2",
272
+ "rightkit-fs": "0.3.2",
273
+ "rightkit-fsindex": "0.1.0",
274
+ "rightkit-http": "0.2.2",
275
+ "rightkit-jobs": "0.2.6",
251
276
  "rightkit-license": "0.1.3",
252
277
  "rightkit-logs": "0.2.0",
253
- "rightkit-mcp": "0.3.1",
254
- "rightkit-media": "0.2.3",
255
- "rightkit-models": "0.2.2",
256
- "rightkit-oauth": "0.2.1",
257
- "rightkit-ort": "0.2.0",
258
- "rightkit-pdf": "0.1.0",
278
+ "rightkit-mcp": "0.5.1",
279
+ "rightkit-media": "0.2.4",
280
+ "rightkit-models": "0.2.7",
281
+ "rightkit-oauth": "0.3.0",
282
+ "rightkit-ocr": "0.1.2",
283
+ "rightkit-ort": "0.2.2",
284
+ "rightkit-ownership": "0.2.0",
285
+ "rightkit-pdf": "0.2.0",
259
286
  "rightkit-playback": "0.1.1",
260
- "rightkit-process": "0.3.1",
261
- "rightkit-qa": "0.2.11",
262
- "rightkit-qts": "0.2.1",
263
- "rightkit-qts-ggml": "0.1.0",
264
- "rightkit-qts-ggml-sys": "0.1.0",
265
- "rightkit-sandbox": "0.2.4",
266
- "rightkit-search": "0.1.0",
267
- "rightkit-secrets": "0.1.0",
268
- "rightkit-service": "0.1.0",
287
+ "rightkit-process": "0.3.3",
288
+ "rightkit-qa": "0.2.14",
289
+ "rightkit-qts": "0.2.4",
290
+ "rightkit-qts-ggml": "0.1.1",
291
+ "rightkit-qts-ggml-sys": "0.1.1",
292
+ "rightkit-sandbox": "0.3.3",
293
+ "rightkit-search": "0.2.0",
294
+ "rightkit-secrets": "0.1.2",
295
+ "rightkit-service": "0.1.3",
269
296
  "rightkit-settings": "0.1.0",
270
- "rightkit-shell": "0.1.3",
271
- "rightkit-speech-client": "0.3.0",
297
+ "rightkit-shell": "0.1.4",
298
+ "rightkit-speech-client": "0.3.2",
272
299
  "rightkit-sync": "0.1.0",
273
- "rightkit-tauri": "0.1.1",
300
+ "rightkit-tauri": "0.1.2",
301
+ "rightkit-transcript": "0.1.0",
302
+ "rightkit-tts": "0.1.0",
303
+ "rightkit-vad": "0.0.2",
274
304
  "rightkit-watch": "0.3.1"
275
305
  },
276
306
  "swift": {
@@ -287,124 +317,162 @@
287
317
  },
288
318
  "registry": {
289
319
  "cargo": {
290
- "rightkit-audio": "0.1.1",
320
+ "rightkit-asr": "0.0.2",
321
+ "rightkit-audio": "0.2.0",
291
322
  "rightkit-browser": "0.2.2",
292
323
  "rightkit-cache": "0.1.0",
293
- "rightkit-control": "0.1.8",
294
- "rightkit-crash": "0.1.0",
295
- "rightkit-db": "0.3.0",
296
- "rightkit-embed": "0.2.2",
324
+ "rightkit-control": "0.1.9",
325
+ "rightkit-crash": "0.2.0",
326
+ "rightkit-db": "0.3.2",
327
+ "rightkit-embed": "0.3.1",
297
328
  "rightkit-framed-sidecar": "0.1.0",
298
- "rightkit-fs": "0.1.0",
299
- "rightkit-http": "0.1.0",
300
- "rightkit-jobs": "0.2.2",
329
+ "rightkit-fs": "0.3.2",
330
+ "rightkit-fsindex": "0.1.0",
331
+ "rightkit-http": "0.2.2",
332
+ "rightkit-jobs": "0.2.6",
301
333
  "rightkit-license": "0.1.3",
302
334
  "rightkit-logs": "0.2.0",
303
- "rightkit-mcp": "0.3.1",
304
- "rightkit-media": "0.2.3",
305
- "rightkit-models": "0.2.2",
306
- "rightkit-oauth": "0.2.1",
307
- "rightkit-ort": "0.2.0",
308
- "rightkit-pdf": "0.1.0",
335
+ "rightkit-mcp": "0.5.1",
336
+ "rightkit-media": "0.2.4",
337
+ "rightkit-models": "0.2.7",
338
+ "rightkit-oauth": "0.3.0",
339
+ "rightkit-ocr": "0.1.2",
340
+ "rightkit-ort": "0.2.2",
341
+ "rightkit-ownership": "0.2.0",
342
+ "rightkit-pdf": "0.2.0",
309
343
  "rightkit-playback": "0.1.1",
310
- "rightkit-process": "0.3.1",
311
- "rightkit-qa": "0.2.11",
312
- "rightkit-qts": "0.2.1",
313
- "rightkit-qts-ggml": "0.1.0",
314
- "rightkit-qts-ggml-sys": "0.1.0",
315
- "rightkit-sandbox": "0.2.4",
316
- "rightkit-search": "0.1.0",
317
- "rightkit-secrets": "0.1.0",
318
- "rightkit-service": "0.1.0",
344
+ "rightkit-process": "0.3.3",
345
+ "rightkit-qa": "0.2.14",
346
+ "rightkit-qts": "0.2.4",
347
+ "rightkit-qts-ggml": "0.1.1",
348
+ "rightkit-qts-ggml-sys": "0.1.1",
349
+ "rightkit-sandbox": "0.3.3",
350
+ "rightkit-search": "0.2.0",
351
+ "rightkit-secrets": "0.1.2",
352
+ "rightkit-service": "0.1.3",
319
353
  "rightkit-settings": "0.1.0",
320
- "rightkit-shell": "0.1.3",
321
- "rightkit-speech-client": "0.3.0",
322
- "rightkit-tauri": "0.1.1",
354
+ "rightkit-shell": "0.1.4",
355
+ "rightkit-speech-client": "0.3.2",
356
+ "rightkit-tauri": "0.1.2",
357
+ "rightkit-transcript": "0.1.0",
358
+ "rightkit-tts": "0.1.0",
359
+ "rightkit-vad": "0.0.2",
323
360
  "rightkit-watch": "0.3.1"
324
361
  },
325
362
  "npm": {
326
- "@rightkit/app-shell": "0.2.1",
363
+ "@rightkit/app-shell": "0.3.0",
327
364
  "@rightkit/ax": "0.2.4",
328
- "@rightkit/doc-render": "0.1.3",
329
- "@rightkit/git": "0.2.26",
330
- "@rightkit/hooks": "0.1.1",
365
+ "@rightkit/doc-render": "0.1.4",
366
+ "@rightkit/git": "0.2.29",
367
+ "@rightkit/hooks": "0.1.2",
331
368
  "@rightkit/i18n": "0.1.0",
332
369
  "@rightkit/legal": "0.3.1",
333
- "@rightkit/legal-ui": "0.1.3",
370
+ "@rightkit/legal-ui": "0.2.0",
334
371
  "@rightkit/license": "0.1.8",
335
372
  "@rightkit/logs": "0.1.4",
336
- "@rightkit/media-ui": "0.2.6",
337
- "@rightkit/onboarding": "0.2.3",
373
+ "@rightkit/media-ui": "0.3.0",
374
+ "@rightkit/onboarding": "0.3.0",
338
375
  "@rightkit/pdf-ui": "0.1.2",
339
- "@rightkit/platform-ui": "0.1.2",
340
- "@rightkit/qa": "0.3.1",
376
+ "@rightkit/platform-ui": "0.2.0",
377
+ "@rightkit/qa": "0.4.0",
341
378
  "@rightkit/qa-chrome": "0.1.3",
342
- "@rightkit/release": "0.2.133",
343
- "@rightkit/settings-ui": "0.2.7",
379
+ "@rightkit/release": "0.2.136",
380
+ "@rightkit/settings-ui": "0.3.0",
344
381
  "@rightkit/shell": "0.1.0",
345
- "@rightkit/tauri": "0.1.1",
382
+ "@rightkit/tauri": "0.2.0",
346
383
  "@rightkit/theme": "0.2.1",
347
- "@rightkit/updates": "0.2.4"
384
+ "@rightkit/updates": "0.2.5"
348
385
  }
349
386
  },
350
387
  "legacyCargo": {
351
388
  "rightkit-browser": [
352
389
  "0.2.0",
353
- "0.2.1"
390
+ "0.2.1",
391
+ "0.2.2"
354
392
  ],
355
393
  "rightkit-models": [
356
- "0.2.1"
394
+ "0.2.1",
395
+ "0.2.2",
396
+ "0.2.3",
397
+ "0.2.4",
398
+ "0.2.5",
399
+ "0.2.6"
357
400
  ],
358
401
  "rightkit-audio": [
359
- "0.1.0"
402
+ "0.1.0",
403
+ "0.1.1"
360
404
  ],
361
405
  "rightkit-db": [
362
- "0.2.1"
406
+ "0.2.1",
407
+ "0.3.0",
408
+ "0.3.1"
363
409
  ],
364
410
  "rightkit-embed": [
365
- "0.2.1"
411
+ "0.2.1",
412
+ "0.2.2",
413
+ "0.3.0"
366
414
  ],
367
415
  "rightkit-jobs": [
368
- "0.2.1"
416
+ "0.2.1",
417
+ "0.2.2",
418
+ "0.2.3",
419
+ "0.2.4",
420
+ "0.2.5"
369
421
  ],
370
422
  "rightkit-mcp": [
371
423
  "0.1.1",
372
424
  "0.2.0",
373
- "0.3.0"
425
+ "0.3.0",
426
+ "0.3.1",
427
+ "0.4.0",
428
+ "0.5.0"
374
429
  ],
375
430
  "rightkit-media": [
376
- "0.2.2"
431
+ "0.2.2",
432
+ "0.2.3"
377
433
  ],
378
434
  "rightkit-oauth": [
379
- "0.2.0"
435
+ "0.2.0",
436
+ "0.2.1"
380
437
  ],
381
438
  "rightkit-ort": [
382
- "0.1.4"
439
+ "0.1.4",
440
+ "0.2.0",
441
+ "0.2.1"
383
442
  ],
384
443
  "rightkit-playback": [
385
444
  "0.1.0"
386
445
  ],
387
446
  "rightkit-process": [
388
447
  "0.2.1",
389
- "0.3.0"
448
+ "0.3.0",
449
+ "0.3.1",
450
+ "0.3.2"
390
451
  ],
391
452
  "rightkit-qa": [
392
453
  "0.2.7",
393
454
  "0.2.8",
394
455
  "0.2.9",
395
- "0.2.10"
456
+ "0.2.10",
457
+ "0.2.11",
458
+ "0.2.12"
396
459
  ],
397
460
  "rightkit-sandbox": [
398
461
  "0.1.0",
399
462
  "0.2.0",
400
463
  "0.2.1",
401
464
  "0.2.2",
402
- "0.2.3"
465
+ "0.2.3",
466
+ "0.2.4",
467
+ "0.3.0",
468
+ "0.3.1",
469
+ "0.3.2"
403
470
  ],
404
471
  "rightkit-shell": [
405
472
  "0.1.0",
406
473
  "0.1.1",
407
- "0.1.2"
474
+ "0.1.2",
475
+ "0.1.3"
408
476
  ],
409
477
  "rightkit-watch": [
410
478
  "0.1.0",
@@ -412,11 +480,57 @@
412
480
  "0.3.0"
413
481
  ],
414
482
  "rightkit-qts": [
415
- "0.2.0"
483
+ "0.2.0",
484
+ "0.2.1",
485
+ "0.2.2",
486
+ "0.2.3"
416
487
  ],
417
488
  "rightkit-control": [
418
489
  "0.1.6",
419
- "0.1.7"
490
+ "0.1.7",
491
+ "0.1.8"
492
+ ],
493
+ "rightkit-secrets": [
494
+ "0.1.0",
495
+ "0.1.1"
496
+ ],
497
+ "rightkit-http": [
498
+ "0.1.0",
499
+ "0.2.0",
500
+ "0.2.1"
501
+ ],
502
+ "rightkit-fs": [
503
+ "0.1.0",
504
+ "0.2.0",
505
+ "0.3.0",
506
+ "0.3.1"
507
+ ],
508
+ "rightkit-service": [
509
+ "0.1.0",
510
+ "0.1.1",
511
+ "0.1.2"
512
+ ],
513
+ "rightkit-search": [
514
+ "0.1.0"
515
+ ],
516
+ "rightkit-tauri": [
517
+ "0.1.1"
518
+ ],
519
+ "rightkit-qts-ggml": [
520
+ "0.1.0"
521
+ ],
522
+ "rightkit-pdf": [
523
+ "0.1.0"
524
+ ],
525
+ "rightkit-speech-client": [
526
+ "0.3.0",
527
+ "0.3.1"
528
+ ],
529
+ "rightkit-crash": [
530
+ "0.1.0"
531
+ ],
532
+ "rightkit-qts-ggml-sys": [
533
+ "0.1.0"
420
534
  ]
421
535
  }
422
536
  }
@@ -21,8 +21,8 @@ export const RIGHT_SUITE_APP_KEYS = Object.freeze([
21
21
  "voiceright",
22
22
  ]);
23
23
 
24
- const TARGET_OSES = new Set(["windows", "darwin", "linux", "ios"]);
25
- const TARGET_ARCHES = new Set(["x86_64", "aarch64", "universal"]);
24
+ const TARGET_OSES = new Set(["windows", "darwin", "linux", "ios", "any"]);
25
+ const TARGET_ARCHES = new Set(["x86_64", "aarch64", "universal", "any"]);
26
26
  const VERSION_FIELDS = Object.freeze([
27
27
  "runtime",
28
28
  "model",
@@ -32,6 +32,7 @@ const VERSION_FIELDS = Object.freeze([
32
32
  "provenance",
33
33
  ]);
34
34
  const SHA256 = /^[0-9a-f]{64}$/;
35
+ const ARTIFACT_ID = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
35
36
 
36
37
  export function buildRuntimeArtifactManifest(input) {
37
38
  const entitlement = cloneObject(input.entitlement);
@@ -53,6 +54,7 @@ export function buildRuntimeArtifactManifest(input) {
53
54
  provenance: cloneObject(input.provenance),
54
55
  promotion: cloneObject(input.promotion),
55
56
  };
57
+ if (Object.hasOwn(input, "artifactId")) manifest.artifactId = input.artifactId;
56
58
  if (manifest.distribution?.delivery === "bundled") {
57
59
  manifest.object.r2Key = null;
58
60
  manifest.pointerKey = null;
@@ -78,11 +80,15 @@ export function runtimeArtifactManifestPointerKey(value) {
78
80
  const kind = value?.artifactKind;
79
81
  const os = value?.target?.os;
80
82
  const arch = value?.target?.arch;
83
+ const hasArtifactId = value !== null && typeof value === "object" && Object.hasOwn(value, "artifactId");
81
84
  assertAppKey(appKey, "entitlement.appKey");
85
+ if (hasArtifactId) assertArtifactId(value.artifactId);
82
86
  if (!RUNTIME_ARTIFACT_KINDS.includes(kind)) fail("artifactKind is unsupported");
83
87
  if (!TARGET_OSES.has(os)) fail("target.os is unsupported");
84
88
  if (!TARGET_ARCHES.has(arch)) fail("target.arch is unsupported");
85
- return `${appKey}/runtime-artifacts/${kind}/${os}/${arch}/current/manifest.json`;
89
+ if ((os === "any") !== (arch === "any")) fail("target any must use any/any");
90
+ const artifactPath = hasArtifactId ? `${value.artifactId}/` : "";
91
+ return `${appKey}/runtime-artifacts/${kind}/${artifactPath}${os}/${arch}/current/manifest.json`;
86
92
  }
87
93
 
88
94
  export function validateRuntimeArtifactManifest(value) {
@@ -90,7 +96,8 @@ export function validateRuntimeArtifactManifest(value) {
90
96
  assertExactKeys(value, [
91
97
  "schema", "artifactKind", "entitlement", "distribution", "target", "object", "pointerKey",
92
98
  "versions", "provenance", "promotion",
93
- ], "manifest");
99
+ ], "manifest", ["artifactId"]);
100
+ if (Object.hasOwn(value, "artifactId")) assertArtifactId(value.artifactId);
94
101
  if (value.schema !== RUNTIME_ARTIFACT_SCHEMA) fail("schema must be 1");
95
102
  if (!RUNTIME_ARTIFACT_KINDS.includes(value.artifactKind)) fail("artifactKind is unsupported");
96
103
 
@@ -120,6 +127,7 @@ export function validateRuntimeArtifactManifest(value) {
120
127
  assertExactKeys(value.target, ["os", "arch"], "target");
121
128
  if (!TARGET_OSES.has(value.target.os)) fail("target.os is unsupported");
122
129
  if (!TARGET_ARCHES.has(value.target.arch)) fail("target.arch is unsupported");
130
+ if ((value.target.os === "any") !== (value.target.arch === "any")) fail("target any must use any/any");
123
131
 
124
132
  assertPlainObject(value.object, "object");
125
133
  assertExactKeys(value.object, ["r2Key", "filename", "sha256", "sizeBytes"], "object");
@@ -204,12 +212,18 @@ function sortDeep(value) {
204
212
  return value;
205
213
  }
206
214
 
207
- function assertExactKeys(value, expected, label) {
208
- const expectedSet = new Set(expected);
215
+ function assertExactKeys(value, expected, label, optional = []) {
216
+ const expectedSet = new Set([...expected, ...optional]);
209
217
  for (const key of Object.keys(value)) if (!expectedSet.has(key)) fail(`${label} has unknown field ${key}`);
210
218
  for (const key of expected) if (!Object.hasOwn(value, key)) fail(`${label}.${key} is required`);
211
219
  }
212
220
 
221
+ function assertArtifactId(value) {
222
+ if (typeof value !== "string" || value.length > 128 || value.trim() !== value || !ARTIFACT_ID.test(value)) {
223
+ fail("artifactId must be a lowercase safe slug (^[a-z0-9]+(?:-[a-z0-9]+)*$), max 128 characters");
224
+ }
225
+ }
226
+
213
227
  function assertPlainObject(value, label) {
214
228
  if (value === null || typeof value !== "object" || Array.isArray(value) || Object.getPrototypeOf(value) !== Object.prototype) fail(`${label} must be a plain object`);
215
229
  }
package/sign-updater.mjs CHANGED
@@ -3,6 +3,7 @@ import { spawnSync } from "./background-process.mjs";
3
3
  import { existsSync, readFileSync, rmSync } from "node:fs";
4
4
  import path from "node:path";
5
5
  import { signMacUpdaterFiles } from "./macos-signing-session.mjs";
6
+ import { refuseManagedEnvSecrets, MANAGED_HOST_ENV_SECRET_REFUSED } from "./managed-host-secrets.mjs";
6
7
 
7
8
  const args = process.argv.slice(2);
8
9
  const files = [];
@@ -15,6 +16,10 @@ for (let i = 0; i < args.length; i++) {
15
16
  if (!files.length) fail("at least one --file is required");
16
17
 
17
18
  const env = { ...process.env };
19
+ if (!dryRun) {
20
+ try { refuseManagedEnvSecrets(process.env, ["TAURI_SIGNING_PRIVATE_KEY", "TAURI_SIGNING_PRIVATE_KEY_PASSWORD"]); }
21
+ catch (error) { fail(`[${MANAGED_HOST_ENV_SECRET_REFUSED}] ${error.message}`); }
22
+ }
18
23
  if (!dryRun && !env.TAURI_SIGNING_PRIVATE_KEY) {
19
24
  if (process.platform === "win32") {
20
25
  const key = path.join(env.APPDATA || "", "ViewRight", "updater.key");