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.
- package/README.md +65 -37
- package/dist/__tests__/build-info.test.d.ts +1 -0
- package/dist/__tests__/build-info.test.js +189 -0
- package/dist/__tests__/build-info.test.js.map +1 -0
- package/dist/__tests__/code-location.test.d.ts +1 -0
- package/dist/__tests__/code-location.test.js +180 -0
- package/dist/__tests__/code-location.test.js.map +1 -0
- package/dist/__tests__/pricing-claude-5.test.js +3 -0
- package/dist/__tests__/pricing-claude-5.test.js.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/guard/__tests__/findings.test.js +27 -8
- package/dist/guard/__tests__/findings.test.js.map +1 -1
- package/dist/guard/base.d.ts +2 -0
- package/dist/guard/base.js +4 -0
- package/dist/guard/base.js.map +1 -1
- package/dist/guard/findings.d.ts +12 -2
- package/dist/guard/findings.js +19 -49
- package/dist/guard/findings.js.map +1 -1
- package/dist/guard/integration.d.ts +24 -3
- package/dist/guard/integration.js +102 -30
- package/dist/guard/integration.js.map +1 -1
- package/dist/guard/pipeline.d.ts +10 -1
- package/dist/guard/pipeline.js +14 -0
- package/dist/guard/pipeline.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +34 -3
- package/dist/index.js.map +1 -1
- package/dist/instrumentation/mcp/wrapper.js +7 -1
- package/dist/instrumentation/mcp/wrapper.js.map +1 -1
- package/dist/otel/build-info.d.ts +22 -0
- package/dist/otel/build-info.js +175 -0
- package/dist/otel/build-info.js.map +1 -0
- package/dist/otel/code-location.d.ts +49 -0
- package/dist/otel/code-location.js +233 -0
- package/dist/otel/code-location.js.map +1 -0
- package/dist/otel/tracing.js +7 -0
- package/dist/otel/tracing.js.map +1 -1
- package/dist/pricing.json +100 -42
- package/dist/protect/__tests__/protect.test.d.ts +1 -0
- package/dist/protect/__tests__/protect.test.js +206 -0
- package/dist/protect/__tests__/protect.test.js.map +1 -0
- package/dist/protect/index.d.ts +103 -0
- package/dist/protect/index.js +191 -0
- package/dist/protect/index.js.map +1 -0
- package/dist/protect/mcp.d.ts +13 -0
- package/dist/protect/mcp.js +49 -0
- package/dist/protect/mcp.js.map +1 -0
- package/dist/protect/mode.d.ts +89 -0
- package/dist/protect/mode.js +134 -0
- package/dist/protect/mode.js.map +1 -0
- package/dist/types.d.ts +22 -0
- 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
|
|
47
|
-
expect((0, findings_1.mask)('ssn', SSN)).toBe('
|
|
48
|
-
expect((0, findings_1.mask)('credit-card', CARD)).toBe('
|
|
49
|
-
|
|
50
|
-
expect(
|
|
51
|
-
|
|
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('
|
|
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(
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAoC;AACpC,gCAA6B;AAC7B,kCAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"findings.test.js","sourceRoot":"","sources":["../../../src/guard/__tests__/findings.test.ts"],"names":[],"mappings":"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"}
|
package/dist/guard/base.d.ts
CHANGED
|
@@ -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;
|
package/dist/guard/base.js
CHANGED
|
@@ -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
|
}
|
package/dist/guard/base.js.map
CHANGED
|
@@ -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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"}
|
package/dist/guard/findings.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* What a reviewer may see of a sensitive value a guard found: its kind, a
|
|
3
|
-
*
|
|
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
|
-
/**
|
|
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. */
|
package/dist/guard/findings.js
CHANGED
|
@@ -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
|
-
*
|
|
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
|
-
/**
|
|
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
|
-
|
|
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":";AAAA;;;;;;;;;;;;;GAaG;;;AAoBH,8CAEC;AAkCD,kCAIC;AAGD,
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
47
|
-
|
|
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
|
-
|
|
249
|
-
|
|
250
|
-
|
|
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
|
|
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
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
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
|
-
|
|
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
|
-
|
|
419
|
+
wrapped.add(npmPackage);
|
|
354
420
|
}
|
|
355
421
|
catch {
|
|
356
422
|
// module not installed, skip silently
|
|
357
423
|
}
|
|
358
424
|
}
|
|
359
|
-
|
|
360
|
-
|
|
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":"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"}
|
package/dist/guard/pipeline.d.ts
CHANGED
|
@@ -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.
|
package/dist/guard/pipeline.js
CHANGED
|
@@ -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)) {
|