@vltpkg/cli-js 1.3.8 → 1.5.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 (99) hide show
  1. package/{access-WLKANIOE.js → access-QPX4QXV4.js} +13 -12
  2. package/{bugs-5Q3QSTWP.js → bugs-TLOECXEM.js} +28 -25
  3. package/{build-XSFR63AW.js → build-IQOS3LKO.js} +28 -19
  4. package/{cache-UVPK5J5A.js → cache-O5IBYYSB.js} +35 -23
  5. package/cache-unzip-src-unzip.js +56 -12
  6. package/{chunk-NWHKSRO3.js → chunk-2U4PVHP4.js} +5270 -10837
  7. package/{chunk-5KOLUYXH.js → chunk-35EG6T3J.js} +61 -15
  8. package/{chunk-PJJCFMLW.js → chunk-3S3W7QEM.js} +7 -5
  9. package/chunk-43EJ4Q42.js +57 -0
  10. package/{chunk-IHXJVKAE.js → chunk-4TSHLSRK.js} +2 -1
  11. package/chunk-4UH3KMTD.js +6444 -0
  12. package/{chunk-6D54UN4T.js → chunk-5KW6AOTT.js} +1 -1
  13. package/chunk-6IF3RJND.js +81 -0
  14. package/{chunk-IBGFQR23.js → chunk-6LZM3I4Q.js} +56 -11
  15. package/{chunk-FIUUAQGC.js → chunk-6W5XMVIZ.js} +29 -22
  16. package/{chunk-OWMR2EDW.js → chunk-7UWRR6EE.js} +2 -2
  17. package/{chunk-WHLYMMI2.js → chunk-ARE7FKDG.js} +6 -4
  18. package/chunk-B6RIGNEO.js +626 -0
  19. package/{chunk-CB65DPZ2.js → chunk-C6ZVVEFV.js} +239 -1190
  20. package/{chunk-SE2FSMBR.js → chunk-CMLDLZZ3.js} +73 -11
  21. package/{chunk-6P5CFJR7.js → chunk-CS6AYPY5.js} +6 -6
  22. package/{chunk-TLY4VGMH.js → chunk-CW56EJIL.js} +1 -1
  23. package/{chunk-SV4WK3KX.js → chunk-F7NPYSI2.js} +3 -2
  24. package/{chunk-6BQKR2FM.js → chunk-G3FZ2ZJK.js} +1 -1
  25. package/chunk-GUP55DM6.js +59 -0
  26. package/chunk-HOF7LEIC.js +24 -0
  27. package/chunk-IFEZ6BFV.js +1111 -0
  28. package/{chunk-3U6QWN62.js → chunk-IJUVVD7E.js} +1 -1
  29. package/{chunk-H77JYU7F.js → chunk-ISAMD2FE.js} +12 -3
  30. package/{chunk-WKA5UYNA.js → chunk-LH7J5BDU.js} +5 -5
  31. package/{chunk-GZ5MYMBT.js → chunk-LUVDMEW4.js} +1 -1
  32. package/{chunk-OAP2ROTL.js → chunk-MYX4JCIJ.js} +1 -1
  33. package/{chunk-APMYKJI2.js → chunk-QNHBAGXQ.js} +1 -1
  34. package/{chunk-XCDLOQZZ.js → chunk-SMXXFQPI.js} +80 -29
  35. package/chunk-SUU2WETN.js +268 -0
  36. package/chunk-T2VBCUF5.js +77 -0
  37. package/{chunk-EL4GVZK5.js → chunk-T5EP7QEF.js} +2 -2
  38. package/{chunk-A2TSRXZD.js → chunk-UZ6ICZE3.js} +1 -1
  39. package/{chunk-DL3H4EMY.js → chunk-VR7NRWAD.js} +29 -20
  40. package/chunk-W4T5CGCO.js +52 -0
  41. package/{chunk-XDSZO74H.js → chunk-WHWPAYZY.js} +118 -20
  42. package/{chunk-KMOOTBHM.js → chunk-X6JKMIOU.js} +5 -1
  43. package/{chunk-43HNQWPQ.js → chunk-XCQCYB6G.js} +78 -13
  44. package/{chunk-IUL6MPP6.js → chunk-XCSNI6AO.js} +4 -4
  45. package/{chunk-BGA3WB7H.js → chunk-XD5KUDXX.js} +7 -7
  46. package/{chunk-QNDM4DVO.js → chunk-Z5D5KODU.js} +1 -1
  47. package/{ci-EDRETPUF.js → ci-ESVUMOZO.js} +31 -13
  48. package/cli-package.json +1 -1
  49. package/{config-MVNXGEOQ.js → config-TMB2X6DW.js} +12 -9
  50. package/{config-OKBXU7TU.js → config-ZVVLFKR7.js} +16 -13
  51. package/{create-R7BXYJSU.js → create-BLTNKSBQ.js} +28 -25
  52. package/{deprecate-YSUKBKQM.js → deprecate-VA6PGHYL.js} +17 -15
  53. package/{dist-tag-MIGYSR4F.js → dist-tag-OYJREFO2.js} +13 -12
  54. package/{docs-4WVIN75H.js → docs-6OC3OQNM.js} +28 -25
  55. package/{exec-IXHDQLAM.js → exec-AZPGFVRY.js} +28 -25
  56. package/{exec-cache-EA7GHIK7.js → exec-cache-D75UY2WI.js} +24 -22
  57. package/{exec-local-GM4LH56M.js → exec-local-E2JKB4X4.js} +22 -19
  58. package/{help-TCXGBICU.js → help-UPW77X5N.js} +5 -5
  59. package/{init-MWZDWQHM.js → init-SNO6QL7C.js} +14 -11
  60. package/{install-HPI5HU3C.js → install-TEJM2YVX.js} +165 -26
  61. package/{list-2CX6REPJ.js → list-NHCC2RNB.js} +33 -27
  62. package/{login-RAY23CVG.js → login-XNZXCGFD.js} +19 -16
  63. package/{logout-ICB5OMGY.js → logout-YCM7O36Q.js} +13 -12
  64. package/{outdated-FYHPXRMT.js → outdated-4LA7N63W.js} +26 -22
  65. package/{pack-E5MNPQXK.js → pack-RC4CZSWF.js} +25 -18
  66. package/package.json +1 -1
  67. package/{ping-REQ2KSAR.js → ping-RLVAZGDL.js} +13 -12
  68. package/{pkg-YB4GSRII.js → pkg-FED5C6TP.js} +23 -14
  69. package/{profile-GKBW6GRI.js → profile-DJZNLQPG.js} +13 -12
  70. package/{publish-4ZQJYYLF.js → publish-54AMVMTQ.js} +61 -45
  71. package/{query-SKXBF3MJ.js → query-ZQLMSJ7O.js} +35 -29
  72. package/{registry-MQJJCWJY.js → registry-6HKQYSZX.js} +7 -7
  73. package/registry-client-src-revalidate.js +110 -20
  74. package/{repo-ACPTZI2C.js → repo-ITA4BLZ4.js} +28 -25
  75. package/{reporter-4KK2JNGO.js → reporter-UYVR2WMB.js} +73 -14
  76. package/{run-YW3ITX2A.js → run-TP2HTJRN.js} +22 -19
  77. package/{run-exec-7VQX3OFG.js → run-exec-UGCC53DV.js} +22 -19
  78. package/security-archive-src-update-expired.js +88 -28
  79. package/{setup-PLEKCMXN.js → setup-XPAM5U3Z.js} +23 -21
  80. package/skills-LR6GXW3X.js +413 -0
  81. package/skills-YD2TB2VD.js +495 -0
  82. package/{src-XQ7KVUVN.js → src-34D4DOOH.js} +37 -27
  83. package/{src-PXDFMQ6W.js → src-H6DFCAPH.js} +9 -8
  84. package/{src-GP7VLT7P.js → src-LHDC4NJO.js} +58 -9
  85. package/{token-GB7RPE5J.js → token-OF63PFTQ.js} +13 -12
  86. package/{uninstall-RLCECX37.js → uninstall-B54FQ5KQ.js} +20 -15
  87. package/{unpublish-3ZXEAVHF.js → unpublish-CSHIGMDQ.js} +31 -16
  88. package/{update-VDZP6EZN.js → update-HS4VJ5ZG.js} +51 -25
  89. package/{version-MRELJPOK.js → version-L7S3DHUS.js} +24 -14
  90. package/{view-LCXMTGCJ.js → view-NWKKWFVA.js} +17 -15
  91. package/vlr.js +1 -1
  92. package/vlrx.js +1 -1
  93. package/vlt.js +1 -1
  94. package/vlx.js +1 -1
  95. package/vlxl.js +1 -1
  96. package/{whoami-PNRDBS45.js → whoami-65K35VGW.js} +13 -12
  97. package/chunk-4JAZZRKR.js +0 -76
  98. package/chunk-G2YT2GWF.js +0 -120
  99. package/chunk-U7TEQCBN.js +0 -880
@@ -11268,14 +11268,14 @@ var require_retry_agent = __commonJS({
11268
11268
  this.#options = options;
11269
11269
  }
11270
11270
  dispatch(opts, handler) {
11271
- const retry = new RetryHandler({
11271
+ const retry2 = new RetryHandler({
11272
11272
  ...opts,
11273
11273
  retryOptions: this.#options
11274
11274
  }, {
11275
11275
  dispatch: this.#agent.dispatch.bind(this.#agent),
11276
11276
  handler
11277
11277
  });
11278
- return this.#agent.dispatch(opts, retry);
11278
+ return this.#agent.dispatch(opts, retry2);
11279
11279
  }
11280
11280
  close() {
11281
11281
  return this.#agent.close();
@@ -13765,7 +13765,7 @@ var require_snapshot_recorder = __commonJS({
13765
13765
  "use strict";
13766
13766
  var { writeFile: writeFile3, readFile: readFile4, mkdir: mkdir3 } = __require("node:fs/promises");
13767
13767
  var { dirname: dirname4, resolve: resolve11 } = __require("node:path");
13768
- var { setTimeout: setTimeout4, clearTimeout: clearTimeout2 } = __require("node:timers");
13768
+ var { setTimeout: setTimeout5, clearTimeout: clearTimeout2 } = __require("node:timers");
13769
13769
  var { InvalidArgumentError, UndiciError } = require_errors();
13770
13770
  var { hashId, isUrlExcludedFactory, normalizeHeaders, createHeaderFilters } = require_snapshot_utils();
13771
13771
  function formatRequestKey(opts, headerFilters, matchOptions = {}) {
@@ -14099,7 +14099,7 @@ var require_snapshot_recorder = __commonJS({
14099
14099
  * Schedules a flush (debounced to avoid excessive writes)
14100
14100
  */
14101
14101
  #scheduleFlush() {
14102
- this.#flushTimeout = setTimeout4(() => {
14102
+ this.#flushTimeout = setTimeout5(() => {
14103
14103
  this.saveSnapshots().catch(() => {
14104
14104
  });
14105
14105
  if (this.#autoFlush) {
@@ -19482,7 +19482,7 @@ var require_request2 = __commonJS({
19482
19482
  var { URLSerializer } = require_data_url();
19483
19483
  var { kConstruct } = require_symbols();
19484
19484
  var assert = __require("node:assert");
19485
- var { getMaxListeners, setMaxListeners, defaultMaxListeners } = __require("node:events");
19485
+ var { getMaxListeners, setMaxListeners: setMaxListeners2, defaultMaxListeners } = __require("node:events");
19486
19486
  var kAbortController = /* @__PURE__ */ Symbol("abortController");
19487
19487
  var requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {
19488
19488
  signal.removeEventListener("abort", abort);
@@ -19722,7 +19722,7 @@ var require_request2 = __commonJS({
19722
19722
  const acRef = new WeakRef(ac);
19723
19723
  const abort = buildAbort(acRef);
19724
19724
  if (abortSignalHasEventHandlerLeakWarning && getMaxListeners(signal) === defaultMaxListeners) {
19725
- setMaxListeners(1500, signal);
19725
+ setMaxListeners2(1500, signal);
19726
19726
  }
19727
19727
  util.addAbortListener(signal, abort);
19728
19728
  requestFinalizer.register(ac, { signal, abort }, abort);
@@ -25806,7 +25806,27 @@ function syntaxError(message, cause, from) {
25806
25806
  }
25807
25807
 
25808
25808
  // ../../src/fast-split/src/index.ts
25809
+ var splitTwo = (str, delim) => {
25810
+ const a2 = str.indexOf(delim);
25811
+ return a2 === -1 ? [str] : [str.substring(0, a2), str.substring(a2 + delim.length)];
25812
+ };
25813
+ var splitThree = (str, delim) => {
25814
+ const a2 = str.indexOf(delim);
25815
+ if (a2 === -1) return [str];
25816
+ const l = delim.length;
25817
+ const b = str.indexOf(delim, a2 + l);
25818
+ return b === -1 ? [str.substring(0, a2), str.substring(a2 + l)] : [
25819
+ str.substring(0, a2),
25820
+ str.substring(a2 + l, b),
25821
+ str.substring(b + l)
25822
+ ];
25823
+ };
25809
25824
  function fastSplit(str, delim, limit = -1, onPart) {
25825
+ if (onPart === void 0) {
25826
+ if (limit === 2) return splitTwo(str, delim);
25827
+ if (limit === 3)
25828
+ return splitThree(str, delim);
25829
+ }
25810
25830
  let i2 = 0;
25811
25831
  let p = 0;
25812
25832
  const l = delim.length;
@@ -26842,9 +26862,10 @@ var gitHostWebsites = {
26842
26862
  gitlab: "https://gitlab.com/"
26843
26863
  };
26844
26864
  var getOptions = (options) => ({
26845
- catalog: {},
26846
26865
  catalogs: {},
26847
26866
  ...options,
26867
+ // after spread: explicit `catalog: undefined` gets default too
26868
+ catalog: options?.catalog ?? {},
26848
26869
  // built-in aliases are user/service-overridable: user config wins
26849
26870
  "jsr-registries": {
26850
26871
  ...defaultJsrRegistries,
@@ -27021,19 +27042,25 @@ var Spec = class _Spec {
27021
27042
  }
27022
27043
  if (this.bareSpec.startsWith("catalog:")) {
27023
27044
  this.catalog = this.bareSpec.substring("catalog:".length);
27024
- const catalog = this.catalog ? this.options.catalogs?.[this.catalog] : this.options.catalog;
27045
+ const { catalog: defaultCatalog, catalogs = {} } = this.options;
27046
+ const catalog = this.catalog ? Object.hasOwn(catalogs, this.catalog) ? catalogs[this.catalog] : void 0 : Object.keys(defaultCatalog).length ? defaultCatalog : void 0;
27025
27047
  if (!catalog) {
27026
- throw this.#error("Named catalog not found", {
27027
- name: this.catalog,
27028
- validOptions: this.options.catalogs && Object.keys(this.options.catalogs)
27029
- });
27048
+ throw this.#catalogError(
27049
+ this.catalog ? `Catalog "${this.catalog}" not found for ${this.spec}` : `Default catalog not found for ${this.spec}`
27050
+ );
27030
27051
  }
27031
- const sub = catalog[this.name];
27052
+ const catalogName = this.catalog ? `catalog "${this.catalog}"` : "default catalog";
27053
+ const sub = Object.hasOwn(catalog, this.name) ? catalog[this.name] : void 0;
27032
27054
  if (!sub) {
27033
- throw this.#error("Name not found in catalog", {
27034
- name: this.name,
27035
- validOptions: Object.keys(catalog)
27036
- });
27055
+ throw this.#catalogError(
27056
+ `Package "${this.name}" not found in ${catalogName}`
27057
+ );
27058
+ }
27059
+ if (sub.startsWith("catalog:")) {
27060
+ throw this.#error(
27061
+ `Catalog entry "${this.name}" in ${catalogName} cannot be a catalog: spec`,
27062
+ { code: "ECONFIG", found: sub }
27063
+ );
27037
27064
  }
27038
27065
  this.subspec = _Spec.parse(this.name, sub, this.options);
27039
27066
  this.type = "catalog";
@@ -27349,6 +27376,23 @@ var Spec = class _Spec {
27349
27376
  ].map((p) => `${p}:`)
27350
27377
  });
27351
27378
  }
27379
+ /** ECONFIG error listing defined catalogs & ones defining this dep */
27380
+ #catalogError(message) {
27381
+ const { catalog, catalogs = {} } = this.options;
27382
+ const defined = [
27383
+ ...Object.keys(catalog).length ? [["", catalog]] : [],
27384
+ ...Object.entries(catalogs)
27385
+ ];
27386
+ const validOptions = defined.map(([n7]) => `catalog:${n7}`);
27387
+ const wanted = defined.filter(
27388
+ ([, c]) => Object.hasOwn(c, this.name) && !!c[this.name]
27389
+ ).map(([n7]) => `catalog:${n7}`);
27390
+ return this.#error(message, {
27391
+ code: "ECONFIG",
27392
+ ...validOptions.length ? { validOptions } : {},
27393
+ ...wanted.length ? { wanted } : {}
27394
+ });
27395
+ }
27352
27396
  #error(message, extra = {}) {
27353
27397
  return error(message, { spec: this.spec, ...extra }, this.#error);
27354
27398
  }
@@ -32460,15 +32504,16 @@ import { randomUUID } from "node:crypto";
32460
32504
  import { closeSync, openSync, readFileSync as readFileSync2, readSync } from "node:fs";
32461
32505
  import { availableParallelism } from "node:os";
32462
32506
  import { dirname as dirname3, resolve as resolve10 } from "node:path";
32507
+ import { setMaxListeners } from "node:events";
32463
32508
  import { pipeline } from "node:stream";
32464
- import { setTimeout as setTimeout3 } from "node:timers/promises";
32509
+ import { setTimeout as setTimeout4 } from "node:timers/promises";
32465
32510
  import { createGunzip } from "node:zlib";
32466
32511
 
32467
32512
  // ../../src/user-agent/package.json
32468
32513
  var package_default = {
32469
32514
  name: "@vltpkg/user-agent",
32470
32515
  description: "The User-Agent string that vlt sends with every outbound request",
32471
- version: "1.3.8",
32516
+ version: "1.5.0",
32472
32517
  repository: {
32473
32518
  type: "git",
32474
32519
  url: "git+https://github.com/vltpkg/vltpkg.git",
@@ -33871,6 +33916,40 @@ var readBody = async (response, entry) => {
33871
33916
  });
33872
33917
  };
33873
33918
 
33919
+ // ../../src/registry-client/src/retry.ts
33920
+ import { setTimeout as setTimeout3 } from "node:timers/promises";
33921
+ var retry = (err, { state: { counter }, opts }, cb) => {
33922
+ const { code, statusCode, headers } = err;
33923
+ const { method } = opts;
33924
+ const { signal } = opts;
33925
+ const {
33926
+ maxRetries,
33927
+ minTimeout,
33928
+ maxTimeout,
33929
+ timeoutFactor,
33930
+ methods,
33931
+ statusCodes,
33932
+ errorCodes
33933
+ } = opts.retryOptions;
33934
+ if (code && code !== "UND_ERR_REQ_RETRY" && !errorCodes.includes(code) || !methods.includes(method) || typeof statusCode === "number" && !statusCodes.includes(statusCode) || counter > maxRetries) {
33935
+ cb(err);
33936
+ return;
33937
+ }
33938
+ const ra = String(headers?.["retry-after"] ?? "");
33939
+ const secs = Number(ra);
33940
+ const after = Number.isNaN(secs) ? Date.parse(ra) - Date.now() : secs * 1e3;
33941
+ const wait = Math.min(
33942
+ after > 0 ? after : minTimeout * timeoutFactor ** (counter - 1),
33943
+ maxTimeout
33944
+ );
33945
+ setTimeout3(wait, null, {
33946
+ signal: signal instanceof AbortSignal ? signal : void 0
33947
+ }).then(
33948
+ () => cb(null),
33949
+ (er) => cb(er)
33950
+ );
33951
+ };
33952
+
33874
33953
  // ../../src/registry-client/src/store-root.ts
33875
33954
  import { resolve as resolve9 } from "node:path";
33876
33955
  var storeRoot = (cache) => resolve9(cache, "store", "v1");
@@ -33917,7 +33996,15 @@ var RegistryClient = class {
33917
33996
  #decoded = /* @__PURE__ */ new WeakMap();
33918
33997
  // request() calls not settled yet, awaited by drain()
33919
33998
  #inFlight = /* @__PURE__ */ new Set();
33999
+ #signal;
34000
+ /** the request's own signal joined with the client's */
34001
+ #withSignal(own) {
34002
+ const c = this.#signal;
34003
+ return !c || own === c || !(own instanceof AbortSignal) ? own ?? c : AbortSignal.any([own, c]);
34004
+ }
33920
34005
  constructor(options) {
34006
+ this.#signal = options.signal;
34007
+ if (options.signal) setMaxListeners(0, options.signal);
33921
34008
  const {
33922
34009
  cache = xdg.cache(),
33923
34010
  "fetch-retry-factor": timeoutFactor = 2,
@@ -33950,6 +34037,7 @@ var RegistryClient = class {
33950
34037
  minTimeout,
33951
34038
  maxTimeout,
33952
34039
  retryAfter: true,
34040
+ retry,
33953
34041
  errorCodes: [
33954
34042
  "ECONNREFUSED",
33955
34043
  "ECONNRESET",
@@ -34153,7 +34241,7 @@ var RegistryClient = class {
34153
34241
  const rt2 = response.getHeaderString("retry-after");
34154
34242
  const retryAfter = rt2 ? Number(rt2) : -1;
34155
34243
  if (retryAfter > 0) {
34156
- await setTimeout3(retryAfter * 1e3, null, { signal });
34244
+ await setTimeout4(retryAfter * 1e3, null, { signal });
34157
34245
  }
34158
34246
  return await this.#checkLogin(url, options);
34159
34247
  }
@@ -34293,6 +34381,7 @@ var RegistryClient = class {
34293
34381
  const u2 = typeof url === "string" ? new URL(url) : url;
34294
34382
  const o = {
34295
34383
  ...options,
34384
+ signal: this.#withSignal(options.signal),
34296
34385
  method: options.method ?? "GET",
34297
34386
  path: u2.pathname.replace(/\/+$/, "") + u2.search,
34298
34387
  origin: u2.origin,
@@ -34351,6 +34440,7 @@ var RegistryClient = class {
34351
34440
  } while (this.#inFlight.size);
34352
34441
  }
34353
34442
  async request(url, options = {}) {
34443
+ options.signal = this.#withSignal(options.signal);
34354
34444
  let settle;
34355
34445
  const tracked = new Promise((res) => settle = res);
34356
34446
  this.#inFlight.add(tracked);
@@ -14,46 +14,49 @@ import {
14
14
  } from "./chunk-CLVRCGOZ.js";
15
15
  import {
16
16
  openUrl
17
- } from "./chunk-OWMR2EDW.js";
17
+ } from "./chunk-7UWRR6EE.js";
18
18
  import {
19
19
  createHostContextsMap
20
- } from "./chunk-WHLYMMI2.js";
21
- import "./chunk-XDSZO74H.js";
22
- import "./chunk-KMOOTBHM.js";
23
- import "./chunk-G2YT2GWF.js";
24
- import "./chunk-IHXJVKAE.js";
20
+ } from "./chunk-ARE7FKDG.js";
25
21
  import {
26
- PackageInfoClient
27
- } from "./chunk-DL3H4EMY.js";
28
- import "./chunk-SRWDPPLX.js";
29
- import "./chunk-WGDTG44V.js";
30
- import "./chunk-A2TSRXZD.js";
31
- import {
32
- Query,
33
22
  actual
34
- } from "./chunk-NWHKSRO3.js";
23
+ } from "./chunk-4UH3KMTD.js";
24
+ import {
25
+ Query
26
+ } from "./chunk-2U4PVHP4.js";
35
27
  import {
36
28
  SecurityArchive
37
- } from "./chunk-XCDLOQZZ.js";
29
+ } from "./chunk-SMXXFQPI.js";
30
+ import "./chunk-WHWPAYZY.js";
31
+ import "./chunk-X6JKMIOU.js";
32
+ import "./chunk-4TSHLSRK.js";
38
33
  import {
39
34
  commandUsage
40
- } from "./chunk-TLY4VGMH.js";
41
- import "./chunk-CB65DPZ2.js";
35
+ } from "./chunk-CW56EJIL.js";
36
+ import {
37
+ PackageInfoClient
38
+ } from "./chunk-VR7NRWAD.js";
39
+ import "./chunk-SRWDPPLX.js";
40
+ import "./chunk-IFEZ6BFV.js";
41
+ import "./chunk-C6ZVVEFV.js";
42
42
  import "./chunk-4KCU2KZL.js";
43
- import "./chunk-SV4WK3KX.js";
43
+ import "./chunk-WGDTG44V.js";
44
+ import "./chunk-UZ6ICZE3.js";
45
+ import "./chunk-CMLDLZZ3.js";
46
+ import "./chunk-F7NPYSI2.js";
44
47
  import {
45
48
  Spec
46
- } from "./chunk-GZ5MYMBT.js";
47
- import "./chunk-SE2FSMBR.js";
49
+ } from "./chunk-LUVDMEW4.js";
48
50
  import "./chunk-HTOTG4TS.js";
49
- import "./chunk-APMYKJI2.js";
50
- import "./chunk-6D54UN4T.js";
51
- import "./chunk-6BQKR2FM.js";
52
- import "./chunk-U7TEQCBN.js";
51
+ import "./chunk-QNHBAGXQ.js";
52
+ import "./chunk-G3FZ2ZJK.js";
53
+ import "./chunk-5KW6AOTT.js";
54
+ import "./chunk-SUU2WETN.js";
55
+ import "./chunk-B6RIGNEO.js";
53
56
  import "./chunk-XNLSTHDK.js";
54
57
  import "./chunk-PDWPFR5T.js";
55
58
  import "./chunk-Y5PA7DVK.js";
56
- import "./chunk-IBGFQR23.js";
59
+ import "./chunk-6LZM3I4Q.js";
57
60
  import {
58
61
  error
59
62
  } from "./chunk-WZWDS3W4.js";
@@ -11,34 +11,43 @@ import {createRequire as _vlt_createRequire} from "node:module";
11
11
  var require = _vlt_createRequire(import.meta.filename);
12
12
  import {
13
13
  persistedEntries
14
- } from "./chunk-IUL6MPP6.js";
14
+ } from "./chunk-XCSNI6AO.js";
15
+ import {
16
+ keptLine,
17
+ savedLine,
18
+ unmatchedLines,
19
+ unscannedLines
20
+ } from "./chunk-W4T5CGCO.js";
15
21
  import {
16
22
  require_emoji_regex
17
23
  } from "./chunk-VTEFO2FT.js";
18
- import "./chunk-43HNQWPQ.js";
19
- import "./chunk-DL3H4EMY.js";
24
+ import "./chunk-XCQCYB6G.js";
25
+ import "./chunk-VR7NRWAD.js";
20
26
  import "./chunk-SRWDPPLX.js";
21
- import {
22
- source_default
23
- } from "./chunk-WGDTG44V.js";
24
- import "./chunk-A2TSRXZD.js";
25
- import "./chunk-CB65DPZ2.js";
27
+ import "./chunk-IFEZ6BFV.js";
28
+ import "./chunk-C6ZVVEFV.js";
26
29
  import {
27
30
  ViewClass
28
31
  } from "./chunk-4KCU2KZL.js";
29
- import "./chunk-SV4WK3KX.js";
30
- import "./chunk-GZ5MYMBT.js";
31
- import "./chunk-SE2FSMBR.js";
32
+ import {
33
+ source_default
34
+ } from "./chunk-WGDTG44V.js";
35
+ import "./chunk-UZ6ICZE3.js";
36
+ import "./chunk-CMLDLZZ3.js";
37
+ import "./chunk-F7NPYSI2.js";
38
+ import "./chunk-LUVDMEW4.js";
32
39
  import "./chunk-HTOTG4TS.js";
33
- import "./chunk-6D54UN4T.js";
40
+ import "./chunk-5KW6AOTT.js";
41
+ import "./chunk-SUU2WETN.js";
34
42
  import {
35
43
  emitter
36
- } from "./chunk-U7TEQCBN.js";
44
+ } from "./chunk-B6RIGNEO.js";
37
45
  import "./chunk-XNLSTHDK.js";
46
+ import "./chunk-6IF3RJND.js";
38
47
  import "./chunk-Y5PA7DVK.js";
39
48
  import {
40
49
  asError
41
- } from "./chunk-IBGFQR23.js";
50
+ } from "./chunk-6LZM3I4Q.js";
42
51
  import "./chunk-WZWDS3W4.js";
43
52
  import {
44
53
  __commonJS,
@@ -18620,6 +18629,10 @@ var App2 = ({ trailer }) => {
18620
18629
  var InstallReporter = class extends ViewClass {
18621
18630
  #instance = null;
18622
18631
  start() {
18632
+ if (!process.stdout.isTTY) {
18633
+ const cols = Number(process.env.COLUMNS);
18634
+ process.stdout.columns ||= Number.isInteger(cols) && cols > 0 ? cols : 80;
18635
+ }
18623
18636
  this.#instance = render_default((0, import_react30.createElement)(App2));
18624
18637
  }
18625
18638
  async done(_result, { time }) {
@@ -18632,6 +18645,42 @@ var InstallReporter = class extends ViewClass {
18632
18645
  out += "\u{1F50E} Run `vlt query :scripts` to list them\n";
18633
18646
  out += "\u{1F528} Run `vlt build` to run all required scripts to build installed packages.\n";
18634
18647
  }
18648
+ const {
18649
+ linked = [],
18650
+ removed = [],
18651
+ conflicts = [],
18652
+ skipped = [],
18653
+ gitignore = [],
18654
+ unmatched = []
18655
+ } = _result.skills ?? {};
18656
+ const s = (n) => n === 1 ? "" : "s";
18657
+ const skills = [];
18658
+ if (linked.length) {
18659
+ const n = new Set(linked.map((r) => `${r.id}\0${r.skill}`)).size;
18660
+ const dirs = [...new Set(linked.map((r) => r.dir))].join(", ");
18661
+ skills.push(`\u{1F517} Linked ${n} agent skill${s(n)} into ${dirs}`);
18662
+ }
18663
+ if (removed.length) {
18664
+ skills.push(
18665
+ `\u{1F9F9} Removed ${removed.length} stale skill link${s(removed.length)}: ${removed.join(", ")}`
18666
+ );
18667
+ }
18668
+ if (conflicts.length) {
18669
+ skills.push(
18670
+ `\u26A0\uFE0F ${conflicts.length} skill link${s(conflicts.length)} skipped, path in use or taken by another package: ${conflicts.join(", ")}`
18671
+ );
18672
+ }
18673
+ skills.push(...unmatchedLines(unmatched));
18674
+ if (skipped.length) {
18675
+ skills.push(`\u26A0\uFE0F Skipped ${skipped.join(", ")}`);
18676
+ }
18677
+ if (gitignore.length) {
18678
+ skills.push(`\u26A0\uFE0F Could not update ${gitignore.join(", ")}`);
18679
+ }
18680
+ skills.push(...unscannedLines(_result.skills ?? {}));
18681
+ if (skills.length) out += `
18682
+ ${skills.join("\n")}
18683
+ `;
18635
18684
  const saved = _result.persistedConfig;
18636
18685
  if (saved) {
18637
18686
  for (const e of persistedEntries(saved.values)) {
@@ -18639,6 +18688,16 @@ var InstallReporter = class extends ViewClass {
18639
18688
  Saved ${e} to ${saved.which} vlt.json`;
18640
18689
  }
18641
18690
  }
18691
+ const migrated = _result.migratedWorkspaces;
18692
+ if (migrated) {
18693
+ out += `
18694
+ Saved workspaces from ${migrated.source} to vlt.json`;
18695
+ }
18696
+ const a = _result.allowSkills;
18697
+ if (a?.stored) out += `
18698
+ ${keptLine(a.stored)}`;
18699
+ else if (a) out += `
18700
+ ${savedLine(a.query, "project")}`;
18642
18701
  this.#instance?.rerender((0, import_react30.createElement)(App2, { trailer: out }));
18643
18702
  return void 0;
18644
18703
  }
@@ -12,36 +12,39 @@ var require = _vlt_createRequire(import.meta.filename);
12
12
  import {
13
13
  ExecCommand,
14
14
  views
15
- } from "./chunk-FIUUAQGC.js";
15
+ } from "./chunk-6W5XMVIZ.js";
16
+ import "./chunk-43EJ4Q42.js";
16
17
  import "./chunk-RIYFGX27.js";
17
- import "./chunk-WHLYMMI2.js";
18
- import "./chunk-XDSZO74H.js";
19
- import "./chunk-KMOOTBHM.js";
20
- import "./chunk-G2YT2GWF.js";
21
- import "./chunk-IHXJVKAE.js";
22
- import "./chunk-VTEFO2FT.js";
23
- import "./chunk-WGDTG44V.js";
24
- import "./chunk-A2TSRXZD.js";
18
+ import "./chunk-ARE7FKDG.js";
25
19
  import {
26
20
  run,
27
21
  runFG
28
- } from "./chunk-NWHKSRO3.js";
29
- import "./chunk-XCDLOQZZ.js";
22
+ } from "./chunk-4UH3KMTD.js";
23
+ import "./chunk-2U4PVHP4.js";
24
+ import "./chunk-SMXXFQPI.js";
25
+ import "./chunk-WHWPAYZY.js";
26
+ import "./chunk-X6JKMIOU.js";
27
+ import "./chunk-4TSHLSRK.js";
30
28
  import {
31
29
  commandUsage
32
- } from "./chunk-TLY4VGMH.js";
33
- import "./chunk-CB65DPZ2.js";
30
+ } from "./chunk-CW56EJIL.js";
31
+ import "./chunk-VTEFO2FT.js";
32
+ import "./chunk-IFEZ6BFV.js";
33
+ import "./chunk-C6ZVVEFV.js";
34
34
  import "./chunk-4KCU2KZL.js";
35
- import "./chunk-SV4WK3KX.js";
36
- import "./chunk-GZ5MYMBT.js";
37
- import "./chunk-SE2FSMBR.js";
35
+ import "./chunk-WGDTG44V.js";
36
+ import "./chunk-UZ6ICZE3.js";
37
+ import "./chunk-CMLDLZZ3.js";
38
+ import "./chunk-F7NPYSI2.js";
39
+ import "./chunk-LUVDMEW4.js";
38
40
  import "./chunk-HTOTG4TS.js";
39
- import "./chunk-6BQKR2FM.js";
40
- import "./chunk-U7TEQCBN.js";
41
+ import "./chunk-G3FZ2ZJK.js";
42
+ import "./chunk-SUU2WETN.js";
43
+ import "./chunk-B6RIGNEO.js";
41
44
  import "./chunk-XNLSTHDK.js";
42
45
  import "./chunk-PDWPFR5T.js";
43
46
  import "./chunk-Y5PA7DVK.js";
44
- import "./chunk-IBGFQR23.js";
47
+ import "./chunk-6LZM3I4Q.js";
45
48
  import "./chunk-WZWDS3W4.js";
46
49
  import "./chunk-PZLD7RTK.js";
47
50
 
@@ -12,36 +12,39 @@ var require = _vlt_createRequire(import.meta.filename);
12
12
  import {
13
13
  ExecCommand,
14
14
  views
15
- } from "./chunk-FIUUAQGC.js";
15
+ } from "./chunk-6W5XMVIZ.js";
16
+ import "./chunk-43EJ4Q42.js";
16
17
  import "./chunk-RIYFGX27.js";
17
- import "./chunk-WHLYMMI2.js";
18
- import "./chunk-XDSZO74H.js";
19
- import "./chunk-KMOOTBHM.js";
20
- import "./chunk-G2YT2GWF.js";
21
- import "./chunk-IHXJVKAE.js";
22
- import "./chunk-VTEFO2FT.js";
23
- import "./chunk-WGDTG44V.js";
24
- import "./chunk-A2TSRXZD.js";
18
+ import "./chunk-ARE7FKDG.js";
25
19
  import {
26
20
  runExec,
27
21
  runExecFG
28
- } from "./chunk-NWHKSRO3.js";
29
- import "./chunk-XCDLOQZZ.js";
22
+ } from "./chunk-4UH3KMTD.js";
23
+ import "./chunk-2U4PVHP4.js";
24
+ import "./chunk-SMXXFQPI.js";
25
+ import "./chunk-WHWPAYZY.js";
26
+ import "./chunk-X6JKMIOU.js";
27
+ import "./chunk-4TSHLSRK.js";
30
28
  import {
31
29
  commandUsage
32
- } from "./chunk-TLY4VGMH.js";
33
- import "./chunk-CB65DPZ2.js";
30
+ } from "./chunk-CW56EJIL.js";
31
+ import "./chunk-VTEFO2FT.js";
32
+ import "./chunk-IFEZ6BFV.js";
33
+ import "./chunk-C6ZVVEFV.js";
34
34
  import "./chunk-4KCU2KZL.js";
35
- import "./chunk-SV4WK3KX.js";
36
- import "./chunk-GZ5MYMBT.js";
37
- import "./chunk-SE2FSMBR.js";
35
+ import "./chunk-WGDTG44V.js";
36
+ import "./chunk-UZ6ICZE3.js";
37
+ import "./chunk-CMLDLZZ3.js";
38
+ import "./chunk-F7NPYSI2.js";
39
+ import "./chunk-LUVDMEW4.js";
38
40
  import "./chunk-HTOTG4TS.js";
39
- import "./chunk-6BQKR2FM.js";
40
- import "./chunk-U7TEQCBN.js";
41
+ import "./chunk-G3FZ2ZJK.js";
42
+ import "./chunk-SUU2WETN.js";
43
+ import "./chunk-B6RIGNEO.js";
41
44
  import "./chunk-XNLSTHDK.js";
42
45
  import "./chunk-PDWPFR5T.js";
43
46
  import "./chunk-Y5PA7DVK.js";
44
- import "./chunk-IBGFQR23.js";
47
+ import "./chunk-6LZM3I4Q.js";
45
48
  import "./chunk-WZWDS3W4.js";
46
49
  import "./chunk-PZLD7RTK.js";
47
50