burrow-sdk 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.
Files changed (38) hide show
  1. package/README.md +176 -0
  2. package/dist/errors.d.ts +12 -0
  3. package/dist/errors.d.ts.map +1 -0
  4. package/dist/errors.js +21 -0
  5. package/dist/errors.js.map +1 -0
  6. package/dist/index.d.ts +19 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +102 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/integrations/adk.d.ts +144 -0
  11. package/dist/integrations/adk.d.ts.map +1 -0
  12. package/dist/integrations/adk.js +323 -0
  13. package/dist/integrations/adk.js.map +1 -0
  14. package/dist/integrations/ai-sdk.d.ts +71 -0
  15. package/dist/integrations/ai-sdk.d.ts.map +1 -0
  16. package/dist/integrations/ai-sdk.js +115 -0
  17. package/dist/integrations/ai-sdk.js.map +1 -0
  18. package/dist/integrations/claude-sdk.d.ts +75 -0
  19. package/dist/integrations/claude-sdk.d.ts.map +1 -0
  20. package/dist/integrations/claude-sdk.js +127 -0
  21. package/dist/integrations/claude-sdk.js.map +1 -0
  22. package/dist/integrations/langchain.d.ts +88 -0
  23. package/dist/integrations/langchain.d.ts.map +1 -0
  24. package/dist/integrations/langchain.js +162 -0
  25. package/dist/integrations/langchain.js.map +1 -0
  26. package/dist/integrations/openai-agents.d.ts +112 -0
  27. package/dist/integrations/openai-agents.d.ts.map +1 -0
  28. package/dist/integrations/openai-agents.js +139 -0
  29. package/dist/integrations/openai-agents.js.map +1 -0
  30. package/dist/integrations/strands.d.ts +81 -0
  31. package/dist/integrations/strands.d.ts.map +1 -0
  32. package/dist/integrations/strands.js +274 -0
  33. package/dist/integrations/strands.js.map +1 -0
  34. package/dist/types.d.ts +30 -0
  35. package/dist/types.d.ts.map +1 -0
  36. package/dist/types.js +7 -0
  37. package/dist/types.js.map +1 -0
  38. package/package.json +66 -0
@@ -0,0 +1,323 @@
1
+ /**
2
+ * Burrow adapter for Google Agent Development Kit (ADK).
3
+ *
4
+ * Provides model-level callbacks (before/after) and tool-level callbacks
5
+ * (before_tool/after_tool) that scan through Burrow for prompt injection.
6
+ *
7
+ * Model callbacks see full LLM requests/responses. Tool callbacks see
8
+ * individual tool calls with `toolName` and `toolArgs`, enabling more
9
+ * precise scanning.
10
+ *
11
+ * Usage (model-level):
12
+ *
13
+ * ```ts
14
+ * import { BurrowGuard } from "burrow-sdk";
15
+ * import { createBurrowCallback } from "burrow-sdk/integrations/adk";
16
+ *
17
+ * const guard = new BurrowGuard({ clientId: "...", clientSecret: "..." });
18
+ * const callback = createBurrowCallback(guard);
19
+ *
20
+ * const agent = new Agent({
21
+ * model: "gemini-2.0-flash",
22
+ * beforeModelCallback: callback,
23
+ * });
24
+ * ```
25
+ *
26
+ * Usage (tool-level, V2):
27
+ *
28
+ * ```ts
29
+ * import {
30
+ * createBurrowCallbackV2,
31
+ * createBurrowAfterCallbackV2,
32
+ * createBurrowToolCallbackV2,
33
+ * createBurrowAfterToolCallbackV2,
34
+ * } from "burrow-sdk/integrations/adk";
35
+ *
36
+ * const agent = new Agent({
37
+ * model: "gemini-2.0-flash",
38
+ * beforeModelCallback: createBurrowCallbackV2(guard),
39
+ * afterModelCallback: createBurrowAfterCallbackV2(guard),
40
+ * beforeToolCallback: createBurrowToolCallbackV2(guard),
41
+ * afterToolCallback: createBurrowAfterToolCallbackV2(guard),
42
+ * });
43
+ * ```
44
+ */
45
+ // ---------------------------------------------------------------------------
46
+ // Helpers
47
+ // ---------------------------------------------------------------------------
48
+ /** Known text-bearing keys to extract from tool arguments. */
49
+ const KNOWN_TEXT_KEYS = ["command", "content", "query", "text", "url", "file_path", "pattern"];
50
+ /**
51
+ * Extract scannable text from tool arguments.
52
+ * Prioritizes known text-bearing fields, falls back to JSON serialization.
53
+ */
54
+ function extractToolArgsText(toolArgs) {
55
+ const parts = [];
56
+ for (const key of KNOWN_TEXT_KEYS) {
57
+ if (key in toolArgs && toolArgs[key] != null) {
58
+ parts.push(String(toolArgs[key]));
59
+ }
60
+ }
61
+ return parts.length > 0 ? parts.join(" ").trim() : JSON.stringify(toolArgs);
62
+ }
63
+ /**
64
+ * Extract text from the last content entry's parts in an LLM request.
65
+ */
66
+ function extractRequestText(llmRequest) {
67
+ if (!llmRequest.contents || llmRequest.contents.length === 0) {
68
+ return "";
69
+ }
70
+ const lastContent = llmRequest.contents[llmRequest.contents.length - 1];
71
+ if (!lastContent.parts || lastContent.parts.length === 0) {
72
+ return "";
73
+ }
74
+ const parts = [];
75
+ for (const part of lastContent.parts) {
76
+ if (part.text) {
77
+ parts.push(part.text);
78
+ }
79
+ }
80
+ return parts.join(" ").trim();
81
+ }
82
+ /**
83
+ * Extract text from an LLM response's content parts.
84
+ */
85
+ function extractResponseText(llmResponse) {
86
+ if (!llmResponse.content || !llmResponse.content.parts) {
87
+ return "";
88
+ }
89
+ const parts = [];
90
+ for (const part of llmResponse.content.parts) {
91
+ if (part.text) {
92
+ parts.push(part.text);
93
+ }
94
+ }
95
+ return parts.join(" ").trim();
96
+ }
97
+ function shouldBlock(result, blockOnWarn) {
98
+ return result.action === "block" || (blockOnWarn && result.action === "warn");
99
+ }
100
+ /**
101
+ * Build a blocked LlmResponse with the given message text.
102
+ */
103
+ function blockedResponse(message) {
104
+ return {
105
+ content: {
106
+ role: "model",
107
+ parts: [{ text: message }],
108
+ },
109
+ };
110
+ }
111
+ // ---------------------------------------------------------------------------
112
+ // V1 — model callbacks with explicit agent name
113
+ // ---------------------------------------------------------------------------
114
+ /**
115
+ * Create a Google ADK `before_model_callback` that scans with Burrow.
116
+ *
117
+ * When injection is detected, returns an `LlmResponse`-shaped object that
118
+ * blocks the original request and informs the user.
119
+ *
120
+ * @param guard - BurrowGuard instance.
121
+ * @param options - Callback options (agentName, blockOnWarn).
122
+ * @returns A callback compatible with ADK's `before_model_callback`.
123
+ */
124
+ export function createBurrowCallback(guard, options = {}) {
125
+ const agentName = options.agentName ?? "adk";
126
+ const blockOnWarn = options.blockOnWarn ?? false;
127
+ return async (_callbackContext, llmRequest) => {
128
+ const text = extractRequestText(llmRequest);
129
+ if (!text)
130
+ return null;
131
+ const result = await guard.scan(text, {
132
+ contentType: "user_prompt",
133
+ agent: agentName,
134
+ });
135
+ if (shouldBlock(result, blockOnWarn)) {
136
+ return blockedResponse(`[Blocked by Burrow: ${result.category} ` +
137
+ `(${Math.round(result.confidence * 100)}% confidence). ` +
138
+ `This message was flagged as a potential ` +
139
+ `prompt injection and was not processed.]`);
140
+ }
141
+ return null;
142
+ };
143
+ }
144
+ /**
145
+ * Create a Google ADK `after_model_callback` that scans LLM responses.
146
+ *
147
+ * Checks if the model's response contains injection-like content
148
+ * that might have been triggered by indirect injection in tool outputs.
149
+ *
150
+ * @param guard - BurrowGuard instance.
151
+ * @param options - Callback options (agentName, blockOnWarn).
152
+ * @returns A callback compatible with ADK's `after_model_callback`.
153
+ */
154
+ export function createBurrowAfterCallback(guard, options = {}) {
155
+ const agentName = options.agentName ?? "adk";
156
+ const blockOnWarn = options.blockOnWarn ?? false;
157
+ return async (_callbackContext, llmResponse) => {
158
+ const text = extractResponseText(llmResponse);
159
+ if (!text)
160
+ return null;
161
+ const result = await guard.scan(text, {
162
+ contentType: "tool_response",
163
+ agent: agentName,
164
+ });
165
+ if (shouldBlock(result, blockOnWarn)) {
166
+ return blockedResponse(`[Blocked by Burrow: Model response contained ` +
167
+ `suspected injection content (${result.category}). ` +
168
+ `Response was not delivered.]`);
169
+ }
170
+ return null;
171
+ };
172
+ }
173
+ // ---------------------------------------------------------------------------
174
+ // V2 — model callbacks with per-agent identity from callback context
175
+ // ---------------------------------------------------------------------------
176
+ /**
177
+ * Create a Google ADK `before_model_callback` with per-agent identity.
178
+ *
179
+ * Each `LlmAgent` has its own callback slots, so the callback reads the
180
+ * agent name from `callbackContext.agent_name` to produce agent identifiers
181
+ * like `adk:research-agent`.
182
+ *
183
+ * @param guard - BurrowGuard instance.
184
+ * @param options - V2 callback options (blockOnWarn).
185
+ * @returns A callback compatible with ADK's `before_model_callback`.
186
+ */
187
+ export function createBurrowCallbackV2(guard, options = {}) {
188
+ const blockOnWarn = options.blockOnWarn ?? false;
189
+ return async (callbackContext, llmRequest) => {
190
+ const text = extractRequestText(llmRequest);
191
+ if (!text)
192
+ return null;
193
+ const agentLabel = callbackContext.agent_name
194
+ ? `adk:${callbackContext.agent_name}`
195
+ : "adk";
196
+ const result = await guard.scan(text, {
197
+ contentType: "user_prompt",
198
+ agent: agentLabel,
199
+ });
200
+ if (shouldBlock(result, blockOnWarn)) {
201
+ return blockedResponse(`[Blocked by Burrow: ${result.category} ` +
202
+ `(${Math.round(result.confidence * 100)}% confidence). ` +
203
+ `This message was flagged as a potential ` +
204
+ `prompt injection and was not processed.]`);
205
+ }
206
+ return null;
207
+ };
208
+ }
209
+ /**
210
+ * Create a Google ADK `after_model_callback` with per-agent identity.
211
+ *
212
+ * Reads the agent name from `callbackContext.agent_name`.
213
+ *
214
+ * @param guard - BurrowGuard instance.
215
+ * @param options - V2 callback options (blockOnWarn).
216
+ * @returns A callback compatible with ADK's `after_model_callback`.
217
+ */
218
+ export function createBurrowAfterCallbackV2(guard, options = {}) {
219
+ const blockOnWarn = options.blockOnWarn ?? false;
220
+ return async (callbackContext, llmResponse) => {
221
+ const text = extractResponseText(llmResponse);
222
+ if (!text)
223
+ return null;
224
+ const agentLabel = callbackContext.agent_name
225
+ ? `adk:${callbackContext.agent_name}`
226
+ : "adk";
227
+ const result = await guard.scan(text, {
228
+ contentType: "tool_response",
229
+ agent: agentLabel,
230
+ });
231
+ if (shouldBlock(result, blockOnWarn)) {
232
+ return blockedResponse(`[Blocked by Burrow: Model response contained ` +
233
+ `suspected injection content (${result.category}). ` +
234
+ `Response was not delivered.]`);
235
+ }
236
+ return null;
237
+ };
238
+ }
239
+ // ---------------------------------------------------------------------------
240
+ // V2 — tool callbacks with per-agent identity
241
+ // ---------------------------------------------------------------------------
242
+ /**
243
+ * Create a Google ADK `before_tool_callback` with per-agent identity.
244
+ *
245
+ * Scans individual tool calls before execution, with access to the tool
246
+ * name and arguments. Reads `callbackContext.agent_name` for per-agent
247
+ * identity like `adk:research-agent`.
248
+ *
249
+ * @param guard - BurrowGuard instance.
250
+ * @param options - V2 callback options (blockOnWarn).
251
+ * @returns A callback compatible with ADK's `before_tool_callback`.
252
+ * Returns a dict to replace the tool result on block, or `null` to allow.
253
+ */
254
+ export function createBurrowToolCallbackV2(guard, options = {}) {
255
+ const blockOnWarn = options.blockOnWarn ?? false;
256
+ return async (callbackContext, toolName, toolArgs) => {
257
+ let text = "";
258
+ if (typeof toolArgs === "object" && toolArgs !== null) {
259
+ text = extractToolArgsText(toolArgs);
260
+ }
261
+ else if (typeof toolArgs === "string") {
262
+ text = toolArgs;
263
+ }
264
+ text = text.trim();
265
+ if (!text)
266
+ return null;
267
+ const agentLabel = callbackContext.agent_name
268
+ ? `adk:${callbackContext.agent_name}`
269
+ : "adk";
270
+ const result = await guard.scan(text, {
271
+ contentType: "tool_call",
272
+ agent: agentLabel,
273
+ toolName,
274
+ });
275
+ if (shouldBlock(result, blockOnWarn)) {
276
+ return {
277
+ status: "error",
278
+ message: `[Blocked by Burrow: ${result.category} ` +
279
+ `(${Math.round(result.confidence * 100)}% confidence). ` +
280
+ `Tool call was not executed.]`,
281
+ };
282
+ }
283
+ return null;
284
+ };
285
+ }
286
+ /**
287
+ * Create a Google ADK `after_tool_callback` with per-agent identity.
288
+ *
289
+ * Scans tool responses after execution for indirect injection.
290
+ * Reads `callbackContext.agent_name` for per-agent identity.
291
+ *
292
+ * @param guard - BurrowGuard instance.
293
+ * @param options - V2 callback options (blockOnWarn).
294
+ * @returns A callback compatible with ADK's `after_tool_callback`.
295
+ * Returns a dict to replace the tool result on block, or `null` to allow.
296
+ */
297
+ export function createBurrowAfterToolCallbackV2(guard, options = {}) {
298
+ const blockOnWarn = options.blockOnWarn ?? false;
299
+ return async (callbackContext, toolName, toolResponse) => {
300
+ const raw = toolResponse ? String(toolResponse) : "";
301
+ const text = raw.slice(0, 4096).trim();
302
+ if (!text)
303
+ return null;
304
+ const agentLabel = callbackContext.agent_name
305
+ ? `adk:${callbackContext.agent_name}`
306
+ : "adk";
307
+ const result = await guard.scan(text, {
308
+ contentType: "tool_response",
309
+ agent: agentLabel,
310
+ toolName,
311
+ });
312
+ if (shouldBlock(result, blockOnWarn)) {
313
+ return {
314
+ status: "error",
315
+ message: `[Blocked by Burrow: Tool output from '${toolName}' was flagged: ` +
316
+ `${result.category} (${Math.round(result.confidence * 100)}% confidence). ` +
317
+ `Treat with caution.]`,
318
+ };
319
+ }
320
+ return null;
321
+ };
322
+ }
323
+ //# sourceMappingURL=adk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adk.js","sourceRoot":"","sources":["../../src/integrations/adk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Burrow adapter for the Vercel AI SDK.
3
+ *
4
+ * Provides a LanguageModelV3Middleware that scans prompts before they
5
+ * reach the model and optionally scans responses after generation.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { BurrowGuard } from "burrow-sdk";
10
+ * import { createBurrowMiddleware } from "burrow-sdk/integrations/ai-sdk";
11
+ * import { wrapLanguageModel } from "ai";
12
+ * import { openai } from "@ai-sdk/openai";
13
+ *
14
+ * const guard = new BurrowGuard({ clientId: "...", clientSecret: "..." });
15
+ * const middleware = createBurrowMiddleware(guard);
16
+ *
17
+ * const model = wrapLanguageModel({
18
+ * model: openai("gpt-4"),
19
+ * middleware,
20
+ * });
21
+ * ```
22
+ */
23
+ import type { BurrowGuard } from "../index.js";
24
+ import type { ScanResult } from "../types.js";
25
+ /** Thrown when Burrow blocks an AI SDK request. */
26
+ export declare class BurrowBlockedError extends Error {
27
+ readonly result: ScanResult;
28
+ constructor(result: ScanResult);
29
+ }
30
+ export interface BurrowMiddlewareOptions {
31
+ /** Agent name for scan context. */
32
+ agent?: string;
33
+ /** If true, also block on "warn" verdicts. */
34
+ blockOnWarn?: boolean;
35
+ /** If true, scan model responses for indirect injection. */
36
+ scanResponses?: boolean;
37
+ }
38
+ /**
39
+ * Create a Vercel AI SDK middleware that scans prompts with Burrow.
40
+ *
41
+ * The returned object conforms to the `LanguageModelV3Middleware` interface
42
+ * from `@ai-sdk/provider`. It uses:
43
+ * - `transformParams` to scan user input before the model call
44
+ * - `wrapGenerate` to optionally scan the model response
45
+ *
46
+ * This is framework-agnostic and does not import `ai` or `@ai-sdk/provider`
47
+ * directly — only the type shapes are relied upon.
48
+ */
49
+ export declare function createBurrowMiddleware(guard: BurrowGuard, options?: BurrowMiddlewareOptions): {
50
+ /**
51
+ * Scan the prompt before it reaches the model.
52
+ */
53
+ transformParams: ({ params, }: {
54
+ type: string;
55
+ params: Record<string, unknown>;
56
+ model: unknown;
57
+ }) => Promise<Record<string, unknown>>;
58
+ /**
59
+ * Optionally scan the generated response.
60
+ */
61
+ wrapGenerate: (({ doGenerate, }: {
62
+ doGenerate: () => Promise<{
63
+ text?: string;
64
+ [key: string]: unknown;
65
+ }>;
66
+ }) => Promise<{
67
+ [key: string]: unknown;
68
+ text?: string;
69
+ }>) | undefined;
70
+ };
71
+ //# sourceMappingURL=ai-sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-sdk.d.ts","sourceRoot":"","sources":["../../src/integrations/ai-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,mDAAmD;AACnD,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,SAAgB,MAAM,EAAE,UAAU,CAAC;gBAEvB,MAAM,EAAE,UAAU;CAO/B;AAED,MAAM,WAAW,uBAAuB;IACtC,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAiCD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,uBAA4B;IAOnC;;OAEG;mCAGA;QACD,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,KAAK,EAAE,OAAO,CAAC;KAChB;IAcD;;OAEG;qCAII;QACD,UAAU,EAAE,MAAM,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC,CAAC;KACtE;;eADoC,MAAM;;EAgBlD"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Burrow adapter for the Vercel AI SDK.
3
+ *
4
+ * Provides a LanguageModelV3Middleware that scans prompts before they
5
+ * reach the model and optionally scans responses after generation.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { BurrowGuard } from "burrow-sdk";
10
+ * import { createBurrowMiddleware } from "burrow-sdk/integrations/ai-sdk";
11
+ * import { wrapLanguageModel } from "ai";
12
+ * import { openai } from "@ai-sdk/openai";
13
+ *
14
+ * const guard = new BurrowGuard({ clientId: "...", clientSecret: "..." });
15
+ * const middleware = createBurrowMiddleware(guard);
16
+ *
17
+ * const model = wrapLanguageModel({
18
+ * model: openai("gpt-4"),
19
+ * middleware,
20
+ * });
21
+ * ```
22
+ */
23
+ /** Thrown when Burrow blocks an AI SDK request. */
24
+ export class BurrowBlockedError extends Error {
25
+ result;
26
+ constructor(result) {
27
+ super(`Burrow blocked request: ${result.category} (${Math.round(result.confidence * 100)}% confidence)`);
28
+ this.name = "BurrowBlockedError";
29
+ this.result = result;
30
+ }
31
+ }
32
+ /**
33
+ * Extract user-facing text from AI SDK prompt messages.
34
+ */
35
+ function extractPromptText(params) {
36
+ const prompt = params.prompt;
37
+ if (!prompt || !Array.isArray(prompt))
38
+ return "";
39
+ const parts = [];
40
+ for (const msg of prompt) {
41
+ if (typeof msg !== "object" || msg === null)
42
+ continue;
43
+ const role = msg.role;
44
+ const content = msg.content;
45
+ if (role === "user" || role === "system") {
46
+ if (typeof content === "string") {
47
+ parts.push(content);
48
+ }
49
+ else if (Array.isArray(content)) {
50
+ for (const part of content) {
51
+ if (typeof part === "object" && part !== null && "text" in part) {
52
+ parts.push(String(part.text));
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
58
+ return parts.join(" ").trim();
59
+ }
60
+ function shouldBlock(result, blockOnWarn) {
61
+ return result.action === "block" || (blockOnWarn && result.action === "warn");
62
+ }
63
+ /**
64
+ * Create a Vercel AI SDK middleware that scans prompts with Burrow.
65
+ *
66
+ * The returned object conforms to the `LanguageModelV3Middleware` interface
67
+ * from `@ai-sdk/provider`. It uses:
68
+ * - `transformParams` to scan user input before the model call
69
+ * - `wrapGenerate` to optionally scan the model response
70
+ *
71
+ * This is framework-agnostic and does not import `ai` or `@ai-sdk/provider`
72
+ * directly — only the type shapes are relied upon.
73
+ */
74
+ export function createBurrowMiddleware(guard, options = {}) {
75
+ const agent = options.agent ?? "ai-sdk";
76
+ const blockOnWarn = options.blockOnWarn ?? false;
77
+ const scanResponses = options.scanResponses ?? false;
78
+ return {
79
+ /**
80
+ * Scan the prompt before it reaches the model.
81
+ */
82
+ transformParams: async ({ params, }) => {
83
+ const text = extractPromptText(params);
84
+ if (text) {
85
+ const result = await guard.scan(text, {
86
+ contentType: "user_prompt",
87
+ agent,
88
+ });
89
+ if (shouldBlock(result, blockOnWarn)) {
90
+ throw new BurrowBlockedError(result);
91
+ }
92
+ }
93
+ return params;
94
+ },
95
+ /**
96
+ * Optionally scan the generated response.
97
+ */
98
+ wrapGenerate: scanResponses
99
+ ? async ({ doGenerate, }) => {
100
+ const generated = await doGenerate();
101
+ if (generated.text && generated.text.trim()) {
102
+ const result = await guard.scan(generated.text, {
103
+ contentType: "tool_response",
104
+ agent,
105
+ });
106
+ if (shouldBlock(result, blockOnWarn)) {
107
+ throw new BurrowBlockedError(result);
108
+ }
109
+ }
110
+ return generated;
111
+ }
112
+ : undefined,
113
+ };
114
+ }
115
+ //# sourceMappingURL=ai-sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-sdk.js","sourceRoot":"","sources":["../../src/integrations/ai-sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Burrow adapter for the Anthropic Claude Agent SDK (TypeScript).
3
+ *
4
+ * Provides hook callbacks for PreToolUse and PostToolUse events that scan
5
+ * tool inputs/outputs through Burrow for prompt injection detection.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { BurrowGuard } from "burrow-sdk";
10
+ * import { createBurrowHooks } from "burrow-sdk/integrations/claude-sdk";
11
+ * import { query } from "@anthropic-ai/claude-agent-sdk";
12
+ *
13
+ * const guard = new BurrowGuard({ clientId: "...", clientSecret: "..." });
14
+ * const hooks = createBurrowHooks(guard);
15
+ *
16
+ * for await (const message of query({
17
+ * prompt: "Your prompt",
18
+ * options: { hooks },
19
+ * })) {
20
+ * console.log(message);
21
+ * }
22
+ * ```
23
+ */
24
+ import type { BurrowGuard } from "../index.js";
25
+ import type { ScanResult } from "../types.js";
26
+ /** Thrown when Burrow blocks a Claude SDK tool call. */
27
+ export declare class BurrowBlockedError extends Error {
28
+ readonly result: ScanResult;
29
+ constructor(result: ScanResult);
30
+ }
31
+ export interface BurrowHooksOptions {
32
+ /** Agent name for scan context. */
33
+ agentName?: string;
34
+ /** If true, also block on "warn" verdicts. */
35
+ blockOnWarn?: boolean;
36
+ /** Scan tool inputs before execution. Default: true. */
37
+ scanToolCalls?: boolean;
38
+ /** Scan tool outputs after execution. Default: true. */
39
+ scanToolResults?: boolean;
40
+ }
41
+ /**
42
+ * Hook input shapes as used by the Claude Agent SDK.
43
+ * These are defined locally to avoid requiring the SDK as a dependency.
44
+ */
45
+ interface HookInput {
46
+ hook_event_name: string;
47
+ tool_name?: string;
48
+ tool_input?: Record<string, unknown>;
49
+ }
50
+ type HookCallback = (input: HookInput, toolUseId: string, context: {
51
+ signal?: AbortSignal;
52
+ }) => Promise<Record<string, unknown>>;
53
+ interface HookMatcher {
54
+ matcher: string;
55
+ hooks: HookCallback[];
56
+ }
57
+ /**
58
+ * Create Claude Agent SDK hooks that scan tool calls with Burrow.
59
+ *
60
+ * Returns a hooks configuration object compatible with the `query()` function
61
+ * from `@anthropic-ai/claude-agent-sdk`. The hooks intercept PreToolUse
62
+ * and PostToolUse events to scan for prompt injection.
63
+ *
64
+ * **Per-agent identity limitation:** The Claude Agent SDK hook context does
65
+ * not currently carry agent identity. For multi-agent setups, create
66
+ * separate hooks with different `agentName` values:
67
+ *
68
+ * ```ts
69
+ * const orchestratorHooks = createBurrowHooks(guard, { agentName: "claude-sdk:orchestrator" });
70
+ * const researcherHooks = createBurrowHooks(guard, { agentName: "claude-sdk:researcher" });
71
+ * ```
72
+ */
73
+ export declare function createBurrowHooks(guard: BurrowGuard, options?: BurrowHooksOptions): Record<string, HookMatcher[]>;
74
+ export {};
75
+ //# sourceMappingURL=claude-sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-sdk.d.ts","sourceRoot":"","sources":["../../src/integrations/claude-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,wDAAwD;AACxD,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,SAAgB,MAAM,EAAE,UAAU,CAAC;gBAEvB,MAAM,EAAE,UAAU;CAO/B;AAED,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wDAAwD;IACxD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wDAAwD;IACxD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;GAGG;AACH,UAAU,SAAS;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,KAAK,YAAY,GAAG,CAClB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtC,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAiBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CA2E/B"}