{"_id":"@ay-2814/era-sdk","_rev":"4-4395f7cc88468976263a7b56922c6b97","name":"@ay-2814/era-sdk","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@ay-2814/era-sdk","version":"0.1.0","license":"UNLICENSED","_id":"@ay-2814/era-sdk@0.1.0","maintainers":[{"name":"ay-2814","email":"mailtoayushman@gmail.com"}],"dist":{"shasum":"4d868555cd4e3038a733c51e30779c97f38335a5","tarball":"https://registry.npmjs.org/@ay-2814/era-sdk/-/era-sdk-0.1.0.tgz","fileCount":6,"integrity":"sha512-LgzSl3jwCBwAluW9I934ULk3TzYhFpWKtrSCKr/6Q9XQbrH0DgU4p9jCDneExWaRkqBKotEjhfELI9O8ZIpx6Q==","signatures":[{"sig":"MEUCIQDMzqh+7CndLJ5C02zf6BgtTfWO2k0F2KF+ZXNj75i84AIgI4bY0r795Z9psil+d5sglx9U5R0ohKKcMP+qxRBlk0g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13379},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ai-sdk":{"types":"./dist/ai-sdk.d.ts","default":"./dist/ai-sdk.js"}},"gitHead":"70331a87ca42351544438ad6310f5ae669f6882d","scripts":{"test":"node --test \"test/*.test.mjs\"","build":"tsc -p tsconfig.build.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"ay-2814","email":"mailtoayushman@gmail.com"},"_npmVersion":"10.9.2","description":"Era cognitive context for any conversational AI agent","directories":{},"sideEffects":false,"_nodeVersion":"23.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^6.0.116","typescript":"^5.9.0"},"peerDependencies":{"ai":">=5"},"peerDependenciesMeta":{"ai":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/era-sdk_0.1.0_1782340235830_0.6546339850086687","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.1":{"name":"@ay-2814/era-sdk","version":"0.1.0-beta.1","license":"UNLICENSED","_id":"@ay-2814/era-sdk@0.1.0-beta.1","maintainers":[{"name":"ay-2814","email":"mailtoayushman@gmail.com"},{"name":"heethjain21","email":"heethjain21@gmail.com"}],"dist":{"shasum":"3f8ac4347d5215e91dc52826297b5efed78113e1","tarball":"https://registry.npmjs.org/@ay-2814/era-sdk/-/era-sdk-0.1.0-beta.1.tgz","fileCount":6,"integrity":"sha512-Og1KE29u85cUlv8uVBHtrKU4UgiwNhld+VlqcZTlXaIvXTFSw+5cXwByNxeViGAgLSBUf7erimSGWSUWUqBOyA==","signatures":[{"sig":"MEUCIQC9KGEJfwPb9JQxV7+gr8SNETsVCBlwsrN6TjOFaXxZHAIgVIntBeJ8o3RO6sDLcM6zRMLFTjZHNTTKw5Wix5vqWAI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15541},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ai-sdk":{"types":"./dist/ai-sdk.d.ts","default":"./dist/ai-sdk.js"}},"gitHead":"96b1c1cdca6b3f5c2be37d03d69cf9265f62ec4b","scripts":{"test":"node --test \"test/*.test.mjs\"","build":"tsc -p tsconfig.build.json","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"heethjain21","email":"heethjain21@gmail.com"},"_npmVersion":"9.2.0","description":"Era cognitive context for any conversational AI agent","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^6.0.116","typescript":"^5.9.0"},"peerDependencies":{"ai":">=5"},"peerDependenciesMeta":{"ai":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/era-sdk_0.1.0-beta.1_1784299317487_0.7903659268343215","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ay-2814/era-sdk","version":"0.1.1","description":"Era cognitive context for any conversational AI agent","type":"module","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ai-sdk":{"types":"./dist/ai-sdk.d.ts","default":"./dist/ai-sdk.js"}},"license":"UNLICENSED","engines":{"node":">=18"},"sideEffects":false,"publishConfig":{"access":"public"},"scripts":{"build":"tsc -p tsconfig.build.json","test":"node --test \"test/*.test.mjs\"","prepublishOnly":"npm run build && npm test"},"peerDependencies":{"ai":">=5"},"peerDependenciesMeta":{"ai":{"optional":true}},"devDependencies":{"ai":"^6.0.116","typescript":"^5.9.0"},"_id":"@ay-2814/era-sdk@0.1.1","gitHead":"eb3d07db8038eca30867eca43ef42adb82a8d4d4","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-fA8nQwYDmd6ZAz9DjmW+1HV6LqHnsaJm30hRwiaUWq6CqVI58VJgQzXgDvVwl+B6vT8DlBoX5gjZI36rkyf8UA==","shasum":"277a4edb2fdccbaade1780be15d630eefbd8e30e","tarball":"https://registry.npmjs.org/@ay-2814/era-sdk/-/era-sdk-0.1.1.tgz","fileCount":6,"unpackedSize":15431,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBhd0IU4eIg4pxA6ipWZ37B7BlZQty0ALC3cqV35L390AiBtoYoTr1aIsXUg2cTSNGe/YbVYxZWTGoG27yz2/wb0GQ=="}]},"_npmUser":{"name":"ay-2814","email":"mailtoayushman@gmail.com"},"directories":{},"maintainers":[{"name":"ay-2814","email":"mailtoayushman@gmail.com"},{"name":"heethjain21","email":"heethjain21@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/era-sdk_0.1.1_1785722406874_0.6832115864480564"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-24T22:30:35.678Z","modified":"2026-08-03T02:00:07.162Z","0.1.0":"2026-06-24T22:30:35.971Z","0.1.0-beta.1":"2026-07-17T14:41:57.617Z","0.1.1":"2026-08-03T02:00:07.020Z"},"license":"UNLICENSED","description":"Era cognitive context for any conversational AI agent","maintainers":[{"name":"ay-2814","email":"mailtoayushman@gmail.com"},{"name":"heethjain21","email":"heethjain21@gmail.com"}],"readme":"# @season/era-sdk\n\nDrop-in cognitive context for any conversational AI agent. Zero runtime\ndependencies (uses global `fetch`).\n\n```bash\nnpm install @season/era-sdk\n```\n\n## Quick start\n\n```ts\nimport { Era } from \"@season/era-sdk\";\n\nconst era = new Era({\n  apiKey: process.env.ERA_API_KEY!,\n  baseUrl: process.env.ERA_URL!,\n  partnerId: \"your_partner_id\",\n});\n\nconst block = await era.turnContext(messages, { visitorId, sessionId });\nsystemPrompt += \"\\n\\n\" + block;\n```\n\nEach turn requires the browser SDK's `visitorId`. If it is unavailable, the SDK\nfails open with `\"\"` and does not call Era. Your authenticated, case-sensitive\n`partnerEndUserId` is optional linking context:\n\n```ts\nawait era.turnContext(messages, {\n  visitorId,\n  partnerEndUserId,\n  email,         // optional trusted bridge assertion; sent unchanged\n  phone,         // optional; must already be E.164\n  sessionId,\n});\n```\n\nAbsent fields are omitted. The SDK does not normalize or hash identifiers.\n\nFor Vercel AI SDK auto-injection middleware, import `@season/era-sdk/ai-sdk`.\n\n## Modes & production behavior\n\n- `mode: \"async\"` (default) — stale-while-revalidate; instant response with the\n  previous turn's block. `mode: \"sync\"` waits for the current turn.\n- **Fail-open**: any error returns `\"\"` — your agent never breaks.\n- **Bounded retries** on transient failures (timeout/network/5xx); `4xx` is\n  terminal. Configure with `maxRetries` (default 1).\n- **Timeouts**: 2s async / 30s sync, override with `timeoutMs`.\n- **Logging**: pass a `logger` (`{ warn, info }`) to integrate with pino/winston,\n  or `debug: true` for verbose per-turn console output. Warnings only by default.\n\n## Options\n\n| Option | Default | Notes |\n|--------|---------|-------|\n| `visitorId` | — | Browser-issued `era_vid_<uuidv4>` continuity ID |\n| `partnerEndUserId` | — | Trusted, case-sensitive partner customer ID |\n| `email` / `phone` | — | Optional trusted bridge assertions |\n| `sessionId` | derived | Correlation ID; may be set per call |\n| `mode` | `\"async\"` | `\"async\"` \\| `\"sync\"` |\n| `brandVoice` | — | words the `[REC]` action |\n| `timeoutMs` | 2000 / 30000 | per request |\n| `maxRetries` | 1 | transient-only |\n| `logger` / `debug` | console / false | observability |\n\nThe same identity fields may be configured as constructor defaults and\noverridden per call. There is no `userId` or `\"anonymous\"` fallback.\n\n## Develop\n\n```bash\nnpm run build   # tsc -> dist/\nnpm test        # node --test\n```\n","readmeFilename":"README.md"}