{"_id":"@aura-labs.ai/sdk-common","_rev":"2-6057c363cbafa10abe73ad1fdf58c084","name":"@aura-labs.ai/sdk-common","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@aura-labs.ai/sdk-common","version":"0.1.0","keywords":["aura","sdk","storage","keychain","ed25519","key-management"],"author":{"name":"AURA Labs"},"license":"BSL-1.1","_id":"@aura-labs.ai/sdk-common@0.1.0","maintainers":[{"name":"marcmassar","email":"marc@aura-labs.ai"}],"homepage":"https://github.com/aura-labs-ai/aura-labs#readme","bugs":{"url":"https://github.com/aura-labs-ai/aura-labs/issues"},"dist":{"shasum":"b5a67f1934bc753ca9902e750ae479eecb2e6a1f","tarball":"https://registry.npmjs.org/@aura-labs.ai/sdk-common/-/sdk-common-0.1.0.tgz","fileCount":10,"integrity":"sha512-BUTurtR323uslmmfZV95F+Gjw8mMnTVHpO3en3MES/gZhF0equ9XFW2eI4UKoIF3Q2JDetDyQPFDwFkEACHErw==","signatures":[{"sig":"MEYCIQCh33RXVIwd1Qtcg4GoS7/u1DDDR+2fMEkOkLzmBu0tmgIhANHB7lmq0LLe5A0hjGTfcplRj+qwz/Q5vcVB8wc1P4ir","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24107},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js"},"scripts":{"test":"node --test src/tests/*.test.js"},"_npmUser":{"name":"marcmassar","email":"marc@aura-labs.ai"},"repository":{"url":"git+https://github.com/aura-labs-ai/aura-labs.git","type":"git"},"_npmVersion":"11.11.0","description":"Shared utilities for AURA SDKs — storage adapters for Ed25519 key persistence","directories":{},"_nodeVersion":"25.8.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdk-common_0.1.0_1773247389610_0.9888396713217569","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2026-03-11T16:43:09.484Z","modified":"2026-07-02T19:28:27.275Z","0.1.0":"2026-03-11T16:43:09.758Z"},"bugs":{"url":"https://github.com/aura-labs-ai/aura-labs/issues"},"author":{"name":"AURA Labs"},"license":"BSL-1.1","homepage":"https://github.com/aura-labs-ai/aura-labs#readme","keywords":["aura","sdk","storage","keychain","ed25519","key-management"],"repository":{"url":"git+https://github.com/aura-labs-ai/aura-labs.git","type":"git"},"description":"Shared utilities for AURA SDKs — storage adapters for Ed25519 key persistence","maintainers":[{"name":"marcmassar","email":"marc@aura-labs.ai"}],"readme":"# @aura-labs.ai/sdk-common\n\nShared utilities for AURA SDKs — storage adapters for Ed25519 key persistence.\n\n## Storage Adapters\n\nAll adapters implement the same async interface:\n\n```javascript\ninterface StorageAdapter {\n  get(key: string): Promise<string | null>;\n  set(key: string, value: string): Promise<void>;\n  remove(key: string): Promise<void>;\n}\n```\n\n### MemoryStorage\n\nIn-memory Map. Keys lost on process exit. Use for testing and short-lived processes.\n\n```javascript\nimport { MemoryStorage } from '@aura-labs.ai/sdk-common';\nconst storage = new MemoryStorage();\n```\n\n### FileStorage\n\nPersists to a JSON file on disk. Default path: `~/.aura/keys.json` (configurable via `AURA_KEY_PATH` env var). File permissions: `0600` (owner read/write only). Directory permissions: `0700`.\n\n```javascript\nimport { FileStorage } from '@aura-labs.ai/sdk-common';\nconst storage = new FileStorage();           // ~/.aura/keys.json\nconst storage = new FileStorage('/custom/path/keys.json');\n```\n\n### KeychainStorage\n\nmacOS Keychain via the `security` CLI. Keys are encrypted at rest by the OS — hardware-backed on Apple Silicon via the Secure Enclave. Zero native Node.js dependencies.\n\nmacOS only — constructor throws on other platforms.\n\n```javascript\nimport { KeychainStorage } from '@aura-labs.ai/sdk-common';\nconst storage = new KeychainStorage();                                    // service: com.aura-labs.agent\nconst storage = new KeychainStorage({ serviceName: 'com.myapp.agent' }); // custom service\n```\n\n### createStorage() Factory\n\nAuto-detects the best adapter for the current platform:\n- **macOS** → `KeychainStorage` (hardware-backed encryption)\n- **Linux / Windows** → `FileStorage` (0600 permissions)\n\n```javascript\nimport { createStorage } from '@aura-labs.ai/sdk-common';\n\nconst storage = createStorage();                    // Auto-detect\nconst storage = createStorage({ type: 'memory' });  // Force MemoryStorage\nconst storage = createStorage({ type: 'file' });    // Force FileStorage\nconst storage = createStorage({ type: 'keychain' }); // Force KeychainStorage (macOS only)\n```\n\n## Usage with Scout SDK\n\n```javascript\nimport { createScout, createStorage } from '@aura-labs.ai/scout';\n\nconst scout = createScout({\n  storage: createStorage(),  // Keychain on macOS, File elsewhere\n});\nawait scout.ready();\n```\n\n## Usage with Beacon SDK\n\n```javascript\nimport { createBeacon, createStorage, KeyManager } from '@aura-labs.ai/beacon';\n\nconst keyManager = new KeyManager({ storage: createStorage() });\nconst beacon = createBeacon({ ... });\nbeacon.setKeyManager(keyManager, agentId);\n```\n\n## Security\n\n- **KeychainStorage**: Keys encrypted at rest by macOS. Login keychain unlocks with system login — no passphrase prompt for generic passwords created by the same user.\n- **FileStorage**: Keys stored as plaintext JSON with `0600` permissions (owner-only). Same model as SSH keys.\n- **MemoryStorage**: Keys exist only in process memory. Lost on exit.\n- **No shell injection**: `KeychainStorage` uses `execFile` (array args), never `exec` (shell string).\n\n## License\n\nBusiness Source License 1.1 — See [LICENSE](LICENSE) for details.\n","readmeFilename":"README.md"}