promptguard-sdk 1.8.0 → 1.9.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 +45 -21
- package/dist/auto.d.ts +9 -1
- package/dist/auto.d.ts.map +1 -1
- package/dist/auto.js +11 -3
- package/dist/auto.js.map +1 -1
- package/dist/client.d.ts +18 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +39 -5
- package/dist/client.js.map +1 -1
- package/dist/guard.d.ts +33 -0
- package/dist/guard.d.ts.map +1 -1
- package/dist/guard.js +37 -7
- package/dist/guard.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/integrations/langchain.d.ts +6 -1
- package/dist/integrations/langchain.d.ts.map +1 -1
- package/dist/integrations/langchain.js +10 -4
- package/dist/integrations/langchain.js.map +1 -1
- package/dist/integrations/vercel-ai.d.ts +6 -1
- package/dist/integrations/vercel-ai.d.ts.map +1 -1
- package/dist/integrations/vercel-ai.js +10 -3
- package/dist/integrations/vercel-ai.js.map +1 -1
- package/dist/logger.d.ts +24 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +56 -0
- package/dist/logger.js.map +1 -0
- package/dist/patches/base.d.ts.map +1 -1
- package/dist/patches/base.js +13 -3
- package/dist/patches/base.js.map +1 -1
- package/dist/resolve.d.ts.map +1 -1
- package/dist/resolve.js +2 -1
- package/dist/resolve.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[](https://www.npmjs.com/package/promptguard)
|
|
1
|
+
[](https://www.npmjs.com/package/promptguard-sdk)
|
|
2
2
|
[](https://github.com/acebot712/promptguard-node/actions/workflows/ci.yml)
|
|
3
3
|
[](https://github.com/acebot712/promptguard-node/blob/main/LICENSE)
|
|
4
4
|
[](https://www.typescriptlang.org/)
|
|
@@ -13,18 +13,34 @@ Drop-in security for AI applications. Secure any GenAI app - regardless of frame
|
|
|
13
13
|
npm install promptguard-sdk
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
+
> The npm package and the import specifier are both **`promptguard-sdk`** — no surprises:
|
|
17
|
+
> ```typescript
|
|
18
|
+
> import { init, PromptGuard } from 'promptguard-sdk';
|
|
19
|
+
> ```
|
|
20
|
+
|
|
21
|
+
Get a free API key at [app.promptguard.co](https://app.promptguard.co).
|
|
22
|
+
|
|
23
|
+
> **The SDK reads `PROMPTGUARD_API_KEY` from the environment; it does not auto-load `.env`.** Use [dotenv](https://www.npmjs.com/package/dotenv) (call `import 'dotenv/config'` first) if you keep secrets in a `.env` file.
|
|
24
|
+
|
|
25
|
+
> **PromptGuard fails open by default** — if the Guard API is unavailable, calls proceed *unscanned* so your app stays up. Set `failOpen: false` to block (fail closed) on a Guard outage instead.
|
|
26
|
+
|
|
27
|
+
> **Module format:** the package currently ships **CommonJS** (`require`) builds. It works in ESM projects via Node's CJS interop (`import { init } from 'promptguard-sdk'` transpiles to a `require`), and in plain CommonJS via `const { init } = require('promptguard-sdk')`.
|
|
28
|
+
|
|
16
29
|
## Option 1: Auto-Instrumentation (Recommended)
|
|
17
30
|
|
|
18
31
|
One line secures **every** LLM call in your application - no matter which framework you use.
|
|
19
32
|
|
|
20
33
|
```typescript
|
|
34
|
+
// All imports first — ES module imports are hoisted and always run before
|
|
35
|
+
// any other statement, regardless of their position in the file.
|
|
21
36
|
import { init } from 'promptguard-sdk';
|
|
37
|
+
import OpenAI from 'openai';
|
|
22
38
|
|
|
23
|
-
//
|
|
24
|
-
|
|
39
|
+
// init() runs as the first executed statement and patches the SDK prototypes.
|
|
40
|
+
// Patching works regardless of import order, so you don't need to worry about
|
|
41
|
+
// importing the LLM SDK "after" calling init().
|
|
42
|
+
init({ apiKey: 'pg_live_xxx' });
|
|
25
43
|
|
|
26
|
-
// Everything below is now secured transparently.
|
|
27
|
-
import OpenAI from 'openai';
|
|
28
44
|
const client = new OpenAI();
|
|
29
45
|
|
|
30
46
|
// This call is automatically scanned by PromptGuard.
|
|
@@ -52,17 +68,17 @@ Any framework built on these SDKs is automatically covered: **LangChain.js**, **
|
|
|
52
68
|
|
|
53
69
|
```typescript
|
|
54
70
|
// Enforce mode (default) - blocks policy violations.
|
|
55
|
-
init({ apiKey: '
|
|
71
|
+
init({ apiKey: 'pg_live_xxx', mode: 'enforce' });
|
|
56
72
|
|
|
57
73
|
// Monitor mode - logs threats but never blocks. Good for shadow deployment.
|
|
58
|
-
init({ apiKey: '
|
|
74
|
+
init({ apiKey: 'pg_live_xxx', mode: 'monitor' });
|
|
59
75
|
```
|
|
60
76
|
|
|
61
77
|
### Options
|
|
62
78
|
|
|
63
79
|
```typescript
|
|
64
80
|
init({
|
|
65
|
-
apiKey: '
|
|
81
|
+
apiKey: 'pg_live_xxx', // or set PROMPTGUARD_API_KEY env var
|
|
66
82
|
baseUrl: 'https://...', // or set PROMPTGUARD_BASE_URL env var
|
|
67
83
|
mode: 'enforce', // 'enforce' | 'monitor'
|
|
68
84
|
failOpen: true, // allow calls when Guard API is unreachable
|
|
@@ -87,7 +103,7 @@ Route LLM traffic through PromptGuard. Just swap your base URL.
|
|
|
87
103
|
```typescript
|
|
88
104
|
import { PromptGuard } from 'promptguard-sdk';
|
|
89
105
|
|
|
90
|
-
const pg = new PromptGuard({ apiKey: '
|
|
106
|
+
const pg = new PromptGuard({ apiKey: 'pg_live_xxx' });
|
|
91
107
|
|
|
92
108
|
// Use exactly like the OpenAI client.
|
|
93
109
|
const response = await pg.chat.completions.create({
|
|
@@ -123,7 +139,7 @@ import { PromptGuardCallbackHandler } from 'promptguard-sdk/integrations/langcha
|
|
|
123
139
|
import { ChatOpenAI } from '@langchain/openai';
|
|
124
140
|
|
|
125
141
|
const handler = new PromptGuardCallbackHandler({
|
|
126
|
-
apiKey: '
|
|
142
|
+
apiKey: 'pg_live_xxx',
|
|
127
143
|
mode: 'enforce',
|
|
128
144
|
scanResponses: true,
|
|
129
145
|
});
|
|
@@ -153,7 +169,7 @@ import { promptGuardMiddleware } from 'promptguard-sdk/integrations/vercel-ai';
|
|
|
153
169
|
const model = wrapLanguageModel({
|
|
154
170
|
model: openai('gpt-5-nano'),
|
|
155
171
|
middleware: promptGuardMiddleware({
|
|
156
|
-
apiKey: '
|
|
172
|
+
apiKey: 'pg_live_xxx',
|
|
157
173
|
mode: 'enforce',
|
|
158
174
|
scanResponses: true,
|
|
159
175
|
}),
|
|
@@ -172,13 +188,12 @@ Use the Guard client directly for maximum control:
|
|
|
172
188
|
```typescript
|
|
173
189
|
import { GuardClient } from 'promptguard-sdk';
|
|
174
190
|
|
|
175
|
-
const guard = new GuardClient({ apiKey: '
|
|
191
|
+
const guard = new GuardClient({ apiKey: 'pg_live_xxx' });
|
|
176
192
|
|
|
177
|
-
// Scan before sending to LLM
|
|
193
|
+
// Scan before sending to LLM (options-object form, preferred)
|
|
178
194
|
const decision = await guard.scan(
|
|
179
195
|
[{ role: 'user', content: userInput }],
|
|
180
|
-
'input',
|
|
181
|
-
'gpt-5-nano',
|
|
196
|
+
{ direction: 'input', model: 'gpt-5-nano' },
|
|
182
197
|
);
|
|
183
198
|
|
|
184
199
|
if (decision.blocked) {
|
|
@@ -191,8 +206,11 @@ if (decision.blocked) {
|
|
|
191
206
|
// Scan LLM response
|
|
192
207
|
const outputDecision = await guard.scan(
|
|
193
208
|
[{ role: 'assistant', content: llmOutput }],
|
|
194
|
-
'output',
|
|
209
|
+
{ direction: 'output' },
|
|
195
210
|
);
|
|
211
|
+
|
|
212
|
+
// The positional form still works for back-compat:
|
|
213
|
+
// await guard.scan(messages, 'input', 'gpt-5-nano');
|
|
196
214
|
```
|
|
197
215
|
|
|
198
216
|
## Retry Logic
|
|
@@ -201,9 +219,9 @@ Both `PromptGuard` and `GuardClient` support configurable retry behavior for tra
|
|
|
201
219
|
|
|
202
220
|
```typescript
|
|
203
221
|
const pg = new PromptGuard({
|
|
204
|
-
apiKey: '
|
|
205
|
-
maxRetries: 3, // Number of retry attempts (default:
|
|
206
|
-
retryDelay: 500, // Base delay in ms between retries (default:
|
|
222
|
+
apiKey: 'pg_live_xxx',
|
|
223
|
+
maxRetries: 3, // Number of retry attempts (default: 3)
|
|
224
|
+
retryDelay: 500, // Base delay in ms between retries (default: 1000)
|
|
207
225
|
});
|
|
208
226
|
```
|
|
209
227
|
|
|
@@ -250,12 +268,12 @@ if (!validation.allowed) {
|
|
|
250
268
|
## Red Team Testing
|
|
251
269
|
|
|
252
270
|
```typescript
|
|
253
|
-
const pg = new PromptGuard({ apiKey: '
|
|
271
|
+
const pg = new PromptGuard({ apiKey: 'pg_live_xxx' });
|
|
254
272
|
|
|
255
273
|
// Run the autonomous red team agent (LLM-powered mutation)
|
|
256
274
|
const report = await pg.redteam.runAutonomous({
|
|
257
275
|
budget: 200,
|
|
258
|
-
|
|
276
|
+
targetPreset: 'support_bot:strict', // snake_case `target_preset` also accepted
|
|
259
277
|
});
|
|
260
278
|
console.log(`Grade: ${report.grade}, Bypass rate: ${(report.bypass_rate * 100).toFixed(0)}%`);
|
|
261
279
|
|
|
@@ -274,6 +292,12 @@ console.log(`Total patterns: ${stats.total_patterns}`);
|
|
|
274
292
|
| `failOpen` | - | `true` | Allow calls when Guard API is unreachable |
|
|
275
293
|
| `scanResponses` | - | `false` | Also scan LLM responses |
|
|
276
294
|
| `timeout` | - | `10000` | HTTP timeout in milliseconds |
|
|
295
|
+
| `logLevel` | - | `"warn"` | SDK log verbosity: `"debug"`, `"info"`, `"warn"`, `"error"`, `"silent"` |
|
|
296
|
+
| `silent` | - | `false` | Shorthand for `logLevel: "silent"` |
|
|
297
|
+
|
|
298
|
+
> The proxy client (`PromptGuard`) talks to the `/api/v1/proxy` endpoints. If you set `baseUrl` / `PROMPTGUARD_BASE_URL` to `.../api/v1` (without `/proxy`), the SDK appends the `/proxy` suffix for you, so requests still land on the proxy.
|
|
299
|
+
>
|
|
300
|
+
> **Security:** the SDK sends your API key (and, in proxy mode, your prompt content) to whatever `PROMPTGUARD_BASE_URL` points at. Self-hosting is supported, so only point it at a host you trust.
|
|
277
301
|
|
|
278
302
|
## Error Handling
|
|
279
303
|
|
package/dist/auto.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* ```ts
|
|
10
10
|
* import { init } from 'promptguard-sdk/auto';
|
|
11
11
|
*
|
|
12
|
-
* init({ apiKey: '
|
|
12
|
+
* init({ apiKey: 'pg_live_xxx' });
|
|
13
13
|
*
|
|
14
14
|
* // Everything below is now secured transparently.
|
|
15
15
|
* import OpenAI from 'openai';
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
* ```
|
|
19
19
|
*/
|
|
20
20
|
import { GuardClient } from "./guard";
|
|
21
|
+
import { type LogLevel } from "./logger";
|
|
21
22
|
export interface InitOptions {
|
|
22
23
|
apiKey?: string;
|
|
23
24
|
baseUrl?: string;
|
|
@@ -29,6 +30,13 @@ export interface InitOptions {
|
|
|
29
30
|
scanResponses?: boolean;
|
|
30
31
|
/** HTTP timeout in ms for Guard API calls (default: `10000`). */
|
|
31
32
|
timeout?: number;
|
|
33
|
+
/**
|
|
34
|
+
* SDK log verbosity (default: `"warn"`). Set to `"silent"` to suppress all
|
|
35
|
+
* SDK logging, or `"info"`/`"debug"` for the init banner and more detail.
|
|
36
|
+
*/
|
|
37
|
+
logLevel?: LogLevel;
|
|
38
|
+
/** Convenience shorthand for `logLevel: "silent"`. */
|
|
39
|
+
silent?: boolean;
|
|
32
40
|
}
|
|
33
41
|
export declare function init(options?: InitOptions): void;
|
|
34
42
|
export declare function shutdown(): void;
|
package/dist/auto.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../src/auto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../src/auto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,KAAK,QAAQ,EAAuB,MAAM,UAAU,CAAA;AAkB7D,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mFAAmF;IACnF,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAC5B,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kDAAkD;IAClD,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,sDAAsD;IACtD,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,wBAAgB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,IAAI,CA4BpD;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAU/B;AAMD,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAEnD;AAED,wBAAgB,OAAO,IAAI,SAAS,GAAG,SAAS,CAE/C;AAED,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C"}
|
package/dist/auto.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* ```ts
|
|
11
11
|
* import { init } from 'promptguard-sdk/auto';
|
|
12
12
|
*
|
|
13
|
-
* init({ apiKey: '
|
|
13
|
+
* init({ apiKey: 'pg_live_xxx' });
|
|
14
14
|
*
|
|
15
15
|
* // Everything below is now secured transparently.
|
|
16
16
|
* import OpenAI from 'openai';
|
|
@@ -26,6 +26,7 @@ exports.getMode = getMode;
|
|
|
26
26
|
exports.isFailOpen = isFailOpen;
|
|
27
27
|
exports.shouldScanResponses = shouldScanResponses;
|
|
28
28
|
const guard_1 = require("./guard");
|
|
29
|
+
const logger_1 = require("./logger");
|
|
29
30
|
const resolve_1 = require("./resolve");
|
|
30
31
|
// ---------------------------------------------------------------------------
|
|
31
32
|
// Global state
|
|
@@ -36,10 +37,16 @@ let failOpen = true;
|
|
|
36
37
|
let scanResponses = false;
|
|
37
38
|
const appliedPatches = [];
|
|
38
39
|
function init(options = {}) {
|
|
40
|
+
if (options.silent) {
|
|
41
|
+
(0, logger_1.setLogLevel)("silent");
|
|
42
|
+
}
|
|
43
|
+
else if (options.logLevel) {
|
|
44
|
+
(0, logger_1.setLogLevel)(options.logLevel);
|
|
45
|
+
}
|
|
39
46
|
const { apiKey, baseUrl } = (0, resolve_1.resolveCredentials)(options.apiKey, options.baseUrl);
|
|
40
47
|
const resolvedMode = options.mode ?? "enforce";
|
|
41
48
|
if (resolvedMode !== "enforce" && resolvedMode !== "monitor") {
|
|
42
|
-
throw new Error(
|
|
49
|
+
throw new Error(`mode must be 'enforce' or 'monitor', got '${resolvedMode}'`);
|
|
43
50
|
}
|
|
44
51
|
guardClient = new guard_1.GuardClient({
|
|
45
52
|
apiKey,
|
|
@@ -50,7 +57,8 @@ function init(options = {}) {
|
|
|
50
57
|
failOpen = options.failOpen ?? true;
|
|
51
58
|
scanResponses = options.scanResponses ?? false;
|
|
52
59
|
applyPatches();
|
|
53
|
-
|
|
60
|
+
// Suppressed by default (info level). Set logLevel: "info" to see this.
|
|
61
|
+
logger_1.logger.info(`auto-instrumentation initialised (mode=${mode}, fail_open=${failOpen})`);
|
|
54
62
|
}
|
|
55
63
|
function shutdown() {
|
|
56
64
|
for (const patch of appliedPatches) {
|
package/dist/auto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../src/auto.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;
|
|
1
|
+
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../src/auto.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -124,7 +124,13 @@ interface RedTeamSummary {
|
|
|
124
124
|
}
|
|
125
125
|
interface AutonomousRedTeamRequest {
|
|
126
126
|
budget?: number;
|
|
127
|
+
/** Target preset to attack (camelCase, preferred). */
|
|
128
|
+
targetPreset?: string;
|
|
129
|
+
/** Detectors to enable for the run (camelCase, preferred). */
|
|
130
|
+
enabledDetectors?: string[];
|
|
131
|
+
/** @deprecated snake_case alias for `targetPreset`; kept for back-compat. */
|
|
127
132
|
target_preset?: string;
|
|
133
|
+
/** @deprecated snake_case alias for `enabledDetectors`; kept for back-compat. */
|
|
128
134
|
enabled_detectors?: string[];
|
|
129
135
|
}
|
|
130
136
|
interface AutonomousRedTeamReport {
|
|
@@ -141,6 +147,18 @@ interface IntelligenceStats {
|
|
|
141
147
|
by_severity: Record<string, number>;
|
|
142
148
|
recent_discoveries: number;
|
|
143
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Ensure the proxy base URL's path ends with `/proxy`.
|
|
152
|
+
*
|
|
153
|
+
* The proxy endpoints live under `/api/v1/proxy`. Users frequently set
|
|
154
|
+
* `PROMPTGUARD_BASE_URL` (or pass `baseUrl`) to `.../api/v1` without the
|
|
155
|
+
* `/proxy` suffix, which would route proxy requests to the wrong path.
|
|
156
|
+
* Append it when missing so requests always land on the proxy.
|
|
157
|
+
*
|
|
158
|
+
* Uses `URL` parsing so a trailing slash, query string, or fragment is handled
|
|
159
|
+
* correctly and the scheme/host/port/query/fragment are preserved exactly.
|
|
160
|
+
*/
|
|
161
|
+
export declare function ensureProxySuffix(baseUrl: string): string;
|
|
144
162
|
declare class ChatCompletions {
|
|
145
163
|
private client;
|
|
146
164
|
constructor(client: PromptGuard);
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.PromptGuardError = exports.PromptGuard = void 0;
|
|
8
|
+
exports.ensureProxySuffix = ensureProxySuffix;
|
|
8
9
|
const resolve_1 = require("./resolve");
|
|
9
10
|
const version_1 = require("./version");
|
|
10
11
|
// ---------------------------------------------------------------------------
|
|
@@ -12,6 +13,34 @@ const version_1 = require("./version");
|
|
|
12
13
|
// ---------------------------------------------------------------------------
|
|
13
14
|
const RETRYABLE_STATUS_CODES = new Set([429, 500, 502, 503, 504]);
|
|
14
15
|
const PROXY_BASE_URL = `${resolve_1.DEFAULT_BASE_URL}/proxy`;
|
|
16
|
+
/**
|
|
17
|
+
* Ensure the proxy base URL's path ends with `/proxy`.
|
|
18
|
+
*
|
|
19
|
+
* The proxy endpoints live under `/api/v1/proxy`. Users frequently set
|
|
20
|
+
* `PROMPTGUARD_BASE_URL` (or pass `baseUrl`) to `.../api/v1` without the
|
|
21
|
+
* `/proxy` suffix, which would route proxy requests to the wrong path.
|
|
22
|
+
* Append it when missing so requests always land on the proxy.
|
|
23
|
+
*
|
|
24
|
+
* Uses `URL` parsing so a trailing slash, query string, or fragment is handled
|
|
25
|
+
* correctly and the scheme/host/port/query/fragment are preserved exactly.
|
|
26
|
+
*/
|
|
27
|
+
function ensureProxySuffix(baseUrl) {
|
|
28
|
+
let url;
|
|
29
|
+
try {
|
|
30
|
+
url = new URL(baseUrl);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// Not a parseable absolute URL — fall back to safe string handling so we
|
|
34
|
+
// never throw from the constructor on an unusual but intended value.
|
|
35
|
+
const trimmed = baseUrl.replace(/\/+$/, "");
|
|
36
|
+
return trimmed.split("/").pop() === "proxy" ? trimmed : `${trimmed}/proxy`;
|
|
37
|
+
}
|
|
38
|
+
// Strip a single trailing slash from the path so we operate on segments.
|
|
39
|
+
const path = url.pathname.endsWith("/") ? url.pathname.slice(0, -1) : url.pathname;
|
|
40
|
+
// Append /proxy only when the last path segment isn't already "proxy".
|
|
41
|
+
url.pathname = path.split("/").pop() === "proxy" ? path : `${path}/proxy`;
|
|
42
|
+
return url.toString();
|
|
43
|
+
}
|
|
15
44
|
class ChatCompletions {
|
|
16
45
|
constructor(client) {
|
|
17
46
|
this.client = client;
|
|
@@ -112,10 +141,13 @@ class RedTeam {
|
|
|
112
141
|
});
|
|
113
142
|
}
|
|
114
143
|
async runAutonomous(options) {
|
|
144
|
+
// Accept camelCase (preferred) with snake_case aliases for back-compat.
|
|
145
|
+
const targetPreset = options?.targetPreset ?? options?.target_preset ?? "default";
|
|
146
|
+
const enabledDetectors = options?.enabledDetectors ?? options?.enabled_detectors;
|
|
115
147
|
return this.client.request("POST", `${this.base}/autonomous`, {
|
|
116
148
|
budget: options?.budget ?? 100,
|
|
117
|
-
target_preset:
|
|
118
|
-
...(
|
|
149
|
+
target_preset: targetPreset,
|
|
150
|
+
...(enabledDetectors && { enabled_detectors: enabledDetectors }),
|
|
119
151
|
});
|
|
120
152
|
}
|
|
121
153
|
async intelligenceStats() {
|
|
@@ -130,10 +162,12 @@ class PromptGuard {
|
|
|
130
162
|
const { apiKey, baseUrl } = (0, resolve_1.resolveCredentials)(config.apiKey, config.baseUrl, PROXY_BASE_URL);
|
|
131
163
|
this.config = {
|
|
132
164
|
apiKey,
|
|
133
|
-
baseUrl,
|
|
165
|
+
baseUrl: ensureProxySuffix(baseUrl),
|
|
134
166
|
timeout: config.timeout ?? 30000,
|
|
135
|
-
|
|
136
|
-
|
|
167
|
+
// Clamp to >= 0 so a negative value can never collapse the request loop
|
|
168
|
+
// to zero attempts (which would silently skip the security scan).
|
|
169
|
+
maxRetries: Math.max(0, config.maxRetries ?? 3),
|
|
170
|
+
retryDelay: Math.max(0, config.retryDelay ?? 1000),
|
|
137
171
|
};
|
|
138
172
|
this.chat = new Chat(this);
|
|
139
173
|
this.completions = new Completions(this);
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAiMH,8CAeC;AA9MD,uCAAgE;AAChE,uCAAuC;AA4KvC,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AACjE,MAAM,cAAc,GAAG,GAAG,0BAAgB,QAAQ,CAAA;AAElD;;;;;;;;;;GAUG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,IAAI,GAAQ,CAAA;IACZ,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;QACzE,qEAAqE;QACrE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAC3C,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,QAAQ,CAAA;IAC5E,CAAC;IACD,yEAAyE;IACzE,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAA;IAClF,uEAAuE;IACvE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAA;IACzE,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;AACvB,CAAC;AAED,MAAM,eAAe;IAEnB,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,MAA6B;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAyB,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAA;IACzF,CAAC;CACF;AAED,MAAM,IAAI;IAER,YAAY,MAAmB;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAA;IAChD,CAAC;CACF;AAED,MAAM,WAAW;IAEf,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,MAAyB;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAqB,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAA;IAChF,CAAC;CACF;AAED,MAAM,UAAU;IAEd,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,MAAwB;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAoB,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAA;IAC9E,CAAC;CACF;AAED,MAAM,QAAQ;IAEZ,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,OAA8B,QAAQ;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAqB,MAAM,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7F,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,QAAmB;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAe,MAAM,EAAE,kBAAkB,EAAE;YACnE,OAAO;YACP,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAA;IACJ,CAAC;CACF;AAED,MAAM,MAAM;IAEV,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IACD,KAAK,CAAC,GAAG,CACP,GAAW,EACX,OAAyE;QAEzE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAe,MAAM,EAAE,SAAS,EAAE;YAC1D,GAAG;YACH,SAAS,EAAE,OAAO,EAAE,QAAQ,IAAI,KAAK;YACrC,YAAY,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI;YAC1C,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;SAChC,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,IAAc,EAAE,OAAiC;QAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAA;IAC3E,CAAC;CACF;AAED,MAAM,KAAK;IAET,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IACD,KAAK,CAAC,YAAY,CAChB,OAAe,EACf,QAAgB,EAChB,IAA6B,EAC7B,SAAkB;QAElB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAuB,MAAM,EAAE,sBAAsB,EAAE;YAC/E,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,SAAS;SACtB,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,OAAe;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,OAAO,QAAQ,CAAC,CAAA;IAC9D,CAAC;CACF;AAED,MAAM,OAAO;IAIX,YAAY,MAAmB;QAFvB,SAAI,GAAG,mBAAmB,CAAA;QAGhC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IACD,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAA;IACzD,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,YAAY,GAAG,SAAS;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAoB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,SAAS,QAAQ,EAAE,EAAE;YACrF,aAAa,EAAE,YAAY;SAC5B,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,YAAY,GAAG,SAAS;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAiB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,WAAW,EAAE;YAC1E,aAAa,EAAE,YAAY;SAC5B,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,YAAY,GAAG,SAAS;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAoB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,cAAc,EAAE;YAChF,aAAa,EAAE,MAAM;YACrB,aAAa,EAAE,YAAY;SAC5B,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,OAAkC;QACpD,wEAAwE;QACxE,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,OAAO,EAAE,aAAa,IAAI,SAAS,CAAA;QACjF,MAAM,gBAAgB,GAAG,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,iBAAiB,CAAA;QAChF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAA0B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,aAAa,EAAE;YACrF,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG;YAC9B,aAAa,EAAE,YAAY;YAC3B,GAAG,CAAC,gBAAgB,IAAI,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;SACjE,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,CAAC,iBAAiB;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAoB,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,qBAAqB,CAAC,CAAA;IACzF,CAAC;CACF;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAa,WAAW;IAWtB,YAAY,MAAyB;QACnC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,4BAAkB,EAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;QAE7F,IAAI,CAAC,MAAM,GAAG;YACZ,MAAM;YACN,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC;YACnC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;YAChC,wEAAwE;YACxE,kEAAkE;YAClE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;YAC/C,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;SACnD,CAAA;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAA;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,IAAc;QAC3D,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,EAAE,CAAA;QAC3C,IAAI,SAA4B,CAAA;QAEhC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YACnE,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAChC,MAAM;oBACN,OAAO,EAAE;wBACP,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;wBAC/B,cAAc,EAAE,kBAAkB;wBAClC,mBAAmB,EAAE,MAAM;wBAC3B,uBAAuB,EAAE,qBAAW;qBACrC;oBACD,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;oBAC7C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;iBACjD,CAAC,CAAA;gBAEF,IAAI,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;oBACpF,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAA;oBAC9E,SAAQ;gBACV,CAAC;gBAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,SAAS,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAUzD,CAAA;oBACD,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAA;oBAC3B,MAAM,IAAI,gBAAgB,CACxB,GAAG,EAAE,OAAO,IAAI,gBAAgB,EAChC,GAAG,EAAE,IAAI,IAAI,SAAS,EACtB,QAAQ,CAAC,MAAM,EACf;wBACE,IAAI,EAAE,GAAG,EAAE,IAAI;wBACf,UAAU,EAAE,GAAG,EAAE,WAAW;wBAC5B,WAAW,EAAE,GAAG,EAAE,YAAY;wBAC9B,YAAY,EAAE,GAAG,EAAE,aAAa;wBAChC,aAAa,EAAE,GAAG,EAAE,cAAc;qBACnC,CACF,CAAA;gBACH,CAAC;gBAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAA;YACtC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,gBAAgB;oBAAE,MAAM,GAAG,CAAA;gBAC9C,SAAS,GAAG,GAAY,CAAA;gBACxB,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;oBACrC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAA;gBAChF,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,SAAS,IAAI,IAAI,gBAAgB,CAAC,sBAAsB,EAAE,aAAa,EAAE,CAAC,CAAC,CAAA;IACnF,CAAC;CACF;AA/FD,kCA+FC;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,MAAa,gBAAiB,SAAQ,KAAK;IASzC,YACE,OAAe,EACf,IAAY,EACZ,UAAkB,EAClB,KAMC;QAED,KAAK,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,IAAI,CAAA;QAC5B,IAAI,CAAC,UAAU,GAAG,KAAK,EAAE,UAAU,CAAA;QACnC,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,WAAW,CAAA;QACrC,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,YAAY,CAAA;QACvC,IAAI,CAAC,aAAa,GAAG,KAAK,EAAE,aAAa,CAAA;IAC3C,CAAC;CACF;AA/BD,4CA+BC;AAED,kBAAe,WAAW,CAAA"}
|
package/dist/guard.d.ts
CHANGED
|
@@ -23,6 +23,12 @@ export interface GuardRequestBody {
|
|
|
23
23
|
model?: string;
|
|
24
24
|
context?: GuardContext;
|
|
25
25
|
}
|
|
26
|
+
/** Options-object form for {@link GuardClient.scan}. */
|
|
27
|
+
export interface ScanOptions {
|
|
28
|
+
direction?: "input" | "output";
|
|
29
|
+
model?: string;
|
|
30
|
+
context?: GuardContext;
|
|
31
|
+
}
|
|
26
32
|
export interface ThreatDetail {
|
|
27
33
|
type: string;
|
|
28
34
|
confidence: number;
|
|
@@ -53,7 +59,25 @@ export declare class GuardDecision {
|
|
|
53
59
|
export declare class GuardApiError extends Error {
|
|
54
60
|
readonly statusCode?: number;
|
|
55
61
|
constructor(message: string, statusCode?: number);
|
|
62
|
+
/**
|
|
63
|
+
* A content-free description safe to write to logs.
|
|
64
|
+
*
|
|
65
|
+
* The `.message` of a {@link GuardApiError} may embed the raw Guard API
|
|
66
|
+
* response body (see {@link GuardClient.scan}), which can echo prompt
|
|
67
|
+
* content. Loggers must use this instead of `.message` so they never
|
|
68
|
+
* leak prompt content, response bodies, or the API key.
|
|
69
|
+
*/
|
|
70
|
+
safeDescription(): string;
|
|
56
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Return a log-safe description for an error caught on the fail-open path.
|
|
74
|
+
*
|
|
75
|
+
* For a {@link GuardApiError} this emits only HTTP status + a static message
|
|
76
|
+
* (never the response body or prompt content). Any other error type is a real
|
|
77
|
+
* bug that the fail-open paths re-throw before reaching here, so we fall back
|
|
78
|
+
* to a generic label rather than risk logging arbitrary contents.
|
|
79
|
+
*/
|
|
80
|
+
export declare function safeErrorLabel(err: unknown): string;
|
|
57
81
|
export declare class PromptGuardBlockedError extends Error {
|
|
58
82
|
readonly decision: GuardDecision;
|
|
59
83
|
constructor(decision: GuardDecision);
|
|
@@ -74,7 +98,16 @@ export declare class GuardClient {
|
|
|
74
98
|
*
|
|
75
99
|
* Throws {@link GuardApiError} on network/API errors so the caller
|
|
76
100
|
* can decide whether to fail open or closed.
|
|
101
|
+
*
|
|
102
|
+
* Two call styles are supported:
|
|
103
|
+
* ```ts
|
|
104
|
+
* // Options object (preferred, matches the rest of the SDK):
|
|
105
|
+
* await guard.scan(messages, { direction: "input", model: "gpt-5-nano" })
|
|
106
|
+
* // Positional (back-compat):
|
|
107
|
+
* await guard.scan(messages, "input", "gpt-5-nano")
|
|
108
|
+
* ```
|
|
77
109
|
*/
|
|
110
|
+
scan(messages: GuardMessage[], options?: ScanOptions): Promise<GuardDecision>;
|
|
78
111
|
scan(messages: GuardMessage[], direction?: "input" | "output", model?: string, context?: GuardContext): Promise<GuardDecision>;
|
|
79
112
|
}
|
|
80
113
|
//# sourceMappingURL=guard.d.ts.map
|
package/dist/guard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,SAAS,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAA;IAClC,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;CACnB;AAMD,qBAAa,aAAa;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAA;IAC1C,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;gBAEd,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAU5C,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,OAAO,IAAI,OAAO,CAErB;CACF;AAMD,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;gBAEhB,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,SAAS,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB;AAED,wDAAwD;AACxD,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAA;IAClC,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;CACnB;AAMD,qBAAa,aAAa;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAA;IAC1C,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;gBAEd,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAU5C,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,OAAO,IAAI,OAAO,CAErB;CACF;AAMD,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;gBAEhB,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAMhD;;;;;;;OAOG;IACH,eAAe,IAAI,MAAM;CAK1B;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAGnD;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAA;gBAEpB,QAAQ,EAAE,aAAa;CASpC;AAMD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;gBAEpB,MAAM,EAAE,iBAAiB;IAOrC,OAAO,CAAC,OAAO;IASf;;;;;;;;;;;;;OAaG;IACG,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAC7E,IAAI,CACR,QAAQ,EAAE,YAAY,EAAE,EACxB,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,EAC9B,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,CAAC;CA6C1B"}
|
package/dist/guard.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.GuardClient = exports.PromptGuardBlockedError = exports.GuardApiError = exports.GuardDecision = void 0;
|
|
11
|
+
exports.safeErrorLabel = safeErrorLabel;
|
|
11
12
|
const resolve_1 = require("./resolve");
|
|
12
13
|
const version_1 = require("./version");
|
|
13
14
|
// ---------------------------------------------------------------------------
|
|
@@ -43,8 +44,34 @@ class GuardApiError extends Error {
|
|
|
43
44
|
this.name = "GuardApiError";
|
|
44
45
|
this.statusCode = statusCode;
|
|
45
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* A content-free description safe to write to logs.
|
|
49
|
+
*
|
|
50
|
+
* The `.message` of a {@link GuardApiError} may embed the raw Guard API
|
|
51
|
+
* response body (see {@link GuardClient.scan}), which can echo prompt
|
|
52
|
+
* content. Loggers must use this instead of `.message` so they never
|
|
53
|
+
* leak prompt content, response bodies, or the API key.
|
|
54
|
+
*/
|
|
55
|
+
safeDescription() {
|
|
56
|
+
return this.statusCode !== undefined
|
|
57
|
+
? `Guard API error (HTTP ${this.statusCode})`
|
|
58
|
+
: "Guard API unreachable (network error)";
|
|
59
|
+
}
|
|
46
60
|
}
|
|
47
61
|
exports.GuardApiError = GuardApiError;
|
|
62
|
+
/**
|
|
63
|
+
* Return a log-safe description for an error caught on the fail-open path.
|
|
64
|
+
*
|
|
65
|
+
* For a {@link GuardApiError} this emits only HTTP status + a static message
|
|
66
|
+
* (never the response body or prompt content). Any other error type is a real
|
|
67
|
+
* bug that the fail-open paths re-throw before reaching here, so we fall back
|
|
68
|
+
* to a generic label rather than risk logging arbitrary contents.
|
|
69
|
+
*/
|
|
70
|
+
function safeErrorLabel(err) {
|
|
71
|
+
if (err instanceof GuardApiError)
|
|
72
|
+
return err.safeDescription();
|
|
73
|
+
return "unexpected error";
|
|
74
|
+
}
|
|
48
75
|
class PromptGuardBlockedError extends Error {
|
|
49
76
|
constructor(decision) {
|
|
50
77
|
const threat = decision.threatType ?? "policy_violation";
|
|
@@ -70,13 +97,16 @@ class GuardClient {
|
|
|
70
97
|
"X-PromptGuard-Version": version_1.SDK_VERSION,
|
|
71
98
|
};
|
|
72
99
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
100
|
+
async scan(messages, directionOrOptions = "input", model, context) {
|
|
101
|
+
let direction;
|
|
102
|
+
if (typeof directionOrOptions === "object") {
|
|
103
|
+
direction = directionOrOptions.direction ?? "input";
|
|
104
|
+
model = directionOrOptions.model;
|
|
105
|
+
context = directionOrOptions.context;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
direction = directionOrOptions;
|
|
109
|
+
}
|
|
80
110
|
const payload = { messages, direction };
|
|
81
111
|
if (model)
|
|
82
112
|
payload.model = model;
|
package/dist/guard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @example
|
|
8
8
|
* ```ts
|
|
9
9
|
* import { init } from 'promptguard-sdk';
|
|
10
|
-
* init({ apiKey: '
|
|
10
|
+
* init({ apiKey: 'pg_live_xxx' });
|
|
11
11
|
* // All LLM calls are now secured automatically.
|
|
12
12
|
* ```
|
|
13
13
|
*
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* @example
|
|
16
16
|
* ```ts
|
|
17
17
|
* import { PromptGuard } from 'promptguard-sdk';
|
|
18
|
-
* const pg = new PromptGuard({ apiKey: '
|
|
18
|
+
* const pg = new PromptGuard({ apiKey: 'pg_live_xxx' });
|
|
19
19
|
* const response = await pg.chat.completions.create({ ... });
|
|
20
20
|
* ```
|
|
21
21
|
*
|
|
@@ -28,7 +28,8 @@
|
|
|
28
28
|
*/
|
|
29
29
|
export { type InitOptions, init, shutdown } from "./auto";
|
|
30
30
|
export { default, PromptGuard, PromptGuardError } from "./client";
|
|
31
|
-
export { GuardApiError, GuardClient, type GuardClientConfig, type GuardContext, GuardDecision, type GuardMessage, type GuardRequestBody, type GuardResponseBody, PromptGuardBlockedError, type ThreatDetail, } from "./guard";
|
|
31
|
+
export { GuardApiError, GuardClient, type GuardClientConfig, type GuardContext, GuardDecision, type GuardMessage, type GuardRequestBody, type GuardResponseBody, PromptGuardBlockedError, type ScanOptions, type ThreatDetail, } from "./guard";
|
|
32
32
|
export { PromptGuardCallbackHandler } from "./integrations/langchain";
|
|
33
33
|
export { promptGuardMiddleware } from "./integrations/vercel-ai";
|
|
34
|
+
export { getLogLevel, type LogLevel, setLogLevel } from "./logger";
|
|
34
35
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,KAAK,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEzD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEjE,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,uBAAuB,EACvB,KAAK,YAAY,GAClB,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,KAAK,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEzD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEjE,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,uBAAuB,EACvB,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* @example
|
|
9
9
|
* ```ts
|
|
10
10
|
* import { init } from 'promptguard-sdk';
|
|
11
|
-
* init({ apiKey: '
|
|
11
|
+
* init({ apiKey: 'pg_live_xxx' });
|
|
12
12
|
* // All LLM calls are now secured automatically.
|
|
13
13
|
* ```
|
|
14
14
|
*
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* @example
|
|
17
17
|
* ```ts
|
|
18
18
|
* import { PromptGuard } from 'promptguard-sdk';
|
|
19
|
-
* const pg = new PromptGuard({ apiKey: '
|
|
19
|
+
* const pg = new PromptGuard({ apiKey: 'pg_live_xxx' });
|
|
20
20
|
* const response = await pg.chat.completions.create({ ... });
|
|
21
21
|
* ```
|
|
22
22
|
*
|
|
@@ -31,7 +31,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
31
31
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
32
32
|
};
|
|
33
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
-
exports.promptGuardMiddleware = exports.PromptGuardCallbackHandler = exports.PromptGuardBlockedError = exports.GuardDecision = exports.GuardClient = exports.GuardApiError = exports.PromptGuardError = exports.PromptGuard = exports.default = exports.shutdown = exports.init = void 0;
|
|
34
|
+
exports.setLogLevel = exports.getLogLevel = exports.promptGuardMiddleware = exports.PromptGuardCallbackHandler = exports.PromptGuardBlockedError = exports.GuardDecision = exports.GuardClient = exports.GuardApiError = exports.PromptGuardError = exports.PromptGuard = exports.default = exports.shutdown = exports.init = void 0;
|
|
35
35
|
// Auto-instrumentation
|
|
36
36
|
var auto_1 = require("./auto");
|
|
37
37
|
Object.defineProperty(exports, "init", { enumerable: true, get: function () { return auto_1.init; } });
|
|
@@ -52,4 +52,8 @@ var langchain_1 = require("./integrations/langchain");
|
|
|
52
52
|
Object.defineProperty(exports, "PromptGuardCallbackHandler", { enumerable: true, get: function () { return langchain_1.PromptGuardCallbackHandler; } });
|
|
53
53
|
var vercel_ai_1 = require("./integrations/vercel-ai");
|
|
54
54
|
Object.defineProperty(exports, "promptGuardMiddleware", { enumerable: true, get: function () { return vercel_ai_1.promptGuardMiddleware; } });
|
|
55
|
+
// Logging controls
|
|
56
|
+
var logger_1 = require("./logger");
|
|
57
|
+
Object.defineProperty(exports, "getLogLevel", { enumerable: true, get: function () { return logger_1.getLogLevel; } });
|
|
58
|
+
Object.defineProperty(exports, "setLogLevel", { enumerable: true, get: function () { return logger_1.setLogLevel; } });
|
|
55
59
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;;;;AAEH,uBAAuB;AACvB,+BAAyD;AAA9B,4FAAA,IAAI,OAAA;AAAE,gGAAA,QAAQ,OAAA;AACzC,eAAe;AACf,mCAAiE;AAAxD,kHAAA,OAAO,OAAA;AAAE,qGAAA,WAAW,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAC/C,qCAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;;;;AAEH,uBAAuB;AACvB,+BAAyD;AAA9B,4FAAA,IAAI,OAAA;AAAE,gGAAA,QAAQ,OAAA;AACzC,eAAe;AACf,mCAAiE;AAAxD,kHAAA,OAAO,OAAA;AAAE,qGAAA,WAAW,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAC/C,qCAAqC;AACrC,iCAYgB;AAXd,sGAAA,aAAa,OAAA;AACb,oGAAA,WAAW,OAAA;AAGX,sGAAA,aAAa,OAAA;AAIb,gHAAA,uBAAuB,OAAA;AAIzB,uDAAuD;AACvD,sDAAqE;AAA5D,uHAAA,0BAA0B,OAAA;AACnC,sDAAgE;AAAvD,kHAAA,qBAAqB,OAAA;AAC9B,mBAAmB;AACnB,mCAAkE;AAAzD,qGAAA,WAAW,OAAA;AAAiB,qGAAA,WAAW,OAAA"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* ```ts
|
|
10
10
|
* import { PromptGuardCallbackHandler } from 'promptguard-sdk/integrations/langchain';
|
|
11
11
|
*
|
|
12
|
-
* const handler = new PromptGuardCallbackHandler({ apiKey: '
|
|
12
|
+
* const handler = new PromptGuardCallbackHandler({ apiKey: 'pg_live_xxx' });
|
|
13
13
|
*
|
|
14
14
|
* const llm = new ChatOpenAI({ callbacks: [handler] });
|
|
15
15
|
* // or
|
|
@@ -17,10 +17,15 @@
|
|
|
17
17
|
* ```
|
|
18
18
|
*/
|
|
19
19
|
import { type GuardClientConfig } from "../guard";
|
|
20
|
+
import { type LogLevel } from "../logger";
|
|
20
21
|
export interface PromptGuardCallbackOptions extends GuardClientConfig {
|
|
21
22
|
mode?: "enforce" | "monitor";
|
|
22
23
|
scanResponses?: boolean;
|
|
23
24
|
failOpen?: boolean;
|
|
25
|
+
/** SDK log verbosity (default: `"warn"`). Set to `"silent"` to suppress logs. */
|
|
26
|
+
logLevel?: LogLevel;
|
|
27
|
+
/** Convenience shorthand for `logLevel: "silent"`. */
|
|
28
|
+
silent?: boolean;
|
|
24
29
|
}
|
|
25
30
|
export declare class PromptGuardCallbackHandler {
|
|
26
31
|
readonly name = "promptguard";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langchain.d.ts","sourceRoot":"","sources":["../../src/integrations/langchain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAEL,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"langchain.d.ts","sourceRoot":"","sources":["../../src/integrations/langchain.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* ```ts
|
|
11
11
|
* import { PromptGuardCallbackHandler } from 'promptguard-sdk/integrations/langchain';
|
|
12
12
|
*
|
|
13
|
-
* const handler = new PromptGuardCallbackHandler({ apiKey: '
|
|
13
|
+
* const handler = new PromptGuardCallbackHandler({ apiKey: 'pg_live_xxx' });
|
|
14
14
|
*
|
|
15
15
|
* const llm = new ChatOpenAI({ callbacks: [handler] });
|
|
16
16
|
* // or
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
21
|
exports.PromptGuardCallbackHandler = void 0;
|
|
22
22
|
const guard_1 = require("../guard");
|
|
23
|
+
const logger_1 = require("../logger");
|
|
23
24
|
const resolve_1 = require("../resolve");
|
|
24
25
|
// ---------------------------------------------------------------------------
|
|
25
26
|
// Handler
|
|
@@ -29,6 +30,10 @@ class PromptGuardCallbackHandler {
|
|
|
29
30
|
this.name = "promptguard";
|
|
30
31
|
/** Chain context per run ID for richer threat detection. */
|
|
31
32
|
this.chainContext = new Map();
|
|
33
|
+
if (options.silent)
|
|
34
|
+
(0, logger_1.setLogLevel)("silent");
|
|
35
|
+
else if (options.logLevel)
|
|
36
|
+
(0, logger_1.setLogLevel)(options.logLevel);
|
|
32
37
|
const { apiKey, baseUrl } = (0, resolve_1.resolveCredentials)(options.apiKey, options.baseUrl);
|
|
33
38
|
this.guard = new guard_1.GuardClient({ apiKey, baseUrl, timeout: options.timeout });
|
|
34
39
|
this.mode = options.mode ?? "enforce";
|
|
@@ -119,9 +124,10 @@ class PromptGuardCallbackHandler {
|
|
|
119
124
|
try {
|
|
120
125
|
return await this.guard.scan(messages, direction, model, context);
|
|
121
126
|
}
|
|
122
|
-
catch {
|
|
127
|
+
catch (err) {
|
|
123
128
|
if (!this.failOpen)
|
|
124
129
|
throw new Error("Guard API unavailable");
|
|
130
|
+
logger_1.logger.warn(`Guard API unavailable, allowing ${direction} unscanned (failOpen=true): ${(0, guard_1.safeErrorLabel)(err)}`);
|
|
125
131
|
return null;
|
|
126
132
|
}
|
|
127
133
|
}
|
|
@@ -131,10 +137,10 @@ class PromptGuardCallbackHandler {
|
|
|
131
137
|
if (decision.blocked) {
|
|
132
138
|
if (this.mode === "enforce")
|
|
133
139
|
throw new guard_1.PromptGuardBlockedError(decision);
|
|
134
|
-
|
|
140
|
+
logger_1.logger.warn(`[monitor] would block: ${decision.threatType} (event=${decision.eventId}, run=${runId})`);
|
|
135
141
|
}
|
|
136
142
|
if (decision.redacted) {
|
|
137
|
-
|
|
143
|
+
logger_1.logger.info(`redacted content (event=${decision.eventId}, run=${runId})`);
|
|
138
144
|
}
|
|
139
145
|
}
|
|
140
146
|
buildContext(runId, parentRunId, component = "unknown", tags, metadata) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langchain.js","sourceRoot":"","sources":["../../src/integrations/langchain.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"langchain.js","sourceRoot":"","sources":["../../src/integrations/langchain.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,17 +12,22 @@
|
|
|
12
12
|
*
|
|
13
13
|
* const model = wrapLanguageModel({
|
|
14
14
|
* model: openai('gpt-5-nano'),
|
|
15
|
-
* middleware: promptGuardMiddleware({ apiKey: '
|
|
15
|
+
* middleware: promptGuardMiddleware({ apiKey: 'pg_live_xxx' }),
|
|
16
16
|
* });
|
|
17
17
|
*
|
|
18
18
|
* const { text } = await generateText({ model, prompt: 'Hello!' });
|
|
19
19
|
* ```
|
|
20
20
|
*/
|
|
21
21
|
import { type GuardClientConfig } from "../guard";
|
|
22
|
+
import { type LogLevel } from "../logger";
|
|
22
23
|
export interface PromptGuardMiddlewareOptions extends GuardClientConfig {
|
|
23
24
|
mode?: "enforce" | "monitor";
|
|
24
25
|
scanResponses?: boolean;
|
|
25
26
|
failOpen?: boolean;
|
|
27
|
+
/** SDK log verbosity (default: `"warn"`). Set to `"silent"` to suppress logs. */
|
|
28
|
+
logLevel?: LogLevel;
|
|
29
|
+
/** Convenience shorthand for `logLevel: "silent"`. */
|
|
30
|
+
silent?: boolean;
|
|
26
31
|
}
|
|
27
32
|
/**
|
|
28
33
|
* Create a Vercel AI SDK middleware that scans inputs/outputs via
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-ai.d.ts","sourceRoot":"","sources":["../../src/integrations/vercel-ai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAEL,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"vercel-ai.d.ts","sourceRoot":"","sources":["../../src/integrations/vercel-ai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EAIvB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,KAAK,QAAQ,EAAuB,MAAM,WAAW,CAAA;AAO9D,MAAM,WAAW,4BAA6B,SAAQ,iBAAiB;IACrE,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,sDAAsD;IACtD,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAMD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B;IAYvE;;OAEG;kCACiC;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE;IAuCvE;;OAEG;6CAKI;QACD,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;QAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAChC;EAoCR"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* const model = wrapLanguageModel({
|
|
15
15
|
* model: openai('gpt-5-nano'),
|
|
16
|
-
* middleware: promptGuardMiddleware({ apiKey: '
|
|
16
|
+
* middleware: promptGuardMiddleware({ apiKey: 'pg_live_xxx' }),
|
|
17
17
|
* });
|
|
18
18
|
*
|
|
19
19
|
* const { text } = await generateText({ model, prompt: 'Hello!' });
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
23
|
exports.promptGuardMiddleware = promptGuardMiddleware;
|
|
24
24
|
const guard_1 = require("../guard");
|
|
25
|
+
const logger_1 = require("../logger");
|
|
25
26
|
const resolve_1 = require("../resolve");
|
|
26
27
|
// ---------------------------------------------------------------------------
|
|
27
28
|
// Middleware factory
|
|
@@ -34,6 +35,10 @@ const resolve_1 = require("../resolve");
|
|
|
34
35
|
* interface (`transformParams` + `wrapGenerate`).
|
|
35
36
|
*/
|
|
36
37
|
function promptGuardMiddleware(options) {
|
|
38
|
+
if (options.silent)
|
|
39
|
+
(0, logger_1.setLogLevel)("silent");
|
|
40
|
+
else if (options.logLevel)
|
|
41
|
+
(0, logger_1.setLogLevel)(options.logLevel);
|
|
37
42
|
const { apiKey, baseUrl } = (0, resolve_1.resolveCredentials)(options.apiKey, options.baseUrl);
|
|
38
43
|
const guard = new guard_1.GuardClient({ apiKey, baseUrl, timeout: options.timeout });
|
|
39
44
|
const mode = options.mode ?? "enforce";
|
|
@@ -57,7 +62,7 @@ function promptGuardMiddleware(options) {
|
|
|
57
62
|
if (decision.blocked) {
|
|
58
63
|
if (mode === "enforce")
|
|
59
64
|
throw new guard_1.PromptGuardBlockedError(decision);
|
|
60
|
-
|
|
65
|
+
logger_1.logger.warn(`[monitor] would block: ${decision.threatType} (event=${decision.eventId})`);
|
|
61
66
|
}
|
|
62
67
|
if (decision.redacted && decision.redactedMessages && mode === "enforce") {
|
|
63
68
|
return {
|
|
@@ -71,6 +76,7 @@ function promptGuardMiddleware(options) {
|
|
|
71
76
|
throw err;
|
|
72
77
|
if (!failOpen)
|
|
73
78
|
throw err;
|
|
79
|
+
logger_1.logger.warn(`Guard API unavailable, allowing input unscanned (failOpen=true): ${(0, guard_1.safeErrorLabel)(err)}`);
|
|
74
80
|
}
|
|
75
81
|
return params;
|
|
76
82
|
},
|
|
@@ -91,7 +97,7 @@ function promptGuardMiddleware(options) {
|
|
|
91
97
|
if (mode === "enforce") {
|
|
92
98
|
throw new guard_1.PromptGuardBlockedError(respDecision);
|
|
93
99
|
}
|
|
94
|
-
|
|
100
|
+
logger_1.logger.warn(`[monitor] would block response: ${respDecision.threatType}`);
|
|
95
101
|
}
|
|
96
102
|
}
|
|
97
103
|
catch (err) {
|
|
@@ -99,6 +105,7 @@ function promptGuardMiddleware(options) {
|
|
|
99
105
|
throw err;
|
|
100
106
|
if (!failOpen)
|
|
101
107
|
throw err;
|
|
108
|
+
logger_1.logger.warn(`Guard API unavailable, response left unscanned (failOpen=true): ${(0, guard_1.safeErrorLabel)(err)}`);
|
|
102
109
|
}
|
|
103
110
|
return result;
|
|
104
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-ai.js","sourceRoot":"","sources":["../../src/integrations/vercel-ai.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;
|
|
1
|
+
{"version":3,"file":"vercel-ai.js","sourceRoot":"","sources":["../../src/integrations/vercel-ai.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal namespaced, leveled logger for the PromptGuard SDK.
|
|
3
|
+
*
|
|
4
|
+
* Node has no equivalent of Python's `logging` module, so this provides a
|
|
5
|
+
* small, suppressible logger so the SDK does not write to stdout/stderr by
|
|
6
|
+
* default. Mirrors the suppressibility of the Python SDK's `logging` usage.
|
|
7
|
+
*
|
|
8
|
+
* Levels (most → least verbose): "debug" < "info" < "warn" < "error" < "silent".
|
|
9
|
+
* Default level is "warn": warnings/errors surface, info/debug are suppressed.
|
|
10
|
+
* Set verbosity via {@link setLogLevel} (or the `logLevel` / `silent` options
|
|
11
|
+
* on `init()` / integration constructors).
|
|
12
|
+
*/
|
|
13
|
+
export type LogLevel = "debug" | "info" | "warn" | "error" | "silent";
|
|
14
|
+
/** Set the global SDK log level. */
|
|
15
|
+
export declare function setLogLevel(level: LogLevel): void;
|
|
16
|
+
/** Get the current global SDK log level. */
|
|
17
|
+
export declare function getLogLevel(): LogLevel;
|
|
18
|
+
export declare const logger: {
|
|
19
|
+
debug(message: string): void;
|
|
20
|
+
info(message: string): void;
|
|
21
|
+
warn(message: string): void;
|
|
22
|
+
error(message: string): void;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;AAcrE,oCAAoC;AACpC,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAEjD;AAED,4CAA4C;AAC5C,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAMD,eAAO,MAAM,MAAM;mBACF,MAAM,GAAG,IAAI;kBAGd,MAAM,GAAG,IAAI;kBAGb,MAAM,GAAG,IAAI;mBAGZ,MAAM,GAAG,IAAI;CAG7B,CAAA"}
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal namespaced, leveled logger for the PromptGuard SDK.
|
|
4
|
+
*
|
|
5
|
+
* Node has no equivalent of Python's `logging` module, so this provides a
|
|
6
|
+
* small, suppressible logger so the SDK does not write to stdout/stderr by
|
|
7
|
+
* default. Mirrors the suppressibility of the Python SDK's `logging` usage.
|
|
8
|
+
*
|
|
9
|
+
* Levels (most → least verbose): "debug" < "info" < "warn" < "error" < "silent".
|
|
10
|
+
* Default level is "warn": warnings/errors surface, info/debug are suppressed.
|
|
11
|
+
* Set verbosity via {@link setLogLevel} (or the `logLevel` / `silent` options
|
|
12
|
+
* on `init()` / integration constructors).
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.logger = void 0;
|
|
16
|
+
exports.setLogLevel = setLogLevel;
|
|
17
|
+
exports.getLogLevel = getLogLevel;
|
|
18
|
+
const LEVEL_ORDER = {
|
|
19
|
+
debug: 10,
|
|
20
|
+
info: 20,
|
|
21
|
+
warn: 30,
|
|
22
|
+
error: 40,
|
|
23
|
+
silent: 100,
|
|
24
|
+
};
|
|
25
|
+
const PREFIX = "[promptguard]";
|
|
26
|
+
let currentLevel = "warn";
|
|
27
|
+
/** Set the global SDK log level. */
|
|
28
|
+
function setLogLevel(level) {
|
|
29
|
+
currentLevel = level;
|
|
30
|
+
}
|
|
31
|
+
/** Get the current global SDK log level. */
|
|
32
|
+
function getLogLevel() {
|
|
33
|
+
return currentLevel;
|
|
34
|
+
}
|
|
35
|
+
function enabled(level) {
|
|
36
|
+
return LEVEL_ORDER[level] >= LEVEL_ORDER[currentLevel] && currentLevel !== "silent";
|
|
37
|
+
}
|
|
38
|
+
exports.logger = {
|
|
39
|
+
debug(message) {
|
|
40
|
+
if (enabled("debug"))
|
|
41
|
+
console.debug(`${PREFIX} ${message}`);
|
|
42
|
+
},
|
|
43
|
+
info(message) {
|
|
44
|
+
if (enabled("info"))
|
|
45
|
+
console.info(`${PREFIX} ${message}`);
|
|
46
|
+
},
|
|
47
|
+
warn(message) {
|
|
48
|
+
if (enabled("warn"))
|
|
49
|
+
console.warn(`${PREFIX} ${message}`);
|
|
50
|
+
},
|
|
51
|
+
error(message) {
|
|
52
|
+
if (enabled("error"))
|
|
53
|
+
console.error(`${PREFIX} ${message}`);
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAiBH,kCAEC;AAGD,kCAEC;AApBD,MAAM,WAAW,GAA6B;IAC5C,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,GAAG;CACZ,CAAA;AAED,MAAM,MAAM,GAAG,eAAe,CAAA;AAE9B,IAAI,YAAY,GAAa,MAAM,CAAA;AAEnC,oCAAoC;AACpC,SAAgB,WAAW,CAAC,KAAe;IACzC,YAAY,GAAG,KAAK,CAAA;AACtB,CAAC;AAED,4CAA4C;AAC5C,SAAgB,WAAW;IACzB,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,SAAS,OAAO,CAAC,KAAkC;IACjD,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,YAAY,CAAC,IAAI,YAAY,KAAK,QAAQ,CAAA;AACrF,CAAC;AAEY,QAAA,MAAM,GAAG;IACpB,KAAK,CAAC,OAAe;QACnB,IAAI,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC,CAAA;IAC7D,CAAC;IACD,IAAI,CAAC,OAAe;QAClB,IAAI,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC,CAAA;IAC3D,CAAC;IACD,IAAI,CAAC,OAAe;QAClB,IAAI,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC,CAAA;IAC3D,CAAC;IACD,KAAK,CAAC,OAAe;QACnB,IAAI,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC,CAAA;IAC7D,CAAC;CACF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/patches/base.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAGL,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/patches/base.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAGL,KAAK,YAAY,EAGlB,MAAM,UAAU,CAAA;AAGjB,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,CACf,IAAI,EAAE,OAAO,EAAE,EACf,OAAO,EAAE,OAAO,KACb;QAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACjD,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,GAAG,IAAI,CAAA;IAC3E,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,OAAO,EAAE,CAAA;IACjF,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAA;CACjE;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EACzC,MAAM,EAAE,WAAW,GAClB,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAoE1C"}
|
package/dist/patches/base.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.createPatchedMethod = createPatchedMethod;
|
|
11
11
|
const guard_1 = require("../guard");
|
|
12
|
+
const logger_1 = require("../logger");
|
|
12
13
|
function createPatchedMethod(original, config) {
|
|
13
14
|
return async function patched(...args) {
|
|
14
15
|
const { getGuardClient, getMode, isFailOpen, shouldScanResponses } = require("../auto");
|
|
@@ -25,13 +26,18 @@ function createPatchedMethod(original, config) {
|
|
|
25
26
|
decision = await guard.scan(messages, "input", model, { framework: config.framework });
|
|
26
27
|
}
|
|
27
28
|
catch (err) {
|
|
28
|
-
|
|
29
|
+
// Only the Guard API being unreachable is eligible for fail-open.
|
|
30
|
+
// Any other error is a real bug and must surface.
|
|
31
|
+
if (!(err instanceof guard_1.GuardApiError))
|
|
29
32
|
throw err;
|
|
33
|
+
if (!isFailOpen())
|
|
34
|
+
throw err;
|
|
35
|
+
logger_1.logger.warn(`Guard API unavailable, allowing request unscanned (failOpen=true): ${(0, guard_1.safeErrorLabel)(err)}`);
|
|
30
36
|
}
|
|
31
37
|
if (decision?.blocked) {
|
|
32
38
|
if (getMode() === "enforce")
|
|
33
39
|
throw new guard_1.PromptGuardBlockedError(decision);
|
|
34
|
-
|
|
40
|
+
logger_1.logger.warn(`[monitor] would block: ${decision.threatType} (event=${decision.eventId})`);
|
|
35
41
|
}
|
|
36
42
|
if (decision?.redacted && decision.redactedMessages && config.applyRedaction) {
|
|
37
43
|
if (getMode() === "enforce") {
|
|
@@ -53,8 +59,12 @@ function createPatchedMethod(original, config) {
|
|
|
53
59
|
catch (err) {
|
|
54
60
|
if (err instanceof guard_1.PromptGuardBlockedError)
|
|
55
61
|
throw err;
|
|
56
|
-
|
|
62
|
+
// Only swallow Guard API outages under fail-open; surface real bugs.
|
|
63
|
+
if (!(err instanceof guard_1.GuardApiError))
|
|
64
|
+
throw err;
|
|
65
|
+
if (!isFailOpen())
|
|
57
66
|
throw err;
|
|
67
|
+
logger_1.logger.warn(`Guard API unavailable, response left unscanned (failOpen=true): ${(0, guard_1.safeErrorLabel)(err)}`);
|
|
58
68
|
}
|
|
59
69
|
}
|
|
60
70
|
return response;
|
package/dist/patches/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/patches/base.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/patches/base.ts"],"names":[],"mappings":"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"}
|
package/dist/resolve.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,gBAAgB,sCAAsC,CAAA;AAEnE,wBAAgB,kBAAkB,CAChC,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,cAAc,SAAmB,GAChC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,gBAAgB,sCAAsC,CAAA;AAEnE,wBAAgB,kBAAkB,CAChC,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,cAAc,SAAmB,GAChC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAYrC"}
|
package/dist/resolve.js
CHANGED
|
@@ -9,7 +9,8 @@ exports.DEFAULT_BASE_URL = "https://api.promptguard.co/api/v1";
|
|
|
9
9
|
function resolveCredentials(apiKey, baseUrl, defaultBaseUrl = exports.DEFAULT_BASE_URL) {
|
|
10
10
|
const key = apiKey ?? process.env.PROMPTGUARD_API_KEY ?? "";
|
|
11
11
|
if (!key) {
|
|
12
|
-
throw new Error("
|
|
12
|
+
throw new Error("API key required. Pass apiKey or set the PROMPTGUARD_API_KEY environment variable. " +
|
|
13
|
+
"Get a key at https://app.promptguard.co");
|
|
13
14
|
}
|
|
14
15
|
return {
|
|
15
16
|
apiKey: key,
|
package/dist/resolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAIH,
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAIH,gDAgBC;AAlBY,QAAA,gBAAgB,GAAG,mCAAmC,CAAA;AAEnE,SAAgB,kBAAkB,CAChC,MAAe,EACf,OAAgB,EAChB,cAAc,GAAG,wBAAgB;IAEjC,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAA;IAC3D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,qFAAqF;YACnF,yCAAyC,CAC5C,CAAA;IACH,CAAC;IACD,OAAO;QACL,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,cAAc;KACvE,CAAA;AACH,CAAC"}
|