@clampd/sdk 0.4.0 → 0.5.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 +32 -11
- package/dist/auth.d.ts +3 -3
- package/dist/auth.js +6 -6
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +10 -6
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +109 -3
- package/dist/index.js.map +1 -1
- package/dist/schema-injection.d.ts +32 -0
- package/dist/schema-injection.d.ts.map +1 -0
- package/dist/schema-injection.js +87 -0
- package/dist/schema-injection.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @clampd/sdk — TypeScript SDK
|
|
2
2
|
|
|
3
|
-
Runtime security for AI agents. Guard every tool call — OpenAI, Anthropic, LangChain.js — in 1 line.
|
|
3
|
+
Runtime security for AI agents. Guard every tool call — OpenAI, Anthropic, LangChain.js — in 1 line. Prompt and response scanning enabled by default.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install clampd
|
|
8
|
+
npm install @clampd/sdk
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
## Quick Start
|
|
12
12
|
|
|
13
13
|
```typescript
|
|
14
|
-
import clampd from "clampd";
|
|
14
|
+
import clampd from "@clampd/sdk";
|
|
15
15
|
import OpenAI from "openai";
|
|
16
16
|
|
|
17
17
|
// Configure once at startup
|
|
@@ -33,8 +33,15 @@ const response = await client.chat.completions.create({
|
|
|
33
33
|
});
|
|
34
34
|
// Dangerous tool calls → blocked before execution
|
|
35
35
|
// Safe tool calls → proceed normally
|
|
36
|
+
// Prompts scanned before LLM, responses scanned after
|
|
36
37
|
```
|
|
37
38
|
|
|
39
|
+
## What's New in 0.4.0
|
|
40
|
+
|
|
41
|
+
- **`scanInput` and `scanOutput` now default to `true`** — prompts are scanned before the LLM call, responses are scanned after. Set `scanInput: false` to opt out.
|
|
42
|
+
- 50 detection rules across 20 languages
|
|
43
|
+
- 7 compliance frameworks (HIPAA, GDPR, PCI-DSS, CCPA, SOC 2, EU AI Act, NIST AI RMF)
|
|
44
|
+
|
|
38
45
|
## Configuration
|
|
39
46
|
|
|
40
47
|
Three ways to configure (pick one):
|
|
@@ -44,7 +51,7 @@ Three ways to configure (pick one):
|
|
|
44
51
|
// CLAMPD_GATEWAY_URL=http://localhost:8080
|
|
45
52
|
// CLAMPD_API_KEY=ag_live_...
|
|
46
53
|
// CLAMPD_AGENT_ID=my-agent
|
|
47
|
-
//
|
|
54
|
+
// JWT_SECRET=ags_...
|
|
48
55
|
|
|
49
56
|
// Option 2: Global init (recommended)
|
|
50
57
|
clampd.init({ agentId: "my-agent", secret: "ags_...", gatewayUrl: "...", apiKey: "..." });
|
|
@@ -60,7 +67,7 @@ const safeFn = clampd.guard(myFn, {
|
|
|
60
67
|
## Anthropic / Claude
|
|
61
68
|
|
|
62
69
|
```typescript
|
|
63
|
-
import clampd from "clampd";
|
|
70
|
+
import clampd from "@clampd/sdk";
|
|
64
71
|
import Anthropic from "@anthropic-ai/sdk";
|
|
65
72
|
|
|
66
73
|
clampd.init({ agentId: "my-agent", secret: "ags_..." });
|
|
@@ -77,7 +84,7 @@ const response = await client.messages.create({
|
|
|
77
84
|
## Direct Guard (any function)
|
|
78
85
|
|
|
79
86
|
```typescript
|
|
80
|
-
import clampd from "clampd";
|
|
87
|
+
import clampd from "@clampd/sdk";
|
|
81
88
|
|
|
82
89
|
clampd.init({ agentId: "my-agent", secret: "ags_..." });
|
|
83
90
|
|
|
@@ -95,10 +102,24 @@ await safeQuery("SELECT * FROM users"); // allowed
|
|
|
95
102
|
await safeQuery("DROP TABLE users"); // throws ClampdBlockedError
|
|
96
103
|
```
|
|
97
104
|
|
|
105
|
+
## Scanning Options
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
// Defaults (v0.4.0+): scanInput=true, scanOutput=true
|
|
109
|
+
const client = clampd.openai(new OpenAI(), { agentId: "my-agent" });
|
|
110
|
+
|
|
111
|
+
// Opt out of scanning
|
|
112
|
+
const client = clampd.openai(new OpenAI(), {
|
|
113
|
+
agentId: "my-agent",
|
|
114
|
+
scanInput: false, // skip prompt scanning
|
|
115
|
+
scanOutput: false, // skip response scanning
|
|
116
|
+
});
|
|
117
|
+
```
|
|
118
|
+
|
|
98
119
|
## Tool Definitions Wrapper
|
|
99
120
|
|
|
100
121
|
```typescript
|
|
101
|
-
import clampd from "clampd";
|
|
122
|
+
import clampd from "@clampd/sdk";
|
|
102
123
|
|
|
103
124
|
// Wrap OpenAI-style tool definitions
|
|
104
125
|
const safeTools = clampd.tools(myToolDefs, { agentId: "my-agent", secret: "ags_..." });
|
|
@@ -107,7 +128,7 @@ const safeTools = clampd.tools(myToolDefs, { agentId: "my-agent", secret: "ags_.
|
|
|
107
128
|
## Error Handling
|
|
108
129
|
|
|
109
130
|
```typescript
|
|
110
|
-
import { ClampdBlockedError } from "clampd";
|
|
131
|
+
import { ClampdBlockedError } from "@clampd/sdk";
|
|
111
132
|
|
|
112
133
|
try {
|
|
113
134
|
await safeQuery("DROP TABLE users");
|
|
@@ -124,8 +145,8 @@ try {
|
|
|
124
145
|
| Function | Description |
|
|
125
146
|
|----------|-------------|
|
|
126
147
|
| `clampd.init(opts)` | Configure global client (once at startup) |
|
|
127
|
-
| `clampd.openai(client)` | Wrap OpenAI client |
|
|
128
|
-
| `clampd.anthropic(client)` | Wrap Anthropic client |
|
|
148
|
+
| `clampd.openai(client, opts?)` | Wrap OpenAI client (scanInput/scanOutput on by default) |
|
|
149
|
+
| `clampd.anthropic(client, opts?)` | Wrap Anthropic client (scanInput/scanOutput on by default) |
|
|
129
150
|
| `clampd.guard(fn, opts)` | Wrap any async function |
|
|
130
151
|
| `clampd.tools(defs, opts)` | Wrap OpenAI tool definitions |
|
|
131
152
|
|
package/dist/auth.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* JWT helper for Clampd agent authentication.
|
|
3
3
|
*
|
|
4
|
-
* Uses HMAC-SHA256 when `secret` is provided or `
|
|
5
|
-
*
|
|
4
|
+
* Uses HMAC-SHA256 when `secret` is provided or `JWT_SECRET` env var is set.
|
|
5
|
+
* Throws an error if no signing secret is available — unsigned JWTs
|
|
6
6
|
* (alg: none) are NOT supported.
|
|
7
7
|
*/
|
|
8
8
|
/**
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*
|
|
11
11
|
* @param agentId Agent identifier (becomes the `sub` claim).
|
|
12
12
|
* @param opts.secret HMAC-SHA256 signing key. Falls back to
|
|
13
|
-
* `
|
|
13
|
+
* `JWT_SECRET` env var. If unset, throws an error.
|
|
14
14
|
* @param opts.scopes Optional scopes to include in the token.
|
|
15
15
|
* @param opts.ttlSeconds Token TTL in seconds (default: 3600).
|
|
16
16
|
*/
|
package/dist/auth.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* JWT helper for Clampd agent authentication.
|
|
3
3
|
*
|
|
4
|
-
* Uses HMAC-SHA256 when `secret` is provided or `
|
|
5
|
-
*
|
|
4
|
+
* Uses HMAC-SHA256 when `secret` is provided or `JWT_SECRET` env var is set.
|
|
5
|
+
* Throws an error if no signing secret is available — unsigned JWTs
|
|
6
6
|
* (alg: none) are NOT supported.
|
|
7
7
|
*/
|
|
8
8
|
import { createHmac, createHash } from "node:crypto";
|
|
@@ -15,12 +15,12 @@ function b64url(data) {
|
|
|
15
15
|
*
|
|
16
16
|
* @param agentId Agent identifier (becomes the `sub` claim).
|
|
17
17
|
* @param opts.secret HMAC-SHA256 signing key. Falls back to
|
|
18
|
-
* `
|
|
18
|
+
* `JWT_SECRET` env var. If unset, throws an error.
|
|
19
19
|
* @param opts.scopes Optional scopes to include in the token.
|
|
20
20
|
* @param opts.ttlSeconds Token TTL in seconds (default: 3600).
|
|
21
21
|
*/
|
|
22
22
|
export function makeAgentJwt(agentId, opts) {
|
|
23
|
-
const rawSecret = opts?.secret || process.env.
|
|
23
|
+
const rawSecret = opts?.secret || process.env.JWT_SECRET || "";
|
|
24
24
|
const ttl = opts?.ttlSeconds ?? 3600;
|
|
25
25
|
const now = Math.floor(Date.now() / 1000);
|
|
26
26
|
const payloadObj = {
|
|
@@ -48,7 +48,7 @@ export function makeAgentJwt(agentId, opts) {
|
|
|
48
48
|
}
|
|
49
49
|
// Fail-closed: unsigned JWTs are not supported
|
|
50
50
|
throw new Error("[clampd] No signing secret available. " +
|
|
51
|
-
"Set
|
|
52
|
-
"Unsigned JWTs (alg: none) are not supported
|
|
51
|
+
"Set JWT_SECRET env var or pass { secret } to makeAgentJwt(). " +
|
|
52
|
+
"Unsigned JWTs (alg: none) are not supported.");
|
|
53
53
|
}
|
|
54
54
|
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAErD,SAAS,MAAM,CAAC,IAAyB;IACvC,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/E,OAAO,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,IAAkE;IAElE,MAAM,SAAS,GAAG,IAAI,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAErD,SAAS,MAAM,CAAC,IAAyB;IACvC,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/E,OAAO,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,IAAkE;IAElE,MAAM,SAAS,GAAG,IAAI,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,EAAE,UAAU,IAAI,IAAI,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAE1C,MAAM,UAAU,GAA4B;QAC1C,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,YAAY;QACjB,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG,GAAG,GAAG;KACf,CAAC;IACF,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACzB,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,uEAAuE;QACvE,kEAAkE;QAClE,kDAAkD;QAClD,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;YAC7C,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YACtD,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;QAC3E,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACzD,OAAO,GAAG,MAAM,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;IAC7C,CAAC;IAED,+CAA+C;IAC/C,MAAM,IAAI,KAAK,CACb,wCAAwC;QACxC,+DAA+D;QAC/D,8CAA8C,CAC/C,CAAC;AACJ,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -78,7 +78,7 @@ export declare class ClampdClient {
|
|
|
78
78
|
* When targetUrl is set, the gateway also exchanges a micro-token and
|
|
79
79
|
* forwards the request to the target, inspecting the response.
|
|
80
80
|
*/
|
|
81
|
-
proxy(tool: string, params: Record<string, unknown>, targetUrl?: string, promptContext?: string, toolDescriptorHash?: string): Promise<ProxyResponse>;
|
|
81
|
+
proxy(tool: string, params: Record<string, unknown>, targetUrl?: string, promptContext?: string, toolDescriptorHash?: string, authorizedTools?: string[]): Promise<ProxyResponse>;
|
|
82
82
|
/**
|
|
83
83
|
* Get delegation headers for cross-service HTTP propagation.
|
|
84
84
|
* Static convenience method.
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,SAAS,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,aAAa,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9D;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmBD;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,IAAI,EAAE,mBAAmB;IAWrC,OAAO,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -35,13 +35,17 @@ export class ClampdClient {
|
|
|
35
35
|
this.jwt = makeAgentJwt(this.agentId, { secret: opts.secret });
|
|
36
36
|
this.timeoutMs = opts.timeoutMs ?? 30_000;
|
|
37
37
|
}
|
|
38
|
-
headers() {
|
|
39
|
-
|
|
38
|
+
headers(tools) {
|
|
39
|
+
const h = {
|
|
40
40
|
Authorization: `Bearer ${this.jwt}`,
|
|
41
41
|
"X-AG-Key": this.apiKey,
|
|
42
42
|
"Content-Type": "application/json",
|
|
43
43
|
...delegationHeaders(),
|
|
44
44
|
};
|
|
45
|
+
if (tools && tools.length > 0) {
|
|
46
|
+
h["X-AG-Authorized-Tools"] = tools.join(",");
|
|
47
|
+
}
|
|
48
|
+
return h;
|
|
45
49
|
}
|
|
46
50
|
/**
|
|
47
51
|
* Send a tool call through the Clampd gateway for evaluation.
|
|
@@ -53,7 +57,7 @@ export class ClampdClient {
|
|
|
53
57
|
* When targetUrl is set, the gateway also exchanges a micro-token and
|
|
54
58
|
* forwards the request to the target, inspecting the response.
|
|
55
59
|
*/
|
|
56
|
-
async proxy(tool, params, targetUrl = "", promptContext, toolDescriptorHash) {
|
|
60
|
+
async proxy(tool, params, targetUrl = "", promptContext, toolDescriptorHash, authorizedTools) {
|
|
57
61
|
const body = {
|
|
58
62
|
tool,
|
|
59
63
|
params,
|
|
@@ -72,7 +76,7 @@ export class ClampdClient {
|
|
|
72
76
|
body.delegation_chain = delegation.chain;
|
|
73
77
|
body.delegation_trace_id = delegation.traceId;
|
|
74
78
|
}
|
|
75
|
-
return this.post("/v1/proxy", body);
|
|
79
|
+
return this.post("/v1/proxy", body, authorizedTools);
|
|
76
80
|
}
|
|
77
81
|
/**
|
|
78
82
|
* Get delegation headers for cross-service HTTP propagation.
|
|
@@ -129,13 +133,13 @@ export class ClampdClient {
|
|
|
129
133
|
return this.postOrThrow("/v1/scan-output", body);
|
|
130
134
|
}
|
|
131
135
|
// ── Internal ────────────────────────────────────────────────────
|
|
132
|
-
async post(path, body) {
|
|
136
|
+
async post(path, body, authorizedTools) {
|
|
133
137
|
const url = `${this.gatewayUrl}${path}`;
|
|
134
138
|
let resp;
|
|
135
139
|
try {
|
|
136
140
|
resp = await fetch(url, {
|
|
137
141
|
method: "POST",
|
|
138
|
-
headers: this.headers(),
|
|
142
|
+
headers: this.headers(authorizedTools),
|
|
139
143
|
body: JSON.stringify(body),
|
|
140
144
|
signal: AbortSignal.timeout(this.timeoutMs),
|
|
141
145
|
});
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AA8DnE,sEAAsE;AAEtE,SAAS,eAAe,CAAC,MAAc;IACrC,OAAO;QACL,UAAU,EAAE,OAAO;QACnB,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,GAAG;QACf,aAAa,EAAE,MAAM;QACrB,aAAa,EAAE,EAAE;QACjB,UAAU,EAAE,CAAC;QACb,eAAe,EAAE,EAAE;QACnB,aAAa,EAAE,EAAE;KAClB,CAAC;AACJ,CAAC;AAED,sEAAsE;AAEtE;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACN,UAAU,CAAS;IACpB,OAAO,CAAS;IACf,MAAM,CAAS;IACf,GAAG,CAAS;IACZ,SAAS,CAAS;IAEnC,YAAY,IAAyB;QACnC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,uBAAuB,CAAC,CAAC,OAAO,CACpE,KAAK,EACL,EAAE,CACH,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;QAC9D,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;IAC5C,CAAC;IAEO,OAAO;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AA8DnE,sEAAsE;AAEtE,SAAS,eAAe,CAAC,MAAc;IACrC,OAAO;QACL,UAAU,EAAE,OAAO;QACnB,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,GAAG;QACf,aAAa,EAAE,MAAM;QACrB,aAAa,EAAE,EAAE;QACjB,UAAU,EAAE,CAAC;QACb,eAAe,EAAE,EAAE;QACnB,aAAa,EAAE,EAAE;KAClB,CAAC;AACJ,CAAC;AAED,sEAAsE;AAEtE;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACN,UAAU,CAAS;IACpB,OAAO,CAAS;IACf,MAAM,CAAS;IACf,GAAG,CAAS;IACZ,SAAS,CAAS;IAEnC,YAAY,IAAyB;QACnC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,uBAAuB,CAAC,CAAC,OAAO,CACpE,KAAK,EACL,EAAE,CACH,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;QAC9D,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;IAC5C,CAAC;IAEO,OAAO,CAAC,KAAgB;QAC9B,MAAM,CAAC,GAA2B;YAChC,aAAa,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE;YACnC,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,cAAc,EAAE,kBAAkB;YAClC,GAAG,iBAAiB,EAAE;SACvB,CAAC;QACF,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,CAAC,CAAC,uBAAuB,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,KAAK,CACT,IAAY,EACZ,MAA+B,EAC/B,YAAoB,EAAE,EACtB,aAAsB,EACtB,kBAA2B,EAC3B,eAA0B;QAE1B,MAAM,IAAI,GAA4B;YACpC,IAAI;YACJ,MAAM;YACN,UAAU,EAAE,SAAS;SACtB,CAAC;QACF,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACtC,CAAC;QACD,IAAI,kBAAkB,EAAE,CAAC;YACvB,IAAI,CAAC,oBAAoB,GAAG,kBAAkB,CAAC;QACjD,CAAC;QAED,6CAA6C;QAC7C,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC;YACzC,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,OAAO,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,iBAAiB;QACtB,OAAO,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CACX,IAAY,EACZ,YAAqB,EACrB,SAAkB,EAClB,UAAmB;QAEnB,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;QAC5E,IAAI,SAAS;YAAE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC3C,IAAI,UAAU;YAAE,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,IAAY,EACZ,MAA+B,EAC/B,YAAoB,EAAE;QAEtB,MAAM,IAAI,GAAkB;YAC1B,IAAI;YACJ,MAAM;YACN,UAAU,EAAE,SAAS;SACtB,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAA0C,CAAC,CAAC;IAC7E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,YAAqB;QACjD,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,CAAC;QAC/C,IAAI,YAAY;YAAE,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QACpD,OAAO,IAAI,CAAC,WAAW,CAAe,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,SAAkB;QAC/C,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,CAAC;QAC/C,IAAI,SAAS;YAAE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC3C,OAAO,IAAI,CAAC,WAAW,CAAqB,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,mEAAmE;IAE3D,KAAK,CAAC,IAAI,CAChB,IAAY,EACZ,IAA6B,EAC7B,eAA0B;QAE1B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC;QAExC,IAAI,IAAc,CAAC;QACnB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBACtB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;gBACtC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;aAC5C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GACX,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC;YAC7D,OAAO,eAAe,CAAC,gBAAgB,OAAO,EAAE,CAAiB,CAAC;QACpE,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAM,CAAC;YACtC,iEAAiE;YACjE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;gBAC3E,MAAM,EAAE,GAAG,IAAgC,CAAC;gBAC5C,OAAO;oBACL,GAAG,IAAI;oBACP,eAAe,EAAE,EAAE,CAAC,eAAe,IAAI,EAAE;oBACzC,aAAa,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE;iBACtC,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,4DAA4D;QAC5D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAClE,OAAO,eAAe,CAAC,IAAI,CAAiB,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,WAAW,CACvB,IAAY,EACZ,IAA6B;QAE7B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC;QAExC,IAAI,IAAc,CAAC;QACnB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBACtB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;gBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;aAC5C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAM,CAAC;IAClC,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,10 +21,12 @@
|
|
|
21
21
|
import { ClampdClient } from "./client.js";
|
|
22
22
|
import { type OpenAITool } from "./interceptor.js";
|
|
23
23
|
import { delegationHeaders } from "./delegation.js";
|
|
24
|
+
import { scanForSchemaInjection } from "./schema-injection.js";
|
|
24
25
|
export { ClampdClient, type ClampdClientOptions, type ProxyResponse, type ScanResponse, type ScanOutputResponse } from "./client.js";
|
|
25
26
|
export { makeAgentJwt } from "./auth.js";
|
|
26
27
|
export { ClampdBlockedError, type OpenAITool } from "./interceptor.js";
|
|
27
28
|
export { withDelegation, getDelegation, getCallerAgentId, delegationHeaders, type DelegationContext } from "./delegation.js";
|
|
29
|
+
export { scanForSchemaInjection, type SchemaInjectionWarning } from "./schema-injection.js";
|
|
28
30
|
export { verifyScopeToken, requireScope, getCurrentScopeToken, ScopeVerificationError, withScopeToken, setScopeToken, fetchJwks, invalidateJwksCache } from "./tool-verify.js";
|
|
29
31
|
export type { ScopeTokenClaims } from "./tool-verify.js";
|
|
30
32
|
interface InitOptions {
|
|
@@ -47,6 +49,7 @@ interface WrapOptions {
|
|
|
47
49
|
checkResponse?: boolean;
|
|
48
50
|
scanInput?: boolean;
|
|
49
51
|
scanOutput?: boolean;
|
|
52
|
+
schemaRegistry?: Record<string, string>;
|
|
50
53
|
}
|
|
51
54
|
declare function init(opts: InitOptions): ClampdClient;
|
|
52
55
|
declare function guard<TArgs extends unknown[], TReturn>(fn: (...args: TArgs) => Promise<TReturn>, opts: GuardOptions): (...args: TArgs) => Promise<TReturn>;
|
|
@@ -71,6 +74,7 @@ declare const clampd: {
|
|
|
71
74
|
openai: typeof openai;
|
|
72
75
|
anthropic: typeof anthropic;
|
|
73
76
|
delegationHeaders: typeof delegationHeaders;
|
|
77
|
+
scanForSchemaInjection: typeof scanForSchemaInjection;
|
|
74
78
|
};
|
|
75
79
|
export default clampd;
|
|
76
80
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,YAAY,EAA4F,MAAM,aAAa,CAAC;AAErI,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAmD,iBAAiB,EAA0B,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -22,10 +22,12 @@ import { createHash } from "node:crypto";
|
|
|
22
22
|
import { ClampdClient } from "./client.js";
|
|
23
23
|
import { ClampdBlockedError } from "./interceptor.js";
|
|
24
24
|
import { withDelegation, getDelegation, getCallerAgentId, delegationHeaders } from "./delegation.js";
|
|
25
|
+
import { scanForSchemaInjection } from "./schema-injection.js";
|
|
25
26
|
export { ClampdClient } from "./client.js";
|
|
26
27
|
export { makeAgentJwt } from "./auth.js";
|
|
27
28
|
export { ClampdBlockedError } from "./interceptor.js";
|
|
28
29
|
export { withDelegation, getDelegation, getCallerAgentId, delegationHeaders } from "./delegation.js";
|
|
30
|
+
export { scanForSchemaInjection } from "./schema-injection.js";
|
|
29
31
|
export { verifyScopeToken, requireScope, getCurrentScopeToken, ScopeVerificationError, withScopeToken, setScopeToken, fetchJwks, invalidateJwksCache } from "./tool-verify.js";
|
|
30
32
|
// ── Global config ─────────────────────────────────────────────────
|
|
31
33
|
let defaultClient = null;
|
|
@@ -162,12 +164,38 @@ function openai(client, opts) {
|
|
|
162
164
|
const clampdClient = getClient({ agentId: opts.agentId });
|
|
163
165
|
const { targetUrl = "", failOpen = false, scanInput = true, scanOutput = true } = opts;
|
|
164
166
|
const originalCreate = client.chat.completions.create.bind(client.chat.completions);
|
|
167
|
+
// Extract tool names from OpenAI tool definitions for X-AG-Authorized-Tools header
|
|
168
|
+
function extractToolNames(p) {
|
|
169
|
+
const tools = p?.tools;
|
|
170
|
+
if (!tools?.length)
|
|
171
|
+
return undefined;
|
|
172
|
+
const names = tools
|
|
173
|
+
.map((t) => t.function?.name)
|
|
174
|
+
.filter((n) => !!n);
|
|
175
|
+
return names.length > 0 ? names : undefined;
|
|
176
|
+
}
|
|
165
177
|
client.chat.completions.create = async (...args) => {
|
|
166
178
|
const params = args[0];
|
|
179
|
+
const _authorizedTools = extractToolNames(params);
|
|
167
180
|
// ── STREAMING PASSTHROUGH ──
|
|
168
181
|
// Streaming responses deliver tool calls via stream events, not the response body,
|
|
169
182
|
// so tool-call interception cannot work. Run scanInput if enabled, then pass through.
|
|
170
183
|
if (params?.stream) {
|
|
184
|
+
// ── SCHEMA INJECTION PRE-SCAN ──
|
|
185
|
+
if (params?.messages) {
|
|
186
|
+
const schemaWarnings = scanForSchemaInjection(params.messages);
|
|
187
|
+
if (schemaWarnings.length > 0 && schemaWarnings[0].riskScore >= 0.85) {
|
|
188
|
+
throw new ClampdBlockedError({
|
|
189
|
+
request_id: "schema-injection",
|
|
190
|
+
allowed: false,
|
|
191
|
+
risk_score: schemaWarnings[0].riskScore,
|
|
192
|
+
denial_reason: `Schema injection detected: ${schemaWarnings[0].alertType} (pattern: ${schemaWarnings[0].matchedPattern})`,
|
|
193
|
+
latency_ms: 0,
|
|
194
|
+
degraded_stages: [],
|
|
195
|
+
session_flags: [],
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
171
199
|
if (scanInput && params.messages) {
|
|
172
200
|
const messages = params.messages;
|
|
173
201
|
const userMessages = messages
|
|
@@ -200,6 +228,21 @@ function openai(client, opts) {
|
|
|
200
228
|
}
|
|
201
229
|
return originalCreate(...args);
|
|
202
230
|
}
|
|
231
|
+
// ── SCHEMA INJECTION PRE-SCAN ──
|
|
232
|
+
if (params?.messages) {
|
|
233
|
+
const schemaWarnings = scanForSchemaInjection(params.messages);
|
|
234
|
+
if (schemaWarnings.length > 0 && schemaWarnings[0].riskScore >= 0.85) {
|
|
235
|
+
throw new ClampdBlockedError({
|
|
236
|
+
request_id: "schema-injection",
|
|
237
|
+
allowed: false,
|
|
238
|
+
risk_score: schemaWarnings[0].riskScore,
|
|
239
|
+
denial_reason: `Schema injection detected: ${schemaWarnings[0].alertType} (pattern: ${schemaWarnings[0].matchedPattern})`,
|
|
240
|
+
latency_ms: 0,
|
|
241
|
+
degraded_stages: [],
|
|
242
|
+
session_flags: [],
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
}
|
|
203
246
|
// ── INPUT GUARDRAIL ──
|
|
204
247
|
if (scanInput && params?.messages) {
|
|
205
248
|
const messages = params.messages;
|
|
@@ -267,6 +310,28 @@ function openai(client, opts) {
|
|
|
267
310
|
return response;
|
|
268
311
|
}
|
|
269
312
|
for (const tc of choice.message.tool_calls) {
|
|
313
|
+
// Schema registry hash verification
|
|
314
|
+
if (opts.schemaRegistry && tc.function.name in opts.schemaRegistry) {
|
|
315
|
+
const toolDef = params?.tools
|
|
316
|
+
?.find((t) => t.function?.name === tc.function.name);
|
|
317
|
+
if (toolDef) {
|
|
318
|
+
const fn = toolDef.function;
|
|
319
|
+
const hashInput = `${fn.name ?? ""}|${fn.description ?? ""}|${JSON.stringify(fn.parameters ?? {}, Object.keys(fn.parameters ?? {}).sort())}`;
|
|
320
|
+
const currentHash = createHash("sha256").update(hashInput).digest("hex");
|
|
321
|
+
const expected = opts.schemaRegistry[tc.function.name].replace(/^sha256:/, "");
|
|
322
|
+
if (currentHash !== expected) {
|
|
323
|
+
throw new ClampdBlockedError({
|
|
324
|
+
request_id: "descriptor-mismatch",
|
|
325
|
+
allowed: false,
|
|
326
|
+
risk_score: 0.95,
|
|
327
|
+
denial_reason: `Tool descriptor hash mismatch for ${tc.function.name}: expected ${expected}, got ${currentHash}`,
|
|
328
|
+
latency_ms: 0,
|
|
329
|
+
degraded_stages: [],
|
|
330
|
+
session_flags: [],
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
270
335
|
let toolArgs;
|
|
271
336
|
try {
|
|
272
337
|
toolArgs = typeof tc.function.arguments === "string"
|
|
@@ -287,7 +352,7 @@ function openai(client, opts) {
|
|
|
287
352
|
};
|
|
288
353
|
}
|
|
289
354
|
try {
|
|
290
|
-
const res = await clampdClient.proxy(tc.function.name, proxyParams, targetUrl);
|
|
355
|
+
const res = await clampdClient.proxy(tc.function.name, proxyParams, targetUrl, undefined, undefined, _authorizedTools);
|
|
291
356
|
if (!res.allowed) {
|
|
292
357
|
throw new ClampdBlockedError(res);
|
|
293
358
|
}
|
|
@@ -309,12 +374,38 @@ function anthropic(client, opts) {
|
|
|
309
374
|
const clampdClient = getClient({ agentId: opts.agentId });
|
|
310
375
|
const { targetUrl = "", failOpen = false, scanInput = true, scanOutput = true } = opts;
|
|
311
376
|
const originalCreate = client.messages.create.bind(client.messages);
|
|
377
|
+
// Extract tool names from Anthropic tool definitions
|
|
378
|
+
function extractAnthropicToolNames(p) {
|
|
379
|
+
const tools = p?.tools;
|
|
380
|
+
if (!tools?.length)
|
|
381
|
+
return undefined;
|
|
382
|
+
const names = tools
|
|
383
|
+
.map((t) => t.name)
|
|
384
|
+
.filter((n) => !!n);
|
|
385
|
+
return names.length > 0 ? names : undefined;
|
|
386
|
+
}
|
|
312
387
|
client.messages.create = async (...args) => {
|
|
313
388
|
const params = args[0];
|
|
389
|
+
const _authorizedTools = extractAnthropicToolNames(params);
|
|
314
390
|
// ── STREAMING PASSTHROUGH ──
|
|
315
391
|
// Streaming responses deliver tool calls via stream events, not the response body,
|
|
316
392
|
// so tool-call interception cannot work. Run scanInput if enabled, then pass through.
|
|
317
393
|
if (params?.stream) {
|
|
394
|
+
// ── SCHEMA INJECTION PRE-SCAN ──
|
|
395
|
+
if (params?.messages) {
|
|
396
|
+
const schemaWarnings = scanForSchemaInjection(params.messages);
|
|
397
|
+
if (schemaWarnings.length > 0 && schemaWarnings[0].riskScore >= 0.85) {
|
|
398
|
+
throw new ClampdBlockedError({
|
|
399
|
+
request_id: "schema-injection",
|
|
400
|
+
allowed: false,
|
|
401
|
+
risk_score: schemaWarnings[0].riskScore,
|
|
402
|
+
denial_reason: `Schema injection detected: ${schemaWarnings[0].alertType} (pattern: ${schemaWarnings[0].matchedPattern})`,
|
|
403
|
+
latency_ms: 0,
|
|
404
|
+
degraded_stages: [],
|
|
405
|
+
session_flags: [],
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
}
|
|
318
409
|
if (scanInput && params.messages) {
|
|
319
410
|
const messages = params.messages;
|
|
320
411
|
const userMessages = messages
|
|
@@ -357,6 +448,21 @@ function anthropic(client, opts) {
|
|
|
357
448
|
}
|
|
358
449
|
return originalCreate(...args);
|
|
359
450
|
}
|
|
451
|
+
// ── SCHEMA INJECTION PRE-SCAN ──
|
|
452
|
+
if (params?.messages) {
|
|
453
|
+
const schemaWarnings = scanForSchemaInjection(params.messages);
|
|
454
|
+
if (schemaWarnings.length > 0 && schemaWarnings[0].riskScore >= 0.85) {
|
|
455
|
+
throw new ClampdBlockedError({
|
|
456
|
+
request_id: "schema-injection",
|
|
457
|
+
allowed: false,
|
|
458
|
+
risk_score: schemaWarnings[0].riskScore,
|
|
459
|
+
denial_reason: `Schema injection detected: ${schemaWarnings[0].alertType} (pattern: ${schemaWarnings[0].matchedPattern})`,
|
|
460
|
+
latency_ms: 0,
|
|
461
|
+
degraded_stages: [],
|
|
462
|
+
session_flags: [],
|
|
463
|
+
});
|
|
464
|
+
}
|
|
465
|
+
}
|
|
360
466
|
// ── INPUT GUARDRAIL ──
|
|
361
467
|
if (scanInput && params?.messages) {
|
|
362
468
|
const messages = params.messages;
|
|
@@ -449,7 +555,7 @@ function anthropic(client, opts) {
|
|
|
449
555
|
};
|
|
450
556
|
}
|
|
451
557
|
try {
|
|
452
|
-
const res = await clampdClient.proxy(block.name ?? "unknown", proxyParams, targetUrl);
|
|
558
|
+
const res = await clampdClient.proxy(block.name ?? "unknown", proxyParams, targetUrl, undefined, undefined, _authorizedTools);
|
|
453
559
|
if (!res.allowed) {
|
|
454
560
|
throw new ClampdBlockedError(res);
|
|
455
561
|
}
|
|
@@ -467,6 +573,6 @@ function anthropic(client, opts) {
|
|
|
467
573
|
return client;
|
|
468
574
|
}
|
|
469
575
|
// ── Default export ────────────────────────────────────────────────
|
|
470
|
-
const clampd = { init, guard, tools, openai, anthropic, delegationHeaders };
|
|
576
|
+
const clampd = { init, guard, tools, openai, anthropic, delegationHeaders, scanForSchemaInjection };
|
|
471
577
|
export default clampd;
|
|
472
578
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema injection / tool poisoning detection for the Clampd TypeScript SDK.
|
|
3
|
+
*
|
|
4
|
+
* Scans conversation messages for attempts to inject or redefine tool schemas,
|
|
5
|
+
* steer agents toward different tools via DEPRECATED tags, or weaken schema
|
|
6
|
+
* constraints.
|
|
7
|
+
*/
|
|
8
|
+
export interface SchemaInjectionWarning {
|
|
9
|
+
alertType: string;
|
|
10
|
+
matchedPattern: string;
|
|
11
|
+
riskScore: number;
|
|
12
|
+
messageIndex: number;
|
|
13
|
+
}
|
|
14
|
+
interface MessageLike {
|
|
15
|
+
role?: string;
|
|
16
|
+
content?: string | unknown;
|
|
17
|
+
[key: string]: unknown;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Scan conversation messages for schema injection / tool poisoning attempts.
|
|
21
|
+
*
|
|
22
|
+
* Checks all message content (user, system, assistant turns) for:
|
|
23
|
+
* - XML tool definition tags (<functions>, <tool>, etc.)
|
|
24
|
+
* - JSON tool definition structures ("inputSchema", "parameters")
|
|
25
|
+
* - Tool confusion via DEPRECATED/OBSOLETE steering
|
|
26
|
+
* - Schema constraint weakening (allowed_directories: [], type: "any")
|
|
27
|
+
*
|
|
28
|
+
* @returns Warnings sorted by risk (highest first). Empty array = clean.
|
|
29
|
+
*/
|
|
30
|
+
export declare function scanForSchemaInjection(messages: MessageLike[]): SchemaInjectionWarning[];
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=schema-injection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-injection.d.ts","sourceRoot":"","sources":["../src/schema-injection.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAuDD,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,sBAAsB,EAAE,CA2BxF"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema injection / tool poisoning detection for the Clampd TypeScript SDK.
|
|
3
|
+
*
|
|
4
|
+
* Scans conversation messages for attempts to inject or redefine tool schemas,
|
|
5
|
+
* steer agents toward different tools via DEPRECATED tags, or weaken schema
|
|
6
|
+
* constraints.
|
|
7
|
+
*/
|
|
8
|
+
const PATTERN_GROUPS = [
|
|
9
|
+
{
|
|
10
|
+
alertType: "xml_injection",
|
|
11
|
+
riskScore: 0.95,
|
|
12
|
+
patterns: [
|
|
13
|
+
/<\/?functions\s*>/i,
|
|
14
|
+
/<function\s+/i,
|
|
15
|
+
/<\/?tool\s*>/i,
|
|
16
|
+
/<\/?tool_call\s*>/i,
|
|
17
|
+
/<system\s*>/i,
|
|
18
|
+
],
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
alertType: "json_injection",
|
|
22
|
+
riskScore: 0.90,
|
|
23
|
+
patterns: [
|
|
24
|
+
/"inputSchema"\s*:/,
|
|
25
|
+
/"parameters"\s*:\s*\{[^}]*"type"\s*:\s*"object"/,
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
alertType: "constraint_weakening",
|
|
30
|
+
riskScore: 0.88,
|
|
31
|
+
patterns: [
|
|
32
|
+
/allowed_directories["\s]*:\s*\[\s*\]/i,
|
|
33
|
+
/allowed_directories["\s]*:\s*\["\*"\]/i,
|
|
34
|
+
/"type"\s*:\s*"any"/,
|
|
35
|
+
/"required"\s*:\s*\[\s*\]/,
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
alertType: "tool_steering",
|
|
40
|
+
riskScore: 0.80,
|
|
41
|
+
patterns: [
|
|
42
|
+
/\bDEPRECATED\b/i,
|
|
43
|
+
/\bOBSOLETE\b/i,
|
|
44
|
+
/use\s+\w+\s+instead\b/i,
|
|
45
|
+
/\breplaced\s+by\b/i,
|
|
46
|
+
/\bsuperseded\s+by\b/i,
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
/**
|
|
51
|
+
* Scan conversation messages for schema injection / tool poisoning attempts.
|
|
52
|
+
*
|
|
53
|
+
* Checks all message content (user, system, assistant turns) for:
|
|
54
|
+
* - XML tool definition tags (<functions>, <tool>, etc.)
|
|
55
|
+
* - JSON tool definition structures ("inputSchema", "parameters")
|
|
56
|
+
* - Tool confusion via DEPRECATED/OBSOLETE steering
|
|
57
|
+
* - Schema constraint weakening (allowed_directories: [], type: "any")
|
|
58
|
+
*
|
|
59
|
+
* @returns Warnings sorted by risk (highest first). Empty array = clean.
|
|
60
|
+
*/
|
|
61
|
+
export function scanForSchemaInjection(messages) {
|
|
62
|
+
const warnings = [];
|
|
63
|
+
for (let idx = 0; idx < messages.length; idx++) {
|
|
64
|
+
const msg = messages[idx];
|
|
65
|
+
const content = typeof msg.content === "string" ? msg.content : "";
|
|
66
|
+
if (!content)
|
|
67
|
+
continue;
|
|
68
|
+
for (const group of PATTERN_GROUPS) {
|
|
69
|
+
for (const pattern of group.patterns) {
|
|
70
|
+
const match = pattern.exec(content);
|
|
71
|
+
if (match) {
|
|
72
|
+
warnings.push({
|
|
73
|
+
alertType: group.alertType,
|
|
74
|
+
matchedPattern: match[0],
|
|
75
|
+
riskScore: group.riskScore,
|
|
76
|
+
messageIndex: idx,
|
|
77
|
+
});
|
|
78
|
+
break; // One match per group per message
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Sort by risk (highest first)
|
|
84
|
+
warnings.sort((a, b) => b.riskScore - a.riskScore);
|
|
85
|
+
return warnings;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=schema-injection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-injection.js","sourceRoot":"","sources":["../src/schema-injection.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmBH,MAAM,cAAc,GAAmB;IACrC;QACE,SAAS,EAAE,eAAe;QAC1B,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE;YACR,oBAAoB;YACpB,eAAe;YACf,eAAe;YACf,oBAAoB;YACpB,cAAc;SACf;KACF;IACD;QACE,SAAS,EAAE,gBAAgB;QAC3B,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE;YACR,mBAAmB;YACnB,iDAAiD;SAClD;KACF;IACD;QACE,SAAS,EAAE,sBAAsB;QACjC,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE;YACR,uCAAuC;YACvC,wCAAwC;YACxC,oBAAoB;YACpB,0BAA0B;SAC3B;KACF;IACD;QACE,SAAS,EAAE,eAAe;QAC1B,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE;YACR,iBAAiB;YACjB,eAAe;YACf,wBAAwB;YACxB,oBAAoB;YACpB,sBAAsB;SACvB;KACF;CACF,CAAC;AAUF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAuB;IAC5D,MAAM,QAAQ,GAA6B,EAAE,CAAC;IAE9C,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpC,IAAI,KAAK,EAAE,CAAC;oBACV,QAAQ,CAAC,IAAI,CAAC;wBACZ,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;wBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,YAAY,EAAE,GAAG;qBAClB,CAAC,CAAC;oBACH,MAAM,CAAC,kCAAkC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IACnD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|