promptguard-sdk 1.7.1 → 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/generated/api-types.d.ts +251 -0
- package/dist/generated/api-types.d.ts.map +1 -0
- package/dist/generated/api-types.js +11 -0
- package/dist/generated/api-types.js.map +1 -0
- 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/dist/version.d.ts +1 -1
- package/dist/version.js +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":"AAAA;;;GAGG;AASH,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAMD,UAAU,OAAO;IACf,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAA;IACrC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,UAAU,qBAAqB;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,UAAU,sBAAsB;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,KAAK,CAAC;QACb,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,OAAO,CAAA;QAChB,aAAa,EAAE,MAAM,CAAA;KACtB,CAAC,CAAA;IACF,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAA;QACrB,iBAAiB,EAAE,MAAM,CAAA;QACzB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;CACF;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,UAAU,kBAAkB;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,aAAa,EAAE,MAAM,CAAA;KACtB,CAAC,CAAA;IACF,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAA;QACrB,iBAAiB,EAAE,MAAM,CAAA;QACzB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;CACF;AAED,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,KAAK,CAAC;QACV,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,EAAE,CAAA;QACnB,KAAK,EAAE,MAAM,CAAA;KACd,CAAC,CAAA;IACF,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;CACF;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,UAAU,oBAAoB;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,eAAe,EAAE,MAAM,EAAE,CAAA;CAC1B;AAED,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED,UAAU,cAAc;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,iBAAiB,EAAE,CAAA;CAC7B;AAED,UAAU,wBAAwB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC7B;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACxC,eAAe,EAAE,MAAM,EAAE,CAAA;CAC1B;AAED,UAAU,iBAAiB;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AASD,cAAM,eAAe;IACnB,OAAO,CAAC,MAAM,CAAa;gBACf,MAAM,EAAE,WAAW;IAGzB,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAG7E;AAED,cAAM,IAAI;IACR,WAAW,EAAE,eAAe,CAAA;gBAChB,MAAM,EAAE,WAAW;CAGhC;AAED,cAAM,WAAW;IACf,OAAO,CAAC,MAAM,CAAa;gBACf,MAAM,EAAE,WAAW;IAGzB,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAGrE;AAED,cAAM,UAAU;IACd,OAAO,CAAC,MAAM,CAAa;gBACf,MAAM,EAAE,WAAW;IAGzB,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGnE;AAED,cAAM,QAAQ;IACZ,OAAO,CAAC,MAAM,CAAa;gBACf,MAAM,EAAE,WAAW;IAGzB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,QAAQ,GAAG,UAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAG1F,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;CAM1E;AAED,cAAM,MAAM;IACV,OAAO,CAAC,MAAM,CAAa;gBACf,MAAM,EAAE,WAAW;IAGzB,GAAG,CACP,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACxE,OAAO,CAAC,YAAY,CAAC;IAQlB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAG5F;AAED,cAAM,KAAK;IACT,OAAO,CAAC,MAAM,CAAa;gBACf,MAAM,EAAE,WAAW;IAGzB,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,CAAC;IAQ1B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAG/D;AAED,cAAM,OAAO;IACX,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,IAAI,CAAsB;gBAEtB,MAAM,EAAE,WAAW;IAGzB,SAAS,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,CAAC;IAG9E,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,SAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAK/E,MAAM,CAAC,YAAY,SAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IAKzD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,SAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAM/E,aAAa,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;
|
|
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":"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"}
|