{"_id":"@agentkitai/agentgate-sdk","name":"@agentkitai/agentgate-sdk","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@agentkitai/agentgate-sdk","version":"0.1.0","description":"SDK for integrating AgentGate into your applications","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"repository":{"type":"git","url":"git+https://github.com/amitpaz1/agentgate.git","directory":"packages/sdk"},"keywords":["agentgate","approval","agent","sdk"],"license":"MIT","dependencies":{"@agentkitai/agentgate-core":"0.1.0"},"devDependencies":{"vitest":"^3.2.6"},"scripts":{"build":"tsc","dev":"tsc --watch","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest"},"_id":"@agentkitai/agentgate-sdk@0.1.0","bugs":{"url":"https://github.com/amitpaz1/agentgate/issues"},"homepage":"https://github.com/amitpaz1/agentgate#readme","_integrity":"sha512-l/9KMeqeIsRDm0ZUig8x2MAVigihyRP8sDSz/c5HD6o8lHB6VAblQsWuvLtvL0MFvsxi8420T7BQf+nlgbUz7Q==","_resolved":"C:\\Users\\amitp\\AppData\\Local\\Temp\\a9b78f8b860cc6d3f937d64db5ee8f4f\\agentkitai-agentgate-sdk-0.1.0.tgz","_from":"file:agentkitai-agentgate-sdk-0.1.0.tgz","_nodeVersion":"24.12.0","_npmVersion":"11.5.2","dist":{"integrity":"sha512-l/9KMeqeIsRDm0ZUig8x2MAVigihyRP8sDSz/c5HD6o8lHB6VAblQsWuvLtvL0MFvsxi8420T7BQf+nlgbUz7Q==","shasum":"e088868160ed4967546f75bf1cb9b810e3739fe7","tarball":"https://registry.npmjs.org/@agentkitai/agentgate-sdk/-/agentgate-sdk-0.1.0.tgz","fileCount":15,"unpackedSize":37576,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFlhp++yimr96voy3W4o6O6JQZtQdnRye48OfQSjNzM2AiEAruRb3gLyu7oTUeab3579takr746PPe7pkspv1ZmZKb0="}]},"_npmUser":{"name":"amit-paz","email":"amit.paz@gmail.com"},"directories":{},"maintainers":[{"name":"amit-paz","email":"amit.paz@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agentgate-sdk_0.1.0_1782494680318_0.430923077802305"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-26T17:24:40.137Z","0.1.0":"2026-06-26T17:24:40.465Z","modified":"2026-06-26T17:24:40.716Z"},"maintainers":[{"name":"amit-paz","email":"amit.paz@gmail.com"}],"description":"SDK for integrating AgentGate into your applications","homepage":"https://github.com/amitpaz1/agentgate#readme","keywords":["agentgate","approval","agent","sdk"],"repository":{"type":"git","url":"git+https://github.com/amitpaz1/agentgate.git","directory":"packages/sdk"},"bugs":{"url":"https://github.com/amitpaz1/agentgate/issues"},"license":"MIT","readme":"# @agentkitai/agentgate-sdk\r\n\r\nTypeScript SDK for agents to request human approvals via AgentGate.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @agentkitai/agentgate-sdk\r\n# or\r\npnpm add @agentkitai/agentgate-sdk\r\n```\r\n\r\n## Quick Start\r\n\r\n```typescript\r\nimport { AgentGateClient } from '@agentkitai/agentgate-sdk'\r\n\r\nconst client = new AgentGateClient({\r\n  baseUrl: 'http://localhost:3000',\r\n  apiKey: 'your-api-key' // optional\r\n})\r\n\r\n// Request approval for an action\r\nconst request = await client.request({\r\n  action: 'send_email',\r\n  params: { to: 'customer@example.com' },\r\n  context: { dealValue: 50000 }\r\n})\r\n\r\nconsole.log(`Request ${request.id} created, waiting for approval...`)\r\n\r\n// Wait for human decision (polls until decided or timeout)\r\nconst decided = await client.waitForDecision(request.id, {\r\n  timeout: 5 * 60 * 1000, // 5 minutes (default)\r\n  pollInterval: 2000      // 2 seconds (default)\r\n})\r\n\r\nif (decided.status === 'approved') {\r\n  // Execute the action\r\n  console.log('Approved! Sending email...')\r\n} else if (decided.status === 'denied') {\r\n  console.log('Request denied:', decided.decisionReason)\r\n} else if (decided.status === 'expired') {\r\n  console.log('Request expired before decision')\r\n}\r\n```\r\n\r\n## API Reference\r\n\r\n### `AgentGateClient`\r\n\r\n#### Constructor\r\n\r\n```typescript\r\nnew AgentGateClient({\r\n  baseUrl: string,    // Required: URL of your AgentGate server\r\n  apiKey?: string     // Optional: API key for authentication\r\n})\r\n```\r\n\r\n#### Methods\r\n\r\n##### `request(options): Promise<ApprovalRequest>`\r\n\r\nSubmit an approval request. Returns immediately with the created request.\r\n\r\n```typescript\r\nconst request = await client.request({\r\n  action: 'send_email',           // Required: action identifier\r\n  params: { to: 'user@email.com' }, // Optional: action parameters\r\n  context: { reason: 'Follow up' }, // Optional: contextual info\r\n  urgency: 'high',                // Optional: 'low' | 'normal' | 'high' | 'critical'\r\n  expiresAt: new Date(Date.now() + 3600000) // Optional: expiration time\r\n})\r\n```\r\n\r\n##### `getRequest(id): Promise<ApprovalRequest>`\r\n\r\nGet an approval request by ID.\r\n\r\n```typescript\r\nconst request = await client.getRequest('req_123')\r\n```\r\n\r\n##### `waitForDecision(id, options?): Promise<ApprovalRequest>`\r\n\r\nPoll until a decision is made or timeout is reached.\r\n\r\n```typescript\r\nconst decided = await client.waitForDecision('req_123', {\r\n  timeout: 300000,     // 5 minutes (default)\r\n  pollInterval: 2000   // 2 seconds (default)\r\n})\r\n```\r\n\r\nThrows `TimeoutError` if timeout is reached.\r\n\r\n##### `listRequests(options?): Promise<ApprovalRequest[]>`\r\n\r\nList approval requests with optional filters.\r\n\r\n```typescript\r\nconst requests = await client.listRequests({\r\n  status: 'pending',  // Filter by status\r\n  action: 'send_email', // Filter by action\r\n  limit: 10,          // Max results\r\n  offset: 0           // Pagination offset\r\n})\r\n```\r\n\r\n### Policy Management\r\n\r\n```typescript\r\n// List all policies\r\nconst policies = await client.listPolicies()\r\n\r\n// Get a specific policy\r\nconst policy = await client.getPolicy('pol_123')\r\n\r\n// Create a policy\r\nconst newPolicy = await client.createPolicy({\r\n  name: 'Auto-approve low-risk emails',\r\n  rules: [{ match: { action: 'send_email' }, decision: 'auto_approve' }],\r\n  priority: 100,\r\n  enabled: true,\r\n})\r\n\r\n// Update a policy\r\nconst updated = await client.updatePolicy('pol_123', { enabled: false })\r\n\r\n// Delete a policy\r\nawait client.deletePolicy('pol_123')\r\n```\r\n\r\n### Webhook Management\r\n\r\n```typescript\r\n// List webhooks\r\nconst webhooks = await client.listWebhooks()\r\n\r\n// Create a webhook (secret is only returned once!)\r\nconst wh = await client.createWebhook({\r\n  url: 'https://example.com/webhook',\r\n  events: ['request.approved', 'request.denied'],\r\n})\r\nconsole.log('Save this secret:', wh.secret)\r\n\r\n// Update a webhook\r\nawait client.updateWebhook('wh_123', { enabled: false })\r\n\r\n// Delete a webhook\r\nawait client.deleteWebhook('wh_123')\r\n\r\n// Test a webhook\r\nconst result = await client.testWebhook('wh_123')\r\nconsole.log(result.success ? 'Delivered!' : 'Failed:', result.message)\r\n```\r\n\r\n### Audit Logs\r\n\r\n```typescript\r\n// List audit entries with filters\r\nconst audit = await client.listAuditLogs({\r\n  eventType: 'approved',\r\n  actor: 'dashboard:admin',\r\n  from: '2024-01-01',\r\n  to: '2024-01-31',\r\n  limit: 20,\r\n})\r\nconsole.log(audit.entries, audit.pagination)\r\n\r\n// Get unique actors for filter dropdowns\r\nconst actors = await client.getAuditActors()\r\n```\r\n\r\n### API Key Management\r\n\r\n```typescript\r\n// List API keys (secrets are never returned)\r\nconst keys = await client.listApiKeys()\r\n\r\n// Create an API key (key is only returned once!)\r\nconst newKey = await client.createApiKey({\r\n  name: 'CI Pipeline',\r\n  scopes: ['agent'],\r\n})\r\nconsole.log('Save this key:', newKey.key)\r\n\r\n// Revoke an API key\r\nawait client.revokeApiKey('key_123')\r\n```\r\n\r\n### Error Handling\r\n\r\n```typescript\r\nimport { AgentGateError, TimeoutError } from '@agentkitai/agentgate-sdk'\r\n\r\ntry {\r\n  await client.waitForDecision(id)\r\n} catch (error) {\r\n  if (error instanceof TimeoutError) {\r\n    console.log('Timed out waiting for decision')\r\n  } else if (error instanceof AgentGateError) {\r\n    console.log(`API error: ${error.message} (${error.statusCode})`)\r\n  }\r\n}\r\n```\r\n\r\n### Types\r\n\r\nAll types from `@agentkitai/agentgate-core` are re-exported for convenience:\r\n\r\n```typescript\r\nimport type {\r\n  ApprovalRequest,\r\n  ApprovalStatus,\r\n  ApprovalUrgency,\r\n  DecisionType,\r\n  Policy,\r\n  PolicyRule,\r\n  PolicyDecision,\r\n  Webhook,\r\n  WebhookCreateOptions,\r\n  WebhookCreateResult,\r\n  AuditEntry,\r\n  AuditListResult,\r\n  ApiKey,\r\n  ApiKeyCreateResult,\r\n} from '@agentkitai/agentgate-sdk'\r\n```\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md","_rev":"1-a5b4e4948a1b76574a866d9f0be25113"}