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
package/dist/guard.js ADDED
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ /**
3
+ * Guard client — calls the PromptGuard Guard API for content scanning.
4
+ *
5
+ * Used internally by auto-instrumentation patches and framework
6
+ * integrations. Sends messages to POST /api/v1/guard and returns
7
+ * the decision (allow / block / redact).
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.GuardClient = exports.PromptGuardBlockedError = exports.GuardApiError = exports.GuardDecision = void 0;
11
+ // ---------------------------------------------------------------------------
12
+ // GuardDecision — immutable result object
13
+ // ---------------------------------------------------------------------------
14
+ class GuardDecision {
15
+ constructor(data) {
16
+ this.decision = data.decision ?? "allow";
17
+ this.eventId = data.event_id ?? "";
18
+ this.confidence = data.confidence ?? 0;
19
+ this.threatType = data.threat_type;
20
+ this.redactedMessages = data.redacted_messages;
21
+ this.threats = data.threats ?? [];
22
+ this.latencyMs = data.latency_ms ?? 0;
23
+ }
24
+ get blocked() {
25
+ return this.decision === "block";
26
+ }
27
+ get redacted() {
28
+ return this.decision === "redact";
29
+ }
30
+ get allowed() {
31
+ return this.decision === "allow";
32
+ }
33
+ }
34
+ exports.GuardDecision = GuardDecision;
35
+ // ---------------------------------------------------------------------------
36
+ // Errors
37
+ // ---------------------------------------------------------------------------
38
+ class GuardApiError extends Error {
39
+ constructor(message, statusCode) {
40
+ super(message);
41
+ this.name = "GuardApiError";
42
+ this.statusCode = statusCode;
43
+ }
44
+ }
45
+ exports.GuardApiError = GuardApiError;
46
+ class PromptGuardBlockedError extends Error {
47
+ constructor(decision) {
48
+ const threat = decision.threatType ?? "policy_violation";
49
+ super(`PromptGuard blocked this request: ${threat} ` +
50
+ `(confidence=${decision.confidence.toFixed(2)}, event_id=${decision.eventId})`);
51
+ this.name = "PromptGuardBlockedError";
52
+ this.decision = decision;
53
+ }
54
+ }
55
+ exports.PromptGuardBlockedError = PromptGuardBlockedError;
56
+ class GuardClient {
57
+ constructor(config) {
58
+ this.apiKey = config.apiKey;
59
+ const base = (config.baseUrl ?? "https://api.promptguard.co/api/v1").replace(/\/$/, "");
60
+ this.guardUrl = `${base}/guard`;
61
+ this.timeout = config.timeout ?? 10000;
62
+ }
63
+ headers() {
64
+ return {
65
+ Authorization: `Bearer ${this.apiKey}`,
66
+ "Content-Type": "application/json",
67
+ "X-PromptGuard-SDK": "node-auto",
68
+ "X-PromptGuard-Version": "1.3.0",
69
+ };
70
+ }
71
+ /**
72
+ * Scan messages via the Guard API.
73
+ *
74
+ * Throws {@link GuardApiError} on network/API errors so the caller
75
+ * can decide whether to fail open or closed.
76
+ */
77
+ async scan(messages, direction = "input", model, context) {
78
+ const payload = { messages, direction };
79
+ if (model)
80
+ payload.model = model;
81
+ if (context)
82
+ payload.context = context;
83
+ let resp;
84
+ try {
85
+ resp = await fetch(this.guardUrl, {
86
+ method: "POST",
87
+ headers: this.headers(),
88
+ body: JSON.stringify(payload),
89
+ signal: AbortSignal.timeout(this.timeout),
90
+ });
91
+ }
92
+ catch (err) {
93
+ throw new GuardApiError(`Guard API call failed: ${err instanceof Error ? err.message : String(err)}`);
94
+ }
95
+ if (!resp.ok) {
96
+ const text = await resp.text().catch(() => "");
97
+ throw new GuardApiError(`Guard API returned ${resp.status}: ${text.slice(0, 200)}`, resp.status);
98
+ }
99
+ const body = (await resp.json());
100
+ return new GuardDecision(body);
101
+ }
102
+ }
103
+ exports.GuardClient = GuardClient;
104
+ //# sourceMappingURL=guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,24 +2,40 @@
2
2
  * PromptGuard Node.js SDK
3
3
  *
4
4
  * Drop-in security for AI applications.
5
- * Just change your base URL and add an API key.
6
5
  *
6
+ * **Option 1 — Auto-instrumentation (recommended)**
7
7
  * @example
8
- * import { PromptGuard } from 'promptguard';
8
+ * ```ts
9
+ * import { init } from 'promptguard-sdk';
10
+ * init({ apiKey: 'pg_xxx' });
11
+ * // All LLM calls are now secured automatically.
12
+ * ```
9
13
  *
14
+ * **Option 2 — Proxy mode**
15
+ * @example
16
+ * ```ts
17
+ * import { PromptGuard } from 'promptguard-sdk';
10
18
  * const pg = new PromptGuard({ apiKey: 'pg_xxx' });
19
+ * const response = await pg.chat.completions.create({ ... });
20
+ * ```
11
21
  *
12
- * const response = await pg.chat.completions.create({
13
- * model: 'gpt-4',
14
- * messages: [{ role: 'user', content: 'Hello!' }]
15
- * });
22
+ * **Option 3 — Framework integrations**
23
+ * @example
24
+ * ```ts
25
+ * import { PromptGuardCallbackHandler } from 'promptguard-sdk/integrations/langchain';
26
+ * import { promptGuardMiddleware } from 'promptguard-sdk/integrations/vercel-ai';
27
+ * ```
16
28
  */
29
+ export { type InitOptions, init, shutdown } from "./auto";
30
+ export { GuardApiError, GuardClient, type GuardClientConfig, type GuardContext, GuardDecision, type GuardMessage, type GuardRequestBody, type GuardResponseBody, PromptGuardBlockedError, type ThreatDetail, } from "./guard";
31
+ export { PromptGuardCallbackHandler } from "./integrations/langchain";
32
+ export { promptGuardMiddleware } from "./integrations/vercel-ai";
17
33
  export interface PromptGuardConfig {
18
34
  apiKey: string;
19
35
  baseUrl?: string;
20
36
  timeout?: number;
21
- enableCaching?: boolean;
22
- enableSecurityScan?: boolean;
37
+ maxRetries?: number;
38
+ retryDelay?: number;
23
39
  }
24
40
  export interface Message {
25
41
  role: "system" | "user" | "assistant";
@@ -61,6 +77,47 @@ export interface RedactResult {
61
77
  redacted: string;
62
78
  piiFound: string[];
63
79
  }
80
+ export interface CompletionRequest {
81
+ model: string;
82
+ prompt: string;
83
+ temperature?: number;
84
+ maxTokens?: number;
85
+ [key: string]: unknown;
86
+ }
87
+ export interface CompletionResponse {
88
+ id: string;
89
+ object: string;
90
+ created: number;
91
+ model: string;
92
+ choices: Array<{
93
+ text: string;
94
+ index: number;
95
+ finish_reason: string;
96
+ }>;
97
+ usage?: {
98
+ prompt_tokens: number;
99
+ completion_tokens: number;
100
+ total_tokens: number;
101
+ };
102
+ }
103
+ export interface EmbeddingRequest {
104
+ model: string;
105
+ input: string | string[];
106
+ [key: string]: unknown;
107
+ }
108
+ export interface EmbeddingResponse {
109
+ object: string;
110
+ data: Array<{
111
+ object: string;
112
+ embedding: number[];
113
+ index: number;
114
+ }>;
115
+ model: string;
116
+ usage?: {
117
+ prompt_tokens: number;
118
+ total_tokens: number;
119
+ };
120
+ }
64
121
  declare class ChatCompletions {
65
122
  private client;
66
123
  constructor(client: PromptGuard);
@@ -70,6 +127,16 @@ declare class Chat {
70
127
  completions: ChatCompletions;
71
128
  constructor(client: PromptGuard);
72
129
  }
130
+ declare class Completions {
131
+ private client;
132
+ constructor(client: PromptGuard);
133
+ create(params: CompletionRequest): Promise<CompletionResponse>;
134
+ }
135
+ declare class Embeddings {
136
+ private client;
137
+ constructor(client: PromptGuard);
138
+ create(params: EmbeddingRequest): Promise<EmbeddingResponse>;
139
+ }
73
140
  declare class Security {
74
141
  private client;
75
142
  constructor(client: PromptGuard);
@@ -126,6 +193,25 @@ export interface RedTeamSummary {
126
193
  block_rate: number;
127
194
  results: RedTeamTestResult[];
128
195
  }
196
+ export interface AutonomousRedTeamRequest {
197
+ budget?: number;
198
+ target_preset?: string;
199
+ enabled_detectors?: string[];
200
+ }
201
+ export interface AutonomousRedTeamReport {
202
+ grade: string;
203
+ bypass_rate: number;
204
+ total_attempts: number;
205
+ bypasses_found: number;
206
+ bypasses: Array<Record<string, unknown>>;
207
+ recommendations: string[];
208
+ }
209
+ export interface IntelligenceStats {
210
+ total_patterns: number;
211
+ by_category: Record<string, number>;
212
+ by_severity: Record<string, number>;
213
+ recent_discoveries: number;
214
+ }
129
215
  declare class RedTeam {
130
216
  private client;
131
217
  private base;
@@ -137,10 +223,21 @@ declare class RedTeam {
137
223
  runTest(testName: string, targetPreset?: string): Promise<RedTeamTestResult>;
138
224
  runAll(targetPreset?: string): Promise<RedTeamSummary>;
139
225
  runCustom(prompt: string, targetPreset?: string): Promise<RedTeamTestResult>;
226
+ /**
227
+ * Run the autonomous red team agent.
228
+ *
229
+ * Uses LLM-powered mutation to discover novel attack vectors
230
+ * that bypass the current policy configuration.
231
+ */
232
+ runAutonomous(options?: AutonomousRedTeamRequest): Promise<AutonomousRedTeamReport>;
233
+ /** Get statistics from the Attack Intelligence DB. */
234
+ intelligenceStats(): Promise<IntelligenceStats>;
140
235
  }
141
236
  export declare class PromptGuard {
142
237
  private config;
143
238
  chat: Chat;
239
+ completions: Completions;
240
+ embeddings: Embeddings;
144
241
  security: Security;
145
242
  scrape: Scrape;
146
243
  agent: Agent;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,27 +3,54 @@
3
3
  * PromptGuard Node.js SDK
4
4
  *
5
5
  * Drop-in security for AI applications.
6
- * Just change your base URL and add an API key.
7
6
  *
7
+ * **Option 1 — Auto-instrumentation (recommended)**
8
8
  * @example
9
- * import { PromptGuard } from 'promptguard';
9
+ * ```ts
10
+ * import { init } from 'promptguard-sdk';
11
+ * init({ apiKey: 'pg_xxx' });
12
+ * // All LLM calls are now secured automatically.
13
+ * ```
10
14
  *
15
+ * **Option 2 — Proxy mode**
16
+ * @example
17
+ * ```ts
18
+ * import { PromptGuard } from 'promptguard-sdk';
11
19
  * const pg = new PromptGuard({ apiKey: 'pg_xxx' });
20
+ * const response = await pg.chat.completions.create({ ... });
21
+ * ```
12
22
  *
13
- * const response = await pg.chat.completions.create({
14
- * model: 'gpt-4',
15
- * messages: [{ role: 'user', content: 'Hello!' }]
16
- * });
23
+ * **Option 3 — Framework integrations**
24
+ * @example
25
+ * ```ts
26
+ * import { PromptGuardCallbackHandler } from 'promptguard-sdk/integrations/langchain';
27
+ * import { promptGuardMiddleware } from 'promptguard-sdk/integrations/vercel-ai';
28
+ * ```
17
29
  */
18
30
  Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.PromptGuardError = exports.PromptGuard = void 0;
31
+ exports.PromptGuardError = exports.PromptGuard = exports.promptGuardMiddleware = exports.PromptGuardCallbackHandler = exports.PromptGuardBlockedError = exports.GuardDecision = exports.GuardClient = exports.GuardApiError = exports.shutdown = exports.init = void 0;
32
+ // Auto-instrumentation
33
+ var auto_1 = require("./auto");
34
+ Object.defineProperty(exports, "init", { enumerable: true, get: function () { return auto_1.init; } });
35
+ Object.defineProperty(exports, "shutdown", { enumerable: true, get: function () { return auto_1.shutdown; } });
36
+ // Guard client (standalone scanning)
37
+ var guard_1 = require("./guard");
38
+ Object.defineProperty(exports, "GuardApiError", { enumerable: true, get: function () { return guard_1.GuardApiError; } });
39
+ Object.defineProperty(exports, "GuardClient", { enumerable: true, get: function () { return guard_1.GuardClient; } });
40
+ Object.defineProperty(exports, "GuardDecision", { enumerable: true, get: function () { return guard_1.GuardDecision; } });
41
+ Object.defineProperty(exports, "PromptGuardBlockedError", { enumerable: true, get: function () { return guard_1.PromptGuardBlockedError; } });
42
+ // Framework integrations (re-exported for convenience)
43
+ var langchain_1 = require("./integrations/langchain");
44
+ Object.defineProperty(exports, "PromptGuardCallbackHandler", { enumerable: true, get: function () { return langchain_1.PromptGuardCallbackHandler; } });
45
+ var vercel_ai_1 = require("./integrations/vercel-ai");
46
+ Object.defineProperty(exports, "promptGuardMiddleware", { enumerable: true, get: function () { return vercel_ai_1.promptGuardMiddleware; } });
47
+ const RETRYABLE_STATUS_CODES = new Set([429, 500, 502, 503, 504]);
20
48
  class ChatCompletions {
21
49
  constructor(client) {
22
50
  this.client = client;
23
51
  }
24
52
  async create(params) {
25
- const response = await this.client.request("POST", "/chat/completions", params);
26
- return response;
53
+ return this.client.request("POST", "/chat/completions", params);
27
54
  }
28
55
  }
29
56
  class Chat {
@@ -31,6 +58,22 @@ class Chat {
31
58
  this.completions = new ChatCompletions(client);
32
59
  }
33
60
  }
61
+ class Completions {
62
+ constructor(client) {
63
+ this.client = client;
64
+ }
65
+ async create(params) {
66
+ return this.client.request("POST", "/completions", params);
67
+ }
68
+ }
69
+ class Embeddings {
70
+ constructor(client) {
71
+ this.client = client;
72
+ }
73
+ async create(params) {
74
+ return this.client.request("POST", "/embeddings", params);
75
+ }
76
+ }
34
77
  class Security {
35
78
  constructor(client) {
36
79
  this.client = client;
@@ -107,22 +150,43 @@ class RedTeam {
107
150
  target_preset: targetPreset,
108
151
  });
109
152
  }
153
+ /**
154
+ * Run the autonomous red team agent.
155
+ *
156
+ * Uses LLM-powered mutation to discover novel attack vectors
157
+ * that bypass the current policy configuration.
158
+ */
159
+ async runAutonomous(options) {
160
+ return this.client.request("POST", `${this.base}/autonomous`, {
161
+ budget: options?.budget ?? 100,
162
+ target_preset: options?.target_preset ?? "default",
163
+ ...(options?.enabled_detectors && { enabled_detectors: options.enabled_detectors }),
164
+ });
165
+ }
166
+ /** Get statistics from the Attack Intelligence DB. */
167
+ async intelligenceStats() {
168
+ return this.client.request("GET", `${this.base}/intelligence/stats`);
169
+ }
110
170
  }
111
171
  class PromptGuard {
112
172
  constructor(config) {
113
- const apiKey = config.apiKey || process.env.PROMPTGUARD_API_KEY;
173
+ const apiKey = config.apiKey ?? process.env.PROMPTGUARD_API_KEY;
114
174
  if (!apiKey) {
115
175
  throw new Error("API key required. Pass apiKey in config or set PROMPTGUARD_API_KEY environment variable.");
116
176
  }
117
177
  this.config = {
118
178
  apiKey,
119
- baseUrl: config.baseUrl || process.env.PROMPTGUARD_BASE_URL || "https://api.promptguard.co/api/v1",
120
- timeout: config.timeout || 30000,
121
- enableCaching: config.enableCaching ?? true,
122
- enableSecurityScan: config.enableSecurityScan ?? true,
179
+ baseUrl: config.baseUrl ??
180
+ process.env.PROMPTGUARD_BASE_URL ??
181
+ "https://api.promptguard.co/api/v1/proxy",
182
+ timeout: config.timeout ?? 30000,
183
+ maxRetries: config.maxRetries ?? 3,
184
+ retryDelay: config.retryDelay ?? 1000,
123
185
  };
124
186
  // OpenAI-compatible
125
187
  this.chat = new Chat(this);
188
+ this.completions = new Completions(this);
189
+ this.embeddings = new Embeddings(this);
126
190
  // PromptGuard-specific
127
191
  this.security = new Security(this);
128
192
  this.scrape = new Scrape(this);
@@ -131,22 +195,40 @@ class PromptGuard {
131
195
  }
132
196
  async request(method, path, body) {
133
197
  const url = `${this.config.baseUrl}${path}`;
134
- const response = await fetch(url, {
135
- method,
136
- headers: {
137
- Authorization: `Bearer ${this.config.apiKey}`,
138
- "Content-Type": "application/json",
139
- "X-PromptGuard-SDK": "node",
140
- "X-PromptGuard-Version": "1.2.0",
141
- },
142
- body: body ? JSON.stringify(body) : undefined,
143
- signal: AbortSignal.timeout(this.config.timeout),
144
- });
145
- if (!response.ok) {
146
- const errorBody = (await response.json().catch(() => ({})));
147
- throw new PromptGuardError(errorBody.error?.message || "Request failed", errorBody.error?.code || "UNKNOWN", response.status);
198
+ let lastError;
199
+ for (let attempt = 0; attempt <= this.config.maxRetries; attempt++) {
200
+ try {
201
+ const response = await fetch(url, {
202
+ method,
203
+ headers: {
204
+ Authorization: `Bearer ${this.config.apiKey}`,
205
+ "Content-Type": "application/json",
206
+ "X-PromptGuard-SDK": "node",
207
+ "X-PromptGuard-Version": "1.3.0",
208
+ },
209
+ body: body ? JSON.stringify(body) : undefined,
210
+ signal: AbortSignal.timeout(this.config.timeout),
211
+ });
212
+ if (RETRYABLE_STATUS_CODES.has(response.status) && attempt < this.config.maxRetries) {
213
+ await new Promise((r) => setTimeout(r, this.config.retryDelay * 2 ** attempt));
214
+ continue;
215
+ }
216
+ if (!response.ok) {
217
+ const errorBody = (await response.json().catch(() => ({})));
218
+ throw new PromptGuardError(errorBody.error?.message || "Request failed", errorBody.error?.code || "UNKNOWN", response.status);
219
+ }
220
+ return response.json();
221
+ }
222
+ catch (err) {
223
+ if (err instanceof PromptGuardError)
224
+ throw err;
225
+ lastError = err;
226
+ if (attempt < this.config.maxRetries) {
227
+ await new Promise((r) => setTimeout(r, this.config.retryDelay * 2 ** attempt));
228
+ }
229
+ }
148
230
  }
149
- return response.json();
231
+ throw lastError ?? new PromptGuardError("Max retries exceeded", "MAX_RETRIES", 0);
150
232
  }
151
233
  }
152
234
  exports.PromptGuard = PromptGuard;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * LangChain.js integration — PromptGuardCallbackHandler.
3
+ *
4
+ * Implements the LangChain BaseCallbackHandler interface to scan prompts
5
+ * before LLM calls and responses after, with rich context about chains,
6
+ * tools, and agent steps.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { PromptGuardCallbackHandler } from 'promptguard-sdk/integrations/langchain';
11
+ *
12
+ * const handler = new PromptGuardCallbackHandler({ apiKey: 'pg_xxx' });
13
+ *
14
+ * const llm = new ChatOpenAI({ callbacks: [handler] });
15
+ * // or
16
+ * await chain.invoke({ input: '...' }, { callbacks: [handler] });
17
+ * ```
18
+ */
19
+ import { type GuardClientConfig } from "../guard";
20
+ export interface PromptGuardCallbackOptions extends GuardClientConfig {
21
+ mode?: "enforce" | "monitor";
22
+ scanResponses?: boolean;
23
+ failOpen?: boolean;
24
+ }
25
+ export declare class PromptGuardCallbackHandler {
26
+ readonly name = "promptguard";
27
+ private readonly guard;
28
+ private readonly mode;
29
+ private readonly scanResponses;
30
+ private readonly failOpen;
31
+ /** Chain context per run ID for richer threat detection. */
32
+ private chainContext;
33
+ constructor(options: PromptGuardCallbackOptions);
34
+ handleLLMStart(serialized: Record<string, unknown>, prompts: string[], runId: string, parentRunId?: string, _extraParams?: Record<string, unknown>, tags?: string[], metadata?: Record<string, unknown>): Promise<void>;
35
+ handleChatModelStart(serialized: Record<string, unknown>, messages: unknown[][], runId: string, parentRunId?: string, _extraParams?: Record<string, unknown>, tags?: string[], metadata?: Record<string, unknown>): Promise<void>;
36
+ handleLLMEnd(output: unknown, runId: string): Promise<void>;
37
+ handleLLMError(_error: Error, runId: string): void;
38
+ handleChainStart(serialized: Record<string, unknown>, _inputs: Record<string, unknown>, runId: string, parentRunId?: string, tags?: string[]): Promise<void>;
39
+ handleChainEnd(_outputs: Record<string, unknown>, runId: string): void;
40
+ handleChainError(_error: Error, runId: string): void;
41
+ handleToolStart(serialized: Record<string, unknown>, input: string, runId: string, parentRunId?: string, tags?: string[], metadata?: Record<string, unknown>): Promise<void>;
42
+ handleToolEnd(output: unknown, runId: string): Promise<void>;
43
+ handleToolError(_error: Error, runId: string): void;
44
+ handleRetrieverStart(..._args: unknown[]): void;
45
+ handleRetrieverEnd(..._args: unknown[]): void;
46
+ handleRetrieverError(..._args: unknown[]): void;
47
+ handleText(..._args: unknown[]): void;
48
+ private safeScan;
49
+ private handleDecision;
50
+ private buildContext;
51
+ private extractModel;
52
+ private mapRole;
53
+ private extractLLMResponse;
54
+ }
55
+ //# sourceMappingURL=langchain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain.d.ts","sourceRoot":"","sources":["../../src/integrations/langchain.ts"],"names":[],"mappings":"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"}