{"_id":"@aether-stack-dev/developer-sdk","_rev":"6-710304c2db26e44ae4e4733ff58bf60c","name":"@aether-stack-dev/developer-sdk","dist-tags":{"latest":"0.3.4"},"versions":{"0.2.0":{"name":"@aether-stack-dev/developer-sdk","version":"0.2.0","keywords":["astack","ai","video-chat","voice-ai","server-sdk","authentication","session-management","billing"],"author":{"name":"AStack Team"},"license":"MIT","_id":"@aether-stack-dev/developer-sdk@0.2.0","maintainers":[{"name":"aether-stack-dev","email":"admin@chatboo.app"}],"homepage":"https://github.com/aether-stack/astack-mono/tree/main/developer-sdk#readme","bugs":{"url":"https://github.com/aether-stack/astack-mono/issues"},"dist":{"shasum":"194ae2be022d3a45a83e8f1b0a4f4e133de1638c","tarball":"https://registry.npmjs.org/@aether-stack-dev/developer-sdk/-/developer-sdk-0.2.0.tgz","fileCount":61,"integrity":"sha512-35c6cu70KOgvcrmVLIlsmd1y+73MwHy/qFPz5bu3EmAxhrAguB59AAOmNzYyBkrohs2Gtk2UiKbkegyRf7xVRA==","signatures":[{"sig":"MEUCIQCckIFJG9HsAoxlhqe9ouxDfbh7aFlmr4jbHBHMpsrlfgIgb2cysR53i5zpJnjGfhIfjfnQ44NznvJXvCfYu3Yy3hk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219440},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ce4da4c29e2826a73a939282d1307b1cc25bab47","scripts":{"dev":"tsc --watch","docs":"typedoc --out docs src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","serve":"node server.js","start":"npm run build && node server.js","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"aether-stack-dev","email":"admin@chatboo.app"},"repository":{"url":"git+https://github.com/aether-stack/astack-mono.git","type":"git","directory":"developer-sdk"},"_npmVersion":"10.9.4","description":"Server-side SDK for managing AStack sessions, generating authentication tokens, and integrating AStack video-to-video AI conversations into backend applications","directories":{},"_nodeVersion":"22.22.0","dependencies":{"pg":"^8.11.3","cors":"^2.8.5","uuid":"^9.0.1","axios":"^1.6.2","dayjs":"^1.11.10","debug":"^4.3.4","redis":"^4.6.10","bcrypt":"^5.1.1","dotenv":"^17.2.3","lodash":"^4.17.21","jsonwebtoken":"^9.0.2","@supabase/supabase-js":"^2.38.4"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.54.0","express":"^4.18.2","fastify":"^4.24.3","ts-jest":"^29.1.1","@types/pg":"^8.10.9","typescript":"^5.3.2","@types/jest":"^29.5.8","@types/node":"^20.9.0","@types/uuid":"^9.0.7","@types/debug":"^4.1.12","@types/bcrypt":"^5.0.2","@types/lodash":"^4.14.202","@types/express":"^4.17.21","fastify-plugin":"^4.5.1","axios-mock-adapter":"^2.1.0","@types/jsonwebtoken":"^9.0.5","@typescript-eslint/parser":"^6.12.0","@typescript-eslint/eslint-plugin":"^6.12.0"},"peerDependencies":{"express":">=4.0.0","fastify":">=4.0.0"},"peerDependenciesMeta":{"express":{"optional":true},"fastify":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/developer-sdk_0.2.0_1770571807704_0.8257858305356274","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aether-stack-dev/developer-sdk","version":"0.3.0","keywords":["astack","ai","video-chat","voice-ai","server-sdk","authentication","session-management","billing"],"author":{"name":"AStack Team"},"license":"MIT","_id":"@aether-stack-dev/developer-sdk@0.3.0","maintainers":[{"name":"aether-stack-dev","email":"admin@chatboo.app"}],"homepage":"https://github.com/aether-stack/astack-mono/tree/main/developer-sdk#readme","bugs":{"url":"https://github.com/aether-stack/astack-mono/issues"},"dist":{"shasum":"f844afe4857d8a42c2e8ce9edc9ebf44e9d0b05e","tarball":"https://registry.npmjs.org/@aether-stack-dev/developer-sdk/-/developer-sdk-0.3.0.tgz","fileCount":35,"integrity":"sha512-zaki+aqNCdM+BolFfmWaeuvtvaGXL2kJglKSBE4fn7OXo707MM3EB/nfHfLQ7r64L7dmxM0wApIPqX873fGV6A==","signatures":[{"sig":"MEQCIA2uavsdWeCdawhH8K+AKBzkuUZ5IUUtg5EWKvxgFKVWAiBjAtx3D5U/QWOlgEqOEgoiBk0B3OHTivImhXOyTUGLJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138538},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"5a4f718afe0b5a35943b4d8188d884b469a19ce1","scripts":{"dev":"tsc --watch","docs":"typedoc --out docs src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","serve":"node server.js","start":"npm run build && node server.js","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"aether-stack-dev","email":"admin@chatboo.app"},"repository":{"url":"git+https://github.com/aether-stack/astack-mono.git","type":"git","directory":"developer-sdk"},"_npmVersion":"11.6.0","description":"Server-side SDK for managing AStack sessions, generating authentication tokens, and integrating AStack video-to-video AI conversations into backend applications","directories":{},"_nodeVersion":"22.17.1","dependencies":{"uuid":"^9.0.1","axios":"^1.6.2","dayjs":"^1.11.10","debug":"^4.3.4","dotenv":"^17.2.3","jsonwebtoken":"^9.0.2","@supabase/supabase-js":"^2.86.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.54.0","express":"^4.18.2","fastify":"^4.24.3","ts-jest":"^29.1.1","typescript":"^5.3.2","@types/jest":"^29.5.8","@types/node":"^20.9.0","@types/uuid":"^9.0.7","@types/debug":"^4.1.12","@types/express":"^5.0.6","axios-mock-adapter":"^2.1.0","@types/jsonwebtoken":"^9.0.5","@typescript-eslint/parser":"^6.12.0","@typescript-eslint/eslint-plugin":"^6.12.0"},"peerDependencies":{"express":">=4.0.0","fastify":">=4.0.0","@types/express":">=4.0.0","fastify-plugin":">=4.0.0","@fastify/rate-limit":">=1.0.0"},"peerDependenciesMeta":{"express":{"optional":true},"fastify":{"optional":true},"@types/express":{"optional":true},"fastify-plugin":{"optional":true},"@fastify/rate-limit":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/developer-sdk_0.3.0_1773905742026_0.23080455811534795","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aether-stack-dev/developer-sdk","version":"0.3.1","keywords":["astack","ai","video-chat","voice-ai","server-sdk","authentication","session-management","billing"],"author":{"name":"AStack Team"},"license":"MIT","_id":"@aether-stack-dev/developer-sdk@0.3.1","maintainers":[{"name":"aether-stack-dev","email":"admin@chatboo.app"}],"homepage":"https://github.com/aether-stack/astack-mono/tree/main/developer-sdk#readme","bugs":{"url":"https://github.com/aether-stack/astack-mono/issues"},"dist":{"shasum":"da7db48c822905ddd81b96d3711ec47c51c4c08a","tarball":"https://registry.npmjs.org/@aether-stack-dev/developer-sdk/-/developer-sdk-0.3.1.tgz","fileCount":35,"integrity":"sha512-HRIPzlTEDnh3mzJxg5DK7B2I8Smm3sbXPlnkARX6Gdw702Vs9kuvki0RB4agWmHuPmS2JHkK7+b5XrP+qwmmpA==","signatures":[{"sig":"MEUCIQDMOlqr52kOjQiiL0oTNCyXXD+4BE0fkwQfnvM8o72qYwIgIYul2zvBjQ3CM7UJyaXEb0tLAuzNZgq4QCOBaCtKnqs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138538},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"145e2d79222c3220f59f014acaae8e98339ad98c","scripts":{"dev":"tsc --watch","docs":"typedoc --out docs src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","serve":"node server.js","start":"npm run build && node server.js","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"aether-stack-dev","email":"admin@chatboo.app"},"repository":{"url":"git+https://github.com/aether-stack/astack-mono.git","type":"git","directory":"developer-sdk"},"_npmVersion":"11.6.0","description":"Server-side SDK for managing AStack sessions, generating authentication tokens, and integrating AStack video-to-video AI conversations into backend applications","directories":{},"_nodeVersion":"22.17.1","dependencies":{"uuid":"^9.0.1","axios":"^1.6.2","dayjs":"^1.11.10","debug":"^4.3.4","dotenv":"^17.2.3","jsonwebtoken":"^9.0.2","@supabase/supabase-js":"^2.86.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.54.0","express":"^4.18.2","fastify":"^4.24.3","ts-jest":"^29.1.1","typescript":"^5.3.2","@types/jest":"^29.5.8","@types/node":"^20.9.0","@types/uuid":"^9.0.7","@types/debug":"^4.1.12","@types/express":"^5.0.6","axios-mock-adapter":"^2.1.0","@types/jsonwebtoken":"^9.0.5","@typescript-eslint/parser":"^6.12.0","@typescript-eslint/eslint-plugin":"^6.12.0"},"peerDependencies":{"express":">=4.0.0","fastify":">=4.0.0","@types/express":">=4.0.0","fastify-plugin":">=4.0.0","@fastify/rate-limit":">=1.0.0"},"peerDependenciesMeta":{"express":{"optional":true},"fastify":{"optional":true},"@types/express":{"optional":true},"fastify-plugin":{"optional":true},"@fastify/rate-limit":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/developer-sdk_0.3.1_1773927597418_0.30936225787569827","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@aether-stack-dev/developer-sdk","version":"0.3.2","keywords":["astack","ai","video-chat","voice-ai","server-sdk","authentication","session-management","billing"],"author":{"name":"AStack Team"},"license":"MIT","_id":"@aether-stack-dev/developer-sdk@0.3.2","maintainers":[{"name":"aether-stack-dev","email":"admin@chatboo.app"}],"homepage":"https://github.com/aether-stack/astack-mono/tree/main/developer-sdk#readme","bugs":{"url":"https://github.com/aether-stack/astack-mono/issues"},"dist":{"shasum":"fb5020dad86f2687ae81bc251598f381dffd4d7c","tarball":"https://registry.npmjs.org/@aether-stack-dev/developer-sdk/-/developer-sdk-0.3.2.tgz","fileCount":35,"integrity":"sha512-cnt4a5vsqUPAKrDCsfM2ti2G/YJSa17Q6nPggnAfMcCKdoXR/ovE+9FMAEQXoWPBxl9YMMj/HnI70lhDQoDL8Q==","signatures":[{"sig":"MEQCIGWoA8IzH37Dh3/DwThc0894254vIwMbYnLuGeeIvjMHAiA1vVtoDemFqFxnxyv45LYXNsla2FMJLG0Uu3JKxgg6PQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138538},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"cfed57f9a6b2c71749779c981d6fb4213f989c05","scripts":{"dev":"tsc --watch","docs":"typedoc --out docs src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","serve":"node server.js","start":"npm run build && node server.js","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"aether-stack-dev","email":"admin@chatboo.app"},"repository":{"url":"git+https://github.com/aether-stack/astack-mono.git","type":"git","directory":"developer-sdk"},"_npmVersion":"11.6.0","description":"Server-side SDK for managing AStack sessions, generating authentication tokens, and integrating AStack video-to-video AI conversations into backend applications","directories":{},"_nodeVersion":"22.17.1","dependencies":{"uuid":"^9.0.1","axios":"^1.6.2","dayjs":"^1.11.10","debug":"^4.3.4","dotenv":"^17.2.3","jsonwebtoken":"^9.0.2","@supabase/supabase-js":"^2.86.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.54.0","express":"^4.18.2","fastify":"^4.24.3","ts-jest":"^29.1.1","typescript":"^5.3.2","@types/jest":"^29.5.8","@types/node":"^20.9.0","@types/uuid":"^9.0.7","@types/debug":"^4.1.12","@types/express":"^5.0.6","axios-mock-adapter":"^2.1.0","@types/jsonwebtoken":"^9.0.5","@typescript-eslint/parser":"^6.12.0","@typescript-eslint/eslint-plugin":"^6.12.0"},"peerDependencies":{"express":">=4.0.0","fastify":">=4.0.0","@types/express":">=4.0.0","fastify-plugin":">=4.0.0","@fastify/rate-limit":">=1.0.0"},"peerDependenciesMeta":{"express":{"optional":true},"fastify":{"optional":true},"@types/express":{"optional":true},"fastify-plugin":{"optional":true},"@fastify/rate-limit":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/developer-sdk_0.3.2_1773929416886_0.12784952912713243","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@aether-stack-dev/developer-sdk","version":"0.3.3","keywords":["astack","ai","video-chat","voice-ai","server-sdk","authentication","session-management","billing"],"author":{"name":"AStack Team"},"license":"MIT","_id":"@aether-stack-dev/developer-sdk@0.3.3","maintainers":[{"name":"aether-stack-dev","email":"admin@chatboo.app"}],"homepage":"https://github.com/aether-stack/astack-mono/tree/main/developer-sdk#readme","bugs":{"url":"https://github.com/aether-stack/astack-mono/issues"},"dist":{"shasum":"c3962e550ff5ade01b8a149cd6d7b4bacd4033a0","tarball":"https://registry.npmjs.org/@aether-stack-dev/developer-sdk/-/developer-sdk-0.3.3.tgz","fileCount":50,"integrity":"sha512-HZFjk3n5AWjMtLiIe6ZuN/CsVP+Qk3Aqz8L0zD+mWRrrN5yTT+6mQTjGKuMz0TY8tEIH6xaE16xGDBQEWQys2w==","signatures":[{"sig":"MEQCIAU1WDWQk5Z972VR2bPlbEjRrfyIyHu2ohDf7DLoxjZUAiBC+GpNmAIIuDwiaswvS2ftdDXVTqw5zUOCqZEp2RTU+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220987},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/esm/index.js","require":"./dist/index.js"}},"gitHead":"7e2514244d53a770c7b917865f240a54919a7824","scripts":{"dev":"tsc --watch","docs":"typedoc --out docs src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc && tsc -p tsconfig.esm.json && node -e \"const fs=require('fs'),p=require('path'),d='dist/esm';(function fix(dir){fs.readdirSync(dir).forEach(f=>{const fp=p.join(dir,f);fs.statSync(fp).isDirectory()?fix(fp):fp.endsWith('.js')&&fs.writeFileSync(fp,fs.readFileSync(fp,'utf8').replace(/from '(\\.\\.?\\/[^']+)'/g,(m,s)=>s.endsWith('.js')?m:\\`from '\\${s}.js'\\`))})})('dist/esm')\"","serve":"node server.js","start":"npm run build && node server.js","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"aether-stack-dev","email":"admin@chatboo.app"},"repository":{"url":"git+https://github.com/aether-stack/astack-mono.git","type":"git","directory":"developer-sdk"},"_npmVersion":"11.6.0","description":"Server-side SDK for managing AStack sessions, generating authentication tokens, and integrating AStack video-to-video AI conversations into backend applications","directories":{},"_nodeVersion":"22.17.1","dependencies":{"uuid":"^9.0.1","dayjs":"^1.11.10","debug":"^4.3.4","@supabase/supabase-js":"^2.86.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.54.0","express":"^4.18.2","fastify":"^4.24.3","ts-jest":"^29.1.1","typescript":"^5.3.2","@types/jest":"^29.5.8","@types/node":"^20.9.0","@types/uuid":"^9.0.7","@types/debug":"^4.1.12","@types/express":"^5.0.6","@typescript-eslint/parser":"^6.12.0","@typescript-eslint/eslint-plugin":"^6.12.0"},"peerDependencies":{"express":">=4.0.0","fastify":">=4.0.0","@types/express":">=4.0.0","fastify-plugin":">=4.0.0","@fastify/rate-limit":">=1.0.0"},"peerDependenciesMeta":{"express":{"optional":true},"fastify":{"optional":true},"@types/express":{"optional":true},"fastify-plugin":{"optional":true},"@fastify/rate-limit":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/developer-sdk_0.3.3_1773936939925_0.5000004617055183","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@aether-stack-dev/developer-sdk","version":"0.3.4","description":"Server-side SDK for managing AStack sessions, generating authentication tokens, and integrating AStack video-to-video AI conversations into backend applications","main":"dist/index.js","module":"dist/esm/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsc && tsc -p tsconfig.esm.json && node -e \"const fs=require('fs'),p=require('path'),d='dist/esm';(function fix(dir){fs.readdirSync(dir).forEach(f=>{const fp=p.join(dir,f);fs.statSync(fp).isDirectory()?fix(fp):fp.endsWith('.js')&&fs.writeFileSync(fp,fs.readFileSync(fp,'utf8').replace(/from '(\\.\\.?\\/[^']+)'/g,(m,s)=>s.endsWith('.js')?m:\\`from '\\${s}.js'\\`))})})('dist/esm')\"","dev":"tsc --watch","serve":"node server.js","start":"npm run build && node server.js","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration","lint":"eslint src/**/*.ts","typecheck":"tsc --noEmit","docs":"typedoc --out docs src/index.ts","prepublishOnly":"npm run build","prepare":"npm run build"},"keywords":["astack","ai","video-chat","voice-ai","server-sdk","authentication","session-management","billing"],"author":{"name":"AStack Team"},"license":"MIT","dependencies":{"@supabase/supabase-js":"^2.100.0","dayjs":"^1.11.10","debug":"^4.3.4","uuid":"^9.0.1"},"devDependencies":{"@types/debug":"^4.1.12","@types/express":"^5.0.6","@types/jest":"^29.5.8","@types/node":"^20.9.0","@types/uuid":"^9.0.7","@typescript-eslint/eslint-plugin":"^6.12.0","@typescript-eslint/parser":"^6.12.0","eslint":"^8.54.0","express":"^4.18.2","fastify":"^4.24.3","jest":"^29.7.0","ts-jest":"^29.1.1","typescript":"^5.3.2"},"peerDependencies":{"@fastify/rate-limit":">=1.0.0","@types/express":">=4.0.0","express":">=4.0.0","fastify":">=4.0.0","fastify-plugin":">=4.0.0"},"peerDependenciesMeta":{"@fastify/rate-limit":{"optional":true},"@types/express":{"optional":true},"express":{"optional":true},"fastify":{"optional":true},"fastify-plugin":{"optional":true}},"repository":{"type":"git","url":"git+https://github.com/aether-stack/astack-mono.git","directory":"developer-sdk"},"bugs":{"url":"https://github.com/aether-stack/astack-mono/issues"},"homepage":"https://github.com/aether-stack/astack-mono/tree/main/developer-sdk#readme","_id":"@aether-stack-dev/developer-sdk@0.3.4","gitHead":"52f8230dc00c7a16ebbad4ea2a3cb3226e33d03a","_nodeVersion":"22.17.1","_npmVersion":"11.6.0","dist":{"integrity":"sha512-xPXUAIWkDAVF3edUTItH0XdlYch/8gqdiAtCw+VePvMYQEIHTzZuhX6WXX7q+RtDATmOqG0UQ/qOfORmYTVuIA==","shasum":"acaa1dc8edc8b6fa044616d454affa035fdef0ea","tarball":"https://registry.npmjs.org/@aether-stack-dev/developer-sdk/-/developer-sdk-0.3.4.tgz","fileCount":50,"unpackedSize":222756,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDsKS/v3EbbABRP26J0Sfe8AKUcyTbh2vZ2f8rhN+XtfgIhAMufgoMnFdeFiyhNHl7/FlHNwW8RAc1mbS9obLBeb1DT"}]},"_npmUser":{"name":"aether-stack-dev","email":"admin@chatboo.app"},"directories":{},"maintainers":[{"name":"aether-stack-dev","email":"admin@chatboo.app"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/developer-sdk_0.3.4_1775396413677_0.20326684640493298"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-08T17:30:07.622Z","modified":"2026-04-05T13:40:13.923Z","0.2.0":"2026-02-08T17:30:07.853Z","0.3.0":"2026-03-19T07:35:42.192Z","0.3.1":"2026-03-19T13:39:57.569Z","0.3.2":"2026-03-19T14:10:17.052Z","0.3.3":"2026-03-19T16:15:40.083Z","0.3.4":"2026-04-05T13:40:13.825Z"},"bugs":{"url":"https://github.com/aether-stack/astack-mono/issues"},"author":{"name":"AStack Team"},"license":"MIT","homepage":"https://github.com/aether-stack/astack-mono/tree/main/developer-sdk#readme","keywords":["astack","ai","video-chat","voice-ai","server-sdk","authentication","session-management","billing"],"repository":{"type":"git","url":"git+https://github.com/aether-stack/astack-mono.git","directory":"developer-sdk"},"description":"Server-side SDK for managing AStack sessions, generating authentication tokens, and integrating AStack video-to-video AI conversations into backend applications","maintainers":[{"name":"aether-stack-dev","email":"admin@chatboo.app"}],"readme":"# AStack Developer SDK\n\nServer-side SDK for managing AStack sessions, users, billing, workers, and webhooks.\n\n## Installation\n\n```bash\nnpm install @aether-stack-dev/developer-sdk\n```\n\n## Quick Start\n\n```typescript\nimport { AStackSDK } from '@aether-stack-dev/developer-sdk';\n\nconst sdk = new AStackSDK({\n  apiKey: process.env.ASTACK_API_KEY,\n  apiEndpoint: process.env.ASTACK_API_ENDPOINT,\n  jwtSecret: process.env.ASTACK_JWT_SECRET,\n});\n\n// Create a session\nconst { session, token } = await sdk.createSession('user_123');\n\n// Return token + workerUrl to your frontend\n```\n\n## Constructor\n\n```typescript\nnew AStackSDK(config: AStackConfig)\n```\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `apiKey` | `string` | **required** | Your AStack API key |\n| `apiEndpoint` | `string` | **required** | AStack API base URL |\n| `jwtSecret` | `string` | **required** | Stable secret for JWT signing |\n| `databaseUrl` | `string` | `''` | Optional database connection URL |\n| `supabasePublishableKey` | `string` | — | Supabase anon key (for WebSocket features) |\n| `sessionTtl` | `number` | `3600` | Session TTL in seconds |\n| `maxConcurrentSessions` | `number` | `100` | Max concurrent sessions |\n| `enableBilling` | `boolean` | `true` | Enable billing tracking |\n| `enableAuditLogging` | `boolean` | `false` | Enable audit logs |\n| `debug` | `boolean` | `false` | Enable debug logging |\n| `rateLimitConfig` | `RateLimitConfig` | — | Rate limit + retry config |\n| `apiKeyScopes` | `ApiKeyScope[]` | — | Restrict SDK to specific scopes |\n\n## Sessions\n\n```typescript\nconst { session, token } = await sdk.createSession('user_123', {\n  connection_type: 'websocket',\n  quality: 'high',\n  features: ['vision'],\n  metadata: { source: 'web' },\n});\n\nconst session = await sdk.getSession(session.id);\nconst sessions = await sdk.listUserSessions('user_123', 50, 0);\n\nawait sdk.terminateSession(session.id);\n```\n\n## Users\n\n```typescript\nconst user = await sdk.createUser({\n  id: 'user_123',\n  email: 'user@example.com',\n  name: 'Jane Doe',\n  plan: 'growth',\n  initial_credits: 1000,\n});\n\nconst user = await sdk.getUserById('user_123');\nawait sdk.updateUser('user_123', { plan: 'enterprise' });\nawait sdk.deleteUser('user_123');\n\n// API keys\nconst { apiKey, key } = await sdk.createApiKey('user_123', {\n  key_name: 'Production',\n  permissions: { session_create: true, session_manage: true, usage_read: true },\n  rate_limit_per_minute: 60,\n  rate_limit_per_hour: 1000,\n  expires_at: new Date('2026-12-31'),\n});\nconst keys = await sdk.listApiKeys('user_123');\nawait sdk.revokeApiKey('user_123', apiKey.id);\n```\n\n## Billing\n\n```typescript\nconst usage = await sdk.getUserUsage('user_123', {\n  start: new Date('2026-01-01'),\n  end: new Date('2026-02-01'),\n});\n\nconst estimate = await sdk.estimateSessionCost({\n  quality: 'premium',\n  features: ['vision'],\n  duration: 300,\n});\n\nconst billing = await sdk.getBillingInfo('user_123');\nconst invoice = await sdk.generateInvoice('user_123', {\n  start: new Date('2026-01-01'),\n  end: new Date('2026-02-01'),\n});\n\nconst alertId = await sdk.setUsageAlert(\n  'user_123', 'credit_threshold', 100,\n  (alert) => console.log('Low credits:', alert.message)\n);\n```\n\n## Workers\n\n```typescript\nconst worker = await sdk.getWorkerStatus('worker_id');\nconst { workers, total } = await sdk.listActiveWorkers({\n  region: 'us-east-1',\n  status: 'active',\n  limit: 10,\n});\nconst metrics = await sdk.getWorkerMetrics('worker_id', {\n  start: '2026-01-01T00:00:00Z',\n  end: '2026-02-01T00:00:00Z',\n});\nconst capacity = await sdk.getCapacityMetrics();\n```\n\n## Webhooks\n\n```typescript\nimport { WebhookManager, createWebhookHandler, setupWebhooks }\n  from '@aether-stack-dev/developer-sdk';\n\n// Option 1: WebhookManager class\nconst webhooks = new WebhookManager(sdk, process.env.WEBHOOK_SECRET);\nwebhooks.setHandlers({\n  onSessionStarted: (session) => { /* ... */ },\n  onSessionEnded: (session, metrics) => { /* ... */ },\n  onSessionError: (session, error) => { /* ... */ },\n  onUserCreated: (user) => { /* ... */ },\n  onUsageRecorded: (usage) => { /* ... */ },\n  onInvoiceCreated: (invoice) => { /* ... */ },\n});\napp.post('/webhooks/astack', webhooks.middleware());\n\n// Option 2: Helper function\napp.post('/webhooks/astack', createWebhookHandler(sdk, webhookSecret, {\n  onSessionEnded: (session) => { /* ... */ },\n}));\n\n// Option 3: Auto-setup\nsetupWebhooks(app, sdk, {\n  webhookSecret: process.env.WEBHOOK_SECRET,\n  endpoint: '/webhooks/astack',\n  handlers: { onSessionEnded: (session) => { /* ... */ } },\n});\n```\n\n## Middleware\n\n### Express\n\n```typescript\nimport {\n  authMiddleware, rateLimitMiddleware, corsMiddleware, errorHandler\n} from '@aether-stack-dev/developer-sdk';\n\napp.use('/api', authMiddleware(sdk, {\n  apiKeyHeader: 'x-api-key',\n  requirePermissions: ['session_create'],\n}));\n\napp.use(rateLimitMiddleware({ windowMs: 60_000, max: 100 }));\napp.use(corsMiddleware(['https://app.example.com']));\napp.use(errorHandler());\n```\n\n### Fastify\n\n```typescript\nimport { astackFastifyPlugin } from '@aether-stack-dev/developer-sdk';\n\nawait fastify.register(astackFastifyPlugin, {\n  apiKey: process.env.ASTACK_API_KEY,\n  enableAuth: true,\n  enableRateLimit: true,\n});\n```\n\n## Admin\n\n```typescript\nconst key = await sdk.createApiKeyWithScopes({\n  key_name: 'Read-only Dashboard',\n  scopes: ['sessions:read', 'billing:read', 'workers:read'],\n});\n\nconst { logs, total } = await sdk.getAuditLogs({\n  action: 'session.create',\n  start_date: '2026-01-01',\n  limit: 50,\n});\n\nconst metrics = await sdk.getPerformanceMetrics({\n  aggregation: 'day',\n  start_date: '2026-01-01',\n});\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}