{"_id":"@agentidcard/sdk","_rev":"3-79e038601048aaeb94cb4ce0bbd00283","name":"@agentidcard/sdk","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@agentidcard/sdk","version":"1.0.0","keywords":["agent-identity","agentidcard","ail","credential","jwt","nft","erc721"],"author":{"name":"Agent ID Card","email":"contact@agentidcard.org"},"license":"MIT","_id":"@agentidcard/sdk@1.0.0","maintainers":[{"name":"22b","email":"sinmb82@gmail.com"}],"homepage":"https://agentidcard.org","bugs":{"url":"https://github.com/sinmb79/Agent-Identity-Layer/issues"},"dist":{"shasum":"a179cbff2b352a1b8571dd302425b499e72f2a6a","tarball":"https://registry.npmjs.org/@agentidcard/sdk/-/sdk-1.0.0.tgz","fileCount":7,"integrity":"sha512-CrlDmJ8QR72uZJ9aT9XxSzLLv8R0W3P0Fwn+R8Aqb0eihUyWXlD82nmc94w3FJ3X5GHPUIKbMc/rPIzLm79BdQ==","signatures":[{"sig":"MEUCIQDtD46a6QSBnUjOy1O3AITei/LJXKE6JJzz1qt1Mex8ggIgRW8Pr3AfL2ZQVyuqqiVu0NoBlnBa9Q/RFHJuHzH0OIQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23118},"main":"./index.mjs","type":"module","types":"./index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./index.mjs"}},"gitHead":"b92b13ca1862a1ec51aeb503101b833b1c6dff44","_npmUser":{"name":"22b","email":"sinmb82@gmail.com"},"repository":{"url":"git+https://github.com/sinmb79/Agent-Identity-Layer.git","type":"git","directory":"sdk/js"},"_npmVersion":"11.9.0","description":"Official JavaScript SDK for Agent ID Card - AI agent identity credentials","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jose":"^5.2.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.0_1774050553582_0.9799650363832537","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@agentidcard/sdk","version":"1.1.0","keywords":["agent-identity","agentidcard","ail","credential","jwt","nft","erc721"],"author":{"name":"Agent ID Card","email":"contact@agentidcard.org"},"license":"MIT","_id":"@agentidcard/sdk@1.1.0","maintainers":[{"name":"22b","email":"sinmb82@gmail.com"}],"homepage":"https://agentidcard.org","bugs":{"url":"https://github.com/sinmb79/Agent-Identity-Layer/issues"},"dist":{"shasum":"5add8557ca601e52044efa2668b8559532299faa","tarball":"https://registry.npmjs.org/@agentidcard/sdk/-/sdk-1.1.0.tgz","fileCount":7,"integrity":"sha512-cx9xHQBe2Hj2dl2flZiPGzTLT65yI3j37tvuOKeGL85YvH5YhLuz8ve6P9pdaZHP6CQHoJLZj+I/x04AANeLNQ==","signatures":[{"sig":"MEQCIBNA4QYzj8aZxscmnjNDlGfg9lF++kRg9PpDxIXOKXA0AiAwej26uYLu2yQQgFOuOX5F4KIeP9/9q/W5hraqp7J0yg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25185},"main":"./index.mjs","type":"module","types":"./index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./index.mjs"}},"gitHead":"c1180e87976726df89d4b7b22bcc057a3e17c994","_npmUser":{"name":"22b","email":"sinmb82@gmail.com"},"repository":{"url":"git+https://github.com/sinmb79/Agent-Identity-Layer.git","type":"git","directory":"sdk/js"},"_npmVersion":"11.9.0","description":"Official JavaScript SDK for Agent ID Card - AI agent identity credentials","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jose":"^5.2.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdk_1.1.0_1774081599054_0.49412172080708805","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@agentidcard/sdk","version":"1.2.0","description":"Official JavaScript SDK for Agent ID Card - AI agent identity credentials","type":"module","main":"./index.mjs","types":"./index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.mjs"}},"engines":{"node":">=18.0.0"},"keywords":["agent-identity","agentidcard","ail","credential","jwt","nft","erc721"],"license":"MIT","author":{"name":"Agent ID Card","email":"contact@agentidcard.org"},"homepage":"https://agentidcard.org","repository":{"type":"git","url":"git+https://github.com/sinmb79/Agent-Identity-Layer.git","directory":"sdk/js"},"publishConfig":{"access":"public"},"dependencies":{"jose":"^5.2.3"},"gitHead":"69b8111926d8766d48f03567e47a50fd24e1848d","_id":"@agentidcard/sdk@1.2.0","bugs":{"url":"https://github.com/sinmb79/Agent-Identity-Layer/issues"},"_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-q56dLHn0HhMJ96b2/YmH1EatzMFxpEvc6+93vZDdqC1PHcnB89yOLwDsn3kCp2wT75XnlP5V7iurC+gV57EFPw==","shasum":"6e9dcbff7a9cc5cf7e66a38e062e2faa6913dc97","tarball":"https://registry.npmjs.org/@agentidcard/sdk/-/sdk-1.2.0.tgz","fileCount":7,"unpackedSize":25185,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDGnUaYQqglNIeEt+PBLIP6XbCncwBB5wbw4c7q3ky6fAiAyVJShYgEf5u+pP3DJOGmCLXsNqayqH+le+Wg9pPunjA=="}]},"_npmUser":{"name":"22b","email":"sinmb82@gmail.com"},"directories":{},"maintainers":[{"name":"22b","email":"sinmb82@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_1.2.0_1774138288481_0.4850897149990143"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-20T23:49:13.518Z","modified":"2026-03-22T00:11:28.748Z","1.0.0":"2026-03-20T23:49:13.770Z","1.1.0":"2026-03-21T08:26:39.185Z","1.2.0":"2026-03-22T00:11:28.621Z"},"bugs":{"url":"https://github.com/sinmb79/Agent-Identity-Layer/issues"},"author":{"name":"Agent ID Card","email":"contact@agentidcard.org"},"license":"MIT","homepage":"https://agentidcard.org","keywords":["agent-identity","agentidcard","ail","credential","jwt","nft","erc721"],"repository":{"type":"git","url":"git+https://github.com/sinmb79/Agent-Identity-Layer.git","directory":"sdk/js"},"description":"Official JavaScript SDK for Agent ID Card - AI agent identity credentials","maintainers":[{"name":"22b","email":"sinmb82@gmail.com"}],"readme":"# @agentidcard/sdk\r\n\r\nOfficial JavaScript SDK for Agent ID Card.\r\n\r\nWorks in Node.js 18+ and modern browsers (uses WebCrypto API).\r\n\r\n## Install\r\n\r\n```bash\r\nnpm install @agentidcard/sdk\r\n```\r\n\r\n## Quick start\r\n\r\n```js\r\nimport { AilClient, verifyOffline } from \"@agentidcard/sdk\";\r\n\r\nconst client = new AilClient({ serverUrl: \"https://api.agentidcard.org\" });\r\n\r\n// 1. Register owner\r\nconst owner = await client.registerOwner({ email: \"you@example.com\", org: \"your_org\" });\r\n\r\n// 2. Verify email with the OTP sent to the owner's inbox\r\nawait client.verifyEmail({ owner_key_id: owner.owner_key_id, otp: \"123456\" });\r\n\r\n// 3. Register agent (SDK handles signing automatically)\r\nconst agent = await client.registerAgent({\r\n  owner_key_id: owner.owner_key_id,\r\n  private_key_jwk: owner.private_key_jwk,\r\n  payload: {\r\n    display_name: \"MyAgent\",\r\n    role: \"assistant\",\r\n    scope: {\r\n      network: \"none\",\r\n      secrets: \"none\",\r\n      write_access: false,\r\n      approval_policy: {\r\n        irreversible_actions: \"human_required\",\r\n        external_posting: \"human_required\",\r\n        destructive_file_ops: \"human_required\",\r\n      },\r\n    },\r\n  },\r\n});\r\n\r\nconsole.log(agent.ail_id); // AIL-2026-00001\r\n\r\n// 4. Verify credential (online)\r\nconst result = await client.verify(agent.credential.token);\r\nconsole.log(result.valid, result.display_name);\r\n\r\n// 5. Verify offline (no server call)\r\nconst keys = await client.getPublicKeys();\r\nconst offline = await verifyOffline(agent.credential.token, keys.keys[0]);\r\n```\r\n\r\n## Session-based registration\r\n\r\n```js\r\nconst login = await client.loginOwner({ email: \"you@example.com\" });\r\n\r\nconst session = await client.verifyLogin({\r\n  owner_key_id: login.owner_key_id,\r\n  otp: \"123456\",\r\n});\r\n\r\nconst agent = await client.registerAgentWithSession({\r\n  session_token: session.session_token,\r\n  payload: {\r\n    display_name: \"OpsAgent\",\r\n    role: \"automation\",\r\n    provider: \"openai\",\r\n    model: \"gpt-5.4\",\r\n    scope: {\r\n      network: \"restricted\",\r\n      secrets: \"none\",\r\n      write_access: false,\r\n      approval_policy: {\r\n        irreversible_actions: \"human_required\",\r\n        external_posting: \"human_required\",\r\n        destructive_file_ops: \"human_required\",\r\n      },\r\n    },\r\n  },\r\n});\r\n```\r\n\r\n## Build a v1 envelope\r\n\r\n```js\r\nimport { buildEnvelope } from \"@agentidcard/sdk\";\r\n\r\nconst envelope = buildEnvelope({\r\n  ail_id: agent.ail_id,\r\n  credential: agent.credential,\r\n  signal_glyph: agent.signal_glyph,\r\n  behavior_fingerprint: agent.behavior_fingerprint,\r\n  agent: {\r\n    id: \"agent_myagent_01\",\r\n    provider: \"anthropic\",\r\n    model: \"claude-sonnet-4-6\",\r\n    runtime: \"claude_code\",\r\n  },\r\n  owner: {\r\n    key_id: owner.owner_key_id,\r\n    org: \"your_org\",\r\n    email_hash: \"sha256:...\",\r\n  },\r\n  scope: agent_scope,\r\n  delegation: { mode: \"direct\", chain_depth: 0 },\r\n  runtime: {\r\n    session_id: \"sess_001\",\r\n    run_id: \"run_001\",\r\n    surface: \"cli\",\r\n    host: \"localhost\",\r\n  },\r\n});\r\n```\r\n\r\n## Revoke an agent\r\n\r\n```js\r\nawait client.revokeAgent({\r\n  ail_id: agent.ail_id,\r\n  owner_key_id: owner.owner_key_id,\r\n  private_key_jwk: owner.private_key_jwk,\r\n});\r\n```\r\n\r\n## API\r\n\r\n### `new AilClient({ serverUrl })`\r\n\r\n### `client.registerOwner({ email, org? })`\r\n### `client.verifyEmail({ owner_key_id, otp })`\r\n### `client.loginOwner({ email })`\r\n### `client.verifyLogin({ owner_key_id, otp })`\r\n### `client.registerAgent({ owner_key_id, private_key_jwk, payload })`\r\n### `client.registerAgentWithSession({ session_token, payload })`\r\n### `client.revokeAgent({ ail_id, owner_key_id, private_key_jwk })`\r\n### `client.verify(token)` - online verification\r\n### `client.verifyOffline(token)` - offline (fetches JWKS once, caches)\r\n### `client.getPublicKeys()` - returns JWKS\r\n\r\n### `verifyOffline(token, publicKeyJwk)` - standalone offline verification\r\n\r\n### `buildEnvelope(options)` - assemble a v1 envelope\r\n\r\n### `generateOwnerKeypair()` - generate EC P-256 keypair (returns `{ public_key_jwk, private_key_jwk }`)\r\n### `signPayload(payload, private_key_jwk)` - sign a payload, returns base64url\r\n### `canonicalJson(obj)` - canonical JSON serialization\r\n","readmeFilename":"README.md"}