{"_id":"@aguardic/sdk","_rev":"4-fccb7dca17f19ce8bdf3da23f5ddbf51","name":"@aguardic/sdk","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@aguardic/sdk","version":"0.1.0","_id":"@aguardic/sdk@0.1.0","maintainers":[{"name":"hiaguardic","email":"hi@aguardic.com"},{"name":"andyyudev","email":"hi@andyyu.dev"}],"dist":{"shasum":"b6e9df6c403192b36d04ddfbab750289ddeefe76","tarball":"https://registry.npmjs.org/@aguardic/sdk/-/sdk-0.1.0.tgz","fileCount":8,"integrity":"sha512-He3WMKq+2Z6nZJmonYuJ8xSkS9TQnXjf46glYAcQRVajSByArRc8N7FsynGocSyWtVx6omNMWhCRt2v1VHPMZw==","signatures":[{"sig":"MEUCIGX2jhZQoV1fRIarkVfBOLMiSjjVjnVhsVow6/dXTNLCAiEAgHAn2zoRfbz7iZ3SV/5es8H5fyzP5B2FY7zq2P6Hkq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50857},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"8e29ebdf6dcbddcb8eda4536993fddd900938611","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"hiaguardic","email":"hi@aguardic.com"},"_npmVersion":"10.9.4","description":"Official TypeScript SDK for the Aguardic governance API","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.0_1773289040948_0.03860971006170133","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aguardic/sdk","version":"0.1.1","keywords":["aguardic","governance","ai-governance","policy","compliance","guardrails","llm","ai-safety","mcp","sdk"],"author":{"url":"https://www.aguardic.com","name":"Aguardic","email":"support@aguardic.com"},"license":"MIT","_id":"@aguardic/sdk@0.1.1","maintainers":[{"name":"hiaguardic","email":"hi@aguardic.com"}],"homepage":"https://www.aguardic.com/docs/sdk/javascript","bugs":{"url":"https://github.com/AguardicAI/aguardic/issues"},"dist":{"shasum":"a850b2beb0c5870aa45d5eb37d51b424b50731f5","tarball":"https://registry.npmjs.org/@aguardic/sdk/-/sdk-0.1.1.tgz","fileCount":8,"integrity":"sha512-ekb1MuKLt9TIJ17/PuryjsEOrJmz3CbBHRGbgYud8eFWhgI3LKHnTabqNh0N36R/138bv17BsChc0xB3uMjY8A==","signatures":[{"sig":"MEUCIAcZ2pLr4Ma4MhMxeE90Dm1CAo/llScSN2fToCIOkYBEAiEAwNjpw9Jd0c2ABLuPi2T+AZXC5pmkd0oPM8zWJ2dFN0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51323},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"c9569834c65b5f75f354572dc27c1deed20d25ae","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"hiaguardic","email":"hi@aguardic.com"},"repository":{"url":"git+https://github.com/AguardicAI/aguardic.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.4","description":"Official TypeScript SDK for the Aguardic governance API","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.1_1773290135459_0.556253467076129","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aguardic/sdk","version":"0.1.2","description":"Official TypeScript SDK for the Aguardic governance API","license":"MIT","author":{"name":"Aguardic","email":"support@aguardic.com","url":"https://www.aguardic.com"},"homepage":"https://www.aguardic.com/docs/sdk/javascript","repository":{"type":"git","url":"git+https://github.com/AguardicAI/aguardic.git","directory":"packages/sdk"},"keywords":["aguardic","governance","ai-governance","policy","compliance","guardrails","llm","ai-safety","mcp","sdk"],"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"publishConfig":{"access":"public"},"engines":{"node":">=18"},"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","clean":"rm -rf dist"},"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"_id":"@aguardic/sdk@0.1.2","gitHead":"f0c019f62844c8c3396a15704e03725994e98103","bugs":{"url":"https://github.com/AguardicAI/aguardic/issues"},"_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-lQ/CfK2F6lYRha8HvOYm9k8aT3xIqx3I/J4xp3s07CMsRISzFLV1CaTuAZ87hqO/IZTiL37FQpQQcq3MDnGsHw==","shasum":"02e7609e13c0d35001752e07bc5a9128f1d49d4d","tarball":"https://registry.npmjs.org/@aguardic/sdk/-/sdk-0.1.2.tgz","fileCount":8,"unpackedSize":56469,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDiiZZyoYhiZigeqFjw0ydJkOHuM9P5IBEyTQEVrDfdkgIhAKeRmyaOENVO38bO51G0GID2hqnsSTjAmGeNVfKT0qj+"}]},"_npmUser":{"name":"hiaguardic","email":"hi@aguardic.com"},"directories":{},"maintainers":[{"name":"hiaguardic","email":"hi@aguardic.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.1.2_1777222192699_0.15787914014716198"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-12T04:17:20.880Z","modified":"2026-04-26T16:49:52.957Z","0.1.0":"2026-03-12T04:17:21.091Z","0.1.1":"2026-03-12T04:35:35.621Z","0.1.2":"2026-04-26T16:49:52.829Z"},"bugs":{"url":"https://github.com/AguardicAI/aguardic/issues"},"author":{"name":"Aguardic","email":"support@aguardic.com","url":"https://www.aguardic.com"},"license":"MIT","homepage":"https://www.aguardic.com/docs/sdk/javascript","keywords":["aguardic","governance","ai-governance","policy","compliance","guardrails","llm","ai-safety","mcp","sdk"],"repository":{"type":"git","url":"git+https://github.com/AguardicAI/aguardic.git","directory":"packages/sdk"},"description":"Official TypeScript SDK for the Aguardic governance API","maintainers":[{"name":"hiaguardic","email":"hi@aguardic.com"}],"readme":"# @aguardic/sdk\n\nOfficial TypeScript SDK for the [Aguardic](https://www.aguardic.com) governance API.\n\n## Installation\n\n```bash\nnpm install @aguardic/sdk\n# or\npnpm add @aguardic/sdk\n# or\nyarn add @aguardic/sdk\n```\n\n**Requirements:** Node.js 18+\n\n## Quick Start\n\n```typescript\nimport Aguardic from \"@aguardic/sdk\";\n\nconst aguardic = new Aguardic(\"ag_live_xxxxx\");\n\nconst result = await aguardic.evaluate({\n  input: { content: \"Transfer $50,000 to account 12345\" },\n  targetKey: \"bank-transfer\",\n});\n\nif (result.enforcementAction === \"BLOCK\") {\n  console.log(\"Blocked:\", result.violations);\n}\n```\n\n## Configuration\n\n```typescript\n// Simple — API key only\nconst aguardic = new Aguardic(\"ag_live_xxxxx\");\n\n// Advanced — full options\nconst aguardic = new Aguardic({\n  apiKey: \"ag_live_xxxxx\",\n  baseUrl: \"https://api.aguardic.com/v1\", // default\n  timeout: 30000, // default, in milliseconds\n});\n```\n\n## API Reference\n\n### `aguardic.evaluate(params)`\n\nEvaluate content against your bound policies.\n\n```typescript\nconst result = await aguardic.evaluate({\n  input: { content: \"User message to check\" },\n  targetKey: \"chat-message\", // optional — route to specific policies\n  correlationId: \"req-123\", // optional — for tracking\n  sessionId: \"sess-abc\", // optional — for session-based evaluation\n});\n\n// result.outcome: 'ALLOW' | 'DENY' | 'FLAG'\n// result.enforcementAction: 'ALLOW' | 'WARN' | 'BLOCK' | 'APPROVAL_REQUIRED'\n// result.violations: Violation[]\n```\n\n### `aguardic.sessions.create(params?)`\n\nCreate an evaluation session for multi-step interactions.\n\n```typescript\nconst session = await aguardic.sessions.create({\n  metadata: { agentId: \"support-bot\" },\n});\n// session.id, session.status\n```\n\n### `aguardic.sessions.get(sessionId)`\n\nGet session details including all actions.\n\n```typescript\nconst detail = await aguardic.sessions.get(session.id);\n// detail.actions, detail.actionCount, detail.toolsUsed\n```\n\n### `aguardic.sessions.end(sessionId, params?)`\n\nEnd an active session.\n\n```typescript\nconst summary = await aguardic.sessions.end(session.id, {\n  status: \"COMPLETED\", // or 'TERMINATED'\n});\n```\n\n### `aguardic.reviews.get(reviewId)`\n\nGet a review request by ID (for approval flows).\n\n```typescript\nconst review = await aguardic.reviews.get(result.reviewRequestId);\n// review.status: 'PENDING' | 'APPROVED' | 'REJECTED' | 'EXPIRED' | 'CANCELLED'\n```\n\n### `aguardic.reviews.getByCorrelation(correlationId)`\n\nGet a review request by correlation ID.\n\n```typescript\nconst review = await aguardic.reviews.getByCorrelation(\"req-123\");\n```\n\n## Error Handling\n\nThe SDK throws typed errors for different HTTP status codes:\n\n```typescript\nimport { AguardicError, AuthenticationError, ValidationError } from \"@aguardic/sdk\";\n\ntry {\n  await aguardic.evaluate({ input: { content: \"test\" } });\n} catch (error) {\n  if (error instanceof AuthenticationError) {\n    // 401 — invalid API key\n  } else if (error instanceof ValidationError) {\n    // 400 — invalid request body\n  } else if (error instanceof AguardicError) {\n    // Any API error\n    console.log(error.statusCode, error.errors);\n  }\n}\n```\n\n**Error classes:**\n\n| Class | Status Code |\n|-------|-------------|\n| `ValidationError` | 400 |\n| `AuthenticationError` | 401 |\n| `ForbiddenError` | 403 |\n| `NotFoundError` | 404 |\n| `RateLimitError` | 429 |\n| `ServerError` | 500+ |\n\n## Full Example — AI Agent Guardrails\n\n```typescript\nimport Aguardic from \"@aguardic/sdk\";\n\nconst aguardic = new Aguardic(process.env.AGUARDIC_API_KEY!);\n\nasync function runAgent() {\n  // Start a session\n  const session = await aguardic.sessions.create({\n    metadata: { agentId: \"support-bot\", userId: \"user-456\" },\n  });\n\n  // Check each action before executing\n  const result = await aguardic.evaluate({\n    input: {\n      tool: \"send_email\",\n      to: \"customer@example.com\",\n      subject: \"Account update\",\n      body: \"Your password has been reset.\",\n    },\n    sessionId: session.id,\n    targetKey: \"send_email\",\n  });\n\n  if (result.enforcementAction === \"BLOCK\") {\n    console.log(\"Action blocked:\", result.violations);\n    return;\n  }\n\n  if (result.enforcementAction === \"APPROVAL_REQUIRED\") {\n    // Poll for approval\n    const review = await aguardic.reviews.get(result.reviewRequestId!);\n    console.log(\"Waiting for approval:\", review.status);\n    return;\n  }\n\n  // Action allowed — proceed\n  await sendEmail(/* ... */);\n\n  // End session when done\n  await aguardic.sessions.end(session.id);\n}\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}