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 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
@@ -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
+ }