@sjawhar/pi-legion 9.1.0 → 9.1.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 (2) hide show
  1. package/dist/legion.js +75 -15
  2. package/package.json +1 -1
package/dist/legion.js CHANGED
@@ -15477,6 +15477,15 @@ var CHECKS = {
15477
15477
  };
15478
15478
  var MAX_DETAIL_BYTES = 1024;
15479
15479
  var HELD = "\uFFFF";
15480
+ var C1_INTRODUCER = "\uFFFE";
15481
+ var OPENER = "\uFDD0";
15482
+ var HELD_READINGS = [
15483
+ [/(?:\uffff\[|\ufffe)[0-?]*[!-)+,/-]*/g, OPENER],
15484
+ [/\ufdd0[@-~]?/g, HELD],
15485
+ [/\uffff/g, " "]
15486
+ ];
15487
+ var HELD_SEQUENCE = String.raw`\ufffe|\ufdd0|\uffff(?:\[[0-?]*[@-~])?`;
15488
+ var JWT_FIRST_HELD_SEQUENCE = String.raw`\ufffe|\uffff(?:\[[0-?]*[@-~])?`;
15480
15489
  function isSpace(code) {
15481
15490
  return code >= 9 && code <= 13 || code === 32 || code === 133 || code === 160 || code === 5760 || code >= 8192 && code <= 8202 || code === 8232 || code === 8233 || code === 8239 || code === 8287 || code === 12288;
15482
15491
  }
@@ -15495,33 +15504,83 @@ function truncateUtf8(text, max) {
15495
15504
  var CREDENTIAL_RULES = [
15496
15505
  [/(?<![a-z0-9+.-])([0-9+.-]*[a-z][a-z0-9+.-]*:\/\/)[^ /?#]+@/gi, "$1***@"],
15497
15506
  [
15498
- /([?&](?:token|key|secret|password|access_token|refresh_token|id_token|api_key|apikey|client_secret|sig|x-amz-security-token|x-amz-signature)=)[^ &#"'<>]+/gi,
15507
+ /([?&](?:token|key|secret|password|access_token|accesstoken|refresh_token|id_token|auth_token|private_token|api_key|apikey|client_secret|sig|signature|x-amz-security-token|x-amz-signature|x-goog-signature)=)[^ &#"'<>]+/gi,
15508
+ "$1***"
15509
+ ],
15510
+ [
15511
+ /\b(password[ \ufffe\uffff]*=[ \ufffe\uffff]*)(?:(')(?:[^'\\]|\\.)*('?)|[^ &#"'<>]+)/gi,
15512
+ "$1$2***$3"
15513
+ ],
15514
+ [
15515
+ /(authorization\\?["']?[ \ufffe\uffff]*[:=][ \ufffe\uffff]*)(?:(\\["'](?:(?:bearer|basic|token|digest)[ \ufffe\uffff]+)?)[^"'\\]+|(["'](?:(?:bearer|basic|token|digest)[ \ufffe\uffff]+)?)(?:[^"'\\]|\\.)+|(\[?(?:(?:bearer|basic|token|digest)[ \ufffe\uffff]+)?)[^)\]}>]+)/gi,
15516
+ "$1$2$3$4***"
15517
+ ],
15518
+ [
15519
+ new RegExp(String.raw`((?:api-key|ocp-apim-subscription-key|x-subscription-token)\\?["']?[ \ufffe\uffff]*[:=][ \ufffe\uffff]*\\?["']?)(?:[A-Za-z0-9._~+/=*-]|${HELD_SEQUENCE})+`, "gi"),
15520
+ "$1***"
15521
+ ],
15522
+ [
15523
+ /(\\?["'](?:api_key|access_token)\\?["'][ \ufffe\uffff]*:[ \ufffe\uffff]*\\?["'])[^"'\\]+/gi,
15524
+ "$1***"
15525
+ ],
15526
+ [
15527
+ new RegExp(String.raw`\b(bearer[ \ufffe\uffff]+)(?:[A-Za-z0-9._~+/=*-]|${HELD_SEQUENCE})+`, "gi"),
15499
15528
  "$1***"
15500
15529
  ],
15501
15530
  [
15502
- /(authorization["']?[ \uffff]*[:=][ \uffff]*)(?:(["'])((?:bearer|basic|token|digest)[ \uffff]+)?[^"']+|(\[?)((?:bearer|basic|token|digest)[ \uffff]+)?[^)\]}>]+)/gi,
15503
- "$1$2$3$4$5***"
15531
+ new RegExp(String.raw`\b(gh[pousr]_|github_pat_)(?:[A-Za-z0-9._-]|${HELD_SEQUENCE}){20,}`, "g"),
15532
+ "$1***"
15504
15533
  ],
15505
- [/(x-api-key["']?[ \uffff]*[:=][ \uffff]*["']?)[A-Za-z0-9._~+/=*\uffff-]+/gi, "$1***"],
15506
- [/\b(bearer[ \uffff]+)[A-Za-z0-9._~+/=*\uffff-]+/gi, "$1***"],
15507
- [/\b(gh[pousr]_|github_pat_)[A-Za-z0-9._\uffff-]{20,}/g, "$1***"],
15508
15534
  [
15509
- /(?<![A-Za-z0-9_\uffff-])eyJ[A-Za-z0-9_\uffff-]{8,}\.[A-Za-z0-9_\uffff-]{8,}\.[A-Za-z0-9_\uffff-]*/g,
15535
+ new RegExp(String.raw`(?:(?=eyJ)(?<!\uffff\[[0-?]*(?:[@-~]?|\\u[0-9A-Fa-f]{4}))(?:(?<![A-Za-z0-9_\ufffe\uffff-])|(?<=%[0-9A-Fa-f]{2}|\\u[0-9A-Fa-f]{4}))eyJ(?:[A-Za-z0-9_-]|${JWT_FIRST_HELD_SEQUENCE}){8,}|(?<=\uffff)eyJ(?:[A-Za-z0-9_-]|\ufffe){8,}|(?=eyJ)(?<=\uffff\[[0-?]*(?:[@-~]|\\u[0-9A-Fa-f]{4})?)eyJ[A-Za-z0-9_-]*\ufffe(?:[A-Za-z0-9_-]|\ufffe)*)\.(?:[A-Za-z0-9_-]|${HELD_SEQUENCE}){8,}\.(?:[A-Za-z0-9_-]|${HELD_SEQUENCE})*`, "g"),
15510
15536
  "***"
15511
15537
  ],
15512
- [/\b(sk-|dsp_)[A-Za-z0-9_\uffff-]{20,}/g, "$1***"],
15513
- [/\b(AKIA|ASIA)[A-Z0-9]{16}\b/g, "$1***"]
15538
+ [
15539
+ new RegExp(String.raw`\b(sk-|dsp_|ya29\.|xox[a-z]-|glpat-|npm_)(?:[A-Za-z0-9_-]|${HELD_SEQUENCE}){20,}`, "g"),
15540
+ "$1***"
15541
+ ],
15542
+ [new RegExp(String.raw`\b(AIza)(?:[A-Za-z0-9_-]|${HELD_SEQUENCE}){35,}`, "g"), "$1***"],
15543
+ [new RegExp(String.raw`\b(AKIA|ASIA)(?:(?:${HELD_SEQUENCE})*[A-Z0-9]){16}\b`, "g"), "$1***"]
15514
15544
  ];
15545
+ var MAX_REDACTION_PASSES = 8;
15546
+ function redactCredentials(text) {
15547
+ let line = text;
15548
+ for (let pass = 0;pass < MAX_REDACTION_PASSES; pass++) {
15549
+ const next = CREDENTIAL_RULES.reduce((redacted, [pattern, replacement]) => redacted.replace(pattern, replacement), line);
15550
+ if (next === line)
15551
+ break;
15552
+ line = next;
15553
+ }
15554
+ return line;
15555
+ }
15556
+ function withoutLastCodePoint(text) {
15557
+ const last = text.charCodeAt(text.length - 1);
15558
+ return text.slice(0, last >= 56320 && last <= 57343 && text.length > 1 ? -2 : -1);
15559
+ }
15515
15560
  function cleanDetail(text) {
15516
15561
  let marked = "";
15517
15562
  for (const char of text) {
15518
15563
  const code = char.codePointAt(0) ?? 0;
15519
- const control = code < 32 || code >= 127 && code < 160;
15520
- marked += isSpace(code) ? " " : control ? HELD : char;
15564
+ const control = code < 32 || code >= 127 && code < 160 || code === 65534 || code === 64976 || code === 65533;
15565
+ marked += isSpace(code) ? " " : code === 155 ? C1_INTRODUCER : control ? HELD : char;
15566
+ }
15567
+ let redacted = redactCredentials(marked);
15568
+ if (marked.includes(HELD) || marked.includes(C1_INTRODUCER)) {
15569
+ for (const [pattern, replacement] of HELD_READINGS) {
15570
+ const read = redacted.replace(pattern, replacement);
15571
+ if (read !== redacted)
15572
+ redacted = redactCredentials(read);
15573
+ }
15574
+ }
15575
+ const line = redacted.split(" ").filter((field) => field !== "").join(" ");
15576
+ let cut = truncateUtf8(line, MAX_DETAIL_BYTES).replace(/ +$/, "");
15577
+ if (cut.length < line.length) {
15578
+ while (redactCredentials(cut) !== cut) {
15579
+ const space = cut.lastIndexOf(" ");
15580
+ cut = space > 0 ? cut.slice(0, space) : withoutLastCodePoint(cut);
15581
+ }
15521
15582
  }
15522
- const redacted = CREDENTIAL_RULES.reduce((line2, [pattern, replacement]) => line2.replace(pattern, replacement), marked);
15523
- const line = redacted.replaceAll(HELD, " ").split(" ").filter((field) => field !== "").join(" ");
15524
- return truncateUtf8(line, MAX_DETAIL_BYTES);
15583
+ return cut;
15525
15584
  }
15526
15585
  function budgetLabel(ms) {
15527
15586
  return ms % 1000 === 0 ? `${ms / 1000} s` : `${ms} ms`;
@@ -15641,7 +15700,7 @@ function onEnvoyRoleRegained(listener) {
15641
15700
  // package.json
15642
15701
  var package_default = {
15643
15702
  name: "@sjawhar/pi-legion",
15644
- version: "9.1.0",
15703
+ version: "9.1.2",
15645
15704
  license: "Apache-2.0",
15646
15705
  type: "module",
15647
15706
  omp: {
@@ -15956,6 +16015,7 @@ var LegionOperatorClaimResponse = exports_external.strictObject({
15956
16015
  }),
15957
16016
  uncertainStreak: exports_external.number().int().nonnegative(),
15958
16017
  pending: legionDeliveryView.optional(),
16018
+ suspendedBy: exports_external.enum(["unknown", "operator", "daemon", "exit"]).optional(),
15959
16019
  suspensionHeld: exports_external.literal(true).optional()
15960
16020
  });
15961
16021
  var LegionOperatorClaimsResponse = exports_external.strictObject({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sjawhar/pi-legion",
3
- "version": "9.1.0",
3
+ "version": "9.1.2",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "omp": {