shield360 1.0.1 → 1.1.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 (53) hide show
  1. package/README.md +65 -37
  2. package/dist/__tests__/build-info.test.d.ts +1 -0
  3. package/dist/__tests__/build-info.test.js +189 -0
  4. package/dist/__tests__/build-info.test.js.map +1 -0
  5. package/dist/__tests__/code-location.test.d.ts +1 -0
  6. package/dist/__tests__/code-location.test.js +180 -0
  7. package/dist/__tests__/code-location.test.js.map +1 -0
  8. package/dist/__tests__/pricing-claude-5.test.js +3 -0
  9. package/dist/__tests__/pricing-claude-5.test.js.map +1 -1
  10. package/dist/config.js +1 -1
  11. package/dist/config.js.map +1 -1
  12. package/dist/guard/__tests__/findings.test.js +27 -8
  13. package/dist/guard/__tests__/findings.test.js.map +1 -1
  14. package/dist/guard/base.d.ts +2 -0
  15. package/dist/guard/base.js +4 -0
  16. package/dist/guard/base.js.map +1 -1
  17. package/dist/guard/findings.d.ts +12 -2
  18. package/dist/guard/findings.js +19 -49
  19. package/dist/guard/findings.js.map +1 -1
  20. package/dist/guard/integration.d.ts +24 -3
  21. package/dist/guard/integration.js +102 -30
  22. package/dist/guard/integration.js.map +1 -1
  23. package/dist/guard/pipeline.d.ts +10 -1
  24. package/dist/guard/pipeline.js +14 -0
  25. package/dist/guard/pipeline.js.map +1 -1
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.js +34 -3
  28. package/dist/index.js.map +1 -1
  29. package/dist/instrumentation/mcp/wrapper.js +7 -1
  30. package/dist/instrumentation/mcp/wrapper.js.map +1 -1
  31. package/dist/otel/build-info.d.ts +22 -0
  32. package/dist/otel/build-info.js +175 -0
  33. package/dist/otel/build-info.js.map +1 -0
  34. package/dist/otel/code-location.d.ts +49 -0
  35. package/dist/otel/code-location.js +233 -0
  36. package/dist/otel/code-location.js.map +1 -0
  37. package/dist/otel/tracing.js +7 -0
  38. package/dist/otel/tracing.js.map +1 -1
  39. package/dist/pricing.json +100 -42
  40. package/dist/protect/__tests__/protect.test.d.ts +1 -0
  41. package/dist/protect/__tests__/protect.test.js +206 -0
  42. package/dist/protect/__tests__/protect.test.js.map +1 -0
  43. package/dist/protect/index.d.ts +103 -0
  44. package/dist/protect/index.js +191 -0
  45. package/dist/protect/index.js.map +1 -0
  46. package/dist/protect/mcp.d.ts +13 -0
  47. package/dist/protect/mcp.js +49 -0
  48. package/dist/protect/mcp.js.map +1 -0
  49. package/dist/protect/mode.d.ts +89 -0
  50. package/dist/protect/mode.js +134 -0
  51. package/dist/protect/mode.js.map +1 -0
  52. package/dist/types.d.ts +22 -0
  53. package/package.json +1 -1
@@ -36,6 +36,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const crypto_1 = require("crypto");
37
37
  const pii_1 = require("../pii");
38
38
  const base_1 = require("../base");
39
+ const fs_1 = require("fs");
40
+ const path_1 = require("path");
39
41
  const findings_1 = require("../findings");
40
42
  // Test values are assembled at run time so secret scanners don't flag this file.
41
43
  const SSN = '123-45-' + '6789';
@@ -43,12 +45,26 @@ const CARD = '4111 1111 ' + '1111 1111';
43
45
  const OPENAI = 'sk-' + 'proj-' + 'abcdefghijklmnopqrstuvwxyz0123';
44
46
  afterEach(() => (0, findings_1.setFingerprintKey)(null));
45
47
  describe('findings', () => {
46
- it('masks enough to recognise, never enough to use', () => {
47
- expect((0, findings_1.mask)('ssn', SSN)).toBe('***-**-6789');
48
- expect((0, findings_1.mask)('credit-card', CARD)).toBe('•••• 1111');
49
- const key = (0, findings_1.mask)('openai-api-key', OPENAI);
50
- expect(key.startsWith('sk-proj-') && key.endsWith('0123') && !key.includes('abcdef')).toBe(true);
51
- expect((0, findings_1.mask)('email', 'ana@acme.test')).toBe('a***@acme.test');
48
+ it('masks to the kind alone without a key: no character of the value', () => {
49
+ expect((0, findings_1.mask)('ssn', SSN)).toBe('[ssn]');
50
+ expect((0, findings_1.mask)('credit-card', CARD)).toBe('[payment_card]');
51
+ expect((0, findings_1.mask)('openai-api-key', OPENAI)).toBe('[api_key]');
52
+ expect((0, findings_1.mask)('email', 'ana@acme.test')).toBe('[email]');
53
+ });
54
+ it('masks to the kind and the start of the keyed fingerprint with a key', () => {
55
+ (0, findings_1.setFingerprintKey)('org-secret');
56
+ const fp = (0, findings_1.fingerprint)('openai-api-key', OPENAI);
57
+ expect((0, findings_1.mask)('openai-api-key', OPENAI)).toBe(`[api_key:fp_${fp.slice(0, 8)}]`);
58
+ });
59
+ it('matches the shared token vectors', () => {
60
+ // The vectors live beside this SDK in the monorepo (sdk/guard-core) and inside the SDK's public mirror (guard-core/).
61
+ const candidates = [(0, path_1.join)(__dirname, '../../../../guard-core/testdata/tokens.json'), (0, path_1.join)(__dirname, '../../../guard-core/testdata/tokens.json')];
62
+ const path = candidates.find((p) => (0, fs_1.existsSync)(p));
63
+ if (!path)
64
+ throw new Error(`shared token vectors not found at ${candidates.join(' or ')}`);
65
+ const file = JSON.parse((0, fs_1.readFileSync)(path, 'utf8'));
66
+ for (const v of file.cases)
67
+ expect((0, findings_1.token)(v.kind, v.fingerprint)).toBe(v.token);
52
68
  });
53
69
  it('fingerprints only with a key, the same way as the CLI and Python', () => {
54
70
  expect((0, findings_1.fingerprint)('ssn', SSN)).toBe('');
@@ -61,7 +77,7 @@ describe('findings', () => {
61
77
  (0, findings_1.setFingerprintKey)('org-secret');
62
78
  const r = new pii_1.PII({ action: 'deny' }).run(`SSN ${SSN}, card ${CARD}`, base_1.GuardPhase.PREFLIGHT);
63
79
  const masked = Object.fromEntries((r.findings || []).map((f) => [f.kind, f.masked]));
64
- expect(masked.ssn).toBe('***-**-6789');
80
+ expect(masked.ssn).toBe(`[ssn:fp_${(0, findings_1.fingerprint)('ssn', SSN).slice(0, 8)}]`);
65
81
  expect(JSON.stringify(r.findings)).not.toContain(SSN);
66
82
  expect(JSON.stringify(r.findings)).not.toContain(CARD);
67
83
  });
@@ -73,7 +89,10 @@ describe('findings made before the key arrives', () => {
73
89
  expect(early.fingerprint).toBeUndefined();
74
90
  expect(JSON.stringify(early)).not.toContain(SSN);
75
91
  (0, findings_1.setFingerprintKey)('org-secret');
76
- expect(completeFinding(early).fingerprint).toBe((0, findings_1.fingerprint)('ssn', SSN));
92
+ expect(early.masked).toBe('[ssn]');
93
+ const done = completeFinding(early);
94
+ expect(done.fingerprint).toBe((0, findings_1.fingerprint)('ssn', SSN));
95
+ expect(done.masked).toBe(`[ssn:fp_${done.fingerprint.slice(0, 8)}]`);
77
96
  });
78
97
  });
79
98
  //# sourceMappingURL=findings.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"findings.test.js","sourceRoot":"","sources":["../../../src/guard/__tests__/findings.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"findings.test.js","sourceRoot":"","sources":["../../../src/guard/__tests__/findings.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAoC;AACpC,gCAA6B;AAC7B,kCAAqC;AACrC,2BAA8C;AAC9C,+BAA4B;AAC5B,0CAA0E;AAE1E,iFAAiF;AACjF,MAAM,GAAG,GAAG,SAAS,GAAG,MAAM,CAAC;AAC/B,MAAM,IAAI,GAAG,YAAY,GAAG,WAAW,CAAC;AACxC,MAAM,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,gCAAgC,CAAC;AAElE,SAAS,CAAC,GAAG,EAAE,CAAC,IAAA,4BAAiB,EAAC,IAAI,CAAC,CAAC,CAAC;AAEzC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,IAAA,eAAI,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,CAAC,IAAA,eAAI,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzD,MAAM,CAAC,IAAA,eAAI,EAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,CAAC,IAAA,eAAI,EAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,IAAA,4BAAiB,EAAC,YAAY,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,IAAA,sBAAW,EAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,IAAA,eAAI,EAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,sHAAsH;QACtH,MAAM,UAAU,GAAG,CAAC,IAAA,WAAI,EAAC,SAAS,EAAE,6CAA6C,CAAC,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,0CAA0C,CAAC,CAAC,CAAC;QACjJ,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,eAAU,EAAC,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3F,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,CAAC,IAAA,gBAAK,EAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,IAAA,sBAAW,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,IAAA,4BAAiB,EAAC,YAAY,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAA,mBAAU,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvG,MAAM,CAAC,IAAA,sBAAW,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAA,sBAAW,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAC3C,IAAA,mBAAU,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CACtG,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,IAAA,4BAAiB,EAAC,YAAY,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,IAAI,SAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE,EAAE,iBAAU,CAAC,SAAS,CAAC,CAAC;QAC5F,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,IAAA,sBAAW,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3E,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;QAChG,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,wDAAa,aAAa,GAAC,CAAC;QACrE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACjD,IAAA,4BAAiB,EAAC,YAAY,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAA,sBAAW,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -66,6 +66,8 @@ export declare abstract class Guard {
66
66
  */
67
67
  constructor(opts?: GuardOptions);
68
68
  get action(): GuardAction;
69
+ /** The most characters this guard reads; 0 means all of them. */
70
+ get maxScanLength(): number;
69
71
  supportsPhase(phase: GuardPhase): boolean;
70
72
  /** Execute the guard with timing, text-length capping, and phase filtering. */
71
73
  run(text: string, phase: GuardPhase): GuardResult;
@@ -108,6 +108,10 @@ class Guard {
108
108
  get action() {
109
109
  return this._action;
110
110
  }
111
+ /** The most characters this guard reads; 0 means all of them. */
112
+ get maxScanLength() {
113
+ return this._maxScanLength;
114
+ }
111
115
  supportsPhase(phase) {
112
116
  return this.phases.includes(phase);
113
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/guard/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/guard/base.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * What a reviewer may see of a sensitive value a guard found: its kind, a
3
- * masked form (the last four digits of an SSN, the prefix of an API key) and a
3
+ * token (`[api_key:fp_3f9c2a1b]`, see token()) and a
4
4
  * fingerprint that is the same every time the same value turns up, in this app
5
5
  * or anywhere else in the organisation. The value itself is never kept or
6
6
  * reported.
@@ -22,7 +22,17 @@ export declare const MAX_FINDINGS = 10;
22
22
  export declare function setFingerprintKey(value: string | null): void;
23
23
  export declare const canonicalKind: (label: string) => string;
24
24
  export declare function fingerprint(label: string, value: string): string;
25
- /** Enough of a value to recognise it, never enough to use it. */
25
+ /** Hex characters of the fingerprint a token shows. */
26
+ export declare const TOKEN_PRINT_LENGTH = 8;
27
+ /**
28
+ * What is kept of a sensitive value: its kind and, when the organisation's key
29
+ * is known, the start of its keyed fingerprint — `[api_key:fp_3f9c2a1b]`, or
30
+ * `[api_key]` without a key. No character of the value is part of it: a key's
31
+ * prefix and last four or a card's last four help an attacker narrow a guess.
32
+ * Byte-compatible with guard-core's token() and the Go guard's Token().
33
+ */
34
+ export declare function token(kind: string, fp?: string): string;
35
+ /** The token for a value under the current key; never any character of it. */
26
36
  export declare function mask(label: string, value: string): string;
27
37
  export declare function makeFinding(label: string, value: string): Finding;
28
38
  /** Fingerprints a finding made before the key arrived, now that it has. */
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  /**
3
3
  * What a reviewer may see of a sensitive value a guard found: its kind, a
4
- * masked form (the last four digits of an SSN, the prefix of an API key) and a
4
+ * token (`[api_key:fp_3f9c2a1b]`, see token()) and a
5
5
  * fingerprint that is the same every time the same value turns up, in this app
6
6
  * or anywhere else in the organisation. The value itself is never kept or
7
7
  * reported.
@@ -14,9 +14,10 @@
14
14
  * cli/internal/coding/guard/findings.go
15
15
  */
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.canonicalKind = exports.MAX_FINDINGS = void 0;
17
+ exports.TOKEN_PRINT_LENGTH = exports.canonicalKind = exports.MAX_FINDINGS = void 0;
18
18
  exports.setFingerprintKey = setFingerprintKey;
19
19
  exports.fingerprint = fingerprint;
20
+ exports.token = token;
20
21
  exports.mask = mask;
21
22
  exports.makeFinding = makeFinding;
22
23
  exports.completeFinding = completeFinding;
@@ -68,56 +69,25 @@ function fingerprint(label, value) {
68
69
  const kind = (0, exports.canonicalKind)(label);
69
70
  return (0, crypto_1.createHmac)('sha256', key).update(`${kind}:${normalise(kind, value)}`).digest('hex').slice(0, 16);
70
71
  }
71
- /** Enough of a value to recognise it, never enough to use it. */
72
+ /** Hex characters of the fingerprint a token shows. */
73
+ exports.TOKEN_PRINT_LENGTH = 8;
74
+ /**
75
+ * What is kept of a sensitive value: its kind and, when the organisation's key
76
+ * is known, the start of its keyed fingerprint — `[api_key:fp_3f9c2a1b]`, or
77
+ * `[api_key]` without a key. No character of the value is part of it: a key's
78
+ * prefix and last four or a card's last four help an attacker narrow a guess.
79
+ * Byte-compatible with guard-core's token() and the Go guard's Token().
80
+ */
81
+ function token(kind, fp = '') {
82
+ return fp.length >= exports.TOKEN_PRINT_LENGTH && /^[0-9a-f]+$/.test(fp) ? `[${kind}:fp_${fp.slice(0, exports.TOKEN_PRINT_LENGTH)}]` : `[${kind}]`;
83
+ }
84
+ /** The token for a value under the current key; never any character of it. */
72
85
  function mask(label, value) {
73
- const v = value.trim();
74
- const kind = (0, exports.canonicalKind)(label);
75
- switch (kind) {
76
- case 'ssn':
77
- return '***-**-' + digits(v).slice(-4);
78
- case 'payment_card':
79
- return '•••• ' + digits(v).slice(-4);
80
- case 'phone-us':
81
- return '***-***-' + digits(v).slice(-4);
82
- case 'private_key':
83
- return v;
84
- case 'email': {
85
- const at = v.indexOf('@');
86
- return at > 0 ? v[0] + '***' + v.slice(at) : '***';
87
- }
88
- case 'ipv4': {
89
- const parts = v.split('.');
90
- return parts.length === 4 ? `${parts[0]}.${parts[1]}.x.x` : 'x.x.x.x';
91
- }
92
- case 'connection_string': {
93
- const m = /^([a-z+]+:\/\/[^:/@\s]+:)[^@\s]*(@.*)?$/i.exec(v);
94
- if (m)
95
- return m[1] + '****@' + (m[2] || '@').slice(1).split('/')[0];
96
- return v.split('://')[0] + '://****';
97
- }
98
- case 'password': {
99
- const i = v.search(/[:=]/);
100
- const name = i > 0 ? v.slice(0, i).replace(/^[\s"']+|[\s"']+$/g, '') : '';
101
- return name ? `${name} = ••••••••` : '••••••••';
102
- }
103
- case 'bearer-token':
104
- case 'basic-auth':
105
- return `${v.split(/\s+/)[0] || ''} …${v.slice(-4)}`;
106
- default: {
107
- // Keys and tokens: the public prefix names the service, the last four
108
- // tell two keys apart.
109
- let prefix = v.slice(0, 12);
110
- const cut = Math.max(prefix.lastIndexOf('-'), prefix.lastIndexOf('_'));
111
- prefix = cut >= 2 ? prefix.slice(0, cut + 1) : prefix.slice(0, 4);
112
- if (v.length <= prefix.length + 4)
113
- return prefix + '…';
114
- return prefix + '…' + v.slice(-4);
115
- }
116
- }
86
+ return token((0, exports.canonicalKind)(label), fingerprint(label, value));
117
87
  }
118
88
  function makeFinding(label, value) {
119
- const f = { kind: label, masked: mask(label, value) };
120
89
  const fp = fingerprint(label, value);
90
+ const f = { kind: label, masked: token((0, exports.canonicalKind)(label), fp) };
121
91
  if (fp)
122
92
  f.fingerprint = fp;
123
93
  else
@@ -135,7 +105,7 @@ function completeFinding(f) {
135
105
  if (!fp)
136
106
  return f;
137
107
  awaitingKey.delete(f);
138
- return { ...f, fingerprint: fp };
108
+ return { ...f, masked: token((0, exports.canonicalKind)(pending.label), fp), fingerprint: fp };
139
109
  }
140
110
  /** Findings for `[label, value]` pairs, de-duplicated and capped. */
141
111
  function collectFindings(matches) {
@@ -1 +1 @@
1
- {"version":3,"file":"findings.js","sourceRoot":"","sources":["../../src/guard/findings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"findings.js","sourceRoot":"","sources":["../../src/guard/findings.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@
24
24
  */
25
25
  import { Guard } from './base';
26
26
  import { Pipeline } from './pipeline';
27
+ import { type ResolvedProtect } from '../protect/mode';
27
28
  type Extractor = (arg: any) => string;
28
29
  export declare function extractOpenAIInput(kwargs: Record<string, any>): string;
29
30
  export declare function extractOpenAIOutput(response: any): string;
@@ -32,13 +33,33 @@ export declare function extractAnthropicOutput(response: any): string;
32
33
  export declare function extractGenericInput(kwargs: Record<string, any>): string;
33
34
  export declare function extractGenericOutput(response: any): string;
34
35
  /** @internal exported for tests */
35
- export declare function applyPreflight(pipeline: Pipeline, kwargs: Record<string, any>, extractInput: Extractor): Record<string, any>;
36
+ export declare function applyPreflight(pipeline: Pipeline, kwargs: Record<string, any>, extractInput: Extractor, protect?: ResolvedProtect): Record<string, any>;
36
37
  /**
37
38
  * Each choice and text block is redacted on its own, so none is left holding
38
39
  * the original text or another block's.
39
40
  *
40
41
  * @internal exported for tests
41
42
  */
42
- export declare function applyPostflight(pipeline: Pipeline, response: any, extractOutput: Extractor): any;
43
- export declare function setupAutoGuards(guards: Guard[], failOpen?: boolean): void;
43
+ export declare function applyPostflight(pipeline: Pipeline, response: any, extractOutput: Extractor, protect?: ResolvedProtect): any;
44
+ export type AutoGuardReport = {
45
+ /** npm packages whose provider methods were wrapped. */
46
+ wrapped: string[];
47
+ /** Required packages that were not wrapped: not installed, or not resolvable from this module (an ESM-only resolution). */
48
+ missing: string[];
49
+ };
50
+ /**
51
+ * Wraps every installed provider the SDK knows. With Shield Protect in
52
+ * enforced mode the pipeline fails closed (failOpen is overridden, with a
53
+ * warning when it was set), and a package named in `required` that could
54
+ * not be wrapped throws ProtectReadinessError: protected startup fails
55
+ * rather than running unguarded.
56
+ *
57
+ * Supported module loading: CommonJS `require`, and ESM `import` of a
58
+ * provider whose package resolves to the same CommonJS build (openai and
59
+ * @anthropic-ai/sdk do under Node's default conditions). An ESM-only
60
+ * resolution loads a class this function never sees; name the package in
61
+ * `required` so enforced mode fails rather than silently not wrapping it,
62
+ * or use protectTool() which needs no patching.
63
+ */
64
+ export declare function setupAutoGuards(guards: Guard[], failOpen?: boolean, protect?: ResolvedProtect): AutoGuardReport;
44
65
  export {};
@@ -35,21 +35,36 @@ exports.applyPostflight = applyPostflight;
35
35
  exports.setupAutoGuards = setupAutoGuards;
36
36
  const base_1 = require("./base");
37
37
  const pipeline_1 = require("./pipeline");
38
+ const mode_1 = require("../protect/mode");
39
+ /** The text in a message's content: a string, or the text parts of a list of blocks. */
40
+ function contentText(content) {
41
+ if (typeof content === 'string')
42
+ return content ? [content] : [];
43
+ if (!Array.isArray(content))
44
+ return [];
45
+ const out = [];
46
+ for (const block of content) {
47
+ if (typeof block === 'string')
48
+ out.push(block);
49
+ else if (block && typeof block === 'object' && typeof block.text === 'string')
50
+ out.push(block.text);
51
+ }
52
+ return out;
53
+ }
38
54
  function extractOpenAIInput(kwargs) {
39
55
  const messages = kwargs.messages || kwargs.input || [];
40
- if (typeof messages === 'string')
41
- return messages;
42
56
  const parts = [];
43
- if (Array.isArray(messages)) {
57
+ // The Responses API's instructions are a system prompt: scanned like one.
58
+ if (typeof kwargs.instructions === 'string' && kwargs.instructions)
59
+ parts.push(kwargs.instructions);
60
+ if (typeof messages === 'string')
61
+ parts.push(messages);
62
+ else if (Array.isArray(messages)) {
44
63
  for (const m of messages) {
45
- if (typeof m === 'object' && m !== null) {
46
- const content = m.content ?? '';
47
- if (typeof content === 'string')
48
- parts.push(content);
49
- }
50
- else if (typeof m === 'string') {
64
+ if (typeof m === 'object' && m !== null)
65
+ parts.push(...contentText(m.content));
66
+ else if (typeof m === 'string')
51
67
  parts.push(m);
52
- }
53
68
  }
54
69
  }
55
70
  return parts.join(' ');
@@ -89,6 +104,8 @@ function extractOpenAIOutput(response) {
89
104
  function extractAnthropicInput(kwargs) {
90
105
  const messages = kwargs.messages || [];
91
106
  const parts = [];
107
+ // The system prompt is input too: a string, or text blocks.
108
+ parts.push(...contentText(kwargs.system));
92
109
  if (Array.isArray(messages)) {
93
110
  for (const m of messages) {
94
111
  if (typeof m === 'object' && m !== null) {
@@ -240,15 +257,51 @@ function redactMessages(pipeline, value, phase) {
240
257
  return m;
241
258
  });
242
259
  }
260
+ /**
261
+ * Shield Protect: what a mode does with a pipeline result, and with a
262
+ * pipeline that failed. No mode (legacy): a DENY throws, as it always did.
263
+ * observe: recorded, the call goes on. warn: as observe, and logged.
264
+ * enforced: a DENY throws; a failed pipeline throws (fail closed), whatever
265
+ * failOpen says.
266
+ */
267
+ function evaluateUnder(pipeline, text, phase, protect) {
268
+ const mode = protect?.mode;
269
+ const bound = pipeline.scanBound();
270
+ if ((0, mode_1.refuses)(mode) && bound > 0 && text.length > bound) {
271
+ throw new mode_1.ProtectDeniedError('oversized', `Shield360 Protect refused the call: ${text.length} characters is more than its guards scan (${bound}); send less.`);
272
+ }
273
+ let result;
274
+ try {
275
+ result = pipeline.evaluate(text, phase);
276
+ }
277
+ catch (e) {
278
+ if ((0, mode_1.refuses)(mode)) {
279
+ throw new mode_1.ProtectDeniedError('guard_failed', 'Shield360 Protect refused the call: a guard failed and enforced mode does not run unchecked calls.');
280
+ }
281
+ throw e;
282
+ }
283
+ if (result.action === base_1.GuardAction.DENY) {
284
+ if (mode === undefined || (0, mode_1.refuses)(mode))
285
+ throw new base_1.GuardDeniedError(result);
286
+ if (mode === 'warn')
287
+ console.warn(`[shield360] Protect (warn mode): the call would have been refused at ${phase}: ${result.explanation}`);
288
+ // observe / warn: recorded by the pipeline's own span event; the call goes on.
289
+ return { ...result, action: base_1.GuardAction.WARN };
290
+ }
291
+ return result;
292
+ }
243
293
  /** @internal exported for tests */
244
- function applyPreflight(pipeline, kwargs, extractInput) {
294
+ function applyPreflight(pipeline, kwargs, extractInput, protect) {
245
295
  const inputText = extractInput(kwargs);
246
296
  if (!inputText)
247
297
  return kwargs;
248
- const result = pipeline.evaluate(inputText, 'preflight');
249
- if (result.action === base_1.GuardAction.DENY) {
250
- throw new base_1.GuardDeniedError(result);
298
+ // A streamed completion cannot be inspected after the fact. Enforced mode
299
+ // with postflight guards refuses it rather than let the response through
300
+ // unread; with preflight-only guards the stream is fine.
301
+ if ((0, mode_1.refuses)(protect?.mode) && kwargs.stream === true && pipeline.hasPhase(base_1.GuardPhase.POSTFLIGHT)) {
302
+ throw new mode_1.ProtectDeniedError('streaming', 'Shield360 Protect refused a streamed completion: postflight guards cannot inspect a stream. Call without stream, or configure preflight-only guards.');
251
303
  }
304
+ const result = evaluateUnder(pipeline, inputText, 'preflight', protect);
252
305
  if (result.action === base_1.GuardAction.REDACT && result.transformedText !== null) {
253
306
  for (const key of ['messages', 'input', 'prompt', 'text']) {
254
307
  if (key in kwargs) {
@@ -269,14 +322,11 @@ function redactTextField(pipeline, obj, field) {
269
322
  *
270
323
  * @internal exported for tests
271
324
  */
272
- function applyPostflight(pipeline, response, extractOutput) {
325
+ function applyPostflight(pipeline, response, extractOutput, protect) {
273
326
  const outputText = extractOutput(response);
274
327
  if (!outputText)
275
328
  return response;
276
- const result = pipeline.evaluate(outputText, 'postflight');
277
- if (result.action === base_1.GuardAction.DENY) {
278
- throw new base_1.GuardDeniedError(result);
279
- }
329
+ const result = evaluateUnder(pipeline, outputText, 'postflight', protect);
280
330
  if (result.action === base_1.GuardAction.REDACT && result.transformedText !== null) {
281
331
  try {
282
332
  if (Array.isArray(response?.choices) && response.choices.length > 0) {
@@ -322,11 +372,27 @@ function resolveProto(moduleExports, protoPath) {
322
372
  }
323
373
  return obj;
324
374
  }
325
- // ---------------------------------------------------------------------------
326
- // Public entry point
327
- // ---------------------------------------------------------------------------
328
- function setupAutoGuards(guards, failOpen = true) {
329
- const pipeline = new pipeline_1.Pipeline({ guards, failOpen });
375
+ /**
376
+ * Wraps every installed provider the SDK knows. With Shield Protect in
377
+ * enforced mode the pipeline fails closed (failOpen is overridden, with a
378
+ * warning when it was set), and a package named in `required` that could
379
+ * not be wrapped throws ProtectReadinessError: protected startup fails
380
+ * rather than running unguarded.
381
+ *
382
+ * Supported module loading: CommonJS `require`, and ESM `import` of a
383
+ * provider whose package resolves to the same CommonJS build (openai and
384
+ * @anthropic-ai/sdk do under Node's default conditions). An ESM-only
385
+ * resolution loads a class this function never sees; name the package in
386
+ * `required` so enforced mode fails rather than silently not wrapping it,
387
+ * or use protectTool() which needs no patching.
388
+ */
389
+ function setupAutoGuards(guards, failOpen = true, protect) {
390
+ let effectiveFailOpen = failOpen;
391
+ if ((0, mode_1.refuses)(protect?.mode) && failOpen) {
392
+ console.warn('[shield360] Protect: enforced mode fails closed; guardFailOpen is ignored.');
393
+ effectiveFailOpen = false;
394
+ }
395
+ const pipeline = new pipeline_1.Pipeline({ guards, failOpen: effectiveFailOpen });
330
396
  try {
331
397
  const Shield360Config = require('../config').default;
332
398
  Shield360Config.guardPipeline = pipeline;
@@ -334,7 +400,7 @@ function setupAutoGuards(guards, failOpen = true) {
334
400
  catch {
335
401
  // config not available
336
402
  }
337
- let wrappedCount = 0;
403
+ const wrapped = new Set();
338
404
  for (const { npmPackage, protoPath, methodName, extractInput, extractOutput } of GUARDED_METHODS) {
339
405
  try {
340
406
  // eslint-disable-next-line @typescript-eslint/no-var-requires
@@ -345,19 +411,25 @@ function setupAutoGuards(guards, failOpen = true) {
345
411
  const original = proto[methodName];
346
412
  proto[methodName] = async function (...args) {
347
413
  let params = args[0] || {};
348
- params = applyPreflight(pipeline, params, extractInput);
414
+ params = applyPreflight(pipeline, params, extractInput, protect);
349
415
  args[0] = params;
350
416
  const response = await original.apply(this, args);
351
- return applyPostflight(pipeline, response, extractOutput);
417
+ return applyPostflight(pipeline, response, extractOutput, protect);
352
418
  };
353
- wrappedCount++;
419
+ wrapped.add(npmPackage);
354
420
  }
355
421
  catch {
356
422
  // module not installed, skip silently
357
423
  }
358
424
  }
359
- if (wrappedCount > 0) {
360
- console.log(`[shield360] Auto-guards: wrapped ${wrappedCount}/${GUARDED_METHODS.length} provider methods`);
425
+ const missing = (protect?.required ?? []).filter((pkg) => !wrapped.has(pkg));
426
+ (0, mode_1.setProtectState)({ mode: protect?.mode, wrapped: Array.from(wrapped), missing });
427
+ if (wrapped.size > 0) {
428
+ console.log(`[shield360] Auto-guards: wrapped ${wrapped.size} provider package(s): ${Array.from(wrapped).join(', ')}`);
429
+ }
430
+ if ((0, mode_1.refuses)(protect?.mode) && missing.length) {
431
+ throw new mode_1.ProtectReadinessError(missing, `Shield360 Protect: enforced mode requires guards on ${missing.join(', ')}, which could not be wrapped (not installed, or not resolvable as CommonJS). Protected startup refused.`);
361
432
  }
433
+ return { wrapped: Array.from(wrapped), missing };
362
434
  }
363
435
  //# sourceMappingURL=integration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/guard/integration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/guard/integration.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;AAwBH,gDAaC;AAED,kDA4BC;AAED,sDAsBC;AAED,wDAeC;AAED,kDAkBC;AAED,oDA+BC;AAmGD,wCA2BC;AAcD,0CAoCC;AAwCD,0CAqDC;AA5aD,iCAA0E;AAC1E,yCAAsC;AACtC,0CAA4H;AAQ5H,wFAAwF;AACxF,SAAS,WAAW,CAAC,OAAgB;IACnC,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAQ,KAAa,CAAC,IAAI,KAAK,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAE,KAAa,CAAC,IAAI,CAAC,CAAC;IACxH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,kBAAkB,CAAC,MAA2B;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IACvD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,0EAA0E;IAC1E,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,YAAY;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACpG,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAClD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC1E,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAgB,mBAAmB,CAAC,QAAa;IAC/C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC;QAClC,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,OAAO,OAAO;iBACX,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;iBAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC;QAChC,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC;gBAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC;wBACzB,IAAI,IAAI;4BAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACvC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,qBAAqB,CAAC,MAA2B;IAC/D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACvC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,4DAA4D;IAC5D,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACxC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;gBAChC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAChC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtB,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAClC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;4BACxD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;wBAC/B,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAgB,sBAAsB,CAAC,QAAa;IAClD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC;QAClC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC;gBACzB,IAAI,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAA2B;IAC7D,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QACrE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,GAAG,IAAI,IAAI;YAAE,SAAS;QAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC;QACxC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;gBACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;qBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBACrD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,oBAAoB,CAAC,QAAa;IAChD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC;QAClC,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,OAAO,OAAO;iBACX,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;iBAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC;QAClC,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC;gBACzB,IAAI,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,KAAK,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,IAAI,CAAC;QACH,IAAI,QAAQ,EAAE,IAAI;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAcD,MAAM,eAAe,GAAoB;IACvC,SAAS;IACT,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB,EAAE;IAC/K,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB,EAAE;IACrK,YAAY;IACZ,EAAE,UAAU,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,sBAAsB,EAAE;IACxL,OAAO;IACP,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE;IACjL,UAAU;IACV,EAAE,UAAU,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE;IACnL,SAAS;IACT,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE;IACnK,WAAW;IACX,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE;IACxL,gBAAgB;IAChB,EAAE,UAAU,EAAE,iCAAiC,EAAE,SAAS,EAAE,CAAC,sBAAsB,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE;IAC/L,uBAAuB;IACvB,EAAE,UAAU,EAAE,uBAAuB,EAAE,SAAS,EAAE,CAAC,iBAAiB,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE;CAC5L,CAAC;AAEF,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,QAAkB,EAAE,KAAU,EAAE,KAAa;IACnE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QAC/F,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,GAAG,CAAC;gBACJ,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAChC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;oBACtD,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;oBAChD,CAAC,CAAC,CAAC,CACN;aACF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,QAAkB,EAAE,IAAY,EAAE,KAAiC,EAAE,OAAyB;IACnH,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;IAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;IACnC,IAAI,IAAA,cAAO,EAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;QACtD,MAAM,IAAI,yBAAkB,CAAC,WAAW,EAAE,uCAAuC,IAAI,CAAC,MAAM,6CAA6C,KAAK,eAAe,CAAC,CAAC;IACjK,CAAC;IACD,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,IAAA,cAAO,EAAC,IAAI,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,yBAAkB,CAAC,cAAc,EAAE,oGAAoG,CAAC,CAAC;QACrJ,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAW,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAA,cAAO,EAAC,IAAI,CAAC;YAAE,MAAM,IAAI,uBAAgB,CAAC,MAAM,CAAC,CAAC;QAC5E,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,wEAAwE,KAAK,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1I,+EAA+E;QAC/E,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,kBAAW,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,mCAAmC;AACnC,SAAgB,cAAc,CAC5B,QAAkB,EAClB,MAA2B,EAC3B,YAAuB,EACvB,OAAyB;IAEzB,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,SAAS;QAAE,OAAO,MAAM,CAAC;IAE9B,0EAA0E;IAC1E,yEAAyE;IACzE,yDAAyD;IACzD,IAAI,IAAA,cAAO,EAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,iBAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjG,MAAM,IAAI,yBAAkB,CAAC,WAAW,EAAE,sJAAsJ,CAAC,CAAC;IACpM,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAExE,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAW,CAAC,MAAM,IAAI,MAAM,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QAC5E,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YAC1D,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;gBAClB,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,QAAkB,EAAE,GAAQ,EAAE,KAAa;IAClE,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAC7B,QAAkB,EAClB,QAAa,EACb,aAAwB,EACxB,OAAyB;IAEzB,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU;QAAE,OAAO,QAAQ,CAAC;IAEjC,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAE1E,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAW,CAAC,MAAM,IAAI,MAAM,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QAC5E,IAAI,CAAC;YACH,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpE,2BAA2B;gBAC3B,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO;oBAAE,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAC/F,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzE,uDAAuD;gBACvD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACnC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;wBACjC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO;4BAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;oBAC7E,CAAC;gBACH,CAAC;gBACD,IAAI,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ;oBAAE,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YACnG,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3E,sBAAsB;gBACtB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO;oBAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACjF,CAAC;iBAAM,CAAC;gBACN,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,SAAS,YAAY,CAAC,aAAkB,EAAE,SAAmB;IAC3D,IAAI,GAAG,GAAG,aAAa,CAAC;IACxB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAC7B,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAaD;;;;;;;;;;;;;GAaG;AACH,SAAgB,eAAe,CAC7B,MAAe,EACf,QAAQ,GAAG,IAAI,EACf,OAAyB;IAEzB,IAAI,iBAAiB,GAAG,QAAQ,CAAC;IACjC,IAAI,IAAA,cAAO,EAAC,OAAO,EAAE,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;QAC3F,iBAAiB,GAAG,KAAK,CAAC;IAC5B,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAEvE,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;QACrD,eAAe,CAAC,aAAa,GAAG,QAAQ,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,uBAAuB;IACzB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,eAAe,EAAE,CAAC;QACjG,IAAI,CAAC;YACH,8DAA8D;YAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,UAAU;gBAAE,SAAS;YAEhE,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;YACnC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,WAAsB,GAAG,IAAW;gBAC3D,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAE3B,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;gBACjE,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;gBAEjB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAElD,OAAO,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;YACrE,CAAC,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E,IAAA,sBAAe,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAChF,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,oCAAoC,OAAO,CAAC,IAAI,yBAAyB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzH,CAAC;IACD,IAAI,IAAA,cAAO,EAAC,OAAO,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,IAAI,4BAAqB,CAAC,OAAO,EAAE,uDAAuD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,yGAAyG,CAAC,CAAC;IAC/N,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;AACnD,CAAC"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Must stay in sync with: sdk/python/src/shield360/guard/_pipeline.py
5
5
  */
6
- import { Guard, PipelineResult } from './base';
6
+ import { Guard, GuardPhase, PipelineResult } from './base';
7
7
  export interface PipelineOptions {
8
8
  guards?: Guard[];
9
9
  failOpen?: boolean;
@@ -13,6 +13,15 @@ export declare class Pipeline {
13
13
  private readonly _failOpen;
14
14
  constructor(opts?: PipelineOptions);
15
15
  get guards(): Guard[];
16
+ /** Whether any guard runs in `phase`. */
17
+ hasPhase(phase: GuardPhase): boolean;
18
+ /**
19
+ * The most characters every guard in the pipeline reads: the smallest
20
+ * positive maxScanLength, or 0 when every guard reads everything. Text
21
+ * past it is scanned in part by at least one guard; Shield Protect's
22
+ * enforced mode refuses such text instead.
23
+ */
24
+ scanBound(): number;
16
25
  evaluate(text: string, phase?: string): PipelineResult;
17
26
  /**
18
27
  * Apply every redacting guard to `text` and return the result.
@@ -17,6 +17,20 @@ class Pipeline {
17
17
  get guards() {
18
18
  return [...this._guards];
19
19
  }
20
+ /** Whether any guard runs in `phase`. */
21
+ hasPhase(phase) {
22
+ return this._guards.some((g) => g.supportsPhase(phase));
23
+ }
24
+ /**
25
+ * The most characters every guard in the pipeline reads: the smallest
26
+ * positive maxScanLength, or 0 when every guard reads everything. Text
27
+ * past it is scanned in part by at least one guard; Shield Protect's
28
+ * enforced mode refuses such text instead.
29
+ */
30
+ scanBound() {
31
+ const bounds = this._guards.map((g) => g.maxScanLength).filter((n) => n > 0);
32
+ return bounds.length ? Math.min(...bounds) : 0;
33
+ }
20
34
  evaluate(text, phase = 'preflight') {
21
35
  const validPhases = Object.values(base_1.GuardPhase);
22
36
  if (!validPhases.includes(phase)) {