@mnemonik/cli 7.154.2 → 7.155.2

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 (59) hide show
  1. package/dist/auth/credentials.js +35 -22
  2. package/dist/auth/index.js +35 -22
  3. package/dist/auth/installSession.js +21 -10
  4. package/dist/auth/status.js +21 -10
  5. package/dist/authorizationWords.js +21 -10
  6. package/dist/diagnostics.js +35 -22
  7. package/dist/digests.json +57 -53
  8. package/dist/hooksLog.js +3 -1
  9. package/dist/identity/migrate.js +35 -22
  10. package/dist/install/hosts.js +21 -10
  11. package/dist/install/journal.js +35 -22
  12. package/dist/install/journey.d.ts.map +1 -1
  13. package/dist/install/journey.js +42 -22
  14. package/dist/install/journey.js.map +1 -1
  15. package/dist/install/ownership.js +35 -22
  16. package/dist/install/transaction.js +35 -22
  17. package/dist/install/ui.js +35 -22
  18. package/dist/installSession.js +21 -10
  19. package/dist/installation.js +35 -22
  20. package/dist/launcher.js +35 -22
  21. package/dist/preflight.js +23 -10
  22. package/dist/project/eligibility.js +35 -22
  23. package/dist/project/records.js +35 -22
  24. package/dist/project.js +35 -22
  25. package/dist/router.d.ts +2 -0
  26. package/dist/router.d.ts.map +1 -1
  27. package/dist/router.js +66 -43
  28. package/dist/router.js.map +1 -1
  29. package/dist/runtime/releaseSource.js +35 -22
  30. package/dist/runtime/selfUpdate.d.ts +11 -1
  31. package/dist/runtime/selfUpdate.d.ts.map +1 -1
  32. package/dist/runtime/selfUpdate.js +52 -26
  33. package/dist/runtime/selfUpdate.js.map +1 -1
  34. package/dist/runtime/signers.js +177 -22
  35. package/dist/runtime/store.js +81 -22
  36. package/dist/runtime/updateCheck.js +35 -22
  37. package/dist/sbom.json +21 -21
  38. package/dist/scanner/control.js +35 -22
  39. package/dist/scanner/data.js +21 -10
  40. package/dist/scanner/discover.js +23 -10
  41. package/dist/scanner/enable.d.ts +5 -0
  42. package/dist/scanner/enable.d.ts.map +1 -1
  43. package/dist/scanner/enable.js +52 -22
  44. package/dist/scanner/enable.js.map +1 -1
  45. package/dist/scanner/estimate.d.ts +41 -0
  46. package/dist/scanner/estimate.d.ts.map +1 -0
  47. package/dist/scanner/estimate.js +2461 -0
  48. package/dist/scanner/estimate.js.map +1 -0
  49. package/dist/scanner/picker.js +23 -10
  50. package/dist/scanner/service.js +35 -22
  51. package/dist/scanner/update.js +35 -22
  52. package/dist/scanner-release.json +24 -24
  53. package/dist/status.d.ts +6 -0
  54. package/dist/status.d.ts.map +1 -1
  55. package/dist/status.js +39 -23
  56. package/dist/status.js.map +1 -1
  57. package/dist/vendor/local-setup.js +35 -22
  58. package/dist/vendor/shared/runtimeReader.js +110 -21
  59. package/package.json +31 -31
@@ -43,6 +43,17 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
43
43
  mod
44
44
  ));
45
45
 
46
+ // packages/shared/dist/secretPatterns.js
47
+ var SECRET_LABEL, SECRET_LABEL_RE, LABELED_VALUE_RE;
48
+ var init_secretPatterns = __esm({
49
+ "packages/shared/dist/secretPatterns.js"() {
50
+ "use strict";
51
+ SECRET_LABEL = String.raw`[\w$-]*(?:api[_-]?key|secret|token|password|credential|auth)|aws_secret_access_key`;
52
+ SECRET_LABEL_RE = new RegExp(`^(?:${SECRET_LABEL}|MYSQL_PWD|SSHPASS)$`, "i");
53
+ LABELED_VALUE_RE = new RegExp(String.raw`(?<![\w$-])((["']?)(?:${SECRET_LABEL})\2\s*[:=]\s*)(?=\S)`, "gi");
54
+ }
55
+ });
56
+
46
57
  // node_modules/ignore/index.js
47
58
  var require_ignore = __commonJS({
48
59
  "node_modules/ignore/index.js"(exports, module2) {
@@ -885,17 +896,6 @@ var require_ignore = __commonJS({
885
896
  }
886
897
  });
887
898
 
888
- // packages/shared/dist/secretPatterns.js
889
- var SECRET_LABEL, SECRET_LABEL_RE, LABELED_VALUE_RE;
890
- var init_secretPatterns = __esm({
891
- "packages/shared/dist/secretPatterns.js"() {
892
- "use strict";
893
- SECRET_LABEL = String.raw`[\w$-]*(?:api[_-]?key|secret|token|password|credential|auth)|aws_secret_access_key`;
894
- SECRET_LABEL_RE = new RegExp(`^(?:${SECRET_LABEL}|MYSQL_PWD|SSHPASS)$`, "i");
895
- LABELED_VALUE_RE = new RegExp(String.raw`(?<![\w$-])((["']?)(?:${SECRET_LABEL})\2\s*[:=]\s*)(?=\S)`, "gi");
896
- }
897
- });
898
-
899
899
  // packages/shared/dist/protectedPaths.js
900
900
  var init_protectedPaths = __esm({
901
901
  "packages/shared/dist/protectedPaths.js"() {
@@ -1046,7 +1046,7 @@ var init_repositoryRoot = __esm({
1046
1046
  });
1047
1047
 
1048
1048
  // packages/shared/dist/hookTrace.js
1049
- var HOOK_TRACE_MAX_BYTES;
1049
+ var HOOK_TRACE_MAX_BYTES, HOOK_MISS_WINDOW_MS, HOOK_MISS_TAIL_BYTES;
1050
1050
  var init_hookTrace = __esm({
1051
1051
  "packages/shared/dist/hookTrace.js"() {
1052
1052
  "use strict";
@@ -1054,6 +1054,8 @@ var init_hookTrace = __esm({
1054
1054
  init_runtimeSigners();
1055
1055
  init_secretPatterns();
1056
1056
  HOOK_TRACE_MAX_BYTES = 2 * 1024 * 1024;
1057
+ HOOK_MISS_WINDOW_MS = 30 * 60 * 1e3;
1058
+ HOOK_MISS_TAIL_BYTES = 64 * 1024;
1057
1059
  }
1058
1060
  });
1059
1061
 
@@ -2768,9 +2770,6 @@ function getMcpInstructions() {
2768
2770
  }
2769
2771
  var MCP_INSTRUCTIONS = getMcpInstructions();
2770
2772
 
2771
- // packages/shared/dist/codeScanner.js
2772
- var import_ignore = __toESM(require_ignore(), 1);
2773
-
2774
2773
  // node_modules/web-tree-sitter/web-tree-sitter.js
2775
2774
  var __defProp2 = Object.defineProperty;
2776
2775
  var __name = (target, value) => __defProp2(target, "name", { value, configurable: true });
@@ -6819,9 +6818,6 @@ import { dirname, extname, join } from "node:path";
6819
6818
  import { fileURLToPath } from "node:url";
6820
6819
  var WASM_DIR = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "wasm");
6821
6820
 
6822
- // packages/shared/dist/ast/astChunker.js
6823
- var MAX_AST_PARSE_BYTES = 2 * 1024 * 1024;
6824
-
6825
6821
  // packages/shared/dist/redactCredentials.js
6826
6822
  var REDACTED = "<redacted credential>";
6827
6823
  var MAX_PEM_BODY_LENGTH = 8 * 1024;
@@ -7081,11 +7077,15 @@ var PATTERNS = [
7081
7077
 
7082
7078
  // packages/shared/dist/sourceRedaction.js
7083
7079
  init_secretPatterns();
7080
+ var MAX_SOURCE_REDACTION_BYTES = 10 * 1024 * 1024;
7084
7081
 
7085
- // packages/shared/dist/codeScanner.js
7082
+ // packages/shared/dist/ast/astChunker.js
7083
+ var MAX_AST_PARSE_BYTES = 2 * 1024 * 1024;
7084
+
7085
+ // packages/shared/dist/fileSelection.js
7086
+ var import_ignore = __toESM(require_ignore(), 1);
7086
7087
  init_protectedPaths();
7087
7088
  init_projectIdentityFile();
7088
- var MAX_SCANNED_FILE_BYTES = 10 * 1024 * 1024;
7089
7089
  var BUILT_IN_IGNORE_DIRS = [
7090
7090
  // JS / web
7091
7091
  "node_modules",
@@ -7242,22 +7242,35 @@ var DEFAULT_INCLUDE_EXTENSIONS = [
7242
7242
  ".nix",
7243
7243
  ".bzl"
7244
7244
  ];
7245
+ var BUILT_IN_IGNORE_DIR_SET = new Set(BUILT_IN_IGNORE_DIRS);
7246
+ var DEFAULT_IGNORE_PATTERNS = [
7247
+ ...BUILT_IN_IGNORE_DIRS,
7248
+ ...BUILT_IN_IGNORE_FILE_PATTERNS
7249
+ ];
7250
+
7251
+ // packages/shared/dist/codeScanner.js
7252
+ var MAX_SCANNED_FILE_BYTES = 10 * 1024 * 1024;
7245
7253
  var DEFAULT_OPTIONS = {
7246
7254
  maxChunkSize: 8e3,
7247
7255
  // ~2000 tokens
7248
7256
  minChunkSize: 100,
7249
- ignorePatterns: [...BUILT_IN_IGNORE_DIRS, ...BUILT_IN_IGNORE_FILE_PATTERNS],
7257
+ ignorePatterns: [...DEFAULT_IGNORE_PATTERNS],
7250
7258
  includeExtensions: [...DEFAULT_INCLUDE_EXTENSIONS],
7251
7259
  maxAstParseBytes: MAX_AST_PARSE_BYTES,
7252
7260
  protectedPaths: []
7253
7261
  };
7254
- var BUILT_IN_IGNORE_DIR_SET = new Set(BUILT_IN_IGNORE_DIRS);
7255
7262
 
7256
7263
  // packages/shared/dist/indexJudge.js
7257
7264
  var import_ignore2 = __toESM(require_ignore(), 1);
7258
7265
 
7259
7266
  // packages/shared/dist/index.js
7260
7267
  init_secretPatterns();
7268
+
7269
+ // packages/shared/dist/sourceRedactionPool.js
7270
+ var MB = 1024 * 1024;
7271
+ var LARGE_FILE_BYTES = 1 * MB;
7272
+
7273
+ // packages/shared/dist/index.js
7261
7274
  init_hookTimeouts();
7262
7275
 
7263
7276
  // packages/shared/dist/jitDeliveryAck.js
@@ -10,6 +10,16 @@ export declare function updateCli(store: RuntimeStore, options?: {
10
10
  devReleaseSource?: boolean;
11
11
  }>;
12
12
  export declare function cliUpdateLine(result: Awaited<ReturnType<typeof updateCli>>): string;
13
+ /**
14
+ * The latest published CLI version, for the status hint only (update reads and
15
+ * verifies the release itself). It reads `dist-tags.latest` from npm's compact
16
+ * install metadata, which npm's CDN serves in under 0.1 s; the `/latest`
17
+ * document is built per request and took 3 to 5 s after a publish (26 Oct
18
+ * 2026), longer than the hint may wait.
19
+ */
20
+ export declare function latestCliVersion(fetcher?: typeof fetch, timeoutMs?: number): Promise<string>;
13
21
  /** Status alone caches successes and failures; update always reads the release afresh. */
14
- export declare function cliUpdateHint(store: RuntimeStore, current: string): Promise<string | undefined>;
22
+ export declare function cliUpdateHint(store: RuntimeStore, current: string, options?: {
23
+ fetcher?: typeof fetch;
24
+ }): Promise<string | undefined>;
15
25
  //# sourceMappingURL=selfUpdate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selfUpdate.d.ts","sourceRoot":"","sources":["../../src/runtime/selfUpdate.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,YAAY,EAAE,MAAM,YAAY,CAAC;AAuBxD,wBAAsB,SAAS,CAC7B,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5D,OAAO,CAAC;IACT,MAAM,EAAE,eAAe,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC,CAyCD;AACD,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,GAAG,MAAM,CAMnF;AAED,0FAA0F;AAC1F,wBAAsB,aAAa,CACjC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkC7B"}
1
+ {"version":3,"file":"selfUpdate.d.ts","sourceRoot":"","sources":["../../src/runtime/selfUpdate.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,YAAY,EAAE,MAAM,YAAY,CAAC;AAuBxD,wBAAsB,SAAS,CAC7B,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5D,OAAO,CAAC;IACT,MAAM,EAAE,eAAe,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC,CAyCD;AACD,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,GAAG,MAAM,CAMnF;AAKD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,OAAO,KAAa,EAC7B,SAAS,SAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED,0FAA0F;AAC1F,wBAAsB,aAAa,CACjC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GACvC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA+B7B"}
@@ -43,6 +43,17 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
43
43
  mod
44
44
  ));
45
45
 
46
+ // packages/shared/dist/secretPatterns.js
47
+ var SECRET_LABEL, SECRET_LABEL_RE, LABELED_VALUE_RE;
48
+ var init_secretPatterns = __esm({
49
+ "packages/shared/dist/secretPatterns.js"() {
50
+ "use strict";
51
+ SECRET_LABEL = String.raw`[\w$-]*(?:api[_-]?key|secret|token|password|credential|auth)|aws_secret_access_key`;
52
+ SECRET_LABEL_RE = new RegExp(`^(?:${SECRET_LABEL}|MYSQL_PWD|SSHPASS)$`, "i");
53
+ LABELED_VALUE_RE = new RegExp(String.raw`(?<![\w$-])((["']?)(?:${SECRET_LABEL})\2\s*[:=]\s*)(?=\S)`, "gi");
54
+ }
55
+ });
56
+
46
57
  // node_modules/ignore/index.js
47
58
  var require_ignore = __commonJS({
48
59
  "node_modules/ignore/index.js"(exports, module2) {
@@ -885,17 +896,6 @@ var require_ignore = __commonJS({
885
896
  }
886
897
  });
887
898
 
888
- // packages/shared/dist/secretPatterns.js
889
- var SECRET_LABEL, SECRET_LABEL_RE, LABELED_VALUE_RE;
890
- var init_secretPatterns = __esm({
891
- "packages/shared/dist/secretPatterns.js"() {
892
- "use strict";
893
- SECRET_LABEL = String.raw`[\w$-]*(?:api[_-]?key|secret|token|password|credential|auth)|aws_secret_access_key`;
894
- SECRET_LABEL_RE = new RegExp(`^(?:${SECRET_LABEL}|MYSQL_PWD|SSHPASS)$`, "i");
895
- LABELED_VALUE_RE = new RegExp(String.raw`(?<![\w$-])((["']?)(?:${SECRET_LABEL})\2\s*[:=]\s*)(?=\S)`, "gi");
896
- }
897
- });
898
-
899
899
  // packages/shared/dist/protectedPaths.js
900
900
  var init_protectedPaths = __esm({
901
901
  "packages/shared/dist/protectedPaths.js"() {
@@ -1016,7 +1016,7 @@ var init_repositoryRoot = __esm({
1016
1016
  });
1017
1017
 
1018
1018
  // packages/shared/dist/hookTrace.js
1019
- var HOOK_TRACE_MAX_BYTES;
1019
+ var HOOK_TRACE_MAX_BYTES, HOOK_MISS_WINDOW_MS, HOOK_MISS_TAIL_BYTES;
1020
1020
  var init_hookTrace = __esm({
1021
1021
  "packages/shared/dist/hookTrace.js"() {
1022
1022
  "use strict";
@@ -1024,6 +1024,8 @@ var init_hookTrace = __esm({
1024
1024
  init_runtimeSigners();
1025
1025
  init_secretPatterns();
1026
1026
  HOOK_TRACE_MAX_BYTES = 2 * 1024 * 1024;
1027
+ HOOK_MISS_WINDOW_MS = 30 * 60 * 1e3;
1028
+ HOOK_MISS_TAIL_BYTES = 64 * 1024;
1027
1029
  }
1028
1030
  });
1029
1031
 
@@ -2737,9 +2739,6 @@ function getMcpInstructions() {
2737
2739
  }
2738
2740
  var MCP_INSTRUCTIONS = getMcpInstructions();
2739
2741
 
2740
- // packages/shared/dist/codeScanner.js
2741
- var import_ignore = __toESM(require_ignore(), 1);
2742
-
2743
2742
  // node_modules/web-tree-sitter/web-tree-sitter.js
2744
2743
  var __defProp2 = Object.defineProperty;
2745
2744
  var __name = (target, value) => __defProp2(target, "name", { value, configurable: true });
@@ -6788,9 +6787,6 @@ import { dirname, extname, join } from "node:path";
6788
6787
  import { fileURLToPath } from "node:url";
6789
6788
  var WASM_DIR = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "wasm");
6790
6789
 
6791
- // packages/shared/dist/ast/astChunker.js
6792
- var MAX_AST_PARSE_BYTES = 2 * 1024 * 1024;
6793
-
6794
6790
  // packages/shared/dist/redactCredentials.js
6795
6791
  var REDACTED = "<redacted credential>";
6796
6792
  var MAX_PEM_BODY_LENGTH = 8 * 1024;
@@ -7050,11 +7046,15 @@ var PATTERNS = [
7050
7046
 
7051
7047
  // packages/shared/dist/sourceRedaction.js
7052
7048
  init_secretPatterns();
7049
+ var MAX_SOURCE_REDACTION_BYTES = 10 * 1024 * 1024;
7053
7050
 
7054
- // packages/shared/dist/codeScanner.js
7051
+ // packages/shared/dist/ast/astChunker.js
7052
+ var MAX_AST_PARSE_BYTES = 2 * 1024 * 1024;
7053
+
7054
+ // packages/shared/dist/fileSelection.js
7055
+ var import_ignore = __toESM(require_ignore(), 1);
7055
7056
  init_protectedPaths();
7056
7057
  init_projectIdentityFile();
7057
- var MAX_SCANNED_FILE_BYTES = 10 * 1024 * 1024;
7058
7058
  var BUILT_IN_IGNORE_DIRS = [
7059
7059
  // JS / web
7060
7060
  "node_modules",
@@ -7211,22 +7211,35 @@ var DEFAULT_INCLUDE_EXTENSIONS = [
7211
7211
  ".nix",
7212
7212
  ".bzl"
7213
7213
  ];
7214
+ var BUILT_IN_IGNORE_DIR_SET = new Set(BUILT_IN_IGNORE_DIRS);
7215
+ var DEFAULT_IGNORE_PATTERNS = [
7216
+ ...BUILT_IN_IGNORE_DIRS,
7217
+ ...BUILT_IN_IGNORE_FILE_PATTERNS
7218
+ ];
7219
+
7220
+ // packages/shared/dist/codeScanner.js
7221
+ var MAX_SCANNED_FILE_BYTES = 10 * 1024 * 1024;
7214
7222
  var DEFAULT_OPTIONS = {
7215
7223
  maxChunkSize: 8e3,
7216
7224
  // ~2000 tokens
7217
7225
  minChunkSize: 100,
7218
- ignorePatterns: [...BUILT_IN_IGNORE_DIRS, ...BUILT_IN_IGNORE_FILE_PATTERNS],
7226
+ ignorePatterns: [...DEFAULT_IGNORE_PATTERNS],
7219
7227
  includeExtensions: [...DEFAULT_INCLUDE_EXTENSIONS],
7220
7228
  maxAstParseBytes: MAX_AST_PARSE_BYTES,
7221
7229
  protectedPaths: []
7222
7230
  };
7223
- var BUILT_IN_IGNORE_DIR_SET = new Set(BUILT_IN_IGNORE_DIRS);
7224
7231
 
7225
7232
  // packages/shared/dist/indexJudge.js
7226
7233
  var import_ignore2 = __toESM(require_ignore(), 1);
7227
7234
 
7228
7235
  // packages/shared/dist/index.js
7229
7236
  init_secretPatterns();
7237
+
7238
+ // packages/shared/dist/sourceRedactionPool.js
7239
+ var MB = 1024 * 1024;
7240
+ var LARGE_FILE_BYTES = 1 * MB;
7241
+
7242
+ // packages/shared/dist/index.js
7230
7243
  init_hookTimeouts();
7231
7244
 
7232
7245
  // packages/shared/dist/jitDeliveryAck.js
@@ -7559,7 +7572,20 @@ function cliUpdateLine(result) {
7559
7572
  if (result.status === "NOT_INSTALLED") return "CLI runtime is not installed.";
7560
7573
  return humanReason(result.reason ?? "update_failed");
7561
7574
  }
7562
- async function cliUpdateHint(store, current) {
7575
+ var HINT_TIMEOUT_MS = 2500;
7576
+ var HINT_CACHE_MS = 36e5;
7577
+ async function latestCliVersion(fetcher = fetch, timeoutMs = HINT_TIMEOUT_MS) {
7578
+ const response = await fetcher(registry.slice(0, -1), {
7579
+ headers: { Accept: "application/vnd.npm.install-v1+json" },
7580
+ signal: AbortSignal.timeout(timeoutMs)
7581
+ });
7582
+ if (!response.ok) throw new RuntimeError2("registry_unavailable");
7583
+ const value = await response.json();
7584
+ const latest = value["dist-tags"]?.latest;
7585
+ if (value.name !== "@mnemonik/cli" || !validVersion(latest)) throw new RuntimeError2("unsigned");
7586
+ return latest;
7587
+ }
7588
+ async function cliUpdateHint(store, current, options = {}) {
7563
7589
  const path = join5(store.state, "cli-update-check.json");
7564
7590
  const devReleaseSource = process.env.MNEMONIK_DEV_RELEASE_DIR ?? "";
7565
7591
  let cached;
@@ -7568,11 +7594,10 @@ async function cliUpdateHint(store, current) {
7568
7594
  cached = JSON.parse(await readFile2(path, "utf8"));
7569
7595
  } catch {
7570
7596
  }
7571
- if (!cached || cached.devReleaseSource !== devReleaseSource || !(Date.now() - cached.checkedAt >= 0 && Date.now() - cached.checkedAt < 36e5)) {
7597
+ if (!cached || cached.devReleaseSource !== devReleaseSource || !(Date.now() - cached.checkedAt >= 0 && Date.now() - cached.checkedAt < HINT_CACHE_MS)) {
7572
7598
  cached = { checkedAt: Date.now(), devReleaseSource };
7573
7599
  try {
7574
- const signal = AbortSignal.timeout(2500);
7575
- cached.version = (await metadata2("latest", (url, options) => fetch(url, { ...options, signal }))).version;
7600
+ cached.version = await latestCliVersion(options.fetcher ?? fetch);
7576
7601
  } catch {
7577
7602
  }
7578
7603
  try {
@@ -7588,5 +7613,6 @@ async function cliUpdateHint(store, current) {
7588
7613
  export {
7589
7614
  cliUpdateHint,
7590
7615
  cliUpdateLine,
7616
+ latestCliVersion,
7591
7617
  updateCli
7592
7618
  };
@@ -1 +1 @@
1
- {"version":3,"file":"selfUpdate.js","sourceRoot":"","sources":["../../src/runtime/selfUpdate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selfUpdate.js","sourceRoot":"","sources":["../../src/runtime/selfUpdate.ts"],"names":[],"mappings":"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"}