{"_id":"@atlasent/sdk","_rev":"7-c1686663b97b81846da8ad7f3e96cf62","name":"@atlasent/sdk","dist-tags":{"latest":"2.16.0"},"versions":{"1.5.0":{"name":"@atlasent/sdk","version":"1.5.0","keywords":["atlasent","authorization","ai","agents","gxp","compliance","policy"],"license":"Apache-2.0","_id":"@atlasent/sdk@1.5.0","maintainers":[{"name":"wacas-as","email":"waqas@atlasent.io"},{"name":"bettyc","email":"betty@pegasus.ac"}],"homepage":"https://github.com/AtlaSent-Systems-Inc/atlasent-sdk/tree/main/typescript#readme","bugs":{"url":"https://github.com/AtlaSent-Systems-Inc/atlasent-sdk/issues"},"dist":{"shasum":"e53c37ba85449e36b45cb348b774434d593191d6","tarball":"https://registry.npmjs.org/@atlasent/sdk/-/sdk-1.5.0.tgz","fileCount":23,"integrity":"sha512-lpFokm6q3nFzxL6gveVRD89MdfjalrcO0/VpVqUgMlZDxgjWT9fwOrW7YjLBUBUuYtaP51OBjWRKLv0clXWwpQ==","signatures":[{"sig":"MEUCIGL+jY37zZMbD90T39MnrxCt5ZqzCZP8Ac7a7lGcBQ0dAiEAi8Ju049wuIlb2xZtGIicKZiVseyKWhDZQDkbLHWoH1k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atlasent%2fsdk@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":446421},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./hono":{"import":{"types":"./dist/hono.d.ts","default":"./dist/hono.js"},"require":{"types":"./dist/hono.d.cts","default":"./dist/hono.cjs"}},"./behavior":{"import":{"types":"./dist/behavior.d.ts","default":"./dist/behavior.js"},"require":{"types":"./dist/behavior.d.cts","default":"./dist/behavior.cjs"}},"./package.json":"./package.json"},"gitHead":"8580280c8594395d38637a2b21256bfbb67d9551","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run typecheck && npm test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts","typecheck:examples":"tsc --noEmit --project tsconfig.examples.json"},"_npmUser":{"name":"wacas-as","email":"waqas@atlasent.io"},"repository":{"url":"git+https://github.com/AtlaSent-Systems-Inc/atlasent-sdk.git","type":"git","directory":"typescript"},"_npmVersion":"10.8.2","description":"TypeScript SDK for the AtlaSent authorization API","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.2","hono":"^4.12.15","tsup":"^8.0.2","vitest":"^4.1.5","typescript":"^6.0.3","@types/node":"^25.6.0","@vitest/coverage-v8":"^4.1.5"},"peerDependencies":{"hono":"^4.0.0"},"peerDependenciesMeta":{"hono":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.5.0_1777568498012_0.40434304067723437","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@atlasent/sdk","version":"2.5.0","keywords":["atlasent","authorization","ai","agents","gxp","compliance","policy"],"license":"Apache-2.0","_id":"@atlasent/sdk@2.5.0","maintainers":[{"name":"wacas-as","email":"waqas@atlasent.io"},{"name":"bettyc","email":"betty@pegasus.ac"}],"homepage":"https://github.com/AtlaSent-Systems-Inc/atlasent-sdk/tree/main/typescript#readme","bugs":{"url":"https://github.com/AtlaSent-Systems-Inc/atlasent-sdk/issues"},"dist":{"shasum":"54f6b9ad0be0a6fd205bd77ad9c029fca30a25bd","tarball":"https://registry.npmjs.org/@atlasent/sdk/-/sdk-2.5.0.tgz","fileCount":29,"integrity":"sha512-qGUmGA9yLYX0a9ZzouH8UVAyKH+8vcbVMsFKPcZG8i5bKkJO0HKvkeHhrM/Ik4EKZXFSfwWjftdFxJSIEEIsfA==","signatures":[{"sig":"MEQCIHJv4OS3DKvQZ577196N0nDMw9ed8rPoj59uPPHeVsFgAiAxHPNdFsw3pMMGWC9OEEzDCzMOwzW5vg7MPXIsB8frsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atlasent%2fsdk@2.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2157167},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./hono":{"import":{"types":"./dist/hono.d.ts","default":"./dist/hono.js"},"require":{"types":"./dist/hono.d.cts","default":"./dist/hono.cjs"}},"./state":{"import":{"types":"./dist/state.d.ts","default":"./dist/state.js"},"require":{"types":"./dist/state.d.cts","default":"./dist/state.cjs"}},"./behavior":{"import":{"types":"./dist/behavior.d.ts","default":"./dist/behavior.js"},"require":{"types":"./dist/behavior.d.cts","default":"./dist/behavior.cjs"}},"./package.json":"./package.json"},"gitHead":"3f11368d88b5f3d5b64f1e681769fd1de5f5e7ac","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:e2e":"vitest run --config vitest.e2e.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run typecheck && npm test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts","typecheck:examples":"tsc --noEmit --project tsconfig.examples.json"},"_npmUser":{"name":"bettyc","email":"betty@pegasus.ac"},"repository":{"url":"git+https://github.com/AtlaSent-Systems-Inc/atlasent-sdk.git","type":"git","directory":"typescript"},"_npmVersion":"10.8.2","description":"TypeScript SDK for the AtlaSent authorization API","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","browserslist":["Chrome >= 103","Firefox >= 100","Safari >= 16"],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.2","hono":"^4.12.15","tsup":"^8.0.2","jsdom":"^29.1.0","vitest":"^4.1.5","size-limit":"^12.1.0","typescript":"^6.0.3","@types/node":"^25.6.0","@types/jsdom":"^28.0.1","@size-limit/file":"^12.1.0","@size-limit/esbuild":"^12.1.0","@vitest/coverage-v8":"^4.1.5"},"peerDependencies":{"hono":"^4.0.0"},"peerDependenciesMeta":{"hono":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.5.0_1779253562141_0.14419418275366747","host":"s3://npm-registry-packages-npm-production"}},"2.10.0":{"name":"@atlasent/sdk","version":"2.10.0","keywords":["atlasent","authorization","ai","agents","gxp","compliance","policy"],"license":"Apache-2.0","_id":"@atlasent/sdk@2.10.0","maintainers":[{"name":"wacas-as","email":"waqas@atlasent.io"},{"name":"bettyc","email":"betty@pegasus.ac"}],"homepage":"https://github.com/AtlaSent-Systems-Inc/atlasent-sdk/tree/main/typescript#readme","bugs":{"url":"https://github.com/AtlaSent-Systems-Inc/atlasent-sdk/issues"},"dist":{"shasum":"153f2aec03d7cf4506f648df9d9cfcc221a57197","tarball":"https://registry.npmjs.org/@atlasent/sdk/-/sdk-2.10.0.tgz","fileCount":29,"integrity":"sha512-bQxQhww40/t6jz7d6jMrf3xYKOtKFvp3e60zRVIGePP2/jSr0WLQWgekBayKb6+ndnmKKu9UIhktISk0ap9Z4g==","signatures":[{"sig":"MEQCIE99wiDQbz/Rtq+4eRey+fwjFUPJ3qoXpT7tIOUKgfRbAiARvNdKISlhAEE0yIoEhjGajmGcxmXrbt4NXMaCUInf3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atlasent%2fsdk@2.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3077218},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./hono":{"import":{"types":"./dist/hono.d.ts","default":"./dist/hono.js"},"require":{"types":"./dist/hono.d.cts","default":"./dist/hono.cjs"}},"./state":{"import":{"types":"./dist/state.d.ts","default":"./dist/state.js"},"require":{"types":"./dist/state.d.cts","default":"./dist/state.cjs"}},"./behavior":{"import":{"types":"./dist/behavior.d.ts","default":"./dist/behavior.js"},"require":{"types":"./dist/behavior.d.cts","default":"./dist/behavior.cjs"}},"./package.json":"./package.json"},"gitHead":"625fb7ca1c3bc66ce835b553092e94fa09026e0d","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:e2e":"vitest run --config vitest.e2e.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run typecheck && npm test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts","typecheck:examples":"tsc --noEmit --project tsconfig.examples.json"},"_npmUser":{"name":"bettyc","email":"betty@pegasus.ac"},"repository":{"url":"git+https://github.com/AtlaSent-Systems-Inc/atlasent-sdk.git","type":"git","directory":"typescript"},"_npmVersion":"10.8.2","description":"TypeScript SDK for the AtlaSent authorization API","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","browserslist":["Chrome >= 103","Firefox >= 100","Safari >= 16"],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.2","hono":"^4.12.15","tsup":"^8.0.2","jsdom":"^29.1.0","vitest":"^4.1.5","size-limit":"^12.1.0","typescript":"^6.0.3","@types/node":"^25.6.0","@types/jsdom":"^28.0.1","@types/express":"^5.0.6","@size-limit/file":"^12.1.0","@size-limit/esbuild":"^12.1.0","@vitest/coverage-v8":"^4.1.5"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.10.0_1779679200086_0.418565270472528","host":"s3://npm-registry-packages-npm-production"}},"2.12.0":{"name":"@atlasent/sdk","version":"2.12.0","keywords":["atlasent","authorization","ai","agents","gxp","compliance","policy"],"license":"Apache-2.0","_id":"@atlasent/sdk@2.12.0","maintainers":[{"name":"bettyc","email":"betty@atlasent.io"}],"homepage":"https://github.com/AtlaSent-Systems-Inc/atlasent-sdk/tree/main/typescript#readme","bugs":{"url":"https://github.com/AtlaSent-Systems-Inc/atlasent-sdk/issues"},"dist":{"shasum":"afc11bb44ccce3de9de1a34fe73262528a0ef98b","tarball":"https://registry.npmjs.org/@atlasent/sdk/-/sdk-2.12.0.tgz","fileCount":29,"integrity":"sha512-KY8WlE0/mpvAK0P0HkffzI1cfUOGD2x4JNBUamA9t3OzHMijXh7/arT5dYGGzvc1BpVlgKL7KV1NL5bYBUSESQ==","signatures":[{"sig":"MEQCICO/9pvhM9GHpgUDBsUfrrEmF1nCXn+gICmZTncyC2ZrAiA4F926pmNQ6bFtaDNtdaV5zChC8C3SwKjZlcB5Okoxbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atlasent%2fsdk@2.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4149536},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./hono":{"import":{"types":"./dist/hono.d.ts","default":"./dist/hono.js"},"require":{"types":"./dist/hono.d.cts","default":"./dist/hono.cjs"}},"./state":{"import":{"types":"./dist/state.d.ts","default":"./dist/state.js"},"require":{"types":"./dist/state.d.cts","default":"./dist/state.cjs"}},"./behavior":{"import":{"types":"./dist/behavior.d.ts","default":"./dist/behavior.js"},"require":{"types":"./dist/behavior.d.cts","default":"./dist/behavior.cjs"}},"./package.json":"./package.json"},"gitHead":"680d61551af2792a008284e774e7cbd2917a1128","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:e2e":"vitest run --config vitest.e2e.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run typecheck && npm test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts","typecheck:examples":"tsc --noEmit --project tsconfig.examples.json"},"_npmUser":{"name":"bettyc","email":"betty@atlasent.io"},"repository":{"url":"git+https://github.com/AtlaSent-Systems-Inc/atlasent-sdk.git","type":"git","directory":"typescript"},"_npmVersion":"10.8.2","description":"TypeScript SDK for the AtlaSent authorization API","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","browserslist":["Chrome >= 103","Firefox >= 100","Safari >= 16"],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.2","hono":"^4.12.15","tsup":"^8.0.2","jsdom":"^29.1.0","vitest":"^4.1.5","size-limit":"^12.1.0","typescript":"^6.0.3","@types/node":"^25.6.0","@types/jsdom":"^28.0.1","@types/express":"^5.0.6","@size-limit/file":"^12.1.0","@size-limit/esbuild":"^12.1.0","@vitest/coverage-v8":"^4.1.5"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.12.0_1780475308438_0.3377931102289409","host":"s3://npm-registry-packages-npm-production"}},"2.13.0":{"name":"@atlasent/sdk","version":"2.13.0","keywords":["atlasent","authorization","ai","agents","gxp","compliance","policy"],"license":"Apache-2.0","_id":"@atlasent/sdk@2.13.0","maintainers":[{"name":"bettyc","email":"betty@atlasent.io"}],"homepage":"https://github.com/AtlaSent-Systems-Inc/atlasent-sdk/tree/main/typescript#readme","bugs":{"url":"https://github.com/AtlaSent-Systems-Inc/atlasent-sdk/issues"},"dist":{"shasum":"e2d6dd584ed7639e7fcf679cad8f4e054efadbe5","tarball":"https://registry.npmjs.org/@atlasent/sdk/-/sdk-2.13.0.tgz","fileCount":29,"integrity":"sha512-z+QbgheZWsshLCe7+oyLTsHhielAeb1JH098ZRYl6tuuhOxudQUBEz3NdN59uIshzUyUb20oHTydL0NoYsoG6g==","signatures":[{"sig":"MEQCIGMFOihHGA41N5vCPZbuWKbUpIGGj5tGHpgIdOzFOw/dAiAlgTIYbV5iO9KrhSlazhYHMwLhhM9YfHy9+CdBDjjixw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atlasent%2fsdk@2.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4189231},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./hono":{"import":{"types":"./dist/hono.d.ts","default":"./dist/hono.js"},"require":{"types":"./dist/hono.d.cts","default":"./dist/hono.cjs"}},"./state":{"import":{"types":"./dist/state.d.ts","default":"./dist/state.js"},"require":{"types":"./dist/state.d.cts","default":"./dist/state.cjs"}},"./behavior":{"import":{"types":"./dist/behavior.d.ts","default":"./dist/behavior.js"},"require":{"types":"./dist/behavior.d.cts","default":"./dist/behavior.cjs"}},"./package.json":"./package.json"},"gitHead":"b1bacca374bcb751b5e086120d36125e22dd3c07","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:e2e":"vitest run --config vitest.e2e.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run typecheck && npm test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts","typecheck:examples":"tsc --noEmit --project tsconfig.examples.json"},"_npmUser":{"name":"bettyc","email":"betty@atlasent.io"},"repository":{"url":"git+https://github.com/AtlaSent-Systems-Inc/atlasent-sdk.git","type":"git","directory":"typescript"},"_npmVersion":"10.8.2","description":"TypeScript SDK for the AtlaSent authorization API","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","browserslist":["Chrome >= 103","Firefox >= 100","Safari >= 16"],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.2","hono":"^4.12.15","tsup":"^8.0.2","jsdom":"^29.1.0","vitest":"^4.1.5","size-limit":"^12.1.0","typescript":"^6.0.3","@types/node":"^25.6.0","@types/jsdom":"^28.0.1","@types/express":"^5.0.6","@size-limit/file":"^12.1.0","@size-limit/esbuild":"^12.1.0","@vitest/coverage-v8":"^4.1.5"},"peerDependencies":{"hono":"^4.0.0","express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.13.0_1780513237385_0.1714994707819637","host":"s3://npm-registry-packages-npm-production"}},"2.16.0":{"name":"@atlasent/sdk","version":"2.16.0","description":"TypeScript SDK for the AtlaSent authorization API","license":"Apache-2.0","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./hono":{"import":{"types":"./dist/hono.d.ts","default":"./dist/hono.js"},"require":{"types":"./dist/hono.d.cts","default":"./dist/hono.cjs"}},"./behavior":{"import":{"types":"./dist/behavior.d.ts","default":"./dist/behavior.js"},"require":{"types":"./dist/behavior.d.cts","default":"./dist/behavior.cjs"}},"./state":{"import":{"types":"./dist/state.d.ts","default":"./dist/state.js"},"require":{"types":"./dist/state.d.cts","default":"./dist/state.cjs"}},"./package.json":"./package.json"},"sideEffects":false,"engines":{"node":">=18"},"browserslist":["Chrome >= 103","Firefox >= 100","Safari >= 16"],"scripts":{"build":"tsup","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run typecheck && npm test && npm run build","size":"size-limit","test":"vitest run","test:coverage":"vitest run --coverage","test:e2e":"vitest run --config vitest.e2e.config.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:watch":"vitest","typecheck":"tsc --noEmit","typecheck:examples":"tsc --noEmit --project tsconfig.examples.json"},"keywords":["atlasent","authorization","ai","agents","gxp","compliance","policy"],"repository":{"type":"git","url":"git+https://github.com/AtlaSent-Systems-Inc/atlasent-sdk.git","directory":"typescript"},"homepage":"https://github.com/AtlaSent-Systems-Inc/atlasent-sdk/tree/main/typescript#readme","bugs":{"url":"https://github.com/AtlaSent-Systems-Inc/atlasent-sdk/issues"},"publishConfig":{"access":"public"},"devDependencies":{"@size-limit/esbuild":"^12.1.0","@size-limit/file":"^12.1.0","@types/express":"^5.0.6","@types/jsdom":"^28.0.1","@types/node":"^25.6.0","@vitest/coverage-v8":"^4.1.5","hono":"^4.12.15","jsdom":"^29.1.0","size-limit":"^12.1.0","tsup":"^8.0.2","tsx":"^4.7.2","typescript":"^6.0.3","vitest":"^4.1.5"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0","hono":"^4.0.0"},"peerDependenciesMeta":{"express":{"optional":true},"hono":{"optional":true}},"_id":"@atlasent/sdk@2.16.0","gitHead":"2899868918ef00ca62e7b851268904aadd49d246","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-3wTzcCnhlJG2Kk/U5IheaeUPSTo/TCb2VsjniaFyEo32da/WQDJy6kmDLERVv0pS+DE/IJPqB4FASTlxU3XI9Q==","shasum":"8e3e1d6da2fc9797a8038e590c30b536e18c6684","tarball":"https://registry.npmjs.org/@atlasent/sdk/-/sdk-2.16.0.tgz","fileCount":29,"unpackedSize":4277295,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atlasent%2fsdk@2.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGESZHJqiATvF0OR+pJF4R1T6OCg+wkewNSMlcnc8J12AiAsZQFRkh4tgFggDbY4LqOTn9M625J9tTQPS20zht5+rw=="}]},"_npmUser":{"name":"bettyc","email":"betty@atlasent.io"},"directories":{},"maintainers":[{"name":"bettyc","email":"betty@atlasent.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_2.16.0_1780602863329_0.6578804612893423"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-30T17:01:37.844Z","modified":"2026-06-04T19:54:23.794Z","1.5.0":"2026-04-30T17:01:38.163Z","2.5.0":"2026-05-20T05:06:02.382Z","2.10.0":"2026-05-25T03:20:00.279Z","2.12.0":"2026-06-03T08:28:28.658Z","2.13.0":"2026-06-03T19:00:37.543Z","2.16.0":"2026-06-04T19:54:23.547Z"},"bugs":{"url":"https://github.com/AtlaSent-Systems-Inc/atlasent-sdk/issues"},"license":"Apache-2.0","homepage":"https://github.com/AtlaSent-Systems-Inc/atlasent-sdk/tree/main/typescript#readme","keywords":["atlasent","authorization","ai","agents","gxp","compliance","policy"],"repository":{"type":"git","url":"git+https://github.com/AtlaSent-Systems-Inc/atlasent-sdk.git","directory":"typescript"},"description":"TypeScript SDK for the AtlaSent authorization API","maintainers":[{"name":"bettyc","email":"betty@atlasent.io"}],"readme":"# @atlasent/sdk\n\nExecution-time authorization for AI agents, in TypeScript. Two methods, zero runtime dependencies, one function call per decision.\n\n```bash\nnpm i @atlasent/sdk\n```\n\n## Quickstart\n\n```ts\nimport { AtlaSentClient } from \"@atlasent/sdk\";\n\nconst client = new AtlaSentClient({ apiKey: process.env.ATLASENT_API_KEY! });\n\nconst gate = await client.deployGate({\n  context: { repo: \"atlasent/api\", commit: process.env.GIT_SHA },\n});\n\nif (!gate.allowed) {\n  console.error(\"Deploy blocked:\", gate.reason);\n  process.exit(1);\n}\n\n// runDeploy();\n```\n\nThat's it. `deployGate()` performs the V1 Deploy Gate sequence against `production.deploy`: `evaluate()` calls `POST /v1-evaluate`, receives a permit when allowed, then `verifyPermit()` calls `POST /v1-verify-permit` before your deployment can run. A clean `deny` is returned as a block result — network / server / auth failures are thrown.\n\n## Why two calls? (the mental model)\n\nAtlaSent is **authorize-before-execute**, not after-the-fact logging. The two-step pattern is intentional:\n\n1. **`evaluate()`** asks the policy engine: \"should this action run?\" Returns a decision and, when allowed, a single-use **permit token** — a cryptographic proof that evaluation happened.\n2. **`verifyPermit()`** consumes the permit server-side *before* the action executes. This is what makes the audit chain tamper-evident: every execution is hash-linked to the evaluation that authorized it, and no permit can be replayed.\n\n**You rarely call them separately.** `deployGate()` wraps both steps for deploy workflows. The Python SDK's `protect()` wraps them for arbitrary actions. Use the raw two-step form only when something external — a human approval, a change-window check — needs to happen *between* evaluate and execute (evaluate → wait → verify → run).\n\n## Simple V1 surface\n\n```ts\nclient.evaluate({ agent, action, context? })\n  // → { decision: \"allow\" | \"deny\" | \"hold\" | \"escalate\", permitId, reason, auditHash, timestamp }\n\nclient.verifyPermit({ permitId, agent?, action?, context? })\n  // → { verified, outcome, permitHash, timestamp }\n\nclient.deployGate({ agent?, action?, context? })\n  // defaults action to \"production.deploy\" and returns { allowed, reason, evidence }\n```\n\n`verifyPermit()` confirms a previously-issued permit server-side. Signed/offline permit artifacts never imply deployment authorization by themselves.\n\n## Decision replay\n\nRe-evaluate a recorded decision against its originally-pinned policy bundle and engine version. **Side-effect-free**: no audit row is written, no permit is minted (ADR-016 `mode: \"replay\"` sentinel). Useful for compliance review, regression-testing bundle changes, and post-incident investigation.\n\nTwo surfaces exist; pick the one that matches your call site:\n\n```ts\n// SDK-canonical (preferred for new code) — wire DECISION_CHANGED is normalized\n// to POLICY_DRIFT; 409 replay_not_eligible returns ENGINE_DRIFT or BUNDLE_MISSING\n// instead of throwing. You can always `switch` on the variance kind.\nconst r = await client.replay({ evaluationId: \"dec_abc123\" });\nswitch (r.varianceKind) {\n  case \"NONE\":             /* replay agrees */                          break;\n  case \"POLICY_DRIFT\":     /* same envelope/bundle, different decision */ break;\n  case \"ENVELOPE_DRIFT\":   /* recorded envelope no longer hashes */     break;\n  case \"ENGINE_DRIFT\":     /* original engine retired beyond archival */ break;\n  case \"BUNDLE_MISSING\":   /* original eval had no bundle pinned */     break;\n  case \"CHAIN_TAMPER\":     /* audit-chain v5 detector tripped */        break;\n}\n```\n\n```ts\n// Raw-wire surface — variance values pass through verbatim\n// (NONE / DECISION_CHANGED / ENVELOPE_DRIFT); 409 throws AtlaSentError\nconst result = await client.replayDecision(\"dec_abc123\");\nif (result.variance === \"DECISION_CHANGED\") {\n  console.warn(\n    `Decision ${result.decision_id} drifted: ` +\n    `${result.original_decision} → ${result.replay_decision}`,\n  );\n}\n```\n\n`/v1/decisions/:id/replay` is alpha per `atlasent-api/docs/STABLE_V2_PROMOTION.md` — wire shapes can shift without a deprecation cycle until it graduates to stable v1.\n\n## CI deploy-gate pattern\n\n```ts\nimport { AtlaSentClient } from \"@atlasent/sdk\";\n\nconst client = new AtlaSentClient({ apiKey: process.env.ATLASENT_API_KEY! });\n\nconst evaluation = await client.evaluate({\n  agent: \"ci-deploy-bot\",\n  action: \"production.deploy\",\n  context: { service: \"billing-api\", commit: process.env.GIT_SHA },\n});\n\nif (evaluation.decision !== \"allow\") {\n  console.error(\"Deploy blocked:\", evaluation.reason);\n  process.exit(1);\n}\n\nconst verification = await client.verifyPermit({\n  permitId: evaluation.permitId,\n});\n\nif (!verification.verified) {\n  console.error(\"Permit verification failed — aborting\");\n  process.exit(1);\n}\n\n// runDeploy();\n```\n\nSee [`examples/deploy-gate.ts`](./examples/deploy-gate.ts) for a complete CI-shaped script.\n\n## Constructor options\n\n```ts\nnew AtlaSentClient({\n  apiKey: \"ask_live_...\", // required\n  baseUrl: \"https://api.atlasent.io\", // default\n  timeoutMs: 10_000, // default — per-request\n  fetch: customFetch, // default: globalThis.fetch\n});\n```\n\n## Error handling\n\nThe SDK throws exactly one error type — `AtlaSentError` — with a flat shape that mirrors Stripe / Octokit / Supabase conventions:\n\n```ts\nimport { AtlaSentError } from \"@atlasent/sdk\";\n\ntry {\n  await client.evaluate({ agent: \"a\", action: \"b\" });\n} catch (err) {\n  if (err instanceof AtlaSentError) {\n    console.error(err.code, err.status, err.requestId, err.retryAfterMs);\n  }\n}\n```\n\n| `err.code`        | When it's thrown                         |\n| ----------------- | ---------------------------------------- |\n| `invalid_api_key` | HTTP 401                                 |\n| `forbidden`       | HTTP 403                                 |\n| `rate_limited`    | HTTP 429 (check `err.retryAfterMs`)      |\n| `bad_request`     | HTTP 4xx (other than 401/403/429)        |\n| `server_error`    | HTTP 5xx                                 |\n| `timeout`         | `timeoutMs` exceeded                     |\n| `network`         | DNS / connection failure, fetch threw    |\n| `bad_response`    | non-JSON body or missing required fields |\n\nEvery `AtlaSentError` carries `err.requestId` — the UUID the SDK sent as `X-Request-ID`, correlatable in your server logs.\n\n## Design choices\n\n- **Fail-closed.** A clean `DENY` is returned so your code explicitly handles it; every other failure throws, so no action proceeds silently.\n- **Native `fetch` only.** No axios, no polyfills. Node 20+ has everything we need.\n- **Zero runtime dependencies.** Strongly typed via plain TS interfaces.\n- **Bearer-token auth.** `Authorization: Bearer <apiKey>` so request-body logs never capture the key. (The SDK also includes `api_key` in the body for wire compat with the current policy engine; that will be removed once the server drops body-based auth.)\n\n## Requirements\n\n- Node.js **20** or newer (native `fetch`, `AbortSignal.timeout`, `crypto.randomUUID`).\n- **Browser:** Chrome 103+, Firefox 100+, Safari 16+, Edge 103+. The SDK uses\n  `AbortSignal.timeout` for per-request deadlines — the constructor throws a\n  clear `AtlaSentError(code: \"network\")` on runtimes that lack it so the failure\n  is loud rather than silent.\n- TypeScript **5.0+** for best type-inference ergonomics (older is fine — types are plain interfaces).\n\n## Hono middleware\n\nDrop-in protection for [Hono](https://hono.dev) routes via the\n`@atlasent/sdk/hono` subpath export (requires `hono` as a peer dep):\n\n```ts\nimport { Hono } from \"hono\";\nimport { atlaSentGuard, atlaSentErrorHandler } from \"@atlasent/sdk/hono\";\n\nconst app = new Hono();\napp.onError(atlaSentErrorHandler());\n\napp.post(\n  \"/deploy/:service\",\n  atlaSentGuard({\n    action: (c) => `deploy_${c.req.param(\"service\")}`,\n    agent: (c) => c.req.header(\"x-agent-id\") ?? \"anonymous\",\n    context: async (c) => ({ commit: (await c.req.json()).commit }),\n  }),\n  (c) => c.json({ ok: true, permit: c.get(\"atlasent\") }),\n);\n```\n\n`atlaSentGuard` calls `protect()` under the hood — fail-closed\nsemantics. On allow it stashes a `Permit` on the context (key:\n`\"atlasent\"`, override via `options.key`). On deny or transport error\nit throws; `atlaSentErrorHandler` maps those to 403 / 503 responses\nso every guarded route shares one error-handling path.\n\n> **Upcoming migration:** after `@atlasent/enforce` reaches GA the\n> guard API will change to accept a pre-constructed `Enforce` instance\n> instead of per-route `action/agent/context` options. The current API\n> is **not deprecated** until that ships. See the\n> [CHANGELOG](./CHANGELOG.md) for the full before/after and\n> [`contract/ENFORCE_PACK.md`](../contract/ENFORCE_PACK.md) for\n> migration details.\n\n## Browser support\n\nThe SDK is universal and works in modern browsers with no build-time changes:\n\n```ts\nimport { AtlaSentClient } from \"@atlasent/sdk\";\n\nconst client = new AtlaSentClient({\n  apiKey: import.meta.env.VITE_ATLASENT_API_KEY,\n  baseUrl: import.meta.env.VITE_ATLASENT_API_URL,\n});\n\nconst result = await client.evaluate({\n  agent: currentUser.id,\n  action: \"view_sensitive_report\",\n});\n```\n\n**Auth model in browser contexts.** Shipping a long-lived API key in a browser\nbundle exposes it in DevTools and makes it replayable if exfiltrated. The\nrecommended options in increasing security order are:\n\n- **Option B — browser-scoped keys (short term):** Create a read-only,\n  scope-restricted, IP-allowlisted key class from the AtlaSent console.\n  Safe for internal dashboards where you control the network. Not suitable\n  for public-facing apps.\n- **Option A — session-token mode (recommended for atlasent-hosted surfaces):**\n  After SSO sign-in, the frontend obtains a short-lived (15-min) Bearer token\n  from `GET /v1-session/token` bound to the user's scopes and tenant. The SDK\n  handles token refresh transparently. See\n  [atlasent-api#144](https://github.com/AtlaSent-Systems-Inc/atlasent-api/issues/144).\n\nThe `User-Agent` header is set to `@atlasent/sdk/<version> browser` in browser\nruntimes (browsers strip this header anyway — it's harmless) and\n`@atlasent/sdk/<version> node/<node-version>` in Node.\n\n## Related\n\n- **Python SDK:** same repo, [`../python/`](../python/README.md). Wire-compatible.\n\n## License\n\nApache-2.0 — see [LICENSE](./LICENSE).\n","readmeFilename":"README.md"}