promptguard-sdk 1.2.0 → 1.6.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.
Files changed (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +226 -78
  3. package/dist/auto.d.ts +39 -0
  4. package/dist/auto.d.ts.map +1 -0
  5. package/dist/auto.js +105 -0
  6. package/dist/auto.js.map +1 -0
  7. package/dist/client.d.ts +219 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +198 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/guard.d.ts +80 -0
  12. package/dist/guard.d.ts.map +1 -0
  13. package/dist/guard.js +106 -0
  14. package/dist/guard.js.map +1 -0
  15. package/dist/index.d.ts +23 -146
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +42 -150
  18. package/dist/index.js.map +1 -1
  19. package/dist/integrations/langchain.d.ts +51 -0
  20. package/dist/integrations/langchain.d.ts.map +1 -0
  21. package/dist/integrations/langchain.js +193 -0
  22. package/dist/integrations/langchain.js.map +1 -0
  23. package/dist/integrations/vercel-ai.d.ts +49 -0
  24. package/dist/integrations/vercel-ai.d.ts.map +1 -0
  25. package/dist/integrations/vercel-ai.js +153 -0
  26. package/dist/integrations/vercel-ai.js.map +1 -0
  27. package/dist/patches/anthropic.d.ts +13 -0
  28. package/dist/patches/anthropic.d.ts.map +1 -0
  29. package/dist/patches/anthropic.js +146 -0
  30. package/dist/patches/anthropic.js.map +1 -0
  31. package/dist/patches/base.d.ts +20 -0
  32. package/dist/patches/base.d.ts.map +1 -0
  33. package/dist/patches/base.js +63 -0
  34. package/dist/patches/base.js.map +1 -0
  35. package/dist/patches/bedrock.d.ts +14 -0
  36. package/dist/patches/bedrock.d.ts.map +1 -0
  37. package/dist/patches/bedrock.js +205 -0
  38. package/dist/patches/bedrock.js.map +1 -0
  39. package/dist/patches/cohere.d.ts +14 -0
  40. package/dist/patches/cohere.d.ts.map +1 -0
  41. package/dist/patches/cohere.js +143 -0
  42. package/dist/patches/cohere.js.map +1 -0
  43. package/dist/patches/google.d.ts +13 -0
  44. package/dist/patches/google.d.ts.map +1 -0
  45. package/dist/patches/google.js +127 -0
  46. package/dist/patches/google.js.map +1 -0
  47. package/dist/patches/openai.d.ts +14 -0
  48. package/dist/patches/openai.d.ts.map +1 -0
  49. package/dist/patches/openai.js +122 -0
  50. package/dist/patches/openai.js.map +1 -0
  51. package/dist/resolve.d.ts +9 -0
  52. package/dist/resolve.d.ts.map +1 -0
  53. package/dist/resolve.js +19 -0
  54. package/dist/resolve.js.map +1 -0
  55. package/dist/version.d.ts +2 -0
  56. package/dist/version.d.ts.map +1 -0
  57. package/dist/version.js +5 -0
  58. package/dist/version.js.map +1 -0
  59. package/package.json +84 -12
@@ -0,0 +1,219 @@
1
+ /**
2
+ * PromptGuard proxy client — OpenAI-compatible API with built-in
3
+ * security scanning, retry logic, and namespace helpers.
4
+ */
5
+ interface PromptGuardConfig {
6
+ apiKey: string;
7
+ baseUrl?: string;
8
+ timeout?: number;
9
+ maxRetries?: number;
10
+ retryDelay?: number;
11
+ }
12
+ interface Message {
13
+ role: "system" | "user" | "assistant";
14
+ content: string;
15
+ }
16
+ interface ChatCompletionRequest {
17
+ model: string;
18
+ messages: Message[];
19
+ temperature?: number;
20
+ maxTokens?: number;
21
+ stream?: boolean;
22
+ [key: string]: unknown;
23
+ }
24
+ interface ChatCompletionResponse {
25
+ id: string;
26
+ object: string;
27
+ created: number;
28
+ model: string;
29
+ choices: Array<{
30
+ index: number;
31
+ message: Message;
32
+ finish_reason: string;
33
+ }>;
34
+ usage?: {
35
+ prompt_tokens: number;
36
+ completion_tokens: number;
37
+ total_tokens: number;
38
+ };
39
+ }
40
+ interface CompletionRequest {
41
+ model: string;
42
+ prompt: string;
43
+ temperature?: number;
44
+ maxTokens?: number;
45
+ [key: string]: unknown;
46
+ }
47
+ interface CompletionResponse {
48
+ id: string;
49
+ object: string;
50
+ created: number;
51
+ model: string;
52
+ choices: Array<{
53
+ text: string;
54
+ index: number;
55
+ finish_reason: string;
56
+ }>;
57
+ usage?: {
58
+ prompt_tokens: number;
59
+ completion_tokens: number;
60
+ total_tokens: number;
61
+ };
62
+ }
63
+ interface EmbeddingRequest {
64
+ model: string;
65
+ input: string | string[];
66
+ [key: string]: unknown;
67
+ }
68
+ interface EmbeddingResponse {
69
+ object: string;
70
+ data: Array<{
71
+ object: string;
72
+ embedding: number[];
73
+ index: number;
74
+ }>;
75
+ model: string;
76
+ usage?: {
77
+ prompt_tokens: number;
78
+ total_tokens: number;
79
+ };
80
+ }
81
+ interface SecurityScanResult {
82
+ blocked: boolean;
83
+ decision: "allow" | "block" | "redact";
84
+ reason?: string;
85
+ threatType?: string;
86
+ confidence?: number;
87
+ }
88
+ interface RedactResult {
89
+ original: string;
90
+ redacted: string;
91
+ piiFound: string[];
92
+ }
93
+ interface ScrapeResult {
94
+ url: string;
95
+ status: "safe" | "blocked";
96
+ content: string;
97
+ threats_detected: string[];
98
+ message?: string;
99
+ }
100
+ interface ToolValidationResult {
101
+ allowed: boolean;
102
+ risk_score: number;
103
+ risk_level: string;
104
+ reason: string;
105
+ warnings: string[];
106
+ blocked_reasons: string[];
107
+ }
108
+ interface RedTeamTestResult {
109
+ test_name: string;
110
+ prompt: string;
111
+ decision: string;
112
+ reason: string;
113
+ threat_type?: string;
114
+ confidence: number;
115
+ blocked: boolean;
116
+ details: Record<string, unknown>;
117
+ }
118
+ interface RedTeamSummary {
119
+ total_tests: number;
120
+ blocked: number;
121
+ allowed: number;
122
+ block_rate: number;
123
+ results: RedTeamTestResult[];
124
+ }
125
+ interface AutonomousRedTeamRequest {
126
+ budget?: number;
127
+ target_preset?: string;
128
+ enabled_detectors?: string[];
129
+ }
130
+ interface AutonomousRedTeamReport {
131
+ grade: string;
132
+ bypass_rate: number;
133
+ total_attempts: number;
134
+ bypasses_found: number;
135
+ bypasses: Array<Record<string, unknown>>;
136
+ recommendations: string[];
137
+ }
138
+ interface IntelligenceStats {
139
+ total_patterns: number;
140
+ by_category: Record<string, number>;
141
+ by_severity: Record<string, number>;
142
+ recent_discoveries: number;
143
+ }
144
+ declare class ChatCompletions {
145
+ private client;
146
+ constructor(client: PromptGuard);
147
+ create(params: ChatCompletionRequest): Promise<ChatCompletionResponse>;
148
+ }
149
+ declare class Chat {
150
+ completions: ChatCompletions;
151
+ constructor(client: PromptGuard);
152
+ }
153
+ declare class Completions {
154
+ private client;
155
+ constructor(client: PromptGuard);
156
+ create(params: CompletionRequest): Promise<CompletionResponse>;
157
+ }
158
+ declare class Embeddings {
159
+ private client;
160
+ constructor(client: PromptGuard);
161
+ create(params: EmbeddingRequest): Promise<EmbeddingResponse>;
162
+ }
163
+ declare class Security {
164
+ private client;
165
+ constructor(client: PromptGuard);
166
+ scan(content: string, type?: "prompt" | "response"): Promise<SecurityScanResult>;
167
+ redact(content: string, piiTypes?: string[]): Promise<RedactResult>;
168
+ }
169
+ declare class Scrape {
170
+ private client;
171
+ constructor(client: PromptGuard);
172
+ url(url: string, options?: {
173
+ renderJs?: boolean;
174
+ extractText?: boolean;
175
+ timeout?: number;
176
+ }): Promise<ScrapeResult>;
177
+ batch(urls: string[], options?: Record<string, unknown>): Promise<{
178
+ job_id: string;
179
+ }>;
180
+ }
181
+ declare class Agent {
182
+ private client;
183
+ constructor(client: PromptGuard);
184
+ validateTool(agentId: string, toolName: string, args: Record<string, unknown>, sessionId?: string): Promise<ToolValidationResult>;
185
+ stats(agentId: string): Promise<Record<string, unknown>>;
186
+ }
187
+ declare class RedTeam {
188
+ private client;
189
+ private base;
190
+ constructor(client: PromptGuard);
191
+ listTests(): Promise<{
192
+ total: number;
193
+ tests: Array<Record<string, unknown>>;
194
+ }>;
195
+ runTest(testName: string, targetPreset?: string): Promise<RedTeamTestResult>;
196
+ runAll(targetPreset?: string): Promise<RedTeamSummary>;
197
+ runCustom(prompt: string, targetPreset?: string): Promise<RedTeamTestResult>;
198
+ runAutonomous(options?: AutonomousRedTeamRequest): Promise<AutonomousRedTeamReport>;
199
+ intelligenceStats(): Promise<IntelligenceStats>;
200
+ }
201
+ export declare class PromptGuard {
202
+ private config;
203
+ chat: Chat;
204
+ completions: Completions;
205
+ embeddings: Embeddings;
206
+ security: Security;
207
+ scrape: Scrape;
208
+ agent: Agent;
209
+ redteam: RedTeam;
210
+ constructor(config: PromptGuardConfig);
211
+ request<T>(method: string, path: string, body?: unknown): Promise<T>;
212
+ }
213
+ export declare class PromptGuardError extends Error {
214
+ code: string;
215
+ statusCode: number;
216
+ constructor(message: string, code: string, statusCode: number);
217
+ }
218
+ export default PromptGuard;
219
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js ADDED
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ /**
3
+ * PromptGuard proxy client — OpenAI-compatible API with built-in
4
+ * security scanning, retry logic, and namespace helpers.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.PromptGuardError = exports.PromptGuard = void 0;
8
+ const resolve_1 = require("./resolve");
9
+ const version_1 = require("./version");
10
+ // ---------------------------------------------------------------------------
11
+ // Namespace classes
12
+ // ---------------------------------------------------------------------------
13
+ const RETRYABLE_STATUS_CODES = new Set([429, 500, 502, 503, 504]);
14
+ const PROXY_BASE_URL = `${resolve_1.DEFAULT_BASE_URL}/proxy`;
15
+ class ChatCompletions {
16
+ constructor(client) {
17
+ this.client = client;
18
+ }
19
+ async create(params) {
20
+ return this.client.request("POST", "/chat/completions", params);
21
+ }
22
+ }
23
+ class Chat {
24
+ constructor(client) {
25
+ this.completions = new ChatCompletions(client);
26
+ }
27
+ }
28
+ class Completions {
29
+ constructor(client) {
30
+ this.client = client;
31
+ }
32
+ async create(params) {
33
+ return this.client.request("POST", "/completions", params);
34
+ }
35
+ }
36
+ class Embeddings {
37
+ constructor(client) {
38
+ this.client = client;
39
+ }
40
+ async create(params) {
41
+ return this.client.request("POST", "/embeddings", params);
42
+ }
43
+ }
44
+ class Security {
45
+ constructor(client) {
46
+ this.client = client;
47
+ }
48
+ async scan(content, type = "prompt") {
49
+ return this.client.request("POST", "/security/scan", { content, type });
50
+ }
51
+ async redact(content, piiTypes) {
52
+ return this.client.request("POST", "/security/redact", {
53
+ content,
54
+ pii_types: piiTypes,
55
+ });
56
+ }
57
+ }
58
+ class Scrape {
59
+ constructor(client) {
60
+ this.client = client;
61
+ }
62
+ async url(url, options) {
63
+ return this.client.request("POST", "/scrape", {
64
+ url,
65
+ render_js: options?.renderJs ?? false,
66
+ extract_text: options?.extractText ?? true,
67
+ timeout: options?.timeout ?? 30,
68
+ });
69
+ }
70
+ async batch(urls, options) {
71
+ return this.client.request("POST", "/scrape/batch", { urls, ...options });
72
+ }
73
+ }
74
+ class Agent {
75
+ constructor(client) {
76
+ this.client = client;
77
+ }
78
+ async validateTool(agentId, toolName, args, sessionId) {
79
+ return this.client.request("POST", "/agent/validate-tool", {
80
+ agent_id: agentId,
81
+ tool_name: toolName,
82
+ arguments: args,
83
+ session_id: sessionId,
84
+ });
85
+ }
86
+ async stats(agentId) {
87
+ return this.client.request("GET", `/agent/${agentId}/stats`);
88
+ }
89
+ }
90
+ class RedTeam {
91
+ constructor(client) {
92
+ this.base = "/internal/redteam";
93
+ this.client = client;
94
+ }
95
+ async listTests() {
96
+ return this.client.request("GET", `${this.base}/tests`);
97
+ }
98
+ async runTest(testName, targetPreset = "default") {
99
+ return this.client.request("POST", `${this.base}/test/${testName}`, {
100
+ target_preset: targetPreset,
101
+ });
102
+ }
103
+ async runAll(targetPreset = "default") {
104
+ return this.client.request("POST", `${this.base}/test-all`, {
105
+ target_preset: targetPreset,
106
+ });
107
+ }
108
+ async runCustom(prompt, targetPreset = "default") {
109
+ return this.client.request("POST", `${this.base}/test-custom`, {
110
+ custom_prompt: prompt,
111
+ target_preset: targetPreset,
112
+ });
113
+ }
114
+ async runAutonomous(options) {
115
+ return this.client.request("POST", `${this.base}/autonomous`, {
116
+ budget: options?.budget ?? 100,
117
+ target_preset: options?.target_preset ?? "default",
118
+ ...(options?.enabled_detectors && { enabled_detectors: options.enabled_detectors }),
119
+ });
120
+ }
121
+ async intelligenceStats() {
122
+ return this.client.request("GET", `${this.base}/intelligence/stats`);
123
+ }
124
+ }
125
+ // ---------------------------------------------------------------------------
126
+ // PromptGuard client
127
+ // ---------------------------------------------------------------------------
128
+ class PromptGuard {
129
+ constructor(config) {
130
+ const { apiKey, baseUrl } = (0, resolve_1.resolveCredentials)(config.apiKey, config.baseUrl, PROXY_BASE_URL);
131
+ this.config = {
132
+ apiKey,
133
+ baseUrl,
134
+ timeout: config.timeout ?? 30000,
135
+ maxRetries: config.maxRetries ?? 3,
136
+ retryDelay: config.retryDelay ?? 1000,
137
+ };
138
+ this.chat = new Chat(this);
139
+ this.completions = new Completions(this);
140
+ this.embeddings = new Embeddings(this);
141
+ this.security = new Security(this);
142
+ this.scrape = new Scrape(this);
143
+ this.agent = new Agent(this);
144
+ this.redteam = new RedTeam(this);
145
+ }
146
+ async request(method, path, body) {
147
+ const url = `${this.config.baseUrl}${path}`;
148
+ let lastError;
149
+ for (let attempt = 0; attempt <= this.config.maxRetries; attempt++) {
150
+ try {
151
+ const response = await fetch(url, {
152
+ method,
153
+ headers: {
154
+ Authorization: `Bearer ${this.config.apiKey}`,
155
+ "Content-Type": "application/json",
156
+ "X-PromptGuard-SDK": "node",
157
+ "X-PromptGuard-Version": version_1.SDK_VERSION,
158
+ },
159
+ body: body ? JSON.stringify(body) : undefined,
160
+ signal: AbortSignal.timeout(this.config.timeout),
161
+ });
162
+ if (RETRYABLE_STATUS_CODES.has(response.status) && attempt < this.config.maxRetries) {
163
+ await new Promise((r) => setTimeout(r, this.config.retryDelay * 2 ** attempt));
164
+ continue;
165
+ }
166
+ if (!response.ok) {
167
+ const errorBody = (await response.json().catch(() => ({})));
168
+ throw new PromptGuardError(errorBody.error?.message || "Request failed", errorBody.error?.code || "UNKNOWN", response.status);
169
+ }
170
+ return response.json();
171
+ }
172
+ catch (err) {
173
+ if (err instanceof PromptGuardError)
174
+ throw err;
175
+ lastError = err;
176
+ if (attempt < this.config.maxRetries) {
177
+ await new Promise((r) => setTimeout(r, this.config.retryDelay * 2 ** attempt));
178
+ }
179
+ }
180
+ }
181
+ throw lastError ?? new PromptGuardError("Max retries exceeded", "MAX_RETRIES", 0);
182
+ }
183
+ }
184
+ exports.PromptGuard = PromptGuard;
185
+ // ---------------------------------------------------------------------------
186
+ // Error
187
+ // ---------------------------------------------------------------------------
188
+ class PromptGuardError extends Error {
189
+ constructor(message, code, statusCode) {
190
+ super(`${code}: ${message}`);
191
+ this.name = "PromptGuardError";
192
+ this.code = code;
193
+ this.statusCode = statusCode;
194
+ }
195
+ }
196
+ exports.PromptGuardError = PromptGuardError;
197
+ exports.default = PromptGuard;
198
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uCAAgE;AAChE,uCAAuC;AAsKvC,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,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,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,OAAO,EAAE,aAAa,IAAI,SAAS;YAClD,GAAG,CAAC,OAAO,EAAE,iBAAiB,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;SACpF,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;YACP,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;YAChC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;YAClC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;SACtC,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,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;wBAC7C,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,CAEzD,CAAA;oBACD,MAAM,IAAI,gBAAgB,CACxB,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,gBAAgB,EAC5C,SAAS,CAAC,KAAK,EAAE,IAAI,IAAI,SAAS,EAClC,QAAQ,CAAC,MAAM,CAChB,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;AA7ED,kCA6EC;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,MAAa,gBAAiB,SAAQ,KAAK;IAIzC,YAAY,OAAe,EAAE,IAAY,EAAE,UAAkB;QAC3D,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;IAC9B,CAAC;CACF;AAVD,4CAUC;AAED,kBAAe,WAAW,CAAA"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Guard client - calls the PromptGuard Guard API for content scanning.
3
+ *
4
+ * Used internally by auto-instrumentation patches and framework
5
+ * integrations. Sends messages to POST /api/v1/guard and returns
6
+ * the decision (allow / block / redact).
7
+ */
8
+ export interface GuardMessage {
9
+ role: string;
10
+ content: string;
11
+ }
12
+ export interface GuardContext {
13
+ framework?: string;
14
+ chain_name?: string;
15
+ agent_id?: string;
16
+ session_id?: string;
17
+ tool_calls?: Array<Record<string, unknown>>;
18
+ metadata?: Record<string, unknown>;
19
+ }
20
+ export interface GuardRequestBody {
21
+ messages: GuardMessage[];
22
+ direction: "input" | "output";
23
+ model?: string;
24
+ context?: GuardContext;
25
+ }
26
+ export interface ThreatDetail {
27
+ type: string;
28
+ confidence: number;
29
+ details: string;
30
+ }
31
+ export interface GuardResponseBody {
32
+ decision: "allow" | "block" | "redact";
33
+ event_id: string;
34
+ confidence: number;
35
+ threat_type?: string;
36
+ redacted_messages?: GuardMessage[];
37
+ threats: ThreatDetail[];
38
+ latency_ms: number;
39
+ }
40
+ export declare class GuardDecision {
41
+ readonly decision: string;
42
+ readonly eventId: string;
43
+ readonly confidence: number;
44
+ readonly threatType?: string;
45
+ readonly redactedMessages?: GuardMessage[];
46
+ readonly threats: ThreatDetail[];
47
+ readonly latencyMs: number;
48
+ constructor(data: Partial<GuardResponseBody>);
49
+ get blocked(): boolean;
50
+ get redacted(): boolean;
51
+ get allowed(): boolean;
52
+ }
53
+ export declare class GuardApiError extends Error {
54
+ readonly statusCode?: number;
55
+ constructor(message: string, statusCode?: number);
56
+ }
57
+ export declare class PromptGuardBlockedError extends Error {
58
+ readonly decision: GuardDecision;
59
+ constructor(decision: GuardDecision);
60
+ }
61
+ export interface GuardClientConfig {
62
+ apiKey: string;
63
+ baseUrl?: string;
64
+ timeout?: number;
65
+ }
66
+ export declare class GuardClient {
67
+ private readonly apiKey;
68
+ private readonly guardUrl;
69
+ private readonly timeout;
70
+ constructor(config: GuardClientConfig);
71
+ private headers;
72
+ /**
73
+ * Scan messages via the Guard API.
74
+ *
75
+ * Throws {@link GuardApiError} on network/API errors so the caller
76
+ * can decide whether to fail open or closed.
77
+ */
78
+ scan(messages: GuardMessage[], direction?: "input" | "output", model?: string, context?: GuardContext): Promise<GuardDecision>;
79
+ }
80
+ //# sourceMappingURL=guard.d.ts.map
@@ -0,0 +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;CAKjD;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;;;;;OAKG;IACG,IAAI,CACR,QAAQ,EAAE,YAAY,EAAE,EACxB,SAAS,GAAE,OAAO,GAAG,QAAkB,EACvC,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,CAAC;CA8B1B"}
package/dist/guard.js ADDED
@@ -0,0 +1,106 @@
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
+ const resolve_1 = require("./resolve");
12
+ const version_1 = require("./version");
13
+ // ---------------------------------------------------------------------------
14
+ // GuardDecision - immutable result object
15
+ // ---------------------------------------------------------------------------
16
+ class GuardDecision {
17
+ constructor(data) {
18
+ this.decision = data.decision ?? "allow";
19
+ this.eventId = data.event_id ?? "";
20
+ this.confidence = data.confidence ?? 0;
21
+ this.threatType = data.threat_type;
22
+ this.redactedMessages = data.redacted_messages;
23
+ this.threats = data.threats ?? [];
24
+ this.latencyMs = data.latency_ms ?? 0;
25
+ }
26
+ get blocked() {
27
+ return this.decision === "block";
28
+ }
29
+ get redacted() {
30
+ return this.decision === "redact";
31
+ }
32
+ get allowed() {
33
+ return this.decision === "allow";
34
+ }
35
+ }
36
+ exports.GuardDecision = GuardDecision;
37
+ // ---------------------------------------------------------------------------
38
+ // Errors
39
+ // ---------------------------------------------------------------------------
40
+ class GuardApiError extends Error {
41
+ constructor(message, statusCode) {
42
+ super(message);
43
+ this.name = "GuardApiError";
44
+ this.statusCode = statusCode;
45
+ }
46
+ }
47
+ exports.GuardApiError = GuardApiError;
48
+ class PromptGuardBlockedError extends Error {
49
+ constructor(decision) {
50
+ const threat = decision.threatType ?? "policy_violation";
51
+ super(`PromptGuard blocked this request: ${threat} ` +
52
+ `(confidence=${decision.confidence.toFixed(2)}, event_id=${decision.eventId})`);
53
+ this.name = "PromptGuardBlockedError";
54
+ this.decision = decision;
55
+ }
56
+ }
57
+ exports.PromptGuardBlockedError = PromptGuardBlockedError;
58
+ class GuardClient {
59
+ constructor(config) {
60
+ this.apiKey = config.apiKey;
61
+ const base = (config.baseUrl ?? resolve_1.DEFAULT_BASE_URL).replace(/\/$/, "");
62
+ this.guardUrl = `${base}/guard`;
63
+ this.timeout = config.timeout ?? 10000;
64
+ }
65
+ headers() {
66
+ return {
67
+ Authorization: `Bearer ${this.apiKey}`,
68
+ "Content-Type": "application/json",
69
+ "X-PromptGuard-SDK": "node-auto",
70
+ "X-PromptGuard-Version": version_1.SDK_VERSION,
71
+ };
72
+ }
73
+ /**
74
+ * Scan messages via the Guard API.
75
+ *
76
+ * Throws {@link GuardApiError} on network/API errors so the caller
77
+ * can decide whether to fail open or closed.
78
+ */
79
+ async scan(messages, direction = "input", model, context) {
80
+ const payload = { messages, direction };
81
+ if (model)
82
+ payload.model = model;
83
+ if (context)
84
+ payload.context = context;
85
+ let resp;
86
+ try {
87
+ resp = await fetch(this.guardUrl, {
88
+ method: "POST",
89
+ headers: this.headers(),
90
+ body: JSON.stringify(payload),
91
+ signal: AbortSignal.timeout(this.timeout),
92
+ });
93
+ }
94
+ catch (err) {
95
+ throw new GuardApiError(`Guard API call failed: ${err instanceof Error ? err.message : String(err)}`);
96
+ }
97
+ if (!resp.ok) {
98
+ const text = await resp.text().catch(() => "");
99
+ throw new GuardApiError(`Guard API returned ${resp.status}: ${text.slice(0, 200)}`, resp.status);
100
+ }
101
+ const body = (await resp.json());
102
+ return new GuardDecision(body);
103
+ }
104
+ }
105
+ exports.GuardClient = GuardClient;
106
+ //# sourceMappingURL=guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"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"}