@mnemonik/cli 7.140.3 → 7.141.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 (40) hide show
  1. package/dist/auth/credentials.js +266 -3
  2. package/dist/auth/index.js +266 -3
  3. package/dist/auth/installSession.js +262 -0
  4. package/dist/auth/status.js +262 -0
  5. package/dist/authorizationWords.js +262 -0
  6. package/dist/diagnostics.js +266 -3
  7. package/dist/digests.json +38 -38
  8. package/dist/hooksLog.js +4 -0
  9. package/dist/identity/migrate.js +266 -3
  10. package/dist/install/hosts.js +262 -0
  11. package/dist/install/journal.js +266 -3
  12. package/dist/install/journey.js +266 -3
  13. package/dist/install/ownership.js +266 -3
  14. package/dist/install/transaction.js +266 -3
  15. package/dist/install/ui.js +266 -3
  16. package/dist/installSession.js +262 -0
  17. package/dist/installation.js +266 -3
  18. package/dist/launcher.js +266 -3
  19. package/dist/preflight.js +354 -92
  20. package/dist/project/eligibility.js +266 -3
  21. package/dist/project/records.js +266 -3
  22. package/dist/project.js +270 -7
  23. package/dist/router.js +270 -7
  24. package/dist/runtime/releaseSource.js +266 -3
  25. package/dist/runtime/selfUpdate.js +266 -3
  26. package/dist/runtime/signers.js +67 -7
  27. package/dist/runtime/store.js +4 -0
  28. package/dist/runtime/updateCheck.js +266 -3
  29. package/dist/sbom.json +21 -21
  30. package/dist/scanner/control.js +266 -3
  31. package/dist/scanner/data.js +262 -0
  32. package/dist/scanner/discover.js +354 -92
  33. package/dist/scanner/enable.js +270 -7
  34. package/dist/scanner/picker.js +325 -63
  35. package/dist/scanner/service.js +266 -3
  36. package/dist/scanner/update.js +266 -3
  37. package/dist/scanner-release.json +24 -24
  38. package/dist/status.js +266 -3
  39. package/dist/vendor/local-setup.js +266 -3
  40. package/package.json +31 -31
@@ -1,23 +1,23 @@
1
1
  {
2
- "version": "7.140.3",
3
- "digestsSha256": "79c8821fc247484eb29889ba2b4133be0700110cd6f5b111be24518f4501f08b",
2
+ "version": "7.141.1",
3
+ "digestsSha256": "5afd4c94adf5f200d694fcf73f3a4f1bfec72b1f992a987299dcf969459ceb27",
4
4
  "platforms": {
5
5
  "darwin-arm64": {
6
6
  "schemaVersion": 1,
7
7
  "artifact": "scanner",
8
- "version": "7.140.3",
8
+ "version": "7.141.1",
9
9
  "entry": "scanner-darwin-arm64",
10
10
  "files": {
11
11
  "scanner-darwin-arm64": {
12
- "sha256": "9e2c45831aa36a680bc241c5a46a9f6ad600ace31cea930dc71dd38debd78f2d",
13
- "size": 154669024,
12
+ "sha256": "f40a18f3462a9b29307d90897bff29beedf7cff762c38b0b31248c37fccc2f60",
13
+ "size": 154735072,
14
14
  "executable": true
15
15
  }
16
16
  },
17
- "totalSize": 154669024,
17
+ "totalSize": 154735072,
18
18
  "source": {
19
19
  "kind": "release",
20
- "url": "https://github.com/JayDeeCo-Limited/mnemonik-cli/releases/download/scanner-v7.140.3/"
20
+ "url": "https://github.com/JayDeeCo-Limited/mnemonik-cli/releases/download/scanner-v7.141.1/"
21
21
  },
22
22
  "signer": {
23
23
  "platform": "darwin",
@@ -29,24 +29,24 @@
29
29
  "linux-arm64": {
30
30
  "schemaVersion": 1,
31
31
  "artifact": "scanner",
32
- "version": "7.140.3",
32
+ "version": "7.141.1",
33
33
  "entry": "scanner-linux-arm64",
34
34
  "files": {
35
35
  "scanner-linux-arm64": {
36
- "sha256": "0cba45d9dd229076a41f69a8646d8e012eb317a9e171b080abffaab431a63a6b",
37
- "size": 157355136,
36
+ "sha256": "6c217674cfe3a3e07971889f68a03303c14d0b461f09700e2679e37220b1ff76",
37
+ "size": 157420672,
38
38
  "executable": true
39
39
  },
40
40
  "scanner-linux-arm64.minisig": {
41
- "sha256": "7564fb5fdf2316641dbe3f763a056301aa478b9f2b81e808ff3b47b24be4c14f",
41
+ "sha256": "92579f40692107ee8590a19516fca61b5f478f66f1176679f296b6974c741d5d",
42
42
  "size": 314,
43
43
  "executable": false
44
44
  }
45
45
  },
46
- "totalSize": 157355450,
46
+ "totalSize": 157420986,
47
47
  "source": {
48
48
  "kind": "release",
49
- "url": "https://github.com/JayDeeCo-Limited/mnemonik-cli/releases/download/scanner-v7.140.3/"
49
+ "url": "https://github.com/JayDeeCo-Limited/mnemonik-cli/releases/download/scanner-v7.141.1/"
50
50
  },
51
51
  "signer": {
52
52
  "platform": "linux",
@@ -59,24 +59,24 @@
59
59
  "linux-x64": {
60
60
  "schemaVersion": 1,
61
61
  "artifact": "scanner",
62
- "version": "7.140.3",
62
+ "version": "7.141.1",
63
63
  "entry": "scanner-linux-x64",
64
64
  "files": {
65
65
  "scanner-linux-x64": {
66
- "sha256": "b17b42ce57904fe4da95fc3e5feba42500226f0ec03152e4a786c067d5a73ea5",
67
- "size": 155258048,
66
+ "sha256": "246a108cd432495fa9dfeb12e5d51974afa8bc8c5267ee868cce8d6b34955e91",
67
+ "size": 155323584,
68
68
  "executable": true
69
69
  },
70
70
  "scanner-linux-x64.minisig": {
71
- "sha256": "bc62786220f94fc485863b363ecaed69afa81d94a7ca5cd99d584dfe0410cdf2",
71
+ "sha256": "a42c8c1b5da0d2e6b5aaa532ac365f51f1a372cdac9228e04d0028aca32f592c",
72
72
  "size": 312,
73
73
  "executable": false
74
74
  }
75
75
  },
76
- "totalSize": 155258360,
76
+ "totalSize": 155323896,
77
77
  "source": {
78
78
  "kind": "release",
79
- "url": "https://github.com/JayDeeCo-Limited/mnemonik-cli/releases/download/scanner-v7.140.3/"
79
+ "url": "https://github.com/JayDeeCo-Limited/mnemonik-cli/releases/download/scanner-v7.141.1/"
80
80
  },
81
81
  "signer": {
82
82
  "platform": "linux",
@@ -89,19 +89,19 @@
89
89
  "win-x64": {
90
90
  "schemaVersion": 1,
91
91
  "artifact": "scanner",
92
- "version": "7.140.3",
92
+ "version": "7.141.1",
93
93
  "entry": "scanner-win-x64.exe",
94
94
  "files": {
95
95
  "scanner-win-x64.exe": {
96
- "sha256": "73589bad3e9d25476a454bfd3169f2d38f593c1db4cbfc51a160dc11e0d43467",
97
- "size": 128071168,
96
+ "sha256": "64e6f4890e0b23479574b0d1f908e9f7110c21a78ef8043d1e7b1da77d24dca3",
97
+ "size": 128130560,
98
98
  "executable": true
99
99
  }
100
100
  },
101
- "totalSize": 128071168,
101
+ "totalSize": 128130560,
102
102
  "source": {
103
103
  "kind": "release",
104
- "url": "https://github.com/JayDeeCo-Limited/mnemonik-cli/releases/download/scanner-v7.140.3/"
104
+ "url": "https://github.com/JayDeeCo-Limited/mnemonik-cli/releases/download/scanner-v7.141.1/"
105
105
  },
106
106
  "signingStatus": "unsigned",
107
107
  "disclosureVersion": "2026.09.1"
package/dist/status.js CHANGED
@@ -886,9 +886,13 @@ var require_ignore = __commonJS({
886
886
  });
887
887
 
888
888
  // packages/shared/dist/secretPatterns.js
889
+ var SECRET_LABEL, SECRET_LABEL_RE, LABELED_VALUE_RE;
889
890
  var init_secretPatterns = __esm({
890
891
  "packages/shared/dist/secretPatterns.js"() {
891
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");
892
896
  }
893
897
  });
894
898
 
@@ -2796,9 +2800,6 @@ var MCP_INSTRUCTIONS = getMcpInstructions();
2796
2800
 
2797
2801
  // packages/shared/dist/codeScanner.js
2798
2802
  var import_ignore = __toESM(require_ignore(), 1);
2799
- init_secretPatterns();
2800
- init_protectedPaths();
2801
- init_projectIdentityFile();
2802
2803
 
2803
2804
  // node_modules/web-tree-sitter/web-tree-sitter.js
2804
2805
  var __defProp2 = Object.defineProperty;
@@ -6851,7 +6852,269 @@ var WASM_DIR = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "wasm")
6851
6852
  // packages/shared/dist/ast/astChunker.js
6852
6853
  var MAX_AST_PARSE_BYTES = 2 * 1024 * 1024;
6853
6854
 
6855
+ // packages/shared/dist/redactCredentials.js
6856
+ var REDACTED = "<redacted credential>";
6857
+ var MAX_PEM_BODY_LENGTH = 8 * 1024;
6858
+ var LETTER_OR_DIGIT = /[A-Za-z0-9]/;
6859
+ function hasLetterOrDigit(value) {
6860
+ return LETTER_OR_DIGIT.test(value);
6861
+ }
6862
+ function redactContextValue(match, head = "", value = "") {
6863
+ return hasLetterOrDigit(value) ? `${head}${REDACTED}` : match;
6864
+ }
6865
+ var PLACEHOLDER_PASSWORD = /^(?:\[REDACTED(?::[A-Za-z0-9_-]+)?\]|redacted|<[^<>]*>|\{\{[^{}]*\}\}|\$\{[^{}]+\}|%[A-Za-z_][A-Za-z0-9_]*%|\*+|x{3,}|\.\.\.|\u2026|password|passwd|pass|pwd|pw|secret|changeme|change[_-]me|example|test|(?:your|my)[a-z_-]*?(?:password|passwd|pass|pwd|secret|key|token|here))$/i;
6866
+ var PLACEHOLDER_ENV_VAR = /^\$[A-Z_][A-Z0-9_]*$/;
6867
+ function isPlaceholderPassword(password) {
6868
+ return PLACEHOLDER_PASSWORD.test(password) || PLACEHOLDER_ENV_VAR.test(password);
6869
+ }
6870
+ function redactUrlPassword(match, head = "", password = "") {
6871
+ return isPlaceholderPassword(password) || !hasLetterOrDigit(password) ? match : `${head}${REDACTED}@`;
6872
+ }
6873
+ var SHELL_WORD = String.raw`'[^'\n]*'|"[^"\n]*"|(?!${REDACTED})[^\s'"\`;|&()[\]{}\\,/][^\s'"\`;|&]*`;
6874
+ var OPENING_QUOTE = String.raw`(["'\`]?)`;
6875
+ var TRAILING_PUNCTUATION = /[.,:;!?)\]}]+$/;
6876
+ var PROSE_WORDS = /* @__PURE__ */ new Set([
6877
+ "a",
6878
+ "an",
6879
+ "and",
6880
+ "as",
6881
+ "for",
6882
+ "in",
6883
+ "is",
6884
+ "it",
6885
+ "on",
6886
+ "or",
6887
+ "the",
6888
+ "to",
6889
+ "with",
6890
+ "flag",
6891
+ "option",
6892
+ "argument",
6893
+ "instead",
6894
+ "which",
6895
+ "that",
6896
+ "this",
6897
+ "puts",
6898
+ "passes",
6899
+ "leaks",
6900
+ "exposes"
6901
+ ]);
6902
+ var REGEX_DELIMITER = /\/(?:[{}()[\];]|$)/;
6903
+ function shellWordSecret(word) {
6904
+ const quote = word[0];
6905
+ if ((quote === "'" || quote === '"') && word.length >= 2 && word.endsWith(quote)) {
6906
+ const inner = word.slice(1, -1);
6907
+ if (!hasLetterOrDigit(inner) || quote === '"' && inner.startsWith("$"))
6908
+ return null;
6909
+ if (inner !== inner.trim())
6910
+ return null;
6911
+ return isPlaceholderPassword(inner) ? null : inner;
6912
+ }
6913
+ if (word.startsWith("$"))
6914
+ return null;
6915
+ const core = word.replace(TRAILING_PUNCTUATION, "");
6916
+ if (!hasLetterOrDigit(core) || isPlaceholderPassword(core))
6917
+ return null;
6918
+ if (REGEX_DELIMITER.test(core))
6919
+ return null;
6920
+ return PROSE_WORDS.has(core.toLowerCase()) ? null : core;
6921
+ }
6922
+ function redactShellWord(match, head = "", word = "", tail = "") {
6923
+ return shellWordSecret(word) === null ? match : `${head}${REDACTED}${tail}`;
6924
+ }
6925
+ function redactQuotedShellWord(match, head = "", openingQuote = "", word = "", tail = "") {
6926
+ if (openingQuote !== "" && word.startsWith(openingQuote))
6927
+ return match;
6928
+ return redactShellWord(match, head, word, tail);
6929
+ }
6930
+ var SSHPASS_COMMAND = String.raw`ssh|scp|sftp|rsync|ssh-copy-id|ansible[\w-]*`;
6931
+ function redactSshpassWord(match, head = "", openingQuote = "", word = "", tail = "", command = "") {
6932
+ if (openingQuote !== "" && word.startsWith(openingQuote))
6933
+ return match;
6934
+ const secret = shellWordSecret(word);
6935
+ if (secret === null)
6936
+ return match;
6937
+ const bare = word[0] !== "'" && word[0] !== '"';
6938
+ if (bare && /^[a-z]+$/.test(secret) && command === "")
6939
+ return match;
6940
+ return `${head}${REDACTED}${tail}`;
6941
+ }
6942
+ var PATTERNS = [
6943
+ {
6944
+ kind: "bearer",
6945
+ pattern: /(\bBearer\s+)([^\s]{40,})/gi,
6946
+ replacement: redactContextValue,
6947
+ secretGroup: 2
6948
+ },
6949
+ {
6950
+ // Before openai, whose sk- shape would otherwise claim these keys.
6951
+ kind: "anthropic",
6952
+ pattern: /(?<![A-Za-z0-9_-])sk-ant-(?=[_-]*[A-Za-z0-9])[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g,
6953
+ replacement: REDACTED
6954
+ },
6955
+ {
6956
+ kind: "openai",
6957
+ pattern: /(?<![A-Za-z0-9_-])sk-(?:proj-)?(?=[_-]*[A-Za-z0-9])[A-Za-z0-9_-]{16,}(?![A-Za-z0-9_-])/g,
6958
+ replacement: REDACTED
6959
+ },
6960
+ {
6961
+ kind: "shopify",
6962
+ pattern: /(?<![A-Za-z0-9_])shp(?:at|ss|ca)_[A-Za-z0-9]{16,}(?![A-Za-z0-9])/g,
6963
+ replacement: REDACTED
6964
+ },
6965
+ {
6966
+ kind: "aws_access_key",
6967
+ pattern: /(?<![A-Z0-9])AKIA[A-Z0-9]{16}(?![A-Z0-9])/g,
6968
+ replacement: REDACTED
6969
+ },
6970
+ {
6971
+ kind: "github",
6972
+ pattern: /(?<![A-Za-z0-9_])gh[opu]_[A-Za-z0-9]{20,}(?![A-Za-z0-9])/g,
6973
+ replacement: REDACTED
6974
+ },
6975
+ {
6976
+ kind: "slack",
6977
+ pattern: /(?<![A-Za-z0-9-])xox[abp]-(?=-*[A-Za-z0-9])[A-Za-z0-9-]{10,}(?![A-Za-z0-9-])/g,
6978
+ replacement: REDACTED
6979
+ },
6980
+ {
6981
+ kind: "sentry",
6982
+ pattern: /(?<![A-Za-z0-9_])sntry[us]_(?=[_-]*[A-Za-z0-9])[A-Za-z0-9_-]{16,}(?![A-Za-z0-9_-])/g,
6983
+ replacement: REDACTED
6984
+ },
6985
+ {
6986
+ kind: "fly",
6987
+ pattern: /(?<![A-Za-z0-9_])(?:FlyV1\s+)?fm2_(?=[_-]*[A-Za-z0-9])[A-Za-z0-9_-]{16,}(?![A-Za-z0-9_-])/g,
6988
+ replacement: REDACTED
6989
+ },
6990
+ {
6991
+ kind: "google_api_key",
6992
+ pattern: /(?<![A-Za-z0-9_-])AIza(?=[_-]*[A-Za-z0-9])[0-9A-Za-z_-]{35}(?![A-Za-z0-9_-])/g,
6993
+ replacement: REDACTED
6994
+ },
6995
+ {
6996
+ kind: "jwt",
6997
+ // header.payload.signature, both JSON segments starting eyJ. The length
6998
+ // floors keep `eyJ...` prose and signature-less examples out.
6999
+ pattern: /(?<![A-Za-z0-9_-])eyJ[A-Za-z0-9_-]{8,}\.eyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{16,}(?![A-Za-z0-9_-])/g,
7000
+ replacement: REDACTED
7001
+ },
7002
+ {
7003
+ kind: "mnemonik_component_token",
7004
+ // mnc_ / mncr_ + 43 base64url (oauth/components.ts); 32+ also catches a
7005
+ // partial token. The body must contain an upper-case letter or digit, so a
7006
+ // snake_case identifier is not mistaken for one; the 8-character
7007
+ // display prefix (mnc_ + 8) is too short.
7008
+ pattern: /(?<![A-Za-z0-9_])mncr?_(?=[A-Za-z0-9_-]*[A-Z0-9])[A-Za-z0-9_-]{32,}/g,
7009
+ replacement: REDACTED
7010
+ },
7011
+ {
7012
+ kind: "stripe",
7013
+ // Secret and restricted keys (sk_/rk_ live|test) and webhook signing secrets.
7014
+ pattern: /(?<![A-Za-z0-9_])(?:(?:sk|rk)_(?:live|test)_[A-Za-z0-9]{16,}|whsec_[A-Za-z0-9]{20,})(?![A-Za-z0-9])/g,
7015
+ replacement: REDACTED
7016
+ },
7017
+ {
7018
+ kind: "mnemonik_proxy_token",
7019
+ // pxt_ + 32 hex (the format server.ts validates). A bare prefix in prose is left.
7020
+ pattern: /(?<![A-Za-z0-9_])pxt_[0-9a-f]{32,}/g,
7021
+ replacement: REDACTED
7022
+ },
7023
+ {
7024
+ kind: "mnemonik_api_key",
7025
+ // mnk_ + 64 hex (AuthManager.generateApiKey); 32+ also catches a half key.
7026
+ // The stored 12-character key_prefix (mnk_ + 8 hex) is not a credential.
7027
+ pattern: /(?<![A-Za-z0-9_])mnk_[0-9a-f]{32,}/g,
7028
+ replacement: REDACTED
7029
+ },
7030
+ {
7031
+ kind: "mnemonik_api_key_legacy",
7032
+ // mnk_ + 43 base64url: keys minted by hand before AuthManager's hex form
7033
+ // (production's only key in 2026-10 has this shape, and one stored memory
7034
+ // held a development key in it). Authentication accepts any mnk_ bearer.
7035
+ // The body needs upper and lower case and a digit, so a snake_case
7036
+ // identifier that starts mnk_ is not taken for one.
7037
+ pattern: /(?<![A-Za-z0-9_])mnk_(?=[A-Za-z0-9_-]*[A-Z])(?=[A-Za-z0-9_-]*[a-z])(?=[A-Za-z0-9_-]*[0-9])[A-Za-z0-9_-]{40,}(?![A-Za-z0-9_-])/g,
7038
+ replacement: REDACTED
7039
+ },
7040
+ {
7041
+ kind: "named_value",
7042
+ pattern: /(\b[A-Za-z_][A-Za-z0-9_]*(?:_TOKEN|_KEY|_SECRET|_PASSWORD|_PASS|APIKEY|API_KEY)\s*(?:=|:)\s*)([^\s]{16,})/gi,
7043
+ replacement: redactContextValue,
7044
+ secretGroup: 2
7045
+ },
7046
+ {
7047
+ kind: "connection_string",
7048
+ // scheme://user:password@host: only the password is replaced; scheme,
7049
+ // user, host and database stay readable. The user may be empty
7050
+ // (redis://:password@host). The password runs to the last `@` before a
7051
+ // path, query, fragment, quote or whitespace, so an unencoded `@` inside
7052
+ // it is still covered. Runs after named_value, which already replaces a
7053
+ // whole URL assigned to a secret-named variable.
7054
+ pattern: /\b((?:postgres(?:ql)?|mysql|mariadb|mongodb|rediss?|amqps?|mssql|sqlserver)(?:\+[a-z0-9]+)?:\/\/[^\s:/?#@'"`<>]{0,256}:)([^\s/?#'"`]{1,512})@/gi,
7055
+ replacement: redactUrlPassword,
7056
+ secretGroup: 2
7057
+ },
7058
+ {
7059
+ kind: "url_basic_auth",
7060
+ // https://user:password@host: same shape and placeholder rules as a
7061
+ // connection string; only the password is replaced.
7062
+ pattern: /\b(https?:\/\/[^\s:/?#@'"`<>]{0,256}:)([^\s/?#'"`]{1,512})@/gi,
7063
+ replacement: redactUrlPassword,
7064
+ secretGroup: 2
7065
+ },
7066
+ // Command-line passwords. Each keeps the command and replaces only the
7067
+ // password word; an expansion or placeholder in that position is left.
7068
+ {
7069
+ // sshpass -p <password> (also -p'<password>' and -p"<password>"), after
7070
+ // any other sshpass flags. 13 memories, 11 scanner chunks, 15 versions and
7071
+ // 6 dated facts in production held one on 2026-10-12.
7072
+ kind: "sshpass_password",
7073
+ pattern: new RegExp(String.raw`(${OPENING_QUOTE}\bsshpass(?:[ \t]+-[a-oq-zA-Z]\S*)*[ \t]+-p[ \t]*)(${SHELL_WORD})()(?=((?:[ \t]+(?:${SSHPASS_COMMAND})(?![\w-]))?))`, "g"),
7074
+ replacement: redactSshpassWord,
7075
+ secretGroup: 3,
7076
+ commandLine: true
7077
+ },
7078
+ {
7079
+ // Environment variables whose only purpose is a password, in shell
7080
+ // assignment form (no space around `=`): libpq's PGPASSWORD (one memory,
7081
+ // version and fact in production), MySQL's MYSQL_PWD, sshpass -e's
7082
+ // SSHPASS. named_value needs an `_PASSWORD`-style suffix and 16
7083
+ // characters, so it misses all three. Not an awk program that matches or
7084
+ // prints the assignment: `/^PGPASSWORD=/ { print "PGPASSWORD=" pw }`.
7085
+ kind: "password_env_var",
7086
+ pattern: new RegExp(String.raw`(${OPENING_QUOTE}\b(?:PGPASSWORD|MYSQL_PWD|SSHPASS)=)(${SHELL_WORD})()`, "g"),
7087
+ replacement: redactQuotedShellWord,
7088
+ secretGroup: 3,
7089
+ commandLine: true
7090
+ },
7091
+ {
7092
+ // --password=<value>, the long option every CLI that takes one spells
7093
+ // this way. The `=` keeps prose about the option ("--password is
7094
+ // required") out; the spaced form is not matched for that reason.
7095
+ kind: "password_option",
7096
+ pattern: new RegExp(String.raw`(${OPENING_QUOTE}(?<![\w-])--password=)(${SHELL_WORD})()`, "g"),
7097
+ replacement: redactQuotedShellWord,
7098
+ secretGroup: 3,
7099
+ commandLine: true
7100
+ },
7101
+ {
7102
+ // echo <password> | sudo -S: sudo reads the password from stdin. One
7103
+ // memory, two versions and two facts in production.
7104
+ kind: "sudo_password",
7105
+ pattern: new RegExp(String.raw`(\becho[ \t]+(?:-[neE]+[ \t]+)?)(${SHELL_WORD})([ \t]*\|[ \t]*sudo\b[^|\n]*?[ \t](?:-[A-Za-z]*S[A-Za-z]*|--stdin)\b)`, "g"),
7106
+ replacement: redactShellWord,
7107
+ secretGroup: 2,
7108
+ commandLine: true
7109
+ }
7110
+ ];
7111
+
7112
+ // packages/shared/dist/sourceRedaction.js
7113
+ init_secretPatterns();
7114
+
6854
7115
  // packages/shared/dist/codeScanner.js
7116
+ init_protectedPaths();
7117
+ init_projectIdentityFile();
6855
7118
  var MAX_SCANNED_FILE_BYTES = 10 * 1024 * 1024;
6856
7119
  var BUILT_IN_IGNORE_DIRS = [
6857
7120
  // JS / web