{"_id":"@aixin-protocol/sdk-js","name":"@aixin-protocol/sdk-js","dist-tags":{"latest":"1.0.0-rc.1"},"versions":{"1.0.0-rc.1":{"name":"@aixin-protocol/sdk-js","version":"1.0.0-rc.1","description":"TypeScript/JavaScript SDK for the AiXin Protocol (SIP + TOP): validate intents, verify receipts, sign locally.","type":"module","main":"./src/index.mjs","types":"./src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","import":"./src/index.mjs"}},"engines":{"node":">=18"},"scripts":{"test":"node --test test/*.test.mjs"},"dependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1"},"keywords":["aixin","sip","top","agent","erc-8004","receipts","governance"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/aixin-protocol/aixin-protocol.git","directory":"sdk-js"},"homepage":"https://spec.aixin.io","bugs":{"url":"https://github.com/aixin-protocol/aixin-protocol/issues"},"_id":"@aixin-protocol/sdk-js@1.0.0-rc.1","gitHead":"56f395cb864c35dbbb49ae4a09027b880280f3b8","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-8iJaHexyVXYT+IoPN4Vvt0YY2lOQNszr9dCSd1mk+N/Cpf/PvhOJqbG1SlPZD7mxQWk++8mR8r4KxHKTvbI3Rg==","shasum":"05f245e42775c51d70fe4e0fc775121b4dc0bffb","tarball":"https://registry.npmjs.org/@aixin-protocol/sdk-js/-/sdk-js-1.0.0-rc.1.tgz","fileCount":4,"unpackedSize":10536,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aixin-protocol%2fsdk-js@1.0.0-rc.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBsbfV6b1haVu3Y0nmKOxvN+uPv1v2vAbWPlnMMgKrgVAiATpO2NWgsuI/INQH5PQOPEUr0jGTGjtR0hFLo5SV20CA=="}]},"_npmUser":{"name":"chrisbianong","email":"chrisbian.ong@gmail.com"},"directories":{},"maintainers":[{"name":"chrisbianong","email":"chrisbian.ong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk-js_1.0.0-rc.1_1784947570707_0.9854644196385705"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-25T02:46:10.543Z","1.0.0-rc.1":"2026-07-25T02:46:10.850Z","modified":"2026-07-25T02:46:11.364Z"},"maintainers":[{"name":"chrisbianong","email":"chrisbian.ong@gmail.com"}],"description":"TypeScript/JavaScript SDK for the AiXin Protocol (SIP + TOP): validate intents, verify receipts, sign locally.","homepage":"https://spec.aixin.io","keywords":["aixin","sip","top","agent","erc-8004","receipts","governance"],"repository":{"type":"git","url":"git+https://github.com/aixin-protocol/aixin-protocol.git","directory":"sdk-js"},"bugs":{"url":"https://github.com/aixin-protocol/aixin-protocol/issues"},"license":"Apache-2.0","readme":"# @aixin-protocol/sdk-js\n\nTypeScript/JavaScript SDK for the [AiXin Protocol](https://spec.aixin.io) — validate SIP artifacts, verify signed receipts, and produce canonical JSON for signing.\n\nPairs with [`@aixin-protocol/cli`](https://www.npmjs.com/package/@aixin-protocol/cli). The CLI is for humans and CI; the SDK is for your app or agent runtime.\n\n## Install\n\n```bash\nnpm install @aixin-protocol/sdk-js\n```\n\nRequires Node.js ≥ 18. Pure ESM.\n\n## Quickstart\n\n### Validate an intent\n\n```js\nimport { validate, detectKind } from \"@aixin-protocol/sdk-js\";\n\nconst intent = {\n  $schema: \"https://spec.aixin.io/schemas/intent.schema.json\",\n  intent_id: \"01J8Y2K7ZQ8H3TVJ1E7R4M0Y9C\",\n  actor: \"twin:master:alice\",\n  action: \"transfer_funds\",\n  parameters: { amount: 250, currency: \"USD\", to: \"acct_9k2\" },\n  risk: \"high\",\n};\n\nconst kind = detectKind(intent); // \"intent\"\nconst { ok, errors } = validate(kind, intent);\nif (!ok) console.error(errors);\n```\n\n### Verify a signed receipt\n\n```js\nimport { verifyReceipt } from \"@aixin-protocol/sdk-js\";\n\nconst result = verifyReceipt(receipt, { publicKey: pemString });\nif (!result.ok) throw new Error(result.reason);\n```\n\n### Canonicalize for hashing / signing\n\n```js\nimport { canonicalize, hashCanonical } from \"@aixin-protocol/sdk-js\";\n\nconst bytes = canonicalize(payload);      // deterministic JSON string\nconst digest = hashCanonical(payload);    // sha256 hex\n```\n\n## API\n\n| Export             | Purpose                                                  |\n| ------------------ | -------------------------------------------------------- |\n| `validate`         | Validate a document against a bundled protocol schema.   |\n| `createValidator`  | Build a validator with your own schema set (versioning). |\n| `detectKind`       | Infer artifact kind from `$schema`.                      |\n| `verifyReceipt`    | Verify an ed25519-signed receipt envelope.               |\n| `canonicalize`     | RFC 8785–style deterministic JSON serialization.         |\n| `hashCanonical`    | sha256 hex of `canonicalize(value)`.                     |\n| `VERSION`          | SDK semver string.                                       |\n\nSupported artifact kinds: `intent`, `sip-report`, `outcome-contract`, `bounded-loop`, `manifest`.\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md","_rev":"1-494d14d690c0b658387b30e405e2411c"}