{"_id":"@at1c/sdk","_rev":"4-b145410eee469b4919bb3db55605b3f9","name":"@at1c/sdk","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@at1c/sdk","version":"1.0.0","keywords":["ai","ai-agents","compliance","eu-ai-act","consent","cryptographic-receipt","audit","accountability","mcp","sdk"],"author":{"name":"AT1C Protocol"},"license":"MIT","_id":"@at1c/sdk@1.0.0","maintainers":[{"name":"alwayshuman","email":"admin@at1c.com"}],"homepage":"https://github.com/alwayshuman/at1c-protocol-official#readme","bugs":{"url":"https://github.com/alwayshuman/at1c-protocol-official/issues"},"dist":{"shasum":"272f6fc88fda6e9d324ac63ec30b99d08df77ed2","tarball":"https://registry.npmjs.org/@at1c/sdk/-/sdk-1.0.0.tgz","fileCount":22,"integrity":"sha512-WJVATgMHiLsoeKMQODPYzQnOkJ5ouVC2kPkIlTmOMPJVQNlRSe1meqb/GotlaeeiUsbJJMBNELCU1rii+LFRAQ==","signatures":[{"sig":"MEQCICmhJ1RjQMX7XnzYhmE1c3zw8YU39RYNNYHzQoG5AocRAiB57SFZxAxFEa2O3Dwt8NOsQsoFLgQ5q8iiLlVblhLaOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40574},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e39d9afc2267e65985898ccab6faf1d9ace9c56f","scripts":{"test":"vitest run","build":"tsc --project tsconfig.sdk.json","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"alwayshuman","email":"admin@at1c.com"},"repository":{"url":"git+https://github.com/alwayshuman/at1c-protocol-official.git","type":"git"},"_npmVersion":"10.9.7","description":"AT1C Protocol SDK — cryptographic consent and compliance receipts for AI agents. Built for the EU AI Act.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@noble/hashes":"^1.4.0","@noble/ed25519":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.0_1781438347384_0.47858184221625244","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@at1c/sdk","version":"1.0.1","keywords":[],"author":"","license":"ISC","_id":"@at1c/sdk@1.0.1","maintainers":[{"name":"alwayshuman","email":"admin@at1c.com"}],"homepage":"https://github.com/at1c-protocol/at1c-protocol-official#readme","bugs":{"url":"https://github.com/at1c-protocol/at1c-protocol-official/issues"},"dist":{"shasum":"92fef7778a352a04611d5cc593c4f7e16d392fdb","tarball":"https://registry.npmjs.org/@at1c/sdk/-/sdk-1.0.1.tgz","fileCount":81,"integrity":"sha512-VBC+QFHd48H4wMZwrdj51zpPM1OTwCTPvBa/LWqXxydTlL9vA9FLhczLBC+i5DOkZe/X2Mv+7LswzlQzpYuscQ==","signatures":[{"sig":"MEUCIChBEBb7gnfF8lxtiYtXqVbMdfTl+OtbjrybeI0Ev4BWAiEAvngRnb1uRSXzaZ3o6u3JTXT6xefK3UTYmttG/A/RoXc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":316423},"main":"index.js","gitHead":"2fd46ef8ab825750279580d09d22e38d412bbb4f","scripts":{"demo":"npx ts-node --compiler-options '{\"module\":\"CommonJS\"}' examples/compliance-demo/index.ts","test":"vitest run","build":"npx tsc --noEmit","start":"node server.js","verify":"node verify.js","demo:ai":"npx ts-node --compiler-options '{\"module\":\"CommonJS\"}' examples/ai-agent-demo/index.ts","receipts":"npx ts-node --compiler-options '{\"module\":\"CommonJS\"}' examples/receipts-viewer.ts","demo:login":"npx ts-node examples/login-demo/index.ts"},"_npmUser":{"name":"alwayshuman","email":"admin@at1c.com"},"repository":{"url":"git+https://github.com/at1c-protocol/at1c-protocol-official.git","type":"git"},"_npmVersion":"10.9.8","description":"**AT1C Protocol**","directories":{"doc":"docs","example":"examples"},"_nodeVersion":"22.23.1","dependencies":{"algosdk":"^3.6.0","express":"^5.2.1","@noble/hashes":"^2.2.0","@x402-avm/avm":"^2.6.1","@noble/ed25519":"^3.1.0","@x402-avm/core":"^2.6.1","@x402-avm/express":"^2.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","ts-node":"^10.9.2","typescript":"^5.4.5","@types/node":"^25.7.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.1_1787137173001_0.9067403085859023","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@at1c/sdk","version":"1.0.2","keywords":[],"author":"","license":"ISC","_id":"@at1c/sdk@1.0.2","maintainers":[{"name":"alwayshuman","email":"admin@at1c.com"}],"homepage":"https://github.com/at1c-protocol/at1c-protocol-official#readme","bugs":{"url":"https://github.com/at1c-protocol/at1c-protocol-official/issues"},"dist":{"shasum":"5d0e6974f12140e22b43cbcc8e6cedf3994d8f5e","tarball":"https://registry.npmjs.org/@at1c/sdk/-/sdk-1.0.2.tgz","fileCount":81,"integrity":"sha512-xf4aJdlXofEyMAcmHmI+EK5IlIwO6jv+XlNfPTIagcWBod0Og57SOpDtJY0NhVQzEvsAYTKJNxkcdn/5ZLt11Q==","signatures":[{"sig":"MEQCIEqRVvhiFSXl0M5vk3TNPswan3j84DwWgVeZj96SO9e8AiAKAhWTtgQhcKBzjaaZ34XyUiMnJcz2up4NJTMazcVUIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDrb0wBmJ1OlgfgNDJPCWpA9s05xN9jTDIvW3bp5A92BwIhAJPA3UmfcKWzmrQ0RQLP/M4eb6WpgOzboSokrP9rRfVJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":317232},"main":"index.js","gitHead":"c9d0608791a8cd01af39ece624bdf460f98132ca","scripts":{"demo":"npx ts-node --compiler-options '{\"module\":\"CommonJS\"}' examples/compliance-demo/index.ts","test":"vitest run","build":"npx tsc --noEmit","start":"node server.js","verify":"node verify.js","demo:ai":"npx ts-node --compiler-options '{\"module\":\"CommonJS\"}' examples/ai-agent-demo/index.ts","receipts":"npx ts-node --compiler-options '{\"module\":\"CommonJS\"}' examples/receipts-viewer.ts","demo:login":"npx ts-node examples/login-demo/index.ts"},"_npmUser":{"name":"alwayshuman","email":"admin@at1c.com"},"repository":{"url":"git+https://github.com/at1c-protocol/at1c-protocol-official.git","type":"git"},"_npmVersion":"10.9.8","description":"**AT1C Protocol**","directories":{"doc":"docs","example":"examples"},"_nodeVersion":"22.23.1","dependencies":{"algosdk":"^3.6.0","express":"^5.2.1","@noble/hashes":"^2.2.0","@x402-avm/avm":"^2.6.1","@x402-avm/core":"^2.6.1","@x402-avm/express":"^2.6.1","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","ts-node":"^10.9.2","typescript":"^5.4.5","@types/node":"^25.7.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.2_1788335994395_0.4168989841398689","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"_id":"@at1c/sdk@1.0.3","dist":{"shasum":"da1d7d9e0e56d63c1fd2154711a354b2e9744102","tarball":"https://registry.npmjs.org/@at1c/sdk/-/sdk-1.0.3.tgz","fileCount":22,"integrity":"sha512-rTTMjtJoSQrsBEB5I9EO2Q5/bn+XYLcagoAcSDAcCZOOnDEaPExxERWTJO169BMwpViaAm3KM4EqTcpEYwf4nQ==","signatures":[{"sig":"MEYCIQCvdczfPz2Qj3INoydlEIFg/mG1y60WyB3bjObAg7AFdgIhAKIyalemtMpIEJKVwn5+YdJFbZzr8gNrLn6hQ0kmmvE8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICvVxyKvhfCnPrK23HylVGYpgIIsHErxcLUXNznW9JV6AiEAmrbMb3TqhRzBsMX6hfw0j1oY9Wcvw3VGpGgJb6EViqY="}],"unpackedSize":42100},"main":"dist/index.js","name":"@at1c/sdk","types":"dist/index.d.ts","author":{"name":"AT1C Protocol"},"engines":{"node":">=18.0.0"},"gitHead":"c9d0608791a8cd01af39ece624bdf460f98132ca","license":"MIT","scripts":{"test":"vitest run","build":"tsc --project tsconfig.sdk.json","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"version":"1.0.3","_npmUser":{"name":"alwayshuman","email":"admin@at1c.com"},"_npmVersion":"10.9.8","description":"AT1C Protocol SDK — cryptographic consent and compliance receipts for AI agents.","directories":{},"maintainers":[{"name":"alwayshuman","email":"admin@at1c.com"}],"_nodeVersion":"22.23.1","dependencies":{"@noble/hashes":"^1.4.0","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.11","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_1.0.3_1788528190052_0.798678607206547"}}},"time":{"created":"2026-06-14T11:59:07.235Z","modified":"2026-09-04T13:23:10.312Z","1.0.0":"2026-06-14T11:59:07.522Z","1.0.1":"2026-08-19T10:59:33.162Z","1.0.2":"2026-09-02T07:59:54.502Z","1.0.3":"2026-09-04T13:23:10.139Z"},"license":"MIT","description":"AT1C Protocol SDK — cryptographic consent and compliance receipts for AI agents.","maintainers":[{"name":"alwayshuman","email":"admin@at1c.com"}],"readme":"# @at1c/sdk\n\n**AI Transparency & Compliance Protocol**\n\n> No action without consent. No consent without proof.\n\nAT1C is a lightweight SDK that wraps any AI agent action with cryptographic human approval. Every action produces a signed receipt. Every receipt can be independently verified. Built for the **EU AI Act** (enforcement: August 2026).\n\n[![npm version](https://img.shields.io/npm/v/@at1c/sdk)](https://www.npmjs.com/package/@at1c/sdk)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\n---\n\n## Why AT1C?\n\nModern AI agents act silently. They execute on your behalf without oversight, and there is no proof any of it was authorised. AT1C fixes that with one rule:\n\n**No action is valid unless backed by verifiable human approval.**\n\nEvery action produces a signed receipt binding the user, agent, action, timestamp, and nonce. Any system can independently verify the receipt before execution.\n\n---\n\n## Install\n\n```bash\nnpm install @at1c/sdk\n```\n\n---\n\n## Quick Start\n\n```typescript\nimport { AT1C } from '@at1c/sdk'\n\nconst at1c = new AT1C()\n\nconst result = await at1c.enforce(\n  {\n    userId:  'user_123',\n    agentId: 'agent_payments',\n    action:  'send_payment',\n  },\n  async () => {\n    // Your AI agent action goes here\n    return sendPayment({ amount: 500, to: 'john_smith' })\n  }\n)\n\nif (result.status === 'approved') {\n  console.log('Action completed. Receipt ID:', result.receipt.receiptId)\n} else {\n  console.log('Action blocked:', result.reason)\n}\n```\n\nThat's it. The action only runs if a human explicitly approves it. The receipt proves it happened.\n\n---\n\n## Core Concepts\n\n### The Enforce Pattern\n\n`at1c.enforce()` wraps any action with the full AT1C flow:\n\n```\nrequest → policy check → human approval → sign receipt → verify → execute\n```\n\n```typescript\nconst result = await at1c.enforce(config, fn)\n\n// result.status  — 'approved' | 'denied'\n// result.receipt — the signed cryptographic receipt\n// result.reason  — why it was denied (if applicable)\n// result.result  — the return value of fn() (if approved)\n```\n\n### Receipts\n\nEvery approved action produces a `SignedReceipt`:\n\n```typescript\n{\n  receiptId:  'uuid',           // unique receipt identifier\n  nonce:      'uuid',           // single-use replay protection\n  version:    '1.0',\n  status:     'approved',\n  userId:     'user_123',\n  agentId:    'agent_payments',\n  action:     'send_payment',\n  timestamp:  '2026-06-12T09:00:00.000Z',\n  expiresAt:  '2026-06-12T09:05:00.000Z',\n  signature:  'ed25519 hex signature',\n  publicKey:  'ed25519 public key hex',\n}\n```\n\n### Verification\n\nAny system can independently verify a receipt:\n\n```typescript\nimport { verifyReceipt } from '@at1c/sdk'\n\nconst result = verifyReceipt(receipt)\n\nif (result.valid) {\n  // Safe to proceed — human approval cryptographically proven\n} else {\n  console.log('Invalid receipt:', result.reason)\n  // reason: 'expired' | 'invalid_signature' | 'not_approved' |\n  //         'replay_detected' | 'malformed_receipt'\n}\n```\n\n### Policy Engine\n\nControl which actions require approval, are always allowed, or always blocked:\n\n```json\n// policies.json\n[\n  { \"action\": \"delete_database\", \"severity\": \"critical\",  \"decision\": \"deny\" },\n  { \"action\": \"send_payment\",    \"severity\": \"high\",      \"decision\": \"require_approval\" },\n  { \"action\": \"read_data\",       \"severity\": \"low\",       \"decision\": \"allow\" }\n]\n```\n\n---\n\n## Advanced Usage\n\n### Build and Sign Receipts Manually\n\n```typescript\nimport { buildReceipt, verifyReceipt, generateKeyPair } from '@at1c/sdk'\n\nconst { secretKey } = generateKeyPair()\n\nconst receipt = buildReceipt(\n  {\n    userId:     'user_123',\n    agentId:    'agent_payments',\n    action:     'send_payment',\n    status:     'approved',\n    ttlSeconds: 300,   // receipt valid for 5 minutes\n  },\n  secretKey\n)\n\nconst check = verifyReceipt(receipt)\nconsole.log(check.valid) // true\n```\n\n### Persist Keys Across Sessions\n\n```typescript\nimport { loadOrCreateKeyPair } from '@at1c/sdk'\n\n// Loads existing keys or generates and saves new ones\nconst keyPair = loadOrCreateKeyPair('.at1c_keys.json')\n```\n\n### Access the Approval Log\n\n```typescript\nconst at1c = new AT1C()\n\n// ... run some actions ...\n\nconst log = at1c.getApprovalLog()\nconsole.log(`${log.length} actions recorded this session`)\n```\n\n---\n\n## Security Properties\n\n| Property | How AT1C provides it |\n|---|---|\n| **No implicit authority** | Nothing executes without explicit human approval |\n| **Context binding** | Approval is valid only for its exact action, agent, and user |\n| **Replay protection** | Every receipt is single-use via nonce |\n| **Tamper detection** | Ed25519 signature covers all receipt fields |\n| **Audit trail** | Every action logged with cryptographic proof |\n| **Expiry** | Receipts expire after a configurable TTL |\n\n---\n\n## EU AI Act Compliance\n\nAT1C receipts satisfy the core transparency and accountability requirements of the EU AI Act (Regulation 2024/1689):\n\n- **Article 13** — Transparency obligations for AI systems\n- **Article 14** — Human oversight of high-risk AI actions\n- **Article 17** — Quality management and audit records\n\nGenerate a human-readable compliance report:\n\n```bash\nnpm run demo -- --html   # self-contained HTML receipt\nnpm run demo -- --pdf    # PDF for formal audit submission\n```\n\n---\n\n## API Reference\n\n### `new AT1C()`\nCreates an AT1C instance. Generates a session keypair and loads `policies.json` if present.\n\n### `at1c.enforce(config, fn)`\nWraps an action with the full AT1C flow. Returns `{ status, receipt, reason?, result? }`.\n\n### `at1c.checkReceipt(receipt)`\nVerifies a receipt and checks for replay. Returns `{ valid, reason? }`.\n\n### `at1c.getApprovalLog()`\nReturns all receipts issued this session.\n\n### `at1c.getPublicKey()`\nReturns the session public key as hex.\n\n### `buildReceipt(config, secretKey)`\nBuilds and signs a receipt. Returns `SignedReceipt`.\n\n### `verifyReceipt(receipt)`\nVerifies signature, expiry, status, and replay. Returns `VerifyResult`.\n\n### `generateKeyPair()`\nGenerates a new Ed25519 keypair. Returns `KeyPair`.\n\n### `loadOrCreateKeyPair(filePath)`\nLoads keys from disk or generates and saves new ones.\n\n---\n\n## Run the Demo\n\n```bash\ngit clone https://github.com/at1c-protocol/at1c-protocol-official.git\ncd at1c-protocol-official\nnpm install\nnpm run demo          # terminal output\nnpm run demo -- --html  # HTML compliance receipt\nnpm run demo -- --pdf   # PDF compliance receipt\n```\n\n---\n\n## Licence\n\nMIT — AT1C Protocol\n","readmeFilename":"README.md","author":{"name":"AT1C Protocol"}}