promptguard-sdk 1.2.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +226 -78
  3. package/dist/auto.d.ts +40 -0
  4. package/dist/auto.d.ts.map +1 -0
  5. package/dist/auto.js +118 -0
  6. package/dist/auto.js.map +1 -0
  7. package/dist/guard.d.ts +80 -0
  8. package/dist/guard.d.ts.map +1 -0
  9. package/dist/guard.js +104 -0
  10. package/dist/guard.js.map +1 -0
  11. package/dist/index.d.ts +105 -8
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +111 -29
  14. package/dist/index.js.map +1 -1
  15. package/dist/integrations/langchain.d.ts +55 -0
  16. package/dist/integrations/langchain.d.ts.map +1 -0
  17. package/dist/integrations/langchain.js +212 -0
  18. package/dist/integrations/langchain.js.map +1 -0
  19. package/dist/integrations/vercel-ai.d.ts +49 -0
  20. package/dist/integrations/vercel-ai.d.ts.map +1 -0
  21. package/dist/integrations/vercel-ai.js +170 -0
  22. package/dist/integrations/vercel-ai.js.map +1 -0
  23. package/dist/patches/anthropic.d.ts +13 -0
  24. package/dist/patches/anthropic.d.ts.map +1 -0
  25. package/dist/patches/anthropic.js +188 -0
  26. package/dist/patches/anthropic.js.map +1 -0
  27. package/dist/patches/bedrock.d.ts +14 -0
  28. package/dist/patches/bedrock.d.ts.map +1 -0
  29. package/dist/patches/bedrock.js +246 -0
  30. package/dist/patches/bedrock.js.map +1 -0
  31. package/dist/patches/cohere.d.ts +14 -0
  32. package/dist/patches/cohere.d.ts.map +1 -0
  33. package/dist/patches/cohere.js +183 -0
  34. package/dist/patches/cohere.js.map +1 -0
  35. package/dist/patches/google.d.ts +13 -0
  36. package/dist/patches/google.d.ts.map +1 -0
  37. package/dist/patches/google.js +163 -0
  38. package/dist/patches/google.js.map +1 -0
  39. package/dist/patches/openai.d.ts +14 -0
  40. package/dist/patches/openai.d.ts.map +1 -0
  41. package/dist/patches/openai.js +165 -0
  42. package/dist/patches/openai.js.map +1 -0
  43. package/package.json +83 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/patches/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * AWS Bedrock Runtime patch — wraps the `send` method on
3
+ * `BedrockRuntimeClient` from `@aws-sdk/client-bedrock-runtime`.
4
+ *
5
+ * Unlike the other patches which target LLM-specific SDKs, this wraps
6
+ * the AWS SDK v3 command pattern: `client.send(new InvokeModelCommand(...))`
7
+ * and `client.send(new ConverseCommand(...))`.
8
+ *
9
+ * Covers all Bedrock-hosted models: Claude, Titan, Llama, Mistral, Cohere,
10
+ * and any model accessible via the Bedrock Runtime API.
11
+ */
12
+ export declare function apply(): boolean;
13
+ export declare function revert(): void;
14
+ //# sourceMappingURL=bedrock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock.d.ts","sourceRoot":"","sources":["../../src/patches/bedrock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAkJH,wBAAgB,KAAK,IAAI,OAAO,CAyF/B;AAED,wBAAgB,MAAM,IAAI,IAAI,CAe7B"}
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ /**
3
+ * AWS Bedrock Runtime patch — wraps the `send` method on
4
+ * `BedrockRuntimeClient` from `@aws-sdk/client-bedrock-runtime`.
5
+ *
6
+ * Unlike the other patches which target LLM-specific SDKs, this wraps
7
+ * the AWS SDK v3 command pattern: `client.send(new InvokeModelCommand(...))`
8
+ * and `client.send(new ConverseCommand(...))`.
9
+ *
10
+ * Covers all Bedrock-hosted models: Claude, Titan, Llama, Mistral, Cohere,
11
+ * and any model accessible via the Bedrock Runtime API.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.apply = apply;
15
+ exports.revert = revert;
16
+ const guard_1 = require("../guard");
17
+ let originalSend = null;
18
+ let patched = false;
19
+ const BEDROCK_COMMANDS = new Set(["InvokeModelCommand", "ConverseCommand", "ConverseStreamCommand"]);
20
+ // ---------------------------------------------------------------------------
21
+ // Message extraction (Bedrock-specific, handles multiple model formats)
22
+ // ---------------------------------------------------------------------------
23
+ function flattenContentBlocks(content) {
24
+ if (typeof content === "string")
25
+ return content;
26
+ if (Array.isArray(content)) {
27
+ const texts = [];
28
+ for (const block of content) {
29
+ if (typeof block === "object" && block !== null) {
30
+ if (block.type === "text" || "text" in block)
31
+ texts.push(String(block.text ?? ""));
32
+ }
33
+ }
34
+ return texts.join("\n");
35
+ }
36
+ return String(content ?? "");
37
+ }
38
+ function extractSystem(system, result) {
39
+ if (!system)
40
+ return;
41
+ if (typeof system === "string") {
42
+ result.push({ role: "system", content: system });
43
+ }
44
+ else if (Array.isArray(system)) {
45
+ const texts = [];
46
+ for (const block of system) {
47
+ if (typeof block === "object" && block !== null && "text" in block) {
48
+ texts.push(String(block.text ?? ""));
49
+ }
50
+ }
51
+ if (texts.length)
52
+ result.push({ role: "system", content: texts.join("\n") });
53
+ }
54
+ }
55
+ function extractMessagesFromBody(raw, _modelId) {
56
+ let body = raw;
57
+ if (body instanceof Uint8Array || Buffer.isBuffer(body)) {
58
+ try {
59
+ body = JSON.parse(new TextDecoder().decode(body));
60
+ }
61
+ catch {
62
+ return [];
63
+ }
64
+ }
65
+ if (typeof body === "string") {
66
+ try {
67
+ body = JSON.parse(body);
68
+ }
69
+ catch {
70
+ return [{ role: "user", content: body }];
71
+ }
72
+ }
73
+ if (typeof body !== "object" || body === null)
74
+ return [];
75
+ const obj = body;
76
+ const result = [];
77
+ // Anthropic on Bedrock (InvokeModel)
78
+ if (obj.messages && Array.isArray(obj.messages)) {
79
+ extractSystem(obj.system, result);
80
+ for (const msg of obj.messages) {
81
+ if (typeof msg === "object" && msg !== null) {
82
+ result.push({
83
+ role: String(msg.role ?? "user"),
84
+ content: flattenContentBlocks(msg.content ?? ""),
85
+ });
86
+ }
87
+ }
88
+ return result;
89
+ }
90
+ // Converse API (capitalized keys)
91
+ if (obj.Messages && Array.isArray(obj.Messages)) {
92
+ extractSystem(obj.System ?? obj.system, result);
93
+ for (const msg of obj.Messages) {
94
+ if (typeof msg === "object" && msg !== null) {
95
+ result.push({
96
+ role: String((msg.Role ?? msg.role ?? "user")).toLowerCase(),
97
+ content: flattenContentBlocks(msg.Content ?? msg.content ?? ""),
98
+ });
99
+ }
100
+ }
101
+ return result;
102
+ }
103
+ // Amazon Titan
104
+ if (obj.inputText)
105
+ return [{ role: "user", content: String(obj.inputText) }];
106
+ // Llama / Mistral
107
+ if (obj.prompt)
108
+ return [{ role: "user", content: String(obj.prompt) }];
109
+ return [];
110
+ }
111
+ function extractBedrockResponseText(response, commandName) {
112
+ if (!response || typeof response !== "object")
113
+ return "";
114
+ const obj = response;
115
+ if (commandName === "ConverseCommand") {
116
+ const output = obj.output;
117
+ const message = output?.message;
118
+ const content = message?.content;
119
+ if (Array.isArray(content)) {
120
+ return content
121
+ .map((block) => {
122
+ if (typeof block === "object" && block !== null && "text" in block) {
123
+ return String(block.text);
124
+ }
125
+ return "";
126
+ })
127
+ .join("");
128
+ }
129
+ return "";
130
+ }
131
+ const body = obj.body;
132
+ if (body instanceof Uint8Array || (typeof Buffer !== "undefined" && Buffer.isBuffer(body))) {
133
+ try {
134
+ const parsed = JSON.parse(new TextDecoder().decode(body));
135
+ if (typeof parsed.completion === "string")
136
+ return parsed.completion;
137
+ if (typeof parsed.generation === "string")
138
+ return parsed.generation;
139
+ const results = parsed.results;
140
+ if (Array.isArray(results) && results.length > 0) {
141
+ return String(results[0].outputText ?? results[0].text ?? "");
142
+ }
143
+ }
144
+ catch {
145
+ return "";
146
+ }
147
+ }
148
+ return "";
149
+ }
150
+ // ---------------------------------------------------------------------------
151
+ // Apply / revert
152
+ // ---------------------------------------------------------------------------
153
+ function apply() {
154
+ if (patched)
155
+ return true;
156
+ let BedrockRuntimeClient;
157
+ try {
158
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
159
+ const mod = require("@aws-sdk/client-bedrock-runtime");
160
+ BedrockRuntimeClient = mod.BedrockRuntimeClient;
161
+ if (!BedrockRuntimeClient?.prototype?.send)
162
+ return false;
163
+ }
164
+ catch {
165
+ return false;
166
+ }
167
+ originalSend = BedrockRuntimeClient.prototype.send;
168
+ BedrockRuntimeClient.prototype.send = async function patchedSend(...args) {
169
+ const { getGuardClient, getMode, isFailOpen, shouldScanResponses } = require("../auto");
170
+ const command = args[0];
171
+ const commandName = command?.constructor?.name ?? "";
172
+ if (!BEDROCK_COMMANDS.has(commandName)) {
173
+ return originalSend?.apply(this, args);
174
+ }
175
+ const guard = getGuardClient();
176
+ if (!guard)
177
+ return originalSend?.apply(this, args);
178
+ const input = (command.input ?? {});
179
+ const modelId = String(input.modelId ?? input.ModelId ?? "bedrock");
180
+ let guardMessages;
181
+ if (commandName === "InvokeModelCommand") {
182
+ guardMessages = extractMessagesFromBody(input.body, modelId);
183
+ }
184
+ else {
185
+ guardMessages = extractMessagesFromBody(input, modelId);
186
+ }
187
+ // -- Pre-call scan ---------------------------------------------------
188
+ if (guardMessages.length) {
189
+ let decision = null;
190
+ try {
191
+ decision = await guard.scan(guardMessages, "input", modelId, {
192
+ framework: "aws-bedrock",
193
+ });
194
+ }
195
+ catch (err) {
196
+ if (err instanceof guard_1.GuardApiError && !isFailOpen())
197
+ throw err;
198
+ }
199
+ if (decision?.blocked) {
200
+ if (getMode() === "enforce")
201
+ throw new guard_1.PromptGuardBlockedError(decision);
202
+ console.warn(`[promptguard][monitor] would block: ${decision.threatType} (event=${decision.eventId})`);
203
+ }
204
+ }
205
+ // -- Original call ---------------------------------------------------
206
+ const response = await originalSend?.apply(this, args);
207
+ // -- Post-call scan --------------------------------------------------
208
+ if (shouldScanResponses() && response && guard) {
209
+ try {
210
+ const text = extractBedrockResponseText(response, commandName);
211
+ if (text) {
212
+ const respDecision = await guard.scan([{ role: "assistant", content: text }], "output", modelId);
213
+ if (respDecision.blocked && getMode() === "enforce") {
214
+ throw new guard_1.PromptGuardBlockedError(respDecision);
215
+ }
216
+ }
217
+ }
218
+ catch (err) {
219
+ if (err instanceof guard_1.PromptGuardBlockedError)
220
+ throw err;
221
+ if (err instanceof guard_1.GuardApiError && !isFailOpen())
222
+ throw err;
223
+ }
224
+ }
225
+ return response;
226
+ };
227
+ patched = true;
228
+ return true;
229
+ }
230
+ function revert() {
231
+ if (!patched || !originalSend)
232
+ return;
233
+ try {
234
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
235
+ const mod = require("@aws-sdk/client-bedrock-runtime");
236
+ if (mod.BedrockRuntimeClient?.prototype) {
237
+ mod.BedrockRuntimeClient.prototype.send = originalSend;
238
+ }
239
+ }
240
+ catch {
241
+ // ignore
242
+ }
243
+ originalSend = null;
244
+ patched = false;
245
+ }
246
+ //# sourceMappingURL=bedrock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock.js","sourceRoot":"","sources":["../../src/patches/bedrock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Cohere SDK patch — wraps `Client.prototype.chat` and
3
+ * `ClientV2.prototype.chat` from the `cohere-ai` npm package.
4
+ *
5
+ * Covers direct Cohere usage and frameworks that use it (LangChain.js
6
+ * ChatCohere, Haystack, etc.).
7
+ *
8
+ * Cohere has two client generations:
9
+ * - V1 (`Client`): `chat({ message, chatHistory })` returning `{ text }`
10
+ * - V2 (`ClientV2`): `chat({ messages })` returning `{ message.content }`
11
+ */
12
+ export declare function apply(): boolean;
13
+ export declare function revert(): void;
14
+ //# sourceMappingURL=cohere.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cohere.d.ts","sourceRoot":"","sources":["../../src/patches/cohere.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAkIH,wBAAgB,KAAK,IAAI,OAAO,CA8B/B;AAED,wBAAgB,MAAM,IAAI,IAAI,CAqB7B"}
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ /**
3
+ * Cohere SDK patch — wraps `Client.prototype.chat` and
4
+ * `ClientV2.prototype.chat` from the `cohere-ai` npm package.
5
+ *
6
+ * Covers direct Cohere usage and frameworks that use it (LangChain.js
7
+ * ChatCohere, Haystack, etc.).
8
+ *
9
+ * Cohere has two client generations:
10
+ * - V1 (`Client`): `chat({ message, chatHistory })` returning `{ text }`
11
+ * - V2 (`ClientV2`): `chat({ messages })` returning `{ message.content }`
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.apply = apply;
15
+ exports.revert = revert;
16
+ const guard_1 = require("../guard");
17
+ const originals = new Map();
18
+ let patched = false;
19
+ // ---------------------------------------------------------------------------
20
+ // Message conversion
21
+ // ---------------------------------------------------------------------------
22
+ function messagesToGuardFormat(params) {
23
+ const result = [];
24
+ if (params.messages && Array.isArray(params.messages)) {
25
+ for (const msg of params.messages) {
26
+ if (!msg)
27
+ continue;
28
+ const role = String(msg.role ?? "user");
29
+ const content = String(msg.content ?? "");
30
+ result.push({ role, content });
31
+ }
32
+ return result;
33
+ }
34
+ if (params.chatHistory && Array.isArray(params.chatHistory)) {
35
+ for (const msg of params.chatHistory) {
36
+ if (!msg)
37
+ continue;
38
+ const role = String(msg.role ?? "user");
39
+ const content = String(msg.message ?? msg.content ?? "");
40
+ result.push({ role, content });
41
+ }
42
+ }
43
+ if (params.message) {
44
+ result.push({ role: "user", content: String(params.message) });
45
+ }
46
+ return result;
47
+ }
48
+ function extractResponseText(response) {
49
+ try {
50
+ const r = response;
51
+ if (typeof r?.text === "string")
52
+ return r.text;
53
+ const message = r?.message;
54
+ if (message?.content) {
55
+ const parts = message.content;
56
+ if (Array.isArray(parts)) {
57
+ const texts = [];
58
+ for (const p of parts) {
59
+ if (p?.text)
60
+ texts.push(String(p.text));
61
+ }
62
+ return texts.length ? texts.join("\n") : null;
63
+ }
64
+ return String(parts);
65
+ }
66
+ }
67
+ catch {
68
+ // ignore
69
+ }
70
+ return null;
71
+ }
72
+ // ---------------------------------------------------------------------------
73
+ // Patch factory
74
+ // ---------------------------------------------------------------------------
75
+ function createPatchedChat(originalChat) {
76
+ return async function patchedChat(...args) {
77
+ const { getGuardClient, getMode, isFailOpen, shouldScanResponses } = require("../auto");
78
+ const guard = getGuardClient();
79
+ if (!guard)
80
+ return originalChat.apply(this, args);
81
+ const params = (args[0] ?? {});
82
+ const guardMessages = messagesToGuardFormat(params);
83
+ const model = params.model ? String(params.model) : "cohere";
84
+ // -- Pre-call scan ---------------------------------------------------
85
+ if (guardMessages.length) {
86
+ let decision = null;
87
+ try {
88
+ decision = await guard.scan(guardMessages, "input", model, {
89
+ framework: "cohere",
90
+ });
91
+ }
92
+ catch (err) {
93
+ if (err instanceof guard_1.GuardApiError && !isFailOpen())
94
+ throw err;
95
+ }
96
+ if (decision?.blocked) {
97
+ if (getMode() === "enforce")
98
+ throw new guard_1.PromptGuardBlockedError(decision);
99
+ console.warn(`[promptguard][monitor] would block: ${decision.threatType} (event=${decision.eventId})`);
100
+ }
101
+ }
102
+ // -- Original call ---------------------------------------------------
103
+ const response = await originalChat.apply(this, args);
104
+ // -- Post-call scan --------------------------------------------------
105
+ if (shouldScanResponses() && response && guard) {
106
+ try {
107
+ const text = extractResponseText(response);
108
+ if (text) {
109
+ const respDecision = await guard.scan([{ role: "assistant", content: text }], "output", model);
110
+ if (respDecision.blocked && getMode() === "enforce") {
111
+ throw new guard_1.PromptGuardBlockedError(respDecision);
112
+ }
113
+ }
114
+ }
115
+ catch (err) {
116
+ if (err instanceof guard_1.PromptGuardBlockedError)
117
+ throw err;
118
+ if (err instanceof guard_1.GuardApiError && !isFailOpen())
119
+ throw err;
120
+ }
121
+ }
122
+ return response;
123
+ };
124
+ }
125
+ // ---------------------------------------------------------------------------
126
+ // Apply / revert
127
+ // ---------------------------------------------------------------------------
128
+ function apply() {
129
+ if (patched)
130
+ return true;
131
+ let cohere;
132
+ try {
133
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
134
+ cohere = require("cohere-ai");
135
+ }
136
+ catch {
137
+ return false;
138
+ }
139
+ let patchedAny = false;
140
+ for (const className of ["CohereClientV2", "ClientV2", "CohereClient", "Client"]) {
141
+ try {
142
+ const cls = cohere[className];
143
+ if (!cls?.prototype?.chat)
144
+ continue;
145
+ const key = `${className}.chat`;
146
+ if (originals.has(key))
147
+ continue;
148
+ originals.set(key, cls.prototype.chat);
149
+ cls.prototype.chat = createPatchedChat(cls.prototype.chat);
150
+ patchedAny = true;
151
+ }
152
+ catch {
153
+ // class not available in this version
154
+ }
155
+ }
156
+ patched = patchedAny;
157
+ return patched;
158
+ }
159
+ function revert() {
160
+ if (!patched)
161
+ return;
162
+ try {
163
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
164
+ const cohere = require("cohere-ai");
165
+ for (const [key, original] of originals) {
166
+ const className = key.split(".")[0];
167
+ try {
168
+ const cls = cohere[className];
169
+ if (cls?.prototype)
170
+ cls.prototype.chat = original;
171
+ }
172
+ catch {
173
+ // ignore
174
+ }
175
+ }
176
+ }
177
+ catch {
178
+ // ignore
179
+ }
180
+ originals.clear();
181
+ patched = false;
182
+ }
183
+ //# sourceMappingURL=cohere.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cohere.js","sourceRoot":"","sources":["../../src/patches/cohere.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Google Generative AI SDK patch — wraps
3
+ * `GenerativeModel.prototype.generateContent` from `@google/generative-ai`.
4
+ *
5
+ * Covers direct Google AI usage and frameworks built on top (LangChain.js
6
+ * ChatGoogleGenerativeAI, etc.).
7
+ */
8
+ import { type GuardMessage } from "../guard";
9
+ export declare function contentToGuardFormat(contents: unknown): GuardMessage[];
10
+ export declare function extractResponseText(response: unknown): string | null;
11
+ export declare function apply(): boolean;
12
+ export declare function revert(): void;
13
+ //# sourceMappingURL=google.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/patches/google.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAiB,KAAK,YAAY,EAA2B,MAAM,UAAU,CAAA;AASpF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,YAAY,EAAE,CAwBtE;AAcD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAcpE;AAMD,wBAAgB,KAAK,IAAI,OAAO,CA4E/B;AAED,wBAAgB,MAAM,IAAI,IAAI,CAe7B"}