agentgate-sdk 0.1.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 +69 -0
- package/dist/index.d.ts +68 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +141 -0
- package/dist/index.js.map +1 -0
- package/package.json +41 -0
package/README.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# agentgate
|
|
2
|
+
|
|
3
|
+
The security gateway for AI agents.
|
|
4
|
+
Enforce authentication, rate limiting, and policy controls between
|
|
5
|
+
users and AI agents — in one line of code.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install agentgate
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Quickstart
|
|
14
|
+
|
|
15
|
+
Get your free API key at https://agent-gate-rho.vercel.app/
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { withAgentGate } from "agentgate";
|
|
19
|
+
|
|
20
|
+
const secured = withAgentGate(myAgent, {
|
|
21
|
+
apiKey: "ag_your_key_here",
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// Use exactly like before — every tool call is now policy-checked
|
|
25
|
+
await secured.executeTool("delete_file", { path: "/etc/passwd" });
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## MCP middleware
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { createAgentGateMiddleware } from "agentgate";
|
|
32
|
+
|
|
33
|
+
const gate = createAgentGateMiddleware({ apiKey: "ag_your_key_here" });
|
|
34
|
+
|
|
35
|
+
server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
36
|
+
return gate(req.params.name, req.params.arguments, () =>
|
|
37
|
+
myToolHandler(req)
|
|
38
|
+
);
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Fail-open vs Fail-closed
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
// Development default — allow if AgentGate unreachable
|
|
46
|
+
withAgentGate(agent, { apiKey: "ag_xxx", onNetworkError: "fail-open" });
|
|
47
|
+
|
|
48
|
+
// Production recommended — block if AgentGate unreachable
|
|
49
|
+
withAgentGate(agent, { apiKey: "ag_xxx", onNetworkError: "fail-closed" });
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Policy decisions
|
|
53
|
+
|
|
54
|
+
| Decision | Behaviour |
|
|
55
|
+
| -------- | --------- |
|
|
56
|
+
| ALLOW | Tool executes normally |
|
|
57
|
+
| DENY | Tool blocked, error returned to agent |
|
|
58
|
+
| REQUIRE_APPROVAL | Tool paused, human approves in dashboard |
|
|
59
|
+
|
|
60
|
+
## AgentGate Connect (multi-tenant)
|
|
61
|
+
|
|
62
|
+
If you are a SaaS platform managing agents for your customers,
|
|
63
|
+
use Connect sub-keys (`agc_` prefix) to enforce per-customer policies.
|
|
64
|
+
|
|
65
|
+
## Links
|
|
66
|
+
|
|
67
|
+
Dashboard: https://agent-gate-rho.vercel.app/
|
|
68
|
+
GitHub: https://github.com/wiserautomation/agentgate
|
|
69
|
+
Issues: https://github.com/wiserautomation/agentgate/issues
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export interface AgentGateResponse {
|
|
2
|
+
decision: "ALLOW" | "DENY" | "REQUIRE_APPROVAL";
|
|
3
|
+
reason?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface AgentGateOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Your AgentGate API key.
|
|
8
|
+
* Get one free at https://agent-gate-rho.vercel.app/
|
|
9
|
+
* Format: ag_xxxxxxxxxxxxxxxx
|
|
10
|
+
*/
|
|
11
|
+
apiKey: string;
|
|
12
|
+
/**
|
|
13
|
+
* Override the AgentGate evaluation endpoint.
|
|
14
|
+
* Defaults to the hosted AgentGate cloud function.
|
|
15
|
+
* Set this for self-hosted deployments.
|
|
16
|
+
*/
|
|
17
|
+
cloudFunctionUrl?: string;
|
|
18
|
+
/**
|
|
19
|
+
* What to do when AgentGate is unreachable.
|
|
20
|
+
* "fail-open" → allow the action and log a warning (default, good for dev)
|
|
21
|
+
* "fail-closed" → block the action (recommended for production)
|
|
22
|
+
*/
|
|
23
|
+
onNetworkError?: "fail-open" | "fail-closed";
|
|
24
|
+
/**
|
|
25
|
+
* Custom logger. Defaults to console.
|
|
26
|
+
* Pass `{ warn: () => {}, error: () => {}, log: () => {} }` to silence.
|
|
27
|
+
*/
|
|
28
|
+
logger?: Pick<Console, "warn" | "error" | "log">;
|
|
29
|
+
}
|
|
30
|
+
export interface AgentInstance {
|
|
31
|
+
executeTool: (toolName: string, args: any) => Promise<any> | any;
|
|
32
|
+
[key: string]: any;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Wraps any AI agent with AgentGate security enforcement.
|
|
36
|
+
*
|
|
37
|
+
* Every tool call is intercepted and evaluated against your policies
|
|
38
|
+
* before execution. Zero infrastructure required — just an API key.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* // Works with LangChain, OpenAI Agents SDK, CrewAI, AutoGen, raw MCP
|
|
42
|
+
* import { withAgentGate } from "agentgate";
|
|
43
|
+
*
|
|
44
|
+
* const secured = withAgentGate(myAgent, { apiKey: "ag_your_key" });
|
|
45
|
+
* await secured.executeTool("send_email", { to: "ceo@company.com" }); // checked
|
|
46
|
+
*
|
|
47
|
+
* @param agentInstance - Any agent object with an `executeTool` method
|
|
48
|
+
* @param options - AgentGate configuration (only `apiKey` is required)
|
|
49
|
+
* @returns The same agent instance, now protected by AgentGate
|
|
50
|
+
*/
|
|
51
|
+
export declare function withAgentGate<T extends AgentInstance>(agentInstance: T, options: AgentGateOptions): T;
|
|
52
|
+
/**
|
|
53
|
+
* MCP-native middleware for Model Context Protocol servers.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* import { createAgentGateMiddleware } from "agentgate";
|
|
57
|
+
*
|
|
58
|
+
* const gate = createAgentGateMiddleware({ apiKey: "ag_your_key" });
|
|
59
|
+
*
|
|
60
|
+
* // In your MCP tool handler:
|
|
61
|
+
* server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
62
|
+
* return gate(req.params.name, req.params.arguments, () => myToolHandler(req));
|
|
63
|
+
* });
|
|
64
|
+
*/
|
|
65
|
+
export declare function createAgentGateMiddleware(options: AgentGateOptions): (toolName: string, args: any, next: () => Promise<any>) => Promise<any>;
|
|
66
|
+
export { withAgentGate as withAgentGuard };
|
|
67
|
+
export type { AgentGateOptions as AgentGuardOptions };
|
|
68
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,kBAAkB,CAAC;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC7B;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC;IAC7C;;;OAGG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,aAAa;IAC1B,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACjE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,aAAa,EACjD,aAAa,EAAE,CAAC,EAChB,OAAO,EAAE,gBAAgB,GAC1B,CAAC,CAmFH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,IAS3D,UAAU,MAAM,EAChB,MAAM,GAAG,EACT,MAAM,MAAM,OAAO,CAAC,GAAG,CAAC,KACzB,OAAO,CAAC,GAAG,CAAC,CAuClB;AAGD,OAAO,EAAE,aAAa,IAAI,cAAc,EAAE,CAAC;AAC3C,YAAY,EAAE,gBAAgB,IAAI,iBAAiB,EAAE,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withAgentGate = withAgentGate;
|
|
4
|
+
exports.withAgentGuard = withAgentGate;
|
|
5
|
+
exports.createAgentGateMiddleware = createAgentGateMiddleware;
|
|
6
|
+
const DEFAULT_CLOUD_FUNCTION_URL = "https://us-central1-agentgate-prod.cloudfunctions.net/evaluateAction";
|
|
7
|
+
const SDK_VERSION = "0.1.0";
|
|
8
|
+
/**
|
|
9
|
+
* Wraps any AI agent with AgentGate security enforcement.
|
|
10
|
+
*
|
|
11
|
+
* Every tool call is intercepted and evaluated against your policies
|
|
12
|
+
* before execution. Zero infrastructure required — just an API key.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* // Works with LangChain, OpenAI Agents SDK, CrewAI, AutoGen, raw MCP
|
|
16
|
+
* import { withAgentGate } from "agentgate";
|
|
17
|
+
*
|
|
18
|
+
* const secured = withAgentGate(myAgent, { apiKey: "ag_your_key" });
|
|
19
|
+
* await secured.executeTool("send_email", { to: "ceo@company.com" }); // checked
|
|
20
|
+
*
|
|
21
|
+
* @param agentInstance - Any agent object with an `executeTool` method
|
|
22
|
+
* @param options - AgentGate configuration (only `apiKey` is required)
|
|
23
|
+
* @returns The same agent instance, now protected by AgentGate
|
|
24
|
+
*/
|
|
25
|
+
function withAgentGate(agentInstance, options) {
|
|
26
|
+
const { apiKey, cloudFunctionUrl = DEFAULT_CLOUD_FUNCTION_URL, onNetworkError = "fail-open", logger = console, } = options;
|
|
27
|
+
if (!apiKey || !apiKey.startsWith("ag_")) {
|
|
28
|
+
throw new Error(`[AgentGate] Invalid API key: "${apiKey}".\n` +
|
|
29
|
+
` Get your free key at https://agent-gate-rho.vercel.app/\n` +
|
|
30
|
+
` Expected format: ag_xxxxxxxxxxxxxxxx`);
|
|
31
|
+
}
|
|
32
|
+
const originalExecuteTool = agentInstance.executeTool.bind(agentInstance);
|
|
33
|
+
agentInstance.executeTool = async (toolName, args) => {
|
|
34
|
+
try {
|
|
35
|
+
const response = await fetch(cloudFunctionUrl, {
|
|
36
|
+
method: "POST",
|
|
37
|
+
headers: {
|
|
38
|
+
"Content-Type": "application/json",
|
|
39
|
+
"X-AgentGate-SDK": `js-${SDK_VERSION}`,
|
|
40
|
+
},
|
|
41
|
+
body: JSON.stringify({ apiKey, toolName, args }),
|
|
42
|
+
});
|
|
43
|
+
if (!response.ok) {
|
|
44
|
+
if (response.status === 401) {
|
|
45
|
+
throw new Error(`[AgentGate] Unauthorized. Check your API key at https://agent-gate-rho.vercel.app/`);
|
|
46
|
+
}
|
|
47
|
+
if (response.status === 429) {
|
|
48
|
+
logger.warn(`[AgentGate] Rate limit exceeded for tool '${toolName}'.`);
|
|
49
|
+
return "ERROR: AgentGate rate limit exceeded. Try again shortly.";
|
|
50
|
+
}
|
|
51
|
+
if (response.status === 403) {
|
|
52
|
+
logger.warn(`[AgentGate] Tool '${toolName}' blocked by policy (HTTP 403).`);
|
|
53
|
+
return "ERROR: Action blocked by AgentGate security policy.";
|
|
54
|
+
}
|
|
55
|
+
throw new Error(`[AgentGate] Server error ${response.status}`);
|
|
56
|
+
}
|
|
57
|
+
const data = (await response.json());
|
|
58
|
+
switch (data.decision) {
|
|
59
|
+
case "ALLOW":
|
|
60
|
+
return await originalExecuteTool(toolName, args);
|
|
61
|
+
case "DENY":
|
|
62
|
+
logger.warn(`[AgentGate] DENIED '${toolName}'. ${data.reason ? `Reason: ${data.reason}` : ""}`);
|
|
63
|
+
return `ERROR: Action blocked by AgentGate. ${data.reason ?? ""}`.trim();
|
|
64
|
+
case "REQUIRE_APPROVAL":
|
|
65
|
+
logger.warn(`[AgentGate] PAUSED '${toolName}'. Human approval required.`);
|
|
66
|
+
return "ACTION PAUSED: This action requires human approval. Check your AgentGate dashboard at https://agent-gate-rho.vercel.app/";
|
|
67
|
+
default:
|
|
68
|
+
logger.error("[AgentGate] Unknown decision in response:", data);
|
|
69
|
+
return "ERROR: Unknown AgentGate decision.";
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
// Re-throw hard errors (bad API key, etc.) — don't silently swallow them
|
|
74
|
+
if (e instanceof Error && e.message.startsWith("[AgentGate]")) {
|
|
75
|
+
throw e;
|
|
76
|
+
}
|
|
77
|
+
logger.error("[AgentGate] Network error reaching control plane.", e);
|
|
78
|
+
if (onNetworkError === "fail-closed") {
|
|
79
|
+
return "ERROR: AgentGate unreachable. Action blocked (fail-closed mode).";
|
|
80
|
+
}
|
|
81
|
+
logger.warn("[AgentGate] Proceeding without policy check (fail-open mode). Set onNetworkError: 'fail-closed' in production.");
|
|
82
|
+
return await originalExecuteTool(toolName, args);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
return agentInstance;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* MCP-native middleware for Model Context Protocol servers.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* import { createAgentGateMiddleware } from "agentgate";
|
|
92
|
+
*
|
|
93
|
+
* const gate = createAgentGateMiddleware({ apiKey: "ag_your_key" });
|
|
94
|
+
*
|
|
95
|
+
* // In your MCP tool handler:
|
|
96
|
+
* server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
97
|
+
* return gate(req.params.name, req.params.arguments, () => myToolHandler(req));
|
|
98
|
+
* });
|
|
99
|
+
*/
|
|
100
|
+
function createAgentGateMiddleware(options) {
|
|
101
|
+
const { apiKey, cloudFunctionUrl = DEFAULT_CLOUD_FUNCTION_URL, onNetworkError = "fail-open", logger = console, } = options;
|
|
102
|
+
return async function agentGateMiddleware(toolName, args, next) {
|
|
103
|
+
try {
|
|
104
|
+
const response = await fetch(cloudFunctionUrl, {
|
|
105
|
+
method: "POST",
|
|
106
|
+
headers: {
|
|
107
|
+
"Content-Type": "application/json",
|
|
108
|
+
"X-AgentGate-SDK": `js-${SDK_VERSION}`,
|
|
109
|
+
},
|
|
110
|
+
body: JSON.stringify({ apiKey, toolName, args }),
|
|
111
|
+
});
|
|
112
|
+
if (!response.ok) {
|
|
113
|
+
if (response.status === 403) {
|
|
114
|
+
return { error: "Action blocked by AgentGate security policy." };
|
|
115
|
+
}
|
|
116
|
+
if (response.status === 429) {
|
|
117
|
+
return { error: "AgentGate rate limit exceeded." };
|
|
118
|
+
}
|
|
119
|
+
throw new Error(`AgentGate server error: ${response.status}`);
|
|
120
|
+
}
|
|
121
|
+
const data = (await response.json());
|
|
122
|
+
if (data.decision === "ALLOW")
|
|
123
|
+
return await next();
|
|
124
|
+
if (data.decision === "DENY") {
|
|
125
|
+
logger.warn(`[AgentGate] MCP tool '${toolName}' denied. ${data.reason ?? ""}`);
|
|
126
|
+
return { error: `Blocked by AgentGate. ${data.reason ?? ""}`.trim() };
|
|
127
|
+
}
|
|
128
|
+
if (data.decision === "REQUIRE_APPROVAL") {
|
|
129
|
+
return { error: "Human approval required. Check https://agent-gate-rho.vercel.app/" };
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch (e) {
|
|
133
|
+
logger.error("[AgentGate] Middleware error.", e);
|
|
134
|
+
if (onNetworkError === "fail-closed") {
|
|
135
|
+
return { error: "AgentGate unreachable. Action blocked." };
|
|
136
|
+
}
|
|
137
|
+
return await next();
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agentgate-sdk",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "The security gateway for AI agents — auth, rate limiting, and policy enforcement in one line.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist",
|
|
9
|
+
"README.md"
|
|
10
|
+
],
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"prepublishOnly": "npm run build",
|
|
14
|
+
"test": "node --experimental-vm-modules node_modules/.bin/jest"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"ai",
|
|
18
|
+
"agents",
|
|
19
|
+
"security",
|
|
20
|
+
"mcp",
|
|
21
|
+
"langchain",
|
|
22
|
+
"openai",
|
|
23
|
+
"gateway",
|
|
24
|
+
"policy",
|
|
25
|
+
"agentgate"
|
|
26
|
+
],
|
|
27
|
+
"author": "AgentGate",
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"homepage": "https://agent-gate-rho.vercel.app/",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "https://github.com/wiserautomation/agentgate"
|
|
33
|
+
},
|
|
34
|
+
"bugs": {
|
|
35
|
+
"url": "https://github.com/wiserautomation/agentgate/issues"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@types/node": "^25.3.0",
|
|
39
|
+
"typescript": "^5.9.3"
|
|
40
|
+
}
|
|
41
|
+
}
|