{"_id":"@amanai/sdk","_rev":"4-e51563e945d13f713d6cf023e97f581a","name":"@amanai/sdk","dist-tags":{"latest":"0.3.1"},"versions":{"0.2.0":{"name":"@amanai/sdk","version":"0.2.0","keywords":["ai","agent","security","llm","policy-as-code","tool-call","guardrails"],"author":{"name":"Aji Purnomo","email":"hi@aji.is-a.dev"},"license":"Apache-2.0","_id":"@amanai/sdk@0.2.0","maintainers":[{"name":"ajipurn","email":"hi@aji.is-a.dev"}],"homepage":"https://github.com/ajipurn/amanai/tree/main/packages/sdk-node#readme","bugs":{"url":"https://github.com/ajipurn/amanai/issues"},"dist":{"shasum":"77aae0df69bc0ac2c2ebd285703026c88fdaffb4","tarball":"https://registry.npmjs.org/@amanai/sdk/-/sdk-0.2.0.tgz","fileCount":6,"integrity":"sha512-z/Is1q8amkUxBoymDeDb4vrmwFY+A1f5tJQHOoQychAm7H3RJ2RsSuziU2q03d18ZSPxfBPPinHG46wrfowi+g==","signatures":[{"sig":"MEUCIBoCHOwS3drd0gldJBjdJwdz9zi+5Cmz4UmZlpbpV33PAiEA9XDVN6daVJZ6FfQP/Cd+a1WYa720ukuw+eG43n+nom4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amanai%2fsdk@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":42221},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"88c0d95f145681267505cfb22648cba6ad2386e9","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ajipurn","email":"hi@aji.is-a.dev"},"repository":{"url":"git+https://github.com/ajipurn/amanai.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"10.8.2","description":"Action Policy Engine for AI agents — policy-as-code for tool-calls. Zero-dependency TypeScript core engine that loads the same policy JSON and returns the same decisions as the Python SDK.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.0","typescript":"^5.6.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.0_1782918200314_0.13839673523018892","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@amanai/sdk","version":"0.2.1","keywords":["ai","agent","security","llm","policy-as-code","tool-call","guardrails"],"author":{"name":"Aji Purnomo","email":"hi@aji.is-a.dev"},"license":"Apache-2.0","_id":"@amanai/sdk@0.2.1","maintainers":[{"name":"ajipurn","email":"hi@aji.is-a.dev"}],"homepage":"https://github.com/ajipurn/amanai/tree/main/packages/sdk-node#readme","bugs":{"url":"https://github.com/ajipurn/amanai/issues"},"dist":{"shasum":"77e1e4bb64d39130fac092e603c1e43302c5e065","tarball":"https://registry.npmjs.org/@amanai/sdk/-/sdk-0.2.1.tgz","fileCount":6,"integrity":"sha512-8t384pEFWVcH6gN5LYpSxCqMT+dEcJRH7uRhDX0kNeDWH24M7vbuTso/GfQQ22Bk8v4TankPvo1+xkPvm7BOpA==","signatures":[{"sig":"MEUCIDJIYL+L/VZrU9TnLnJqBHu1rwyTWJgnWw/4UtLTSiDoAiEAqvaITYJmBTTmLDjbBmty/Qpox9GWG7SGs/w+YvtK4uk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amanai%2fsdk@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":42705},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"06dcd46d1c8d27f3668e87818faed937ce14e0aa","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ajipurn","email":"hi@aji.is-a.dev"},"repository":{"url":"git+https://github.com/ajipurn/amanai.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"10.8.2","description":"Action Policy Engine for AI agents — policy-as-code for tool-calls. Zero-dependency TypeScript core engine that loads the same policy JSON and returns the same decisions as the Python SDK.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.0","typescript":"^5.6.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.1_1782951535899_0.4070450700183381","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@amanai/sdk","version":"0.3.0","keywords":["ai","agent","security","llm","policy-as-code","tool-call","guardrails"],"author":{"name":"Aji Purnomo","email":"hi@aji.is-a.dev"},"license":"Apache-2.0","_id":"@amanai/sdk@0.3.0","maintainers":[{"name":"ajipurn","email":"hi@aji.is-a.dev"}],"homepage":"https://github.com/ajipurn/amanai/tree/main/packages/sdk-node#readme","bugs":{"url":"https://github.com/ajipurn/amanai/issues"},"dist":{"shasum":"c19d0b9c7794c1b4039d5a667fc27cca15d2581f","tarball":"https://registry.npmjs.org/@amanai/sdk/-/sdk-0.3.0.tgz","fileCount":6,"integrity":"sha512-1j/FPh2ocdEh99OZU8VoYtcRH8k7wlMhLBzakxfB/juvOT52ItuZtiEXVin6fJbIUuXLKChULeWYG3GcBQCOTA==","signatures":[{"sig":"MEYCIQD+6pQeA89ORppqp2KQB63oKzY/LjdIxkjKfAoxe2DkpwIhAL8d7ZLy9WV3n1QkTP44nE8LaoKAhOWYlyaDAeOfIM6S","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amanai%2fsdk@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50010},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"da60201e47aee09d9d8e32d6fe578a378f61fff8","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ajipurn","email":"hi@aji.is-a.dev"},"repository":{"url":"git+https://github.com/ajipurn/amanai.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"10.8.2","description":"Action Policy Engine for AI agents — policy-as-code for tool-calls. Zero-dependency TypeScript core engine that loads the same policy JSON and returns the same decisions as the Python SDK.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.0","typescript":"^5.6.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.3.0_1782955864690_0.9721352511288666","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@amanai/sdk","publishConfig":{"access":"public"},"version":"0.3.1","description":"Action Policy Engine for AI agents — policy-as-code for tool-calls. Zero-dependency TypeScript core engine that loads the same policy JSON and returns the same decisions as the Python SDK.","license":"Apache-2.0","author":{"name":"Aji Purnomo","email":"hi@aji.is-a.dev"},"repository":{"type":"git","url":"git+https://github.com/ajipurn/amanai.git","directory":"packages/sdk-node"},"homepage":"https://github.com/ajipurn/amanai/tree/main/packages/sdk-node#readme","bugs":{"url":"https://github.com/ajipurn/amanai/issues"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"sideEffects":false,"keywords":["ai","agent","security","llm","policy-as-code","tool-call","guardrails"],"scripts":{"build":"tsup","test":"vitest run","typecheck":"tsc --noEmit"},"engines":{"node":">=18"},"devDependencies":{"@types/node":"^20.14.0","tsup":"^8.3.0","typescript":"^5.6.0","vitest":"^2.1.0"},"_id":"@amanai/sdk@0.3.1","gitHead":"b5baf99c355c94207e90c3444935d38c3af95cd8","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-l16wojC6sRWBdB7K1qRRokvxzKtYCwnPh6hT1bw8iclDswWfNA045wzhR0a3t4ogF2VpVFiqN/AEjBLfX5DDTQ==","shasum":"0d38bd4205730d90c4d5fc4714d491193809279c","tarball":"https://registry.npmjs.org/@amanai/sdk/-/sdk-0.3.1.tgz","fileCount":6,"unpackedSize":50010,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amanai%2fsdk@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDK0Y2avwt6jm6SYZg1E1JVwV8ybg/XQG6tXa93PmjL+QIgdrHKm7rru6YPtdrWFIjni//93pjoKifh3seG1INA6Fg="}]},"_npmUser":{"name":"ajipurn","email":"hi@aji.is-a.dev"},"directories":{},"maintainers":[{"name":"ajipurn","email":"hi@aji.is-a.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.3.1_1782961913731_0.9983594226108754"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-01T15:03:20.101Z","modified":"2026-07-02T03:11:54.184Z","0.2.0":"2026-07-01T15:03:20.480Z","0.2.1":"2026-07-02T00:18:56.025Z","0.3.0":"2026-07-02T01:31:04.816Z","0.3.1":"2026-07-02T03:11:53.875Z"},"bugs":{"url":"https://github.com/ajipurn/amanai/issues"},"author":{"name":"Aji Purnomo","email":"hi@aji.is-a.dev"},"license":"Apache-2.0","homepage":"https://github.com/ajipurn/amanai/tree/main/packages/sdk-node#readme","keywords":["ai","agent","security","llm","policy-as-code","tool-call","guardrails"],"repository":{"type":"git","url":"git+https://github.com/ajipurn/amanai.git","directory":"packages/sdk-node"},"description":"Action Policy Engine for AI agents — policy-as-code for tool-calls. Zero-dependency TypeScript core engine that loads the same policy JSON and returns the same decisions as the Python SDK.","maintainers":[{"name":"ajipurn","email":"hi@aji.is-a.dev"}],"readme":"# amanai (TypeScript)\n\nThe Action Policy Engine for AI agents — policy-as-code for tool-calls, in\nTypeScript. Loads the **same policy JSON** and returns the **same decisions** as\nthe [Python SDK](../sdk-python) (guaranteed by shared parity vectors). Zero runtime\ndependencies.\n\n> v1 ports the **core engine** (policy loading, operators, `evaluate`, `tool`,\n> trace collection, `guardToolCall`). Guardrails, the offline judge, and the\n> monitor are Python-only for now.\n\n## Install\n\n```bash\nnpm install @amanai/sdk\n```\n\n## Use\n\n```ts\nimport { loadPolicy, setPolicy, setMode, tool, ToolBlocked, runWithContext } from \"@amanai/sdk\";\n\nrunWithContext(() => {\n  setPolicy(loadPolicy([\n    { id: \"discount-cap\", tool: \"apply_discount\",\n      args: [{ arg: \"pct\", op: \">=\", value: 50 }], action: \"block\", reason: \"too high\" },\n  ]));\n  setMode(\"enforce\");\n\n  const applyDiscount = tool((args: { pct: number }) => `applied ${args.pct}%`, { name: \"apply_discount\" });\n  applyDiscount({ pct: 90 });   // throws ToolBlocked\n});\n```\n\nGate a provider tool-call loop directly with `guardToolCall(name, args)`. Wrap a\nrequest handler in `runWithContext(...)` for per-request isolation (the Node analog\nof Python's contextvars).\n\n## Cross-language parity\n\n`spec/parity/vectors.json` at the repo root is executed by **both** this package's\ntest suite and the Python suite. If the two engines ever diverge on a vector, a\nbuild fails — the same \"one implementation, no drift\" guarantee the Python SDK\nholds internally, extended across languages.\n\n## Develop\n\n```bash\nnpm ci\nnpm run typecheck\nnpm test          # vitest, includes the parity vectors\nnpm run build     # tsup → ESM + CJS + d.ts\n```\n","readmeFilename":"README.md"}