{"_id":"@a2p/sdk","name":"@a2p/sdk","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@a2p/sdk","version":"0.1.0","description":"TypeScript SDK for the a2p (Agent 2 Profile) protocol","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js","types":"./dist/index.d.ts"},"./types":{"import":"./dist/types/index.mjs","require":"./dist/types/index.js","types":"./dist/types/index.d.ts"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts","dev":"tsup src/index.ts --format cjs,esm --dts --watch","test":"vitest","test:coverage":"vitest --coverage","lint":"eslint src --ext .ts","typecheck":"tsc --noEmit","clean":"rm -rf dist"},"keywords":["a2p","ai","agent","profile","memory","protocol","consent","did","decentralized"],"author":{"name":"a2p Protocol Team"},"license":"EUPL-1.2","repository":{"type":"git","url":"git+https://github.com/alpibrusl/a2p-protocol.git","directory":"packages/sdk/typescript"},"homepage":"https://alpibrusl.github.io/a2p-protocol","bugs":{"url":"https://github.com/alpibrusl/a2p-protocol/issues"},"engines":{"node":">=18.0.0"},"dependencies":{"@noble/ed25519":"^2.0.0","@noble/hashes":"^1.3.3","multiformats":"^13.0.0","zod":"^3.22.4"},"devDependencies":{"@types/node":"^20.10.0","@vitest/coverage-v8":"^1.1.0","tsup":"^8.0.1","typescript":"^5.3.3","vitest":"^1.1.0"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_id":"@a2p/sdk@0.1.0","gitHead":"8e88b4d5653a2b80d4f29397f297dcc27004db8a","_nodeVersion":"24.9.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-9z3bUHnoTSfe2wTUi3ol8Io9mZDKQ/I/tMyvzxf+8e7hmiY+1Q5GYDc8o3oY17bbR4TVquf3LjzLDDIaGM00ig==","shasum":"87102752e705f5e7a0fb73e2ae90f6b18cff49a7","tarball":"https://registry.npmjs.org/@a2p/sdk/-/sdk-0.1.0.tgz","fileCount":6,"unpackedSize":161826,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDUAqGDuAz/ft4tysNRwwO8RxEbRoT55jWkD3hzpkrEZQIgX2WXOM1/zoeBTH5WCilY18zUsYqhTxPsdEYDKyaoH3Y="}]},"_npmUser":{"name":"asastre","email":"alfonso@alpibru.com"},"directories":{},"maintainers":[{"name":"asastre","email":"alfonso@alpibru.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.1.0_1769716842760_0.6317426960654013"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-29T20:00:42.626Z","0.1.0":"2026-01-29T20:00:42.973Z","modified":"2026-01-29T20:00:43.282Z"},"maintainers":[{"name":"asastre","email":"alfonso@alpibru.com"}],"description":"TypeScript SDK for the a2p (Agent 2 Profile) protocol","homepage":"https://alpibrusl.github.io/a2p-protocol","keywords":["a2p","ai","agent","profile","memory","protocol","consent","did","decentralized"],"repository":{"type":"git","url":"git+https://github.com/alpibrusl/a2p-protocol.git","directory":"packages/sdk/typescript"},"author":{"name":"a2p Protocol Team"},"bugs":{"url":"https://github.com/alpibrusl/a2p-protocol/issues"},"license":"EUPL-1.2","readme":"# @a2p/sdk\n\nTypeScript SDK for the a2p (Agent 2 Profile) protocol.\n\n## Installation\n\n```bash\nnpm install @a2p/sdk\n# or\npnpm add @a2p/sdk\n# or\nyarn add @a2p/sdk\n```\n\n## Quick Start\n\n### For Agent Developers\n\n```typescript\nimport { A2PClient, createAgentClient } from '@a2p/sdk';\n\n// Create a client for your agent\nconst client = createAgentClient({\n  agentDid: 'did:a2p:agent:my-assistant',\n  privateKey: process.env.A2P_PRIVATE_KEY,\n});\n\n// Request access to a user's profile\nconst profile = await client.getProfile({\n  userDid: 'did:a2p:user:alice',\n  scopes: ['a2p:preferences', 'a2p:interests'],\n});\n\nconsole.log(profile.common?.preferences?.communication?.style);\n\n// Propose a new memory\nawait client.proposeMemory({\n  userDid: 'did:a2p:user:alice',\n  content: 'Prefers TypeScript over JavaScript',\n  category: 'a2p:professional.preferences',\n  confidence: 0.85,\n  context: 'User mentioned this during our conversation',\n});\n```\n\n### For Users\n\n```typescript\nimport { A2PUserClient, createUserClient } from '@a2p/sdk';\n\n// Create a user client\nconst user = createUserClient();\n\n// Create a new profile\nconst profile = await user.createProfile({\n  displayName: 'Alice',\n});\n\n// Add a memory manually\nawait user.addMemory({\n  content: 'I work as a software engineer at Acme Corp',\n  category: 'a2p:professional',\n  sensitivity: 'standard',\n});\n\n// Review pending proposals\nconst proposals = user.getPendingProposals();\nfor (const proposal of proposals) {\n  console.log(`${proposal.proposedBy.agentName}: ${proposal.memory.content}`);\n  \n  // Approve or reject\n  await user.approveProposal(proposal.id);\n  // or: await user.rejectProposal(proposal.id, 'Not accurate');\n}\n\n// Export your profile\nconst json = user.exportProfile();\n```\n\n## Core Concepts\n\n### Profiles\n\nA profile contains:\n\n- **Identity**: DID, display name, pronouns\n- **Common**: Shared preferences across all contexts\n- **Memories**: Structured and episodic memories\n- **Sub-Profiles**: Context-specific variations (work, personal, etc.)\n- **Access Policies**: Who can access what\n\n### Scopes\n\nScopes control what data an agent can access:\n\n```typescript\nimport { STANDARD_SCOPES } from '@a2p/sdk';\n\n// Common scopes\nSTANDARD_SCOPES.PREFERENCES          // 'a2p:preferences'\nSTANDARD_SCOPES.INTERESTS            // 'a2p:interests'\nSTANDARD_SCOPES.PROFESSIONAL         // 'a2p:professional'\nSTANDARD_SCOPES.HEALTH               // 'a2p:health' (sensitive)\n```\n\n### Proposals\n\nAgents can propose memories, but users must approve:\n\n```typescript\n// Agent proposes\nawait client.proposeMemory({\n  userDid: 'did:a2p:user:alice',\n  content: 'Likes jazz music',\n  category: 'a2p:interests.music',\n  confidence: 0.75,\n});\n\n// User reviews\nconst proposals = user.getPendingProposals();\nawait user.approveProposal(proposals[0].id);\n```\n\n## API Reference\n\n### A2PClient (for agents)\n\n| Method | Description |\n|--------|-------------|\n| `getProfile(options)` | Get filtered user profile |\n| `proposeMemory(request)` | Propose a new memory |\n| `checkPermission(userDid, permission, scope?)` | Check if agent has permission |\n| `setAgentProfile(profile)` | Set agent profile for trust evaluation |\n\n### A2PUserClient (for users)\n\n| Method | Description |\n|--------|-------------|\n| `createProfile(options?)` | Create a new profile |\n| `loadProfile(did)` | Load existing profile |\n| `addMemory(memory)` | Add a memory manually |\n| `getPendingProposals()` | Get proposals awaiting review |\n| `approveProposal(id, options?)` | Approve a proposal |\n| `rejectProposal(id, reason?)` | Reject a proposal |\n| `exportProfile()` | Export to JSON |\n| `importProfile(json)` | Import from JSON |\n\n## License\n\nEUPL-1.2\n","readmeFilename":"README.md","_rev":"1-3c7f2c18ddc327f9414b923a4113d43d"}