{"_id":"@tuteliq/sdk","_rev":"39-20ec1678123686f7947521cc18ca0c6a","name":"@tuteliq/sdk","dist-tags":{"latest":"2.33.0"},"versions":{"2.1.0":{"name":"@tuteliq/sdk","version":"2.1.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.1.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"d9c2bd80b52a137fc250e9d8c66c1a7ad79a1004","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.1.0.tgz","fileCount":105,"integrity":"sha512-1NPNIl0MDapGCyXMbqGAxMQ9z2CDRBud7W8OH+CwqN5eddLqJ0aYWsHNA9FIPSygnoWnp8i4ky40fYFqJgAGMQ==","signatures":[{"sig":"MEUCIBVylsh+NGeNiFZyPW32XWDQ7teU3Tc9EQInEYpNn8J4AiEA9YXX6HpSlmMVxRb78ViJDGPxwtqsPGqg+M80n9U/rjY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":360912},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"3c5671d55a3c395771b85d03de7686785bc0f685","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.1.0_1771269649115_0.6298518766671448","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@tuteliq/sdk","version":"2.2.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.2.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"a023b0f8b4908bccb5869ad520badc34c136ff20","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.2.0.tgz","fileCount":111,"integrity":"sha512-GmvoTQIUBt+KqNlcKdq7fkDggmNlTWgG9wBN9JwegDbkDVRLhxiDQGONaHADYBujQVe/ka0ZDmKpgZomFuZsIg==","signatures":[{"sig":"MEUCIEDAUVeVkZE+IOjKeA0hXpbaxMj8464VuzGcRQKOpkAnAiEAlarzOTcW0155vrsrr0ORZSrGlEdn2L316De2y/y+5t8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tuteliq%2fsdk@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":407784},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"c23e5f8473ffe30c556a2d03ad04caff5c13a761","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"10.8.2","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.2.0_1771341564438_0.40929878707679435","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@tuteliq/sdk","version":"2.2.1","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.2.1","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"d080dab1824a56ea4a6ad6f3ced0a10beef75f9c","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.2.1.tgz","fileCount":111,"integrity":"sha512-eL7J2L7rWzFFHwmIb6fAHEU3pIvCP/PILPwGtW82PuXBNBKqLQWp4/uBX5rrBusil/FQVGjiwBpXvwLFUz2lFw==","signatures":[{"sig":"MEYCIQDem7YjuLalMWhKBLWfs6IG4YvgCwmzsVeejGcDCHcorQIhAN29lX39TEh6ofI6zk9X5dN6fX53D4Y3yxstxA+Riz4r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tuteliq%2fsdk@2.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":408717},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"5e89c0c82e5465f7ab51006134f3874af97511eb","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"10.8.2","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.2.1_1771442307080_0.6638346028041635","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"@tuteliq/sdk","version":"2.2.2","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.2.2","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"de4c508c8f0254fc5c876f81b5de16b37513e4e0","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.2.2.tgz","fileCount":111,"integrity":"sha512-AO1S0rQlLN67DJ+Cn0SP8Mtk9yZAWLNATBOeMTMXmdHsmbSwASJaDhNCdyW4g0VWbZ3OjUZY49R63xZtmyYPDQ==","signatures":[{"sig":"MEYCIQDa3iGvn7gL0MMlcxyKxcz02Hng0WA74u0ffeFhrOIB0wIhAPb9E6IUe9La3HhI6FQbOwn4kyv11pZVaX5J5Qwn/BtU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":409984},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"ca9291f6b450ccf6da8a2695aad020d52467f4f9","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.2.2_1772037372059_0.5088485889318239","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@tuteliq/sdk","version":"2.3.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.3.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"2bf7f586e9432b6bbd01f1a439a2cbd6fc6b500b","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.3.0.tgz","fileCount":117,"integrity":"sha512-JKYZ9LONmgsViiPpYK6eCrsXbFNVnIXASrH+OahZyVAcbCGAsOEg+gi/p48oEHskr8jXW3ASt1Jc/QCtCgyksQ==","signatures":[{"sig":"MEUCIGRakZMTZqohBgT0eZd9M/47T3X9LFNF6ty3IUnVUHp9AiEAmIqgLLlS+Py1bTEj3TzkDWcV7TuEI0bDPrt72rq+Uo8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":447279},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"b33fd7ab021e9cef0c83ca328bf0258b522edd88","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.3.0_1772728648046_0.20212486964979348","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"@tuteliq/sdk","version":"2.3.1","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.3.1","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"b9b480ac991ebef66009efa44d655d94bf863744","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.3.1.tgz","fileCount":117,"integrity":"sha512-8xO0sNKP6AHcBQzkSCByciE1YAi/d3nsQA345M4Tinai09cQgrOOG06jq5WOnxRGt1b5ezurvFTiHMGEWtsGYQ==","signatures":[{"sig":"MEUCIGZENR8DwuMxyQn/CkhULFqcGo6MA3jD0M6hLOPYQ1f+AiEAwZ3HVep7kMu1je8RgWH76XdQMgpRevske4WmmtWVBiw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":446346},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"a39f08ab4374259f5d0fc9a4007b061c0d211a3a","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.3.1_1772802151146_0.4153263169125714","host":"s3://npm-registry-packages-npm-production"}},"2.3.2":{"name":"@tuteliq/sdk","version":"2.3.2","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.3.2","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"0a2449921ff4114f93e49555eb445bf5356ffe3d","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.3.2.tgz","fileCount":117,"integrity":"sha512-RLnBHMLjINSsdrU+jL277dOUMg2DvMpTVov/VdbXtDP1uX3+6hABpJBeBRZIxLyx8wtvvifTYvomXI8XXx3f5g==","signatures":[{"sig":"MEUCIF2Y0l3nhqOpATc/oQTs04zYPtVByYIxY7zP28OVANqWAiEAtL1EhkyFfMf7NpEm3CXz5UQykI7uv9/xJgRn5Pb3UUE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":467008},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"a39f08ab4374259f5d0fc9a4007b061c0d211a3a","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.3.2_1773300877164_0.26699637438213775","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@tuteliq/sdk","version":"2.4.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.4.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"f3b7235283a0fa1a3692e2a6e55f407575dda81b","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.4.0.tgz","fileCount":117,"integrity":"sha512-YiJe8LmWN6zQpFEXO4THp4y8f9X4m45HbP9ktF+m4RFBh34DRAheljkZ3pk/s2FUb6CBnHJqGevkRDutiyF7Wg==","signatures":[{"sig":"MEUCID7yiG+Z19dqrsQriWQeqfIezyLZCMqcwOTTKgSEcqVmAiEAn1ZTXZolSs98fdyn1GaVOnNeHesgGd/SWKUJ5RAGrv4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":468259},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"c2d9ce1a294191ce42e7485f216579032c60297f","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.4.0_1773328700579_0.13625015801363083","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@tuteliq/sdk","version":"2.5.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.5.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"3370aa42f9ef04f809ddc17c655e30dacaf453cf","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.5.0.tgz","fileCount":117,"integrity":"sha512-fZH/P8zcnIzb7q7zVn7sdiJcM6oyDcGOeIFZHjpIWV0xXTS25p+Ee19GjTDW+pGu++kmCeWUFh2Fm4NUBJmDFw==","signatures":[{"sig":"MEUCICMtA36X8xL5a95S/Nxwb10tV3L2Q4m6aToPXCNxmO7xAiEAkkCXf1UueTmPHOKZRwURdS5f+eSeTU7CVAghsRHeAC8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":469506},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"d0d0e078881343602f71e085ece7fc05fa298b03","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.5.0_1773561365509_0.23408916745875086","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@tuteliq/sdk","version":"2.6.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.6.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"80817da4c0ba341d2e449ff2d5df0b49d67ac2bf","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.6.0.tgz","fileCount":117,"integrity":"sha512-2ebjg/5kuxwI/kSr2tNL9jfWVjL5L9j9GFmmeJ3Y5/XDFfojXBYwUz8Bzood++qupTr+v93wAl5cxgLPoSs67Q==","signatures":[{"sig":"MEUCIQCjkAzwbnPECilj64SLfd3AsZX1FfUg3c7/ghDx7lQRSAIgdNJ9WaWR8HjpGJlw3puxLM0CVB/t6A4cPfjN0bUpBbE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":488399},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"972f5cf11d4625cd4ca402944532976fcecacf59","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.6.0_1773603168721_0.20176488374044577","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"@tuteliq/sdk","version":"2.7.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.7.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"1ae2d3c8a201a17649e7d30b4759dcbbced06758","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.7.0.tgz","fileCount":123,"integrity":"sha512-a0Aao5SbmVbQ2cMwlpttL1wNoeV7wCKNRKM83oVYJFZkvg/0ol7WZuyd9BHC7hjWpnWi8AE7/p0IkuVmrE4qsQ==","signatures":[{"sig":"MEUCIBJBt2sT/yppkqeeUA0eAuxrL1TMH085FhW7lc2t2apDAiEA0cVbNXGWmBGqtcBcdhTtyU65ZVy/nXmaH5afvR1P4NQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":558361},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"6a92fffa67e9c4b480e25b44c88f6aaba08bda8a","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.7.0_1775746739741_0.1466477722002224","host":"s3://npm-registry-packages-npm-production"}},"2.7.1":{"name":"@tuteliq/sdk","version":"2.7.1","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.7.1","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"6cc45549f6c1c56496b7d6149c4ccd85b3f7b605","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.7.1.tgz","fileCount":123,"integrity":"sha512-ddq9mJUk9xTB66m0Ju9cs3bPhYXfCuYw1Vn5IFLa/la9gfIBgaU4O2duj223UPlWCtpzWGclyUOl2e2+4273AA==","signatures":[{"sig":"MEUCICcAsGt8ZNKYNRFORGuMmdyM6WMqcq2xFd99ojRM2PioAiEAs2rxaoNQDq12xJ4RSH41u/Gq6Xyp8hJT7VnTFF3lrSc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":559115},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"f7038dfe5dabadee90794299cd806a8b08181133","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.7.1_1775762558274_0.7202863840618052","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"@tuteliq/sdk","version":"2.8.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.8.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"bc8de2fb6c32ccdf9230200efaed73a0085718f4","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.8.0.tgz","fileCount":123,"integrity":"sha512-mYgpop1Ph1OKWvzrmQEV4km6MXSiCbju1OsZBgqUl84UZo1AH5nv+QgUsZtbLahwdxiqNmr3z+LXsWqsc4IHqw==","signatures":[{"sig":"MEQCIHDCvDpcmX1t+C+q1lmkvOKrygLq25CdHlrx7bBBg/H2AiB2Wflt8x7hzr5VtH90co67XD8DUhem4AFYMLtf6BUaGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":563098},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"f7038dfe5dabadee90794299cd806a8b08181133","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.8.0_1775839926796_0.76352702896193","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"@tuteliq/sdk","version":"2.9.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.9.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"f2c87ab517374b26e6e297239f437afbcf6ab31b","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.9.0.tgz","fileCount":135,"integrity":"sha512-dYMpMtl1BPD7jXWb8eG7UyVa1s7Z0SZ4UbaqDZMHGnCMK2zY5VzO7NGXLZPZ1NvvnF42LEZIgnG5aM36iS87Jg==","signatures":[{"sig":"MEUCIB5lf9aDkCRQxJThSux8EJfM+dolSny87xdOLZy8/FVJAiEAj9FCQm9SlSmWAn9tbWxso/z4P2zEDlh9UW0qULQKyIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":588469},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"663adc3e6815b7cc5ddf11fb5340f29820469a86","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.9.0_1779894910023_0.5347278910551616","host":"s3://npm-registry-packages-npm-production"}},"2.10.0":{"name":"@tuteliq/sdk","version":"2.10.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.10.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"2ac8e0f9073904288df55942d37196210576a042","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.10.0.tgz","fileCount":135,"integrity":"sha512-nBSHRnioC/PPyiKHUmu/ZfAE7JAhjwO8TJA3Eys67cnja/85P+Ex+hrfpq3Zma9SA4ds9PoZBIQqxVMn8vVaHg==","signatures":[{"sig":"MEUCIQD/kvRYvVt9CjxIEEDNqyrwX9AzS3b1HkN1ZAx24KyUBwIgLUtR+d0QgEn+WeEbKZDdsjBcI+JjVtuIugYaJmfSVnA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":593717},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"88c2f024b26d124f296a04fa7a4409f4a963cb49","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.10.0_1779960625907_0.3197146620641498","host":"s3://npm-registry-packages-npm-production"}},"2.11.0":{"name":"@tuteliq/sdk","version":"2.11.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.11.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"69ee8af49e10d8479ccdda69c7cd9df3a7589a55","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.11.0.tgz","fileCount":135,"integrity":"sha512-oXCwbwH+v9zCrn/DtK3q0jQB3k9GREkHelcbWMuzYPYU8CAdLxIYWpJLJi6j1AgnfHwE2fSD0A9qodCGbvaysg==","signatures":[{"sig":"MEYCIQC/2M1589u6vVpwViombXqrRuju6FS8Qs0p11pC7zC7OgIhAP2QgEBMpfpe/WYfATzcs1y+MZYY/U6Fa/26Te/Xr/t4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":597330},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"88c2f024b26d124f296a04fa7a4409f4a963cb49","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.11.0_1779974461086_0.008885344551509355","host":"s3://npm-registry-packages-npm-production"}},"2.12.0":{"name":"@tuteliq/sdk","version":"2.12.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.12.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"90f764b2bff5605211df274e26346ed89ff5e722","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.12.0.tgz","fileCount":141,"integrity":"sha512-15asssv9WdvlEla4gOxdEPMc5Q/esyp8dZGkGm+CnewNvhStAxJw2HjKhv0w1ThBRzFglg9PJOfi2l8iNJ1UqQ==","signatures":[{"sig":"MEUCIQCJ3b7KvlnMkM1a4csMYbHK8XTkGpX7CdDIuU3VeyNONAIgIt0NMcc+YtQ/qxonEig2TPqXsxLsWX8jkUBDQUF0IJ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":626801},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"88c2f024b26d124f296a04fa7a4409f4a963cb49","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.12.0_1779985935775_0.9959835126480847","host":"s3://npm-registry-packages-npm-production"}},"2.13.0":{"name":"@tuteliq/sdk","version":"2.13.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.13.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"c16f1f37eab7ebf526b7350e8c5aef8512494642","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.13.0.tgz","fileCount":141,"integrity":"sha512-UI4j8UAS0IVshoWY3x1BcYfS/fVAIj3Nk2l7Ucv81Kf9p0xM9WhSIhHUCx028S8+Lb1xWyw05iBwpdheNhSn/A==","signatures":[{"sig":"MEYCIQD/GXCYVM2s48rnhhTZZDAleCVEcB0yKM9ys6Gb9hzC0QIhANKeB1javZ8NYV8zr1V6YFDgK3tngo0h+rGmSM3ANnuV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":627362},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"b68858dcd3f6914e4c8dfdf2a71c0d140e919d4e","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.13.0_1779999249084_0.8763294693647787","host":"s3://npm-registry-packages-npm-production"}},"2.14.0":{"name":"@tuteliq/sdk","version":"2.14.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.14.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"43c1f638a0fdf15b87c07aafc6d7066c3e21299c","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.14.0.tgz","fileCount":141,"integrity":"sha512-JCKcKL6D0Kn4+bAQUQD0x3j0pW2aEMd6F9nap/lK0btESNx4xPigoqzl8lGu/WujC+Ede4PdiCk/1GPQb45Png==","signatures":[{"sig":"MEUCIQDItobtuX300oTwtqfXRnaL3A8XzbK06vni9U/O/94CBAIgV2P8EfjSwQJIQsOacko9i9cpbcWPNm1trLuqB8PDIX0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":635215},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"1712bad6702bff3349b24f17ca21386ba7daaa0f","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.8","@types/ws":"^8.5.0","typescript":"^5.7.2","@types/node":"^25.2.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.14.0_1779999973379_0.8370993897082621","host":"s3://npm-registry-packages-npm-production"}},"2.15.0":{"name":"@tuteliq/sdk","version":"2.15.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.15.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"750cb2ea2f8ef4e6873683dceac1d3c8911f40a0","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.15.0.tgz","fileCount":159,"integrity":"sha512-iiUhBN4T2ssBvILqEfZ0dhxFkgBf1+Fm2chkIgkxC2EAvn9OH5bzFujRqmCwtNreb0HQnqxBsatM7e7feQV0tA==","signatures":[{"sig":"MEYCIQCyOKjjN9VBwrpoqfnvwdeGMPw2Gl0WFd5Vzd0MEx+h9AIhAO9bnnOzK/Lh14cqtGCU0QqarkfJMqMCggXAMrlqJfGA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":678220},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"71c063a3360956752607d0379d8dff0f096b2154","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.7","@types/ws":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.15.0_1783955519832_0.8164500161878301","host":"s3://npm-registry-packages-npm-production"}},"2.16.0":{"name":"@tuteliq/sdk","version":"2.16.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.16.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"d99291001369a3c08855c74bddced87527262169","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.16.0.tgz","fileCount":159,"integrity":"sha512-YKPT4kKBn0rXe8c52TXUFsDsoQXC2voEk6oLjFY+FohqK3M/BrnK8a82GfGYm4dp5Sr82puMYVNLqD4JNJn2lA==","signatures":[{"sig":"MEYCIQD1yx9cYq/lRNdZ21pFmWYBYlqzSzwkiau8HygGvjr1JwIhAOtoJmTWLj4KOktLUrmQ7nWyacUe7uogZUEvxfi80iCx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":681536},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"71c063a3360956752607d0379d8dff0f096b2154","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.7","@types/ws":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.16.0_1784984307601_0.941156384316729","host":"s3://npm-registry-packages-npm-production"}},"2.17.0":{"name":"@tuteliq/sdk","version":"2.17.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.17.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"6779cd162d6951db85b32b11f3bb56456c5b35eb","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.17.0.tgz","fileCount":159,"integrity":"sha512-91WyQXc5Y4Z71kwVbgik5qlXzTEEL6ICwx85oEdET0zG7dt5S0xhC2crhpaJhaxRk1t1B+VXD+sYInaptEP3WQ==","signatures":[{"sig":"MEQCIA6P5+kkDp/3NNKVFi4UwkEtWkaW0QbDLKVc5VPtj+niAiA2fqIktVCZF2RO/+lNMGYen0shW4uzg6KZlTGWSyWnGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":691906},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"71c063a3360956752607d0379d8dff0f096b2154","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.7","@types/ws":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.17.0_1785850483905_0.5507949854441023","host":"s3://npm-registry-packages-npm-production"}},"2.17.1":{"name":"@tuteliq/sdk","version":"2.17.1","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.17.1","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"5acbc8e33e3e592c3e8d1931b2cf2b64d7de73b5","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.17.1.tgz","fileCount":159,"integrity":"sha512-W3l7cXocmO6+5Ij10SjVCewOpN16b5pil9tMTRhz1cmpxBbcrs94w89mxLV1XimImBDZgQ1bWkIKXKujEyOoug==","signatures":[{"sig":"MEUCIFzVAa1HVU1e0+kaheb6vWMuLhDP+/lF6I5YJgRUkBVkAiEA6OTmin5YZg3vaPJRzY9tvP6RBMK+lNdM08tsY3Msx9A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":692090},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"b3ff607b9457c6607614f9ad9289a6505b650972","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.7","@types/ws":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.17.1_1785853503205_0.06897904189989768","host":"s3://npm-registry-packages-npm-production"}},"2.18.0":{"name":"@tuteliq/sdk","version":"2.18.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.18.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"061e26e05cc727ce8e0e7004da22b336784c1291","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.18.0.tgz","fileCount":159,"integrity":"sha512-+WdVdYbC/Ula5xKRg2yzXhZmlCk8AVZRaIIaaj8ArXob51j1Ip7qXr/9xK2YFEjqfTn/iVUlOc3yLjHShbJ3Vg==","signatures":[{"sig":"MEQCIEG8rSNm4hMHtvNhwA8bO4o92DButXywnnrLgwHxUYw0AiAbCZUPivFqNRsHg1T7WIcr00UDEjuv4LrVU1uyOHm4zw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":696829},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"f38e15bd722007e1bef69cc97b385f290d93ecbe","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.7","@types/ws":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.18.0_1785855078079_0.10004934489853134","host":"s3://npm-registry-packages-npm-production"}},"2.19.0":{"name":"@tuteliq/sdk","version":"2.19.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.19.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"60e3078176acd8d7aea29623635cc4bcad5a22e9","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.19.0.tgz","fileCount":159,"integrity":"sha512-DNiSJijs6CK7UavUuGzG62FIWqLfc5KylZGUwiKPB6JF82lPoztEnRacZT6+8uWTYGP7vJ3JpYlftw5WFB6d3Q==","signatures":[{"sig":"MEYCIQD4JjzuUINLJ9J+J6URKJKtjHY8SzBONcyBLOogxcGp5gIhALxPSXycIXfUgPfmPqraZnsjpnKtK9YLoWQlwl9pQa+O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":698602},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"9449402cb0a9bd299fbfc3de9ab3f2191d6d96b6","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.7","@types/ws":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.19.0_1785863238782_0.1038324286791319","host":"s3://npm-registry-packages-npm-production"}},"2.20.0":{"name":"@tuteliq/sdk","version":"2.20.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.20.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"fae5f1a2d2cab245ef5ac480f139edeb7d405495","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.20.0.tgz","fileCount":159,"integrity":"sha512-tgPCeOQOt1DXlfPKYkiaE5V6o3ukDyOupAC0jCQUXuCA70c+D4Kb+MizHKDMWthcm96CM5P6IfneHep1vZ8ZXA==","signatures":[{"sig":"MEUCIQDsrKw7wZ+/IUY/2yn7YjzTKzUyXHvOdAQyjKfcYMc4JwIgSFHxbPEuxHvA5Jzr2nJuPJkVrx3IULWc1CxQnDgyK4E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":699677},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"7797edcc0c2a72644403e9651c53a3a059edac27","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.7","@types/ws":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.20.0_1785867221030_0.44571870406041136","host":"s3://npm-registry-packages-npm-production"}},"2.21.0":{"name":"@tuteliq/sdk","version":"2.21.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.21.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"ac5a9564a03e9741e05c5689047d84bbd875fa28","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.21.0.tgz","fileCount":159,"integrity":"sha512-AZWdz0PDJ/mrlfKs2fLS8ZP6dY68GF829v6vJDORAyvFYAh8Lmvi+n0qc2beskzpRglOofu9gyzkb1zndQb8ww==","signatures":[{"sig":"MEUCIQCy04uTY8MH0s9iar15LLtx3bTxTo3djLgHpAEpS3O+DgIgNufrnPRGkAZWco1lutUyfM4nZyZ9IzMHvhE2QyvXtuo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":704081},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"7797edcc0c2a72644403e9651c53a3a059edac27","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.7","@types/ws":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.21.0_1785949059862_0.44557507515968364","host":"s3://npm-registry-packages-npm-production"}},"2.22.0":{"name":"@tuteliq/sdk","version":"2.22.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.22.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"d0977cf26f156571729ffcc562e82212b390d3f5","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.22.0.tgz","fileCount":159,"integrity":"sha512-0hlNMDAQX3nFpFUEfmIXANPVByKSXkcY1c7QLG+/PN4JE3RuoRcPxou2apv7szlmta41sEKJcKf8d0DQi5FcLA==","signatures":[{"sig":"MEQCIFbUT3otZd7M6yGDyIdCOsu0Tasa72zh6tFv4BZaO698AiB1ZGyLPZetKABKZ7WkRXXhxUMVzU/4DfXWUqupiXiywQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":705075},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"dbcd7c7866d4b12d95afa06034ff5d9c4c64fe3d","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.7","@types/ws":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.22.0_1786354841516_0.07036236376626914","host":"s3://npm-registry-packages-npm-production"}},"2.23.0":{"name":"@tuteliq/sdk","version":"2.23.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.23.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"8b059f77739e30738907d07e1cbfe49fdde7f025","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.23.0.tgz","fileCount":159,"integrity":"sha512-MmumfnU8j08kA8X59XG+uUdUhOsoNLabCFROre3ci3pB4aZMurxO+qpD5/OkSKK4FBLUl/DQ2wiXVbvrRL5YaQ==","signatures":[{"sig":"MEYCIQC0fP/CL/Apw7djJ3O4d5QZwE14RPwbTw/3TM8uDzaC/QIhAICvKYOHnVxLXvSbqJjUS5haIa8ToXEmfAIh44KWi4LK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":709684},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"dbcd7c7866d4b12d95afa06034ff5d9c4c64fe3d","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.7","@types/ws":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.23.0_1786550542556_0.23622811750737194","host":"s3://npm-registry-packages-npm-production"}},"2.24.0":{"name":"@tuteliq/sdk","version":"2.24.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.24.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"84d8406b9e1a8fb28e1dd28d94103e76c772d06e","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.24.0.tgz","fileCount":159,"integrity":"sha512-bsId7GJl2rDD6KFaRB9f2ZE9NAAAVybAe4lwgL5QIzvFgF8JX9073yCnj633WendQZghQ+lCk/2+9q0ed1OSew==","signatures":[{"sig":"MEYCIQDdKabzz+3i1mQqrCRWe8LQEM8uLpFKLP71ziczcuvv7QIhALfO8RdGhzo8GR3zMiPyJ0ODl6oXFyX4Jn7+tMb9b02c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":734314},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"dbcd7c7866d4b12d95afa06034ff5d9c4c64fe3d","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.7","@types/ws":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.24.0_1787255473213_0.6072007019895624","host":"s3://npm-registry-packages-npm-production"}},"2.25.0":{"name":"@tuteliq/sdk","version":"2.25.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.25.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"d913f6ceee72e277b7bf2afe35b29ea4e0d56454","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.25.0.tgz","fileCount":159,"integrity":"sha512-Xipou5UMQEkpvTM+J0Y7zu+NKILC1u+vDpQG5y9kv5vqc3EYFSdXp75hHSA03Sf1fkliMkaLBRLohfH/16ztxA==","signatures":[{"sig":"MEUCIQCaVXpEzyHF1JQETVokCrnQJEDX4A/em+zEvcuXRZ1QuwIgKJKajmor7WrxiGVmiFpqNyN43lva5RS1JlTWMASTbBc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":740730},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"dbcd7c7866d4b12d95afa06034ff5d9c4c64fe3d","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.7","@types/ws":"^8.5.0","typescript":"^6.0.3","@types/node":"^25.9.1"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.25.0_1787261103682_0.6119759637234599","host":"s3://npm-registry-packages-npm-production"}},"2.26.0":{"name":"@tuteliq/sdk","version":"2.26.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.26.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"1311c4517ec7d01b9d52e22513e54d5241a018e8","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.26.0.tgz","fileCount":159,"integrity":"sha512-qO+iV515jgi8Hhd9RkkN9dQQZPDyRHPusOhGqEbT7tBWN+CEHTq9wuiUWR10YV7AEFa2ljuIl8ylK1bq8YKQhw==","signatures":[{"sig":"MEQCIBy3IHagKLSk0w/oZMkS16aoC6pAX/9ShwlQVYFRrokFAiAAgasq3l3i3/dk5Dqed0GlLFnc+WSqetr8XL/VEd0yQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":744427},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"e6253a1d9e590356a664cb90d5a9cbae10721de2","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.11","@types/ws":"^8.5.0","typescript":"^7.0.2","@types/node":"^26.2.0"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.26.0_1787577080062_0.955778044214469","host":"s3://npm-registry-packages-npm-production"}},"2.27.0":{"name":"@tuteliq/sdk","version":"2.27.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.27.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"c902c07b58d3b43b9b98f14d7f029dd92e253d73","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.27.0.tgz","fileCount":159,"integrity":"sha512-i1mKZ6d8Md0xnUGVPdNhXHQDSmFZEi+N4GZSkaGB1ZUbjZ+97PzsV6zhEjftEEYW0Cf4p2FRhsJlahwKo5+VyA==","signatures":[{"sig":"MEYCIQDub9SLWdXy1hliVd+nh31BVhi/upqivBqTyHW2OqCPogIhALH8zOmVmZJeP+w4PPFp9549+apg5prbmQUi0ioqOPTo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":748571},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"7371ef38d2021aa7757715c728eeb946c1b53c71","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.11","@types/ws":"^8.5.0","typescript":"^7.0.2","@types/node":"^26.2.0"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.27.0_1787689880429_0.8119773362795786","host":"s3://npm-registry-packages-npm-production"}},"2.28.0":{"name":"@tuteliq/sdk","version":"2.28.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.28.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"3af1f80ee9a6b8edca4b268919dc22e5a8ef5552","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.28.0.tgz","fileCount":159,"integrity":"sha512-6xEVCHAqxYlAe5eqb76vwb1SZnLze1FAY72oqrnBdmq0J7bLo62J6VWlAAqMQAcTJ7fIZU/AC4fFKtiuE8OcUQ==","signatures":[{"sig":"MEUCIH+CNjT64dSosMbLtqRe41lIncRn9ADKlTl0SGJCBlJXAiEA92a2mXv/ZgwgLgOX5czFZnN43ihlulRNoMFiaGYDrLU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":750398},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"6ce679e7f87fd62a3221b2d8e04a1fd7c846d5fa","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.11","@types/ws":"^8.5.0","typescript":"^7.0.2","@types/node":"^26.2.0"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.28.0_1787718977151_0.8988802758907299","host":"s3://npm-registry-packages-npm-production"}},"2.30.0":{"name":"@tuteliq/sdk","version":"2.30.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.30.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"7d03d73c361e77aff998cbc1ede91cb227439ded","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.30.0.tgz","fileCount":159,"integrity":"sha512-Utkl2nzV0sYSQr+1MWS2p4lK8epDJ+oi3VO1nuBD/gKrnXxHbvD1QMgQGTMPODV+FIVJqr1k6EHP3mG86l7kjQ==","signatures":[{"sig":"MEUCIEZiay8ZlNwhmX19R2R2LTni+RRE6ZoKvsszViQ261OHAiEAuDcOU/uDyagRtfOXoTlEMQonnFe2dEij9t0NFD40egM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":753954},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"21868503146ecadc23069214b705d23a8dca00ae","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.11","@types/ws":"^8.5.0","typescript":"^7.0.2","@types/node":"^26.2.0"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.30.0_1787723982255_0.0023235998596817797","host":"s3://npm-registry-packages-npm-production"}},"2.30.1":{"name":"@tuteliq/sdk","version":"2.30.1","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.30.1","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"bae57124199533f536beaf58a3e3b0e74c30ba38","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.30.1.tgz","fileCount":159,"integrity":"sha512-oUfV8xQ+XQ4ubY8vKLC9BEk359qn8oJ9dMPGA2krtudAyh7BLfzPZT0KvutIri8qRLi07k4wnTaVLhob8LDHDg==","signatures":[{"sig":"MEUCIEYcvQxMnUm/t/NKff20jzilxSgPigfvaEIDGUcmuBc5AiEA5UO9TZunvHrWw0yco2Y1Lkvm2cznGbBfOlnenBeE3wU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":756961},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"7aaa7fceea9de950fb3087e0cdaab778490fcc90","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.11","@types/ws":"^8.5.0","typescript":"^7.0.2","@types/node":"^26.2.0"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.30.1_1787725615108_0.6339821788815025","host":"s3://npm-registry-packages-npm-production"}},"2.31.0":{"name":"@tuteliq/sdk","version":"2.31.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.31.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"2ffe54fed3044acda73ebdd39e8b4fb6ff0778dc","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.31.0.tgz","fileCount":159,"integrity":"sha512-wcNJ0tJl66tbOtf3J27gqCluMf2Zp065+xY7okTX0QzDCAOMDCTbRLf96k//sj5wThTuwNoyDbFp6WwZDiKWTg==","signatures":[{"sig":"MEUCIGtmBZ5iSbfApxQp0X8rWDsCiAgAlPNHYntX96Ac/nFwAiEA3LugXe61KRoxOFhkwvneb0wHwi8QWkgbM9x2HbaBCLI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":762491},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"5e881990e7f946a99b9dbe95448c438bada738ba","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.11","@types/ws":"^8.5.0","typescript":"^7.0.2","@types/node":"^26.2.0"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.31.0_1787829226773_0.11687777808284183","host":"s3://npm-registry-packages-npm-production"}},"2.32.0":{"name":"@tuteliq/sdk","version":"2.32.0","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","_id":"@tuteliq/sdk@2.32.0","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"homepage":"https://tuteliq.ai","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"296bd2d7742d2bea2c5691a7d5e5d010f4009cd0","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.32.0.tgz","fileCount":159,"integrity":"sha512-kUcp7eZb3ue274VPsC0IZiTyqUSQ1qyLv1zkP6ey6xoM23rqAdKT6Cfso54zFd8jNvBF5Mrzr9MqZjzO4aRbZg==","signatures":[{"sig":"MEUCICCFZ6BqICu8SszHZpuJIaFUrYgRjkDsyp3hetKAsSfkAiEA+3b+P8Kvmq9p0v6o+pMOPDzxZ2SAJW17pgpMzgTSVcA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":767787},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"6cbea40c2f34b075513bba39b36cd1f61566fceb","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.11","@types/ws":"^8.5.0","typescript":"^7.0.2","@types/node":"^26.2.0"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.32.0_1787918681983_0.6113408315161395","host":"s3://npm-registry-packages-npm-production"}},"2.33.0":{"_id":"@tuteliq/sdk@2.33.0","bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"dist":{"shasum":"fa6a0abc2b48fb60dda5d8ea4e86595988e3232f","tarball":"https://registry.npmjs.org/@tuteliq/sdk/-/sdk-2.33.0.tgz","fileCount":159,"integrity":"sha512-MCB+QV25N2aQQbNs45uP20k8V9FS65KVrjTvS53D7ULqdItIdHiQtWcY8dKf1jmGvcl8eICeR/Fg49ucJLpiPw==","signatures":[{"sig":"MEUCIHfPU0skDUWA8G5o87zSdhuDQt0vXR9sp9qC1RmvXfGyAiEA6PEYT7WzWizrXiyQawBPpiToKjTyzuB3VhlkW4i9+3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCzOxFpgFc/uZM/DMhN954aevUy1BOE5tB3b4Uk7GrpWwIgFCdQqCLqGzbzv90llhIdBES9SlV9tdh6wE50lmhA2xY="}],"unpackedSize":768997},"main":"./dist/index.js","name":"@tuteliq/sdk","type":"module","types":"./dist/index.d.ts","author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/cjs/types/index.js"},"./constants":{"types":"./dist/constants.d.ts","import":"./dist/constants.js","require":"./dist/cjs/constants.js"}},"gitHead":"c9f0f9878ddef219a2df155d2c88ec654e3f4a1d","license":"MIT","scripts":{"test":"vitest run","build":"tsc && tsc -p tsconfig.cjs.json","clean":"rm -rf dist","test:watch":"vitest","prepublishOnly":"npm run clean && npm run build"},"version":"2.33.0","_npmUser":{"name":"safenest","email":"sales@tuteliq.ai"},"homepage":"https://tuteliq.ai","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"_npmVersion":"11.7.0","description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","directories":{},"maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.21.0","vitest":"^4.1.11","@types/ws":"^8.5.0","typescript":"^7.0.2","@types/node":"^26.2.0"},"peerDependencies":{"ws":">=8.0.0"},"peerDependenciesMeta":{"ws":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_2.33.0_1789983536413_0.7494269561669835"}}},"time":{"created":"2026-02-16T19:20:48.987Z","modified":"2026-09-21T09:38:56.707Z","2.1.0":"2026-02-16T19:20:49.261Z","2.2.0":"2026-02-17T15:19:24.643Z","2.2.1":"2026-02-18T19:18:27.268Z","2.2.2":"2026-02-25T16:36:12.287Z","2.3.0":"2026-03-05T16:37:28.200Z","2.3.1":"2026-03-06T13:02:31.323Z","2.3.2":"2026-03-12T07:34:37.330Z","2.4.0":"2026-03-12T15:18:20.796Z","2.5.0":"2026-03-15T07:56:05.707Z","2.6.0":"2026-03-15T19:32:48.877Z","2.7.0":"2026-04-09T14:58:59.916Z","2.7.1":"2026-04-09T19:22:38.434Z","2.8.0":"2026-04-10T16:52:06.975Z","2.9.0":"2026-05-27T15:15:10.218Z","2.10.0":"2026-05-28T09:30:26.042Z","2.11.0":"2026-05-28T13:21:01.251Z","2.12.0":"2026-05-28T16:32:16.004Z","2.13.0":"2026-05-28T20:14:09.268Z","2.14.0":"2026-05-28T20:26:13.539Z","2.15.0":"2026-07-13T15:11:59.967Z","2.16.0":"2026-07-25T12:58:27.754Z","2.17.0":"2026-08-04T13:34:44.050Z","2.17.1":"2026-08-04T14:25:03.362Z","2.18.0":"2026-08-04T14:51:18.254Z","2.19.0":"2026-08-04T17:07:18.948Z","2.20.0":"2026-08-04T18:13:41.191Z","2.21.0":"2026-08-05T16:57:40.037Z","2.22.0":"2026-08-10T09:40:41.662Z","2.23.0":"2026-08-12T16:02:22.696Z","2.24.0":"2026-08-20T19:51:13.354Z","2.25.0":"2026-08-20T21:25:03.832Z","2.26.0":"2026-08-24T13:11:20.301Z","2.27.0":"2026-08-25T20:31:20.581Z","2.28.0":"2026-08-26T04:36:17.298Z","2.30.0":"2026-08-26T05:59:42.404Z","2.30.1":"2026-08-26T06:26:55.271Z","2.31.0":"2026-08-27T11:13:46.931Z","2.32.0":"2026-08-28T12:04:42.161Z","2.33.0":"2026-09-21T09:38:56.535Z"},"bugs":{"url":"https://github.com/Tuteliq/node/issues","email":"support@tuteliq.ai"},"author":{"name":"Tuteliq","email":"hello@tuteliq.ai"},"license":"MIT","homepage":"https://tuteliq.ai","keywords":["tuteliq","child-safety","content-moderation","bullying-detection","grooming-detection","ai","sdk","typescript","parental-control","online-safety"],"repository":{"url":"git+https://github.com/Tuteliq/node.git","type":"git"},"description":"TypeScript SDK for Tuteliq AI child safety API - Detect bullying, grooming, and unsafe content","maintainers":[{"name":"safenest","email":"sales@tuteliq.ai"}],"readme":"<p align=\"center\">\n  <img src=\"./assets/logo.png\" alt=\"Tuteliq\" width=\"200\" />\n</p>\n\n<h1 align=\"center\">@tuteliq/sdk</h1>\n\n<p align=\"center\">\n  <strong>Official TypeScript/JavaScript SDK for the Tuteliq API</strong><br>\n  AI-powered child safety, fraud detection, and content moderation for modern applications\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@tuteliq/sdk\"><img src=\"https://img.shields.io/npm/v/@tuteliq/sdk.svg\" alt=\"npm version\"></a>\n  <a href=\"https://www.npmjs.com/package/@tuteliq/sdk\"><img src=\"https://img.shields.io/npm/dm/@tuteliq/sdk.svg\" alt=\"npm downloads\"></a>\n  <a href=\"https://github.com/Tuteliq/node/blob/main/LICENSE\"><img src=\"https://img.shields.io/npm/l/@tuteliq/sdk.svg\" alt=\"license\"></a>\n  <a href=\"https://github.com/Tuteliq/node/actions\"><img src=\"https://img.shields.io/github/actions/workflow/status/Tuteliq/node/ci.yml\" alt=\"build status\"></a>\n  <a href=\"https://bundlephobia.com/package/@tuteliq/sdk\"><img src=\"https://img.shields.io/bundlephobia/minzip/@tuteliq/sdk\" alt=\"bundle size\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://docs.tuteliq.ai\">Documentation</a> •\n  <a href=\"https://tuteliq.ai/dashboard\">Dashboard</a> •\n  <a href=\"https://trust.tuteliq.ai\">Trust</a> •\n  <a href=\"https://discord.gg/7kbTeRYRXD\">Discord</a> •\n  <a href=\"https://twitter.com/tuteliqdev\">Twitter</a>\n</p>\n\n---\n\n## Overview\n\nTuteliq provides AI-powered content analysis to help protect children and vulnerable users in digital environments. This SDK makes it easy to integrate Tuteliq's capabilities into your Node.js, browser, or edge runtime applications.\n\n### Key Features\n\n- **Bullying Detection** — Identify verbal abuse, exclusion, and harassment patterns\n- **Grooming Risk Analysis** — Detect predatory behavior across conversation threads\n- **Unsafe Content Detection** — Flag self-harm, violence, hate speech, and age-inappropriate content\n- **Social Engineering Detection** — Detect pretexting, urgency fabrication, trust exploitation, and authority impersonation\n- **App Fraud Detection** — Identify fake investment platforms, phishing apps, subscription traps, and malicious links\n- **Romance Scam Detection** — Detect love-bombing, financial requests, and identity deception\n- **Mule Recruitment Detection** — Identify money mule recruitment and laundering facilitation\n- **Gambling Harm Detection** — Detect chasing losses, concealment behavior, and gambling-related distress\n- **Coercive Control Detection** — Identify isolation tactics, financial control, monitoring, and threats\n- **Vulnerability Exploitation Detection** — Detect targeting of the elderly, disabled, or emotionally vulnerable\n- **Radicalisation Detection** — Identify extremist rhetoric, us-vs-them framing, and ideological grooming\n- **Multi-Endpoint Analysis** — Run multiple detection types on a single piece of content in one call\n- **Voice Analysis** — Transcribe audio and run safety analysis on the transcript with timestamped segments\n- **Image Analysis** — Visual safety classification with OCR text extraction and text safety analysis\n- **Video Analysis** — Analyze video files for safety concerns via key frame extraction\n- **Document Analysis** — Upload PDFs for per-page multi-endpoint safety detection with chain-of-custody hashing\n- **Emotional State Analysis** — Understand emotional signals and concerning trends\n- **Action Guidance** — Generate age-appropriate response recommendations\n- **Incident Reports** — Create professional summaries for review\n- **Synthetic Content Detection** — Multi-signal forensic detection of AI-generated text, images, audio, and video\n- **Synthetic Image Forensics** — 6-signal pipeline: vision AI, EXIF metadata, pixel statistics, C2PA Content Credentials, watermark detection, perceptual hashing\n- **Synthetic Audio Forensics** — Transcript analysis + mel spectrogram vision + quantitative audio statistics\n- **Synthetic Video Forensics** — Temporal face consistency, lip-sync correlation, per-frame vision, spectral audio\n- **Synthetic Profiling** — Account-level 30-day rolling window with trend detection\n- **Age Verification** — Session-based age verification with document capture and liveness detection\n- **Identity Verification** — Session-based identity verification with face matching, document authentication, MRZ validation, barcode reading, and 45-country document number validation\n\n### Why Tuteliq?\n\n| Feature | Description |\n|---------|-------------|\n| **Privacy-First** | Stateless analysis, no mandatory data storage |\n| **Human-in-the-Loop** | Designed to assist, not replace, human judgment |\n| **Clear Rationale** | Every decision includes explainable reasoning |\n| **Safe Defaults** | Conservative escalation, no automated responses to children |\n\n---\n\n## Installation\n\n```bash\n# npm\nnpm install @tuteliq/sdk\n\n# yarn\nyarn add @tuteliq/sdk\n\n# pnpm\npnpm add @tuteliq/sdk\n\n# bun\nbun add @tuteliq/sdk\n```\n\n### Requirements\n\n- Node.js 18+ (or any runtime with `fetch` support)\n- TypeScript 4.7+ (optional, for type definitions)\n\n---\n\n## Quick Start\n\n```typescript\nimport { Tuteliq } from '@tuteliq/sdk'\n\nconst tuteliq = new Tuteliq(process.env.TUTELIQ_API_KEY)\n\n// Quick safety analysis\nconst result = await tuteliq.analyze(\"User message to analyze\")\n\nif (result.risk_level !== 'safe') {\n  console.log('Risk detected:', result.risk_level)\n  console.log('Summary:', result.summary)\n  console.log('Action:', result.recommended_action)\n}\n```\n\n---\n\n## API Reference\n\n### Initialization\n\n```typescript\nimport { Tuteliq } from '@tuteliq/sdk'\n\n// Simple\nconst tuteliq = new Tuteliq('your-api-key')\n\n// With options\nconst tuteliq = new Tuteliq('your-api-key', {\n  timeout: 30000,    // Request timeout in ms (default: 30 seconds)\n  retries: 3,        // Retry attempts for transient failures (default: 3)\n  retryDelay: 1000,  // Initial retry delay in ms (default: 1000)\n})\n```\n\n---\n\n### Common Parameters\n\n#### Tracking Fields\n\nAll detection methods accept optional tracking fields for correlation, multi-tenant routing, and custom metadata:\n\n```typescript\nconst result = await tuteliq.detectBullying({\n  content: \"Nobody likes you, just leave\",\n  context: 'chat',\n\n  // Optional tracking fields — echoed back in the response and included in webhooks\n  external_id: 'msg_abc123',       // Your unique identifier for correlation\n  customer_id: 'cust_xyz789',      // Your end-customer ID (B2B2C / multi-tenant)\n  metadata: { channel: 'discord' } // Arbitrary key-value pairs\n})\n\n// Echoed back in response\nconsole.log(result.external_id)   // 'msg_abc123'\nconsole.log(result.customer_id)   // 'cust_xyz789'\nconsole.log(result.metadata)      // { channel: 'discord' }\n```\n\n| Field | Type | Max Length | Description |\n|-------|------|-----------|-------------|\n| `external_id` | `string?` | 255 | Your internal identifier (message ID, content ID, etc.) |\n| `customer_id` | `string?` | 255 | Your end-customer identifier for multi-tenant / B2B2C scenarios |\n| `metadata` | `object?` | — | Custom key-value pairs stored with the detection result |\n\nThese fields are:\n- **Echoed** in the API response for easy matching\n- **Included** in webhook payloads, enabling you to route alerts to the correct customer from a single webhook endpoint\n- **Stored** with the incident in Firestore for audit trail\n\n#### Support Threshold\n\nAll detection methods accept an optional `supportThreshold` parameter that controls when crisis support resources are included in the response:\n\n```typescript\nconst result = await tuteliq.detectUnsafe({\n  content: \"I don't want to be here anymore\",\n  supportThreshold: 'medium'  // 'low' | 'medium' | 'high' (default) | 'critical'\n})\n\n// When severity meets or exceeds the threshold, result.support will contain:\n// - helpline phone numbers (region-aware)\n// - crisis text lines\n// - relevant web resources\n```\n\n> **Note:** `critical` severity always includes support resources regardless of the threshold setting.\n\n---\n\n### Safety Detection\n\n#### `detectBullying(input)`\n\nDetects bullying and harassment in text content.\n\n```typescript\nconst result = await tuteliq.detectBullying({\n  content: \"Nobody likes you, just leave\",\n  context: 'chat'  // or { ageGroup: '11-13', relationship: 'classmates' }\n})\n\nconsole.log(result.is_bullying)      // true\nconsole.log(result.severity)         // 'medium' | 'high' | 'critical'\nconsole.log(result.bullying_type)    // ['exclusion', 'verbal_abuse']\nconsole.log(result.confidence)       // 0.92\nconsole.log(result.risk_score)       // 0.75\nconsole.log(result.rationale)        // \"Direct exclusion language...\"\nconsole.log(result.recommended_action) // 'flag_for_review'\nconsole.log(result.action_detail)      // \"Route to a moderator within the hour.\"\n```\n\n`recommended_action` is the field to branch on. It is one of `none`, `monitor`,\n`flag_for_review`, `block` or `immediate_intervention`, ordered weakest to\nstrongest, and is stable across releases. Prefer it over `is_bullying`, which\nfires on monitor-only cases too:\n\n```typescript\nimport { isActionable } from '@tuteliq/sdk'\n\nif (isActionable(result.recommended_action)) {\n  // flag_for_review or stronger — a human should see this\n}\n```\n\n#### `detectGrooming(input)`\n\nAnalyzes conversation threads for grooming patterns.\n\n```typescript\nconst result = await tuteliq.detectGrooming({\n  messages: [\n    { role: 'adult', content: \"This is our special secret\" },\n    { role: 'child', content: \"Ok I won't tell anyone\" }\n  ],\n  childAge: 12\n})\n\nconsole.log(result.grooming_risk)    // 'none' | 'low' | 'medium' | 'high' | 'critical'\nconsole.log(result.flags)            // ['secrecy', 'isolation', 'trust_building']\nconsole.log(result.confidence)       // 0.89\nconsole.log(result.risk_score)       // 0.85\nconsole.log(result.rationale)        // \"Multiple grooming indicators...\"\nconsole.log(result.recommended_action) // 'immediate_intervention'\n\n// Per-message breakdown (optional, returned on conversation-aware endpoints)\nif (result.message_analysis) {\n  for (const m of result.message_analysis) {\n    console.log(`Message ${m.message_index}: risk=${m.risk_score}, flags=${m.flags}, summary=${m.summary}`)\n  }\n}\n```\n\n#### `detectUnsafe(input)`\n\nIdentifies potentially dangerous or harmful content.\n\n```typescript\nconst result = await tuteliq.detectUnsafe({\n  content: \"I don't want to be here anymore\"\n})\n\nconsole.log(result.unsafe)           // true\nconsole.log(result.categories)       // ['self_harm', 'crisis']\nconsole.log(result.severity)         // 'critical'\nconsole.log(result.risk_score)       // 0.9\nconsole.log(result.rationale)        // \"Expression of suicidal ideation...\"\nconsole.log(result.recommended_action) // 'immediate_intervention'\n```\n\n#### `analyze(content)`\n\nQuick combined analysis — runs bullying and unsafe detection in parallel.\n\n> **Note**: This method fires one API call per detection type included (default: 2 calls for bullying + unsafe). Each call counts against your monthly quota. Use `include` to run only the checks you need.\n\n```typescript\n// Simple string input (costs 2 API calls: bullying + unsafe)\nconst result = await tuteliq.analyze(\"Message to check\")\n\n// With options — run only bullying (costs 1 API call)\nconst result = await tuteliq.analyze({\n  content: \"Message to check\",\n  context: 'social_media',\n  include: ['bullying', 'unsafe']  // Select which checks to run\n})\n\nconsole.log(result.risk_level)       // 'safe' | 'low' | 'medium' | 'high' | 'critical'\nconsole.log(result.risk_score)       // 0.0 - 1.0\nconsole.log(result.summary)          // \"Bullying detected (medium). Unsafe content: self_harm\"\nconsole.log(result.bullying)         // Full bullying result (if included)\nconsole.log(result.unsafe)           // Full unsafe result (if included)\nconsole.log(result.recommended_action) // Combined recommendation\n```\n\n---\n\n### Fraud & Harm Detection\n\nAll fraud and harm detection methods share the same `DetectionInput` and return a unified `DetectionResult`:\n\n```typescript\nimport type { DetectionInput, DetectionResult } from '@tuteliq/sdk'\n```\n\n**Input:**\n\n```typescript\n{\n  content: string,                                      // Text content to analyze\n  context?: ContextInput,                               // Optional analysis context\n  includeEvidence?: boolean,                            // Include evidence excerpts\n  supportThreshold?: 'low' | 'medium' | 'high' | 'critical',  // Crisis support threshold\n  external_id?: string,                                 // Tracking ID\n  customer_id?: string,                                 // Customer ID\n  metadata?: Record<string, unknown>,                   // Custom metadata\n}\n```\n\n**Result:**\n\n```typescript\n{\n  endpoint: string,                    // e.g., 'social-engineering'\n  detected: boolean,                   // Whether a threat was detected\n  severity: number,                    // 0.0 - 1.0\n  confidence: number,                  // 0.0 - 1.0\n  risk_score: number,                  // Age-adjusted risk score (0.0 - 1.0)\n  level: 'none' | 'low' | 'medium' | 'high' | 'critical',\n  categories: DetectionCategory[],     // Detected categories with tags and confidence\n  evidence?: DetectionEvidence[],      // Evidence excerpts (if includeEvidence was true)\n  age_calibration?: AgeCalibration,    // Age calibration details\n  recommended_action: RecommendedAction, // 'none' | 'monitor' | 'flag_for_review' | 'block' | 'immediate_intervention'\n  action_detail?: string,              // Human-readable expansion; do not branch on it\n  rationale: string,\n  language: string,                    // Detected language code\n  language_status: LanguageStatus,     // 'stable' | 'beta'\n  credits_used?: number,\n  processing_time_ms?: number,\n}\n```\n\n#### Context Fields\n\nAll detection methods accept an optional `context` object:\n\n| Field | Type | Effect |\n|-------|------|--------|\n| `ageGroup` | `string` | Age group (e.g., `\"10-12\"`, `\"13-15\"`, `\"under 18\"`). Triggers age-calibrated scoring. |\n| `language` | `string` | ISO 639-1 code. Auto-detected if omitted. |\n| `platform` | `string` | Platform name (e.g., `\"Discord\"`, `\"Roblox\"`). Adjusts for platform norms. |\n| `sender_trust` | `string` | `\"verified\"`, `\"trusted\"`, or `\"unknown\"`. See below. |\n| `sender_name` | `string` | Sender identifier (used with `sender_trust`). |\n| `conversation_history` | `array` | Prior messages for context-aware analysis. |\n\n**`sender_trust` behavior:** When set to `\"verified\"` or `\"trusted\"`, the API fully suppresses `AUTH_IMPERSONATION` — a verified sender cannot be impersonating an authority. Routine urgency (schedules, deadlines) is also suppressed. Only genuinely malicious content (credential theft, phishing links, financial demands) will flag a verified sender. This prevents false positives on legitimate institutional messages.\n\n#### `detectSocialEngineering(input)`\n\nDetects social engineering tactics such as pretexting, urgency fabrication, trust exploitation, and authority impersonation.\n\n```typescript\nconst result = await tuteliq.detectSocialEngineering({\n  content: \"Your account will be suspended unless you verify your details immediately\",\n  includeEvidence: true,\n  context: { sender_trust: 'unknown' }\n})\n\nconsole.log(result.detected)        // true\nconsole.log(result.level)           // 'high'\nconsole.log(result.categories)      // [{ tag: 'URGENCY_FABRICATION', label: 'Urgency Fabrication', confidence: 0.9 }]\nconsole.log(result.evidence)        // [{ text: 'suspended unless', tactic: 'URGENCY_FABRICATION', weight: 0.9 }]\nconsole.log(result.rationale)       // \"Classic urgency-based social engineering...\"\n```\n\n#### `detectAppFraud(input)`\n\nDetects app-based fraud patterns such as fake investment platforms, phishing apps, subscription traps, and malicious download links.\n\n```typescript\nconst result = await tuteliq.detectAppFraud({\n  content: \"Download this app to earn $500/day with guaranteed returns!\"\n})\n```\n\n#### `detectRomanceScam(input)`\n\nDetects romance scam patterns such as love-bombing, financial requests, identity deception, and emotional manipulation.\n\n```typescript\nconst result = await tuteliq.detectRomanceScam({\n  content: \"I know we just met online but I need help with a medical bill. I'll pay you back, I promise.\"\n})\n```\n\n#### `detectMuleRecruitment(input)`\n\nDetects money mule recruitment tactics such as easy-money offers, bank account sharing requests, and laundering facilitation.\n\n```typescript\nconst result = await tuteliq.detectMuleRecruitment({\n  content: \"Easy job, just receive money in your bank and forward 90% to this account\"\n})\n```\n\n#### `detectGamblingHarm(input)`\n\nDetects gambling-related harm indicators such as chasing losses, borrowing to gamble, concealment behavior, and emotional distress.\n\n```typescript\nconst result = await tuteliq.detectGamblingHarm({\n  content: \"I lost everything again but I know if I just bet one more time I can win it all back\"\n})\n```\n\n#### `detectCoerciveControl(input)`\n\nDetects coercive control patterns such as isolation tactics, financial control, monitoring behavior, threats, and emotional manipulation.\n\n```typescript\nconst result = await tuteliq.detectCoerciveControl({\n  content: \"You're not allowed to see your friends anymore. Give me your phone, I need to check your messages.\"\n})\n```\n\n#### `detectVulnerabilityExploitation(input)`\n\nDetects exploitation of vulnerable individuals including targeting the elderly, disabled, financially distressed, or emotionally vulnerable. Returns a `cross_endpoint_modifier` (1.0-2.0) when used with `analyseMulti`.\n\n```typescript\nconst result = await tuteliq.detectVulnerabilityExploitation({\n  content: \"Since your husband passed, you must be so lonely. I can help manage your finances.\"\n})\n```\n\n#### `detectRadicalisation(input)`\n\nDetects radicalisation indicators such as extremist rhetoric, us-vs-them framing, calls to action, conspiracy narratives, and ideological grooming.\n\n```typescript\nconst result = await tuteliq.detectRadicalisation({\n  content: \"They are the enemy. Only we understand the truth. It's time to take action.\"\n})\n```\n\n---\n\n### Multi-Endpoint Analysis\n\n#### `analyseMulti(input)`\n\nRun multiple detection endpoints on a single piece of content in one API call. When `vulnerability-exploitation` is included, its cross-endpoint modifier automatically adjusts severity scores across all other results.\n\n```typescript\nimport { Detection } from '@tuteliq/sdk'\n\nconst result = await tuteliq.analyseMulti({\n  content: \"Suspicious message content\",\n  detections: [\n    Detection.SOCIAL_ENGINEERING,\n    Detection.ROMANCE_SCAM,\n    Detection.VULNERABILITY_EXPLOITATION\n  ],\n  includeEvidence: true,\n  supportThreshold: 'medium',\n})\n\nconsole.log(result.summary.total_endpoints)     // 3\nconsole.log(result.summary.detected_count)       // 2\nconsole.log(result.summary.highest_risk)         // { endpoint: 'romance-scam', risk_score: 0.85 }\nconsole.log(result.summary.overall_risk_level)   // 'high'\nconsole.log(result.cross_endpoint_modifier)      // 1.3 (vulnerability modifier)\nconsole.log(result.credits_used)                 // 3\n\n// Individual results\nfor (const r of result.results) {\n  console.log(`${r.endpoint}: detected=${r.detected}, risk=${r.risk_score}, level=${r.level}`)\n}\n```\n\n**Available detection endpoints:**\n\n| Endpoint ID | Method |\n|-------------|--------|\n| `bullying` | `detectBullying` |\n| `grooming` | `detectGrooming` |\n| `unsafe` | `detectUnsafe` |\n| `social-engineering` | `detectSocialEngineering` |\n| `app-fraud` | `detectAppFraud` |\n| `romance-scam` | `detectRomanceScam` |\n| `mule-recruitment` | `detectMuleRecruitment` |\n| `gambling-harm` | `detectGamblingHarm` |\n| `coercive-control` | `detectCoerciveControl` |\n| `vulnerability-exploitation` | `detectVulnerabilityExploitation` |\n| `radicalisation` | `detectRadicalisation` |\n\n---\n\n### Media Analysis\n\n#### `analyzeVoice(input)`\n\nTranscribes audio and runs safety analysis on the transcript. Accepts `Buffer` or file data.\n\n```typescript\nimport { readFileSync } from 'fs'\n\nconst result = await tuteliq.analyzeVoice({\n  file: readFileSync('./recording.mp3'),\n  filename: 'recording.mp3',\n  analysisType: 'all',           // 'bullying' | 'unsafe' | 'grooming' | 'emotions' | 'all'\n  ageGroup: '11-13',\n  fileId: 'my-file-ref-123',    // Optional: echoed in response\n})\n\nconsole.log(result.transcription.text)       // Full transcript\nconsole.log(result.transcription.segments)   // Timestamped segments\nconsole.log(result.analysis?.bullying)       // Bullying analysis on transcript\nconsole.log(result.overall_risk_score)       // 0.0 - 1.0\nconsole.log(result.overall_severity)         // 'none' | 'low' | 'medium' | 'high' | 'critical'\nconsole.log(result.recommended_action)       // branch on this\nconsole.log(result.rationale)                // why this verdict was reached\n```\n\nSupported audio formats: mp3, wav, m4a, ogg, flac, webm, mp4 (max 25MB).\n\n#### `analyzeImage(input)`\n\nAnalyzes images for visual safety concerns and extracts text via OCR. If text is found, runs text safety analysis.\n\n```typescript\nimport { readFileSync } from 'fs'\n\nconst result = await tuteliq.analyzeImage({\n  file: readFileSync('./screenshot.png'),\n  filename: 'screenshot.png',\n  analysisType: 'all',           // 'bullying' | 'unsafe' | 'emotions' | 'all'\n  fileId: 'img-ref-456',        // Optional: echoed in response\n})\n\nconsole.log(result.vision.extracted_text)       // OCR text\nconsole.log(result.vision.visual_severity)      // Visual content severity\nconsole.log(result.vision.visual_categories)    // Visual harm categories\nconsole.log(result.text_analysis?.bullying)     // Text safety analysis (if OCR found text)\nconsole.log(result.overall_risk_score)          // 0.0 - 1.0\nconsole.log(result.overall_severity)            // Combined severity\nconsole.log(result.recommended_action)          // branch on this\nconsole.log(result.rationale)                   // why this verdict was reached\n```\n\nThe media endpoints return the same verdict fields as the text endpoints, so a\nsingle code path can route everything. `recommended_action` on an image takes\nthe stronger of the visual verdict and the OCR text verdict, so a screenshot of\nabusive text still routes correctly even though the picture itself is benign:\n\n```typescript\nimport { isActionable } from '@tuteliq/sdk'\n\nif (isActionable(result.recommended_action)) {\n  // flag_for_review or stronger — a human should see this\n}\n```\n\nSupported image formats: png, jpg, jpeg, gif, webp (max 10MB).\n\n#### `analyzeDocument(input)`\n\nUpload a PDF for per-page multi-endpoint safety analysis. Text is extracted from each page, detection endpoints run in parallel, and results are aggregated with an overall risk score. Zero-retention: no document data is stored after processing.\n\n```typescript\nimport { readFileSync } from 'fs'\n\nconst result = await tuteliq.analyzeDocument({\n  file: readFileSync('./report.pdf'),\n  filename: 'report.pdf',\n  endpoints: ['unsafe', 'coercive-control', 'radicalisation'],  // Optional (these are the defaults)\n  ageGroup: '13-15',                   // Optional: age-calibrated scoring\n  language: 'en',                      // Optional: auto-detected if omitted\n  fileId: 'doc-ref-789',              // Optional: echoed in response\n  supportThreshold: 'high',           // Optional: when to include crisis helplines\n})\n\nconsole.log(result.document_hash)          // SHA-256 for chain-of-custody\nconsole.log(result.total_pages)            // Total pages in PDF\nconsole.log(result.pages_analyzed)         // Pages with extractable text\nconsole.log(result.overall_risk_score)     // 0.0 - 1.0\nconsole.log(result.overall_severity)       // 'none' | 'low' | 'medium' | 'high' | 'critical'\nconsole.log(result.flagged_pages)          // Pages with risk >= 0.3\nconsole.log(result.detected_endpoints)     // Endpoints that found threats\nconsole.log(result.credits_used)           // Dynamic: max(3, pages × endpoints)\n\n// Per-page results\nfor (const page of result.page_results) {\n  console.log(`Page ${page.page_number}: ${page.page_severity}`)\n  for (const r of page.results) {\n    if (r.detected) console.log(`  ${r.endpoint}: ${r.rationale}`)\n  }\n}\n```\n\nAvailable endpoints: `unsafe`, `bullying`, `grooming`, `social-engineering`, `coercive-control`, `radicalisation`, `romance-scam`, `mule-recruitment`. Supported format: PDF only (max 50MB, 100 pages).\n\n#### `voiceStream(config?, handlers?)`\n\nReal-time voice streaming with live safety analysis over WebSocket. Requires the `ws` package:\n\n```bash\nnpm install ws\n```\n\n```typescript\nconst session = tuteliq.voiceStream(\n  { intervalSeconds: 10, analysisTypes: ['bullying', 'unsafe'] },\n  {\n    onTranscription: (e) => console.log('Transcript:', e.text),\n    onAlert: (e) => console.log('Alert:', e.category, e.severity),\n  }\n)\n\n// Send audio chunks as they arrive\nsession.sendAudio(audioBuffer)\n\n// End session and get summary\nconst summary = await session.end()\nconsole.log('Risk:', summary.overall_risk)\nconsole.log('Score:', summary.overall_risk_score)\nconsole.log('Full transcript:', summary.transcript)\n```\n\n---\n\n### Synthetic Content Detection\n\nDetect AI-generated text, images, audio, and video with multi-signal forensic analysis. Designed for child safety — detects synthetic CSAM, deepfakes, and AI-generated impersonation content.\n\n#### `detectSyntheticText(input)`\n\nAnalyzes text for AI-generation indicators. Uses 10 child-safety-focused categories including synthetic CSAM narratives, deepfake impersonation, and AI-generated grooming scripts.\n\n```typescript\nconst result = await tuteliq.detectSyntheticText({\n  content: \"Text to analyze for AI generation indicators\",\n  context: { ageGroup: '11-13' },\n})\n\nconsole.log(result.detected)          // true\nconsole.log(result.classification)    // 'confirmed_synthetic' | 'suspected_synthetic' | 'unknown' | 'confirmed_authentic'\nconsole.log(result.confidence)        // 0.87\nconsole.log(result.risk_score)        // 0.75\nconsole.log(result.level)             // 'high'\nconsole.log(result.categories)        // [{ tag: 'SYNTHETIC_CSAM', label: '...', confidence: 0.9 }]\nconsole.log(result.rationale)         // \"AI-generated text with...\"\nconsole.log(result.recommended_action) // 'immediate_intervention'\n```\n\n#### `detectSyntheticImage(input)`\n\nMulti-signal forensic image analysis using 6 parallel engines: vision AI, EXIF metadata, pixel statistics, C2PA Content Credentials, watermark detection, and perceptual hashing.\n\n```typescript\nimport { readFileSync } from 'fs'\n\nconst result = await tuteliq.detectSyntheticImage({\n  file: readFileSync('./suspect-image.jpg'),\n  filename: 'suspect-image.jpg',\n  ageGroup: '13-15',\n})\n\n// Classification\nconsole.log(result.classification)              // 'confirmed_synthetic'\nconsole.log(result.confidence)                  // 0.94\nconsole.log(result.level)                       // 'critical'\n\n// Vision AI forensic analysis\nconsole.log(result.vision.is_likely_synthetic)  // true\nconsole.log(result.vision.artifacts)            // ['smooth_skin_texture', 'inconsistent_lighting']\nconsole.log(result.vision.face_analysis)        // \"Uncanny valley facial features...\"\n\n// EXIF/metadata analysis\nconsole.log(result.metadata_analysis.has_exif)             // false\nconsole.log(result.metadata_analysis.ai_generator_detected) // true\nconsole.log(result.metadata_analysis.ai_generator)         // 'Midjourney'\nconsole.log(result.metadata_analysis.suspicious_absence)   // true\n\n// C2PA Content Credentials (when present)\nif (result.provenance) {\n  console.log(result.provenance.has_c2pa)         // true\n  console.log(result.provenance.is_ai_generated)  // true\n  console.log(result.provenance.ai_tool)          // 'DALL-E 3'\n}\n\n// Multi-signal ensemble\nconsole.log(result.forensic_signals.signal_count)              // 14\nconsole.log(result.forensic_signals.combined_confidence_boost) // 0.25\n\n// Perceptual hash (for known-image matching)\nconsole.log(result.perceptual_hash)            // 'a3f5c7d901e2b4f8'\n\n// Known synthetic match (if pHash matches a known AI-generated image)\nif (result.known_synthetic_match) {\n  console.log(result.known_synthetic_match.distance)  // 3\n  console.log(result.known_synthetic_match.category)  // 'SYNTHETIC_CSAM'\n}\n```\n\nSupported formats: png, jpg, jpeg, gif, webp (max 10MB).\n\n#### `detectSyntheticAudio(input)`\n\nDual-signal audio forensics: transcript analysis + mel spectrogram vision + quantitative audio statistics. Detects AI-generated voice clones, TTS output, and synthetic speech.\n\n```typescript\nimport { readFileSync } from 'fs'\n\nconst result = await tuteliq.detectSyntheticAudio({\n  file: readFileSync('./voice-message.mp3'),\n  filename: 'voice-message.mp3',\n})\n\nconsole.log(result.classification)     // 'suspected_synthetic'\nconsole.log(result.confidence)         // 0.78\n\n// Transcription\nconsole.log(result.transcription?.text)  // \"Transcribed audio content...\"\n\n// Quantitative audio stats\nif (result.audio_stats) {\n  console.log(result.audio_stats.dynamic_range)   // 12.5  (dB — low = suspicious)\n  console.log(result.audio_stats.silence_ratio)    // 0.02  (low = no natural pauses)\n  console.log(result.audio_stats.flat_factor)      // 0.8   (high = uniform/synthetic)\n}\n\n// Spectral signals from mel spectrogram analysis\nconsole.log(result.spectral_signals)  // ['low_dynamic_range', 'missing_breath_noise', 'uniform_pitch']\n```\n\nSupported formats: mp3, wav, m4a, ogg, flac, webm, mp4 (max 25MB).\n\n#### `detectSyntheticVideo(input)`\n\n5-track video analysis: per-frame vision forensics, temporal face consistency, lip-sync correlation, spectral audio analysis, and transcript detection.\n\n```typescript\nimport { readFileSync } from 'fs'\n\nconst result = await tuteliq.detectSyntheticVideo({\n  file: readFileSync('./suspect-video.mp4'),\n  filename: 'suspect-video.mp4',\n  maxFrames: 10,  // Extract up to 10 frames (default: 6, max: 20)\n})\n\nconsole.log(result.classification)     // 'confirmed_synthetic'\nconsole.log(result.confidence)         // 0.91\nconsole.log(result.video.duration_seconds)   // 15.2\nconsole.log(result.video.frames_analyzed)    // 10\nconsole.log(result.video.has_audio)          // true\n\n// Temporal face consistency (detects face-swapped deepfakes)\nif (result.temporal_consistency) {\n  console.log(result.temporal_consistency.identity_consistency_score) // 0.4 (low = face drift)\n  console.log(result.temporal_consistency.landmark_stability_score)   // 0.3 (low = jitter)\n  console.log(result.temporal_consistency.temporal_consistency_score) // 0.35\n  console.log(result.temporal_consistency.anomalous_frame_pairs)     // [{ frame_a: 3, frame_b: 4, distance: 0.7 }]\n  console.log(result.temporal_consistency.signals)                   // ['face_identity_drift', 'landmark_jitter']\n}\n\n// Lip-sync correlation (detects dubbed deepfakes)\nif (result.lip_sync) {\n  console.log(result.lip_sync.correlation)                 // 0.15 (low = poor sync)\n  console.log(result.lip_sync.has_silent_mouth_movement)   // true\n  console.log(result.lip_sync.has_voice_without_movement)  // false\n  console.log(result.lip_sync.signals)                     // ['poor_lip_sync', 'silent_mouth_movement']\n}\n```\n\nSupported formats: mp4, webm, avi, mov (max 100MB).\n\n#### `getSyntheticProfile(customerId)` (deprecated)\n\n> ⚠️ **Deprecated:** the backing API route was never shipped and this method returns a 404. It will be removed in the next major version.\n\nRetrieve account-level synthetic content profiling — a 30-day rolling window of all synthetic detections for a given customer.\n\n```typescript\nconst profile = await tuteliq.getSyntheticProfile('cust_xyz789')\n\nconsole.log(profile.total_items)                // 50\nconsole.log(profile.synthetic_count)            // 42\nconsole.log(profile.authentic_count)            // 6\nconsole.log(profile.account_synthetic_score)    // 0.84\nconsole.log(profile.trend)                      // 'increasing' | 'stable' | 'decreasing'\nconsole.log(profile.category_distribution)      // { DEEPFAKE_IMPERSONATION: 15, SYNTHETIC_CSAM: 3, ... }\nconsole.log(profile.avg_confidence)             // 0.82\nconsole.log(profile.window_days)                // 30\n```\n\n---\n\n### Emotional Analysis\n\n#### `analyzeEmotions(input)`\n\nSummarizes emotional signals in content or conversations.\n\n```typescript\n// Single content\nconst result = await tuteliq.analyzeEmotions({\n  content: \"I'm so stressed about everything lately\"\n})\n\n// Or conversation history\nconst result = await tuteliq.analyzeEmotions({\n  messages: [\n    { sender: 'child', content: \"I failed the test\" },\n    { sender: 'child', content: \"Everyone else did fine\" },\n    { sender: 'child', content: \"I'm so stupid\" }\n  ]\n})\n\nconsole.log(result.dominant_emotions)   // ['anxiety', 'sadness', 'frustration']\nconsole.log(result.emotion_scores)      // { anxiety: 0.8, sadness: 0.6, ... }\nconsole.log(result.trend)               // 'improving' | 'stable' | 'worsening'\nconsole.log(result.summary)             // \"Child expressing academic anxiety...\"\nconsole.log(result.recommended_followup) // \"Check in about school stress...\"\n```\n\n---\n\n### Guidance & Reports\n\n#### `getActionPlan(input)`\n\nGenerates age-appropriate action guidance.\n\n```typescript\nconst plan = await tuteliq.getActionPlan({\n  situation: 'Someone is spreading rumors about me at school',\n  childAge: 12,\n  audience: 'child',  // 'child' | 'parent' | 'educator' | 'platform'\n  severity: 'medium'\n})\n\nconsole.log(plan.audience)       // 'child'\nconsole.log(plan.steps)          // ['Talk to a trusted adult', ...]\nconsole.log(plan.tone)           // 'supportive'\nconsole.log(plan.reading_level)  // 'grade_5'\n```\n\n#### `generateReport(input)`\n\nCreates structured incident summaries for professional review.\n\n```typescript\nconst report = await tuteliq.generateReport({\n  messages: [\n    { sender: 'user1', content: 'Threatening message' },\n    { sender: 'child', content: 'Please stop' }\n  ],\n  childAge: 14,\n  incident: {\n    type: 'harassment',\n    occurredAt: new Date()\n  }\n})\n\nconsole.log(report.summary)                  // \"Incident summary...\"\nconsole.log(report.risk_level)               // 'low' | 'medium' | 'high' | 'critical'\nconsole.log(report.categories)               // ['bullying', 'threats']\nconsole.log(report.recommended_next_steps)   // ['Document incident', ...]\n```\n\n---\n\n### Verification\n\nSession-based age and identity verification. The SDK creates a verification session and provides a URL — the user completes the verification flow (document capture, liveness checks, selfie) in a hosted web UI. Your application polls for the result.\n\n#### How It Works\n\n1. **Create a session** — call `createVerificationSession()` with the desired mode\n2. **Open the URL** — redirect the user or open `session.url` in a new tab / web view\n3. **Poll for result** — call `getVerificationSession()` until `status` is `completed` or `failed`\n4. **Read the result** — access age or identity verification data from the response\n\n#### `createVerificationSession(input)`\n\nCreates a verification session and returns a URL for the user to complete the flow. Costs **10 credits** (age) or **15 credits** (identity) when the user completes the verification.\n\n```typescript\nimport { Tuteliq, VerificationMode, DocumentType } from '@tuteliq/sdk'\n\nconst tuteliq = new Tuteliq(process.env.TUTELIQ_API_KEY)\n\n// Age verification\nconst session = await tuteliq.createVerificationSession({\n  mode: VerificationMode.AGE,\n})\n\nconsole.log(session.session_id)  // 'abc123...'\nconsole.log(session.url)         // 'https://verify.tuteliq.ai/age/?session=...&token=...'\nconsole.log(session.expires_at)  // '2026-03-05T12:00:00Z'\n\n// Identity verification with options\nconst session = await tuteliq.createVerificationSession({\n  mode: VerificationMode.IDENTITY,\n  document_type: DocumentType.PASSPORT,     // Optional hint for the web UI\n  redirect_url: 'https://example.com/done', // Optional redirect after completion\n  external_id: 'user_123',                  // Optional tracking\n  customer_id: 'cust_456',                  // Optional multi-tenant ID\n  metadata: { source: 'onboarding' },       // Optional custom data\n})\n```\n\n#### `getVerificationSession(sessionId)`\n\nPolls the status of a verification session. When `status` is `completed`, the result contains full document intelligence — MRZ validation, barcode reading, document authenticity, face matching, and liveness.\n\n```typescript\nimport { VerificationSessionStatus } from '@tuteliq/sdk'\n\nconst session = await tuteliq.getVerificationSession('abc123...')\n\nconsole.log(session.status)  // VerificationSessionStatus.COMPLETED\nconsole.log(session.mode)    // VerificationMode.AGE\n\nif (session.status === VerificationSessionStatus.COMPLETED && session.result) {\n  // Core result\n  console.log(session.result.status)            // 'verified' | 'failed' | 'needs_review'\n  console.log(session.result.age)               // 22\n  console.log(session.result.date_of_birth)     // '1990-01-15'\n  console.log(session.result.is_minor)          // false\n  console.log(session.result.failure_reasons)   // []\n\n  // Document extraction and validation\n  console.log(session.result.document.ocr_confidence)       // 92\n  console.log(session.result.document.name_extracted)        // 'John Doe'\n  console.log(session.result.document.document_number)       // 'AB1234567'\n  console.log(session.result.document.document_number_valid) // true (45-country validation)\n  console.log(session.result.document.country_code)          // 'US'\n  console.log(session.result.document.expired)               // false\n\n  // MRZ validation (passports, ID cards with MRZ)\n  if (session.result.document.mrz_valid !== null) {\n    console.log(session.result.document.mrz_valid)              // true\n    console.log(session.result.document.mrz_fields?.surname)    // 'DOE'\n    console.log(session.result.document.mrz_fields?.given_names) // 'JOHN'\n    console.log(session.result.document.mrz_fields?.nationality) // 'USA'\n  }\n\n  // PDF417 barcode (US/CA driver's licenses)\n  if (session.result.barcode) {\n    console.log(session.result.barcode.format)              // 'PDF417'\n    console.log(session.result.barcode.has_aamva)           // true\n    console.log(session.result.barcode.fields?.first_name)  // 'JOHN'\n    console.log(session.result.barcode.fields?.state)       // 'CA'\n  }\n\n  // AI-powered document authenticity\n  if (session.result.document_authenticity) {\n    console.log(session.result.document_authenticity.is_authentic)              // true\n    console.log(session.result.document_authenticity.confidence)                // 0.92\n    console.log(session.result.document_authenticity.security_features_visible) // ['hologram', 'microprint']\n    console.log(session.result.document_authenticity.anomalies)                // []\n    console.log(session.result.document_authenticity.recapture_detected)       // false\n  }\n\n  // Face matching\n  console.log(session.result.face_match)  // { matched: true, distance: 0.3, confidence: 0.95 }\n\n  // Liveness\n  console.log(session.result.liveness)    // { valid: true }\n}\n```\n\n#### `cancelVerificationSession(sessionId)`\n\nCancels an active verification session. No credits are consumed.\n\n```typescript\nawait tuteliq.cancelVerificationSession('abc123...')\n```\n\n#### `getAgeVerification(verificationId)`\n\nRetrieves a past age verification result by its verification ID.\n\n```typescript\nconst result = await tuteliq.getAgeVerification('vrf_001')\n\nconsole.log(result.status)       // 'verified'\nconsole.log(result.age)          // 22\nconsole.log(result.is_minor)     // false\nconsole.log(result.created_at)   // '2026-03-05T11:00:00Z'\n```\n\n#### `getIdentityVerification(verificationId)`\n\nRetrieves a past identity verification result by its verification ID.\n\n```typescript\nconst result = await tuteliq.getIdentityVerification('vrf_002')\n\nconsole.log(result.status)         // 'verified'\nconsole.log(result.full_name)      // 'John Doe'\nconsole.log(result.date_of_birth)  // '1990-01-15'\nconsole.log(result.document_type)  // 'passport'\nconsole.log(result.country_code)   // 'US'\n```\n\n#### Verification Enums\n\nThe SDK provides enums to avoid hardcoded strings:\n\n```typescript\nimport {\n  VerificationMode,           // AGE, IDENTITY\n  DocumentType,               // PASSPORT, ID_CARD, DRIVERS_LICENSE\n  VerificationStatus,         // VERIFIED, FAILED, NEEDS_REVIEW\n  VerificationSessionStatus,  // PENDING, IN_PROGRESS, COMPLETED, FAILED, EXPIRED, CANCELLED\n} from '@tuteliq/sdk'\n```\n\n#### Polling Example\n\n```typescript\nimport { VerificationMode, VerificationSessionStatus } from '@tuteliq/sdk'\n\nconst session = await tuteliq.createVerificationSession({\n  mode: VerificationMode.AGE,\n})\n\n// Open session.url in the user's browser...\n\n// Poll until complete\nconst poll = setInterval(async () => {\n  const status = await tuteliq.getVerificationSession(session.session_id)\n\n  if (status.status === VerificationSessionStatus.COMPLETED) {\n    clearInterval(poll)\n    console.log('Verified! Is minor:', status.result?.is_minor)\n  }\n\n  if (status.status === VerificationSessionStatus.FAILED ||\n      status.status === VerificationSessionStatus.EXPIRED) {\n    clearInterval(poll)\n    console.log('Verification failed or expired')\n  }\n}, 5000)\n```\n\n---\n\n### Webhooks\n\n#### `listWebhooks()`\n\nList all webhooks for your account.\n\n```typescript\nconst { webhooks } = await tuteliq.listWebhooks()\nwebhooks.forEach(w => console.log(w.name, w.is_active, w.events))\n```\n\n#### `createWebhook(input)`\n\nCreate a new webhook. The returned `secret` is only shown once — store it securely.\n\n```typescript\nimport { WebhookEventType } from '@tuteliq/sdk'\n\nconst result = await tuteliq.createWebhook({\n  name: 'Safety Alerts',\n  url: 'https://example.com/webhooks/tuteliq',\n  events: [\n    WebhookEventType.INCIDENT_CRITICAL,\n    WebhookEventType.GROOMING_DETECTED,\n    WebhookEventType.SELF_HARM_DETECTED\n  ]\n})\n\nconsole.log('Webhook ID:', result.id)\nconsole.log('Secret:', result.secret) // Store this securely!\n```\n\n#### `updateWebhook(id, input)`\n\nUpdate an existing webhook.\n\n```typescript\nawait tuteliq.updateWebhook('webhook-123', {\n  name: 'Updated Name',\n  isActive: false,\n  events: [WebhookEventType.INCIDENT_CRITICAL]\n})\n```\n\n#### `deleteWebhook(id)`\n\n```typescript\nawait tuteliq.deleteWebhook('webhook-123')\n```\n\n#### `testWebhook(id)`\n\nSend a test payload to verify webhook delivery.\n\n```typescript\nconst result = await tuteliq.testWebhook('webhook-123')\nconsole.log('Success:', result.success)\nconsole.log('Latency:', result.latency_ms, 'ms')\n```\n\n#### `regenerateWebhookSecret(id)`\n\nRegenerate the signing secret. The old secret is immediately invalidated.\n\n```typescript\nconst { secret } = await tuteliq.regenerateWebhookSecret('webhook-123')\n// Update your verification logic with the new secret\n```\n\n---\n\n### Pricing\n\n#### `getPricing()`\n\nGet public pricing plans (no authentication required).\n\n```typescript\nconst { plans } = await tuteliq.getPricing()\nplans.forEach(p => console.log(p.name, p.price, p.features))\n```\n\n#### `getPricingDetails()`\n\nGet detailed pricing plans with monthly/yearly prices and rate limits.\n\n```typescript\nconst { plans } = await tuteliq.getPricingDetails()\nplans.forEach(p => {\n  console.log(p.name, `$${p.price_monthly}/mo`, `${p.api_calls_per_month} calls/mo`)\n})\n```\n\n---\n\n### Policy Configuration\n\n#### `getPolicy()` / `setPolicy(config)`\n\nCustomize safety thresholds for your application.\n\n```typescript\n// Get current policy\nconst policy = await tuteliq.getPolicy()\n\n// Update policy\nawait tuteliq.setPolicy({\n  bullying: {\n    enabled: true,\n    minRiskScoreToFlag: 0.5,\n    minRiskScoreToBlock: 0.8\n  },\n  selfHarm: {\n    enabled: true,\n    alwaysEscalate: true\n  }\n})\n```\n\n---\n\n### Policy Automation Rules\n\nDefine rules that act automatically when a detection result matches — block, flag, escalate, notify, or log-only.\n\n#### `listPolicyRules()` / `getPolicyRule(ruleId)`\n\n```typescript\nconst { rules } = await tuteliq.listPolicyRules()\nconst { rule } = await tuteliq.getPolicyRule('rule_123')\n```\n\n#### `createPolicyRule(input)` / `updatePolicyRule(ruleId, input)` / `deletePolicyRule(ruleId)`\n\n```typescript\nconst { rule } = await tuteliq.createPolicyRule({\n  name: 'Auto-escalate critical grooming',\n  enabled: true,\n  endpoints: ['grooming'],\n  conditions: { min_severity: 'critical' },        // also: min_risk_score, categories, age_groups\n  action: { type: 'escalate', escalate_to: 'safety-team' }, // block | flag | escalate | notify | log_only\n  priority: 0,\n})\n\nawait tuteliq.updatePolicyRule(rule.id, { enabled: false })\nawait tuteliq.deletePolicyRule(rule.id)\n```\n\n#### `evaluatePolicyRules(input)`\n\nDry-run your rules against a hypothetical detection result:\n\n```typescript\nconst { evaluation } = await tuteliq.evaluatePolicyRules({\n  endpoint: 'grooming',\n  risk_score: 0.92,\n  severity: 'critical',\n  categories: ['isolation'],\n})\nconsole.log(evaluation.policy_action)  // 'escalate'\nconsole.log(evaluation.rules_matched)  // which rules fired\n```\n\n---\n\n### Detection Settings\n\n#### `getDetectionSettings()` / `updateDetectionSettings(input)` / `resetDetectionSettings()`\n\nEnable or disable detection endpoints per account, and set a default context merged into every detection request. `enabled_endpoints` and `disabled_endpoints` are mutually exclusive.\n\n```typescript\nconst settings = await tuteliq.getDetectionSettings()\n\nawait tuteliq.updateDetectionSettings({\n  disabled_endpoints: ['gambling-harm'],\n  default_context: { age_group: '13_17', platform: 'discord' },\n})\n\nawait tuteliq.resetDetectionSettings()  // back to defaults\n```\n\n---\n\n### Threat Intelligence (Business+ tier)\n\nAnonymised, network-wide threat signals. Requires Business tier or higher — lower tiers receive a 403.\n\n#### `getIntelligenceTrends(options?)`\n\n```typescript\nconst trends = await tuteliq.getIntelligenceTrends({ days: 30, endpoint: 'grooming' })\nconsole.log(trends.total_signals, trends.emerging_threats)\n```\n\n#### `getEmergingThreats(days?)`\n\n```typescript\nconst { emerging_threats } = await tuteliq.getEmergingThreats(7)\n```\n\n#### `getWeeklyDigest()`\n\n```typescript\nconst digest = await tuteliq.getWeeklyDigest()\nconsole.log(digest.summary, digest.notable_changes)\n```\n\n#### `getRiskTrends(days?)`\n\n```typescript\nconst { trends } = await tuteliq.getRiskTrends(30)\n```\n\n---\n\n### Account Management (GDPR)\n\n#### `deleteAccountData()`\n\nPermanently delete all data associated with your account (Right to Erasure, GDPR Article 17).\n\n```typescript\nconst result = await tuteliq.deleteAccountData()\n\nconsole.log(result.message)        // \"All user data has been deleted\"\nconsole.log(result.deleted_count)  // 42\n```\n\n#### `exportAccountData()`\n\nExport all data associated with your account as JSON (Right to Data Portability, GDPR Article 20).\n\n```typescript\nconst data = await tuteliq.exportAccountData()\n\nconsole.log(data.userId)                    // 'user_123'\nconsole.log(data.exportedAt)                // '2026-02-11T...'\nconsole.log(Object.keys(data.data))         // ['api_keys', 'incidents', ...]\nconsole.log(data.data.incidents.length)     // 5\n```\n\n#### `recordConsent(input)`\n\nRecord user consent for data processing (GDPR Article 6).\n\n```typescript\nconst result = await tuteliq.recordConsent({\n  consentType: 'data_processing',\n  granted: true,\n})\n```\n\n#### `getConsentStatus(consentType)`\n\nGet current consent status for a specific consent type.\n\n```typescript\nconst status = await tuteliq.getConsentStatus('data_processing')\nconsole.log(status.granted)       // true\nconsole.log(status.granted_at)    // '2026-01-15T...'\n```\n\n#### `withdrawConsent(consentType)`\n\nWithdraw a previously granted consent.\n\n```typescript\nawait tuteliq.withdrawConsent('data_processing')\n```\n\n#### `rectifyData(input)`\n\nCorrect personal data (Right to Rectification, GDPR Article 16).\n\n```typescript\nconst result = await tuteliq.rectifyData({\n  field: 'email',\n  newValue: 'new@example.com',\n})\n```\n\n#### `getAuditLogs(options?)`\n\nGet audit trail of all data operations.\n\n```typescript\nconst logs = await tuteliq.getAuditLogs({ limit: 50 })\nlogs.entries.forEach(entry => {\n  console.log(entry.action, entry.timestamp, entry.details)\n})\n```\n\n---\n\n### Breach Management\n\n#### `logBreach(input)`\n\nLog a new data breach. Starts the 72-hour GDPR notification clock.\n\n```typescript\nconst result = await tuteliq.logBreach({\n  title: 'Unauthorized access to user data',\n  description: 'API key was exposed in a public repository',\n  severity: 'high',\n  affected_users: 150,\n})\n\nconsole.log(result.breach_id)          // 'breach_001'\nconsole.log(result.notification_deadline) // ISO timestamp (72 hours from now)\n```\n\n#### `listBreaches(options?)`\n\nList all data breaches, optionally filtered by status.\n\n```typescript\nconst { breaches } = await tuteliq.listBreaches({ status: 'open' })\nbreaches.forEach(b => console.log(b.title, b.status, b.created_at))\n```\n\n#### `getBreach(breachId)`\n\nGet details of a specific data breach.\n\n```typescript\nconst breach = await tuteliq.getBreach('breach_001')\nconsole.log(breach.title, breach.status, breach.affected_users)\n```\n\n#### `updateBreachStatus(breachId, input)`\n\nUpdate breach status and notification progress.\n\n```typescript\nawait tuteliq.updateBreachStatus('breach_001', {\n  status: 'resolved',\n  resolution_notes: 'API key rotated, affected users notified',\n})\n```\n\n---\n\n## Usage Tracking\n\nThe SDK automatically captures usage metadata from API responses:\n\n```typescript\nconst result = await tuteliq.detectBullying({ content: 'test' })\n\n// Each response includes the number of credits consumed\nconsole.log(result.credits_used)     // 1\n\n// Access cumulative usage stats (from response headers)\nconsole.log(tuteliq.usage)\n// { limit: 10000, used: 5234, remaining: 4766 }\n\n// Access request metadata\nconsole.log(tuteliq.lastRequestId)   // 'req_1a2b3c...'\nconsole.log(tuteliq.lastLatencyMs)   // 145\n```\n\n### Weighted Credits\n\nDifferent endpoints consume different amounts of credits based on complexity:\n\n| Method | Credits | Notes |\n|--------|---------|-------|\n| `detectBullying()` | 1 | Single text analysis |\n| `detectUnsafe()` | 1 | Single text analysis |\n| `detectGrooming()` | 1 per 10 msgs | `ceil(messages / 10)`, min 1 |\n| `detectSocialEngineering()` | 1 | Single text analysis |\n| `detectAppFraud()` | 1 | Single text analysis |\n| `detectRomanceScam()` | 1 | Single text analysis |\n| `detectMuleRecruitment()` | 1 | Single text analysis |\n| `detectGamblingHarm()` | 1 | Single text analysis |\n| `detectCoerciveControl()` | 1 | Single text analysis |\n| `detectVulnerabilityExploitation()` | 1 | Single text analysis |\n| `detectRadicalisation()` | 1 | Single text analysis |\n| `analyseMulti()` | 1 per endpoint | Sum of individual endpoint costs |\n| `analyzeEmotions()` | 1 per 10 msgs | `ceil(messages / 10)`, min 1 |\n| `getActionPlan()` | 2 | Longer generation |\n| `generateReport()` | 3 | Structured output |\n| `analyzeVoice()` | 5 | Transcription + analysis |\n| `analyzeImage()` | 3 | Vision + OCR + analysis |\n| `analyzeVideo()` | 10 | Key frame extraction + analysis |\n| `analyzeDocument()` | Dynamic | `max(3, pages × endpoints)` per document |\n| `detectSyntheticText()` | 2 | LLM-based synthetic text detection |\n| `detectSyntheticImage()` | 5 | 6-signal forensic pipeline |\n| `detectSyntheticAudio()` | 4-7 | Transcription + spectral analysis |\n| `detectSyntheticVideo()` | Dynamic | `2 + 3/frame + 2` (audio analysis) |\n| `getSyntheticProfile()` | 0 | Read-only, no cost |\n| `createVerificationSession()` (age) | 10 | Charged on completion |\n| `createVerificationSession()` (identity) | 15 | Charged on completion |\n\nThe `credits_used` field is included in every response body. Credit balance is also available via the `X-Credits-Remaining` response header.\n\n### Usage API Methods\n\n#### `getUsageSummary()`\n\nGet usage summary for the current billing period.\n\n```typescript\nconst summary = await tuteliq.getUsageSummary()\nconsole.log('Used:', summary.messages_used)\nconsole.log('Limit:', summary.message_limit)\nconsole.log('Percent:', summary.usage_percentage)\n```\n\n#### `getQuota()`\n\nGet current rate limit quota status.\n\n```typescript\nconst quota = await tuteliq.getQuota()\nconsole.log('Rate limit:', quota.limits.requestsPerMinute, '/min')\nconsole.log('Remaining this minute:', quota.remaining.requestsThisMinute)\n```\n\n#### `getUsageHistory(days?)`\n\nGet daily usage history for the past N days (1-30, defaults to 7).\n\n```typescript\nconst { days } = await tuteliq.getUsageHistory(14)\ndays.forEach(d => console.log(d.date, d.total_requests, d.success_requests))\n```\n\n#### `getUsageByTool(date?)`\n\nGet usage broken down by tool/endpoint.\n\n```typescript\nconst result = await tuteliq.getUsageByTool()\nconsole.log('Tools:', result.tools)       // { detectBullying: 150, detectGrooming: 45, ... }\nconsole.log('Endpoints:', result.endpoints) // { '/api/v1/safety/bullying': 150, ... }\n```\n\n#### `getUsageMonthly()`\n\nGet monthly usage, billing info, and upgrade recommendations.\n\n```typescript\nconst monthly = await tuteliq.getUsageMonthly()\nconsole.log('Tier:', monthly.tier_display_name)\nconsole.log('Used:', monthly.usage.used, '/', monthly.usage.limit)\nconsole.log('Days left:', monthly.billing.days_remaining)\n\nif (monthly.recommendations?.should_upgrade) {\n  console.log('Consider upgrading to:', monthly.recommendations.suggested_tier)\n}\n```\n\n---\n\n## Error Handling\n\nThe SDK provides typed error classes for different failure scenarios:\n\n```typescript\nimport {\n  Tuteliq,\n  TuteliqError,\n  AuthenticationError,\n  RateLimitError,\n  QuotaExceededError,\n  TierAccessError,\n  ValidationError,\n  NotFoundError,\n  ServerError,\n  TimeoutError,\n  NetworkError,\n} from '@tuteliq/sdk'\n\ntry {\n  const result = await tuteliq.detectBullying({ content: 'test' })\n} catch (error) {\n  if (error instanceof AuthenticationError) {\n    // 401 - Invalid or missing API key\n    console.error('Check your API key')\n  } else if (error instanceof TierAccessError) {\n    // 403 - Endpoint not available on your plan\n    console.error('Upgrade your plan:', error.suggestion)\n  } else if (error instanceof QuotaExceededError) {\n    // 429 - Monthly quota exceeded\n    console.error('Quota exceeded, upgrade or buy credits')\n  } else if (error instanceof RateLimitError) {\n    // 429 - Too many requests per minute\n    console.error('Rate limited, retry after:', error.retryAfter)\n  } else if (error instanceof ValidationError) {\n    // 400 - Invalid request parameters\n    console.error('Invalid input:', error.details)\n  } else if (error instanceof NotFoundError) {\n    // 404 - Resource not found\n    console.error('Resource not found')\n  } else if (error instanceof ServerError) {\n    // 5xx - Server error\n    console.error('Server error, try again later')\n  } else if (error instanceof TimeoutError) {\n    // Request timed out\n    console.error('Request timed out')\n  } else if (error instanceof NetworkError) {\n    // Network connectivity issue\n    console.error('Check your connection')\n  } else if (error instanceof TuteliqError) {\n    // Generic SDK error\n    console.error('Error:', error.message)\n  }\n}\n```\n\n---\n\n## Supported Languages (27)\n\nLanguage is auto-detected when not specified. Beta languages have good accuracy but may have edge cases compared to English. All 24 EU official languages + Ukrainian, Norwegian, and Turkish.\n\n| Language | Code | Status |\n|----------|------|--------|\n| English | `en` | Stable |\n| Spanish | `es` | Beta |\n| Portuguese | `pt` | Beta |\n| French | `fr` | Beta |\n| German | `de` | Beta |\n| Italian | `it` | Beta |\n| Dutch | `nl` | Beta |\n| Polish | `pl` | Beta |\n| Romanian | `ro` | Beta |\n| Turkish | `tr` | Beta |\n| Greek | `el` | Beta |\n| Czech | `cs` | Beta |\n| Hungarian | `hu` | Beta |\n| Bulgarian | `bg` | Beta |\n| Croatian | `hr` | Beta |\n| Slovak | `sk` | Beta |\n| Slovenian | `sl` | Beta |\n| Lithuanian | `lt` | Beta |\n| Latvian | `lv` | Beta |\n| Estonian | `et` | Beta |\n| Maltese | `mt` | Beta |\n| Irish | `ga` | Beta |\n| Swedish | `sv` | Beta |\n| Norwegian | `no` | Beta |\n| Danish | `da` | Beta |\n| Finnish | `fi` | Beta |\n| Ukrainian | `uk` | Beta |\n\nEach language includes culture-specific safety guidelines covering local slang, grooming patterns, self-harm coded vocabulary, and filter evasion techniques.\n\n---\n\n## TypeScript Support\n\nFull TypeScript support with comprehensive type definitions:\n\n```typescript\nimport { Tuteliq } from '@tuteliq/sdk'\nimport type {\n  // Safety Results\n  BullyingResult,\n  GroomingResult,\n  UnsafeResult,\n  EmotionsResult,\n  ActionPlanResult,\n  ReportResult,\n  AnalyzeResult,\n\n  // Detection Results (Fraud & Safety Extended)\n  DetectionInput,\n  DetectionResult,\n  DetectionCategory,\n  DetectionEvidence,\n  AgeCalibration,\n  MessageAnalysis,\n  AnalyseMultiInput,\n  AnalyseMultiResult,\n  AnalyseMultiSummary,\n\n  // Media Results\n  VoiceAnalysisResult,\n  ImageAnalysisResult,\n  VisionResult,\n  TranscriptionResult,\n  TranscriptionSegment,\n\n  // Webhook Types\n  Webhook,\n  WebhookListResult,\n  CreateWebhookInput,\n  CreateWebhookResult,\n  UpdateWebhookInput,\n  TestWebhookResult,\n  RegenerateSecretResult,\n\n  // Pricing Types\n  PricingResult,\n  PricingDetailsResult,\n\n  // Usage Types\n  UsageHistoryResult,\n  UsageByToolResult,\n  UsageMonthlyResult,\n\n  // Safety Inputs\n  DetectBullyingInput,\n  DetectGroomingInput,\n  DetectUnsafeInput,\n  AnalyzeEmotionsInput,\n  GetActionPlanInput,\n  GenerateReportInput,\n  AnalyzeVoiceInput,\n  AnalyzeImageInput,\n\n  // Account (GDPR)\n  AccountDeletionResult,\n  AccountExportResult,\n  RecordConsentInput,\n  ConsentStatusResult,\n  ConsentActionResult,\n  RectifyDataInput,\n  RectifyDataResult,\n  AuditLogsResult,\n\n  // Breach Management\n  LogBreachInput,\n  LogBreachResult,\n  BreachListResult,\n  BreachResult,\n  UpdateBreachInput,\n\n  // Verification\n  CreateVerificationSessionInput,\n  VerificationSession,\n  VerificationSessionResult,\n  VerificationResult,\n  DocumentDetails,\n  MrzFields,\n  BarcodeResult,\n  DocumentAuthenticityResult,\n  FaceMatchResult,\n  LivenessResult,\n  VerificationRetrieveResult,\n  IdentityRetrieveResult,\n\n  // Synthetic Content Detection\n  DetectSyntheticTextInput,\n  SyntheticTextResult,\n  DetectSyntheticImageInput,\n  SyntheticImageResult,\n  SyntheticVisionResult,\n  MetadataAnalysis,\n  ProvenanceResult,\n  ForensicSignals,\n  KnownSyntheticMatch,\n  DetectSyntheticAudioInput,\n  SyntheticAudioResult,\n  AudioStats,\n  DetectSyntheticVideoInput,\n  SyntheticVideoResult,\n  TemporalConsistency,\n  LipSyncResult,\n  SyntheticProfile,\n  SyntheticClassification,\n\n  // Utilities\n  Usage,\n  ContextInput,\n  GroomingMessage,\n  EmotionMessage,\n  ReportMessage,\n} from '@tuteliq/sdk'\n```\n\n### Using Enums\n\nThe SDK exports enums for type-safe comparisons:\n\n```typescript\nimport {\n  Severity,\n  GroomingRisk,\n  RiskLevel,\n  RiskCategory,\n  AnalysisType,\n  ContentSeverity,\n  EmotionTrend,\n  WebhookEventType,\n  IncidentStatus,\n  ErrorCode,\n  Language,\n  LanguageStatus,\n  Detection,\n  VerificationMode,\n  DocumentType,\n  VerificationStatus,\n  VerificationSessionStatus,\n} from '@tuteliq/sdk'\n\n// Type-safe severity checks\nif (result.severity === Severity.CRITICAL) {\n  // Handle critical severity\n}\n\n// Grooming risk comparisons\nif (result.grooming_risk === GroomingRisk.HIGH) {\n  // Handle high grooming risk\n}\n\n// Detection endpoint IDs for multi-endpoint analysis\nconst result = await tuteliq.analyseMulti({\n  content: \"Message to analyze\",\n  detections: [Detection.SOCIAL_ENGINEERING, Detection.ROMANCE_SCAM],\n})\n\n// Language codes\nconsole.log(Language.EN)  // 'en'\nconsole.log(Language.PT)  // 'pt'\n\n// Verification mode\nconst session = await tuteliq.createVerificationSession({\n  mode: VerificationMode.AGE,\n  document_type: DocumentType.PASSPORT,\n})\n\n// Error code handling\nif (error.code === ErrorCode.RATE_LIMIT_EXCEEDED) {\n  // Handle rate limiting\n}\n```\n\nYou can also import enums separately:\n\n```typescript\nimport { Severity, RiskCategory } from '@tuteliq/sdk/constants'\n```\n\n---\n\n## Examples\n\n### Next.js Integration (App Router)\n\nUse a server-side API route to keep your API key secure:\n\n```typescript\n// app/api/safety/route.ts (server-side — API key stays on the server)\nimport { Tuteliq } from '@tuteliq/sdk'\nimport { NextResponse } from 'next/server'\n\nconst tuteliq = new Tuteliq(process.env.TUTELIQ_API_KEY!)\n\nexport async function POST(req: Request) {\n  const { message } = await req.json()\n  const result = await tuteliq.analyze(message)\n  return NextResponse.json(result)\n}\n```\n\n```typescript\n// app/components/MessageInput.tsx (client-side — no API key exposed)\n'use client'\nimport { useState } from 'react'\n\nfunction MessageInput() {\n  const [message, setMessage] = useState('')\n  const [warning, setWarning] = useState<string | null>(null)\n\n  const handleSubmit = async () => {\n    const res = await fetch('/api/safety', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json' },\n      body: JSON.stringify({ message }),\n    })\n    const result = await res.json()\n\n    if (result.risk_level !== 'safe') {\n      setWarning(result.summary)\n      return\n    }\n\n    // Submit message...\n  }\n\n  return (\n    <div>\n      <input value={message} onChange={e => setMessage(e.target.value)} />\n      {warning && <p className=\"warning\">{warning}</p>}\n      <button onClick={handleSubmit}>Send</button>\n    </div>\n  )\n}\n```\n\n### Express Middleware\n\n```typescript\nimport { Tuteliq, RateLimitError } from '@tuteliq/sdk'\nimport express from 'express'\n\nconst tuteliq = new Tuteliq(process.env.TUTELIQ_API_KEY)\n\nconst safetyMiddleware = async (req, res, next) => {\n  const { message } = req.body\n\n  try {\n    const result = await tuteliq.analyze(message)\n\n    if (result.risk_level === 'critical') {\n      return res.status(400).json({\n        error: 'Message blocked for safety reasons',\n        details: result.summary\n      })\n    }\n\n    req.safetyResult = result\n    next()\n  } catch (error) {\n    if (error instanceof RateLimitError) {\n      return res.status(429).json({ error: 'Too many requests' })\n    }\n    next(error)\n  }\n}\n\napp.post('/messages', safetyMiddleware, (req, res) => {\n  // Message passed safety check\n})\n```\n\n### Batch Processing\n\n```typescript\nconst messages = ['message1', 'message2', 'message3']\n\nconst results = await Promise.all(\n  messages.map(content => tuteliq.analyze(content))\n)\n\nconst flagged = results.filter(r => r.risk_level !== 'safe')\nconsole.log(`${flagged.length} messages flagged for review`)\n```\n\n---\n\n## Browser Support\n\nThe SDK works in browsers that support the Fetch API:\n\n```html\n<script type=\"module\">\n  import { Tuteliq } from 'https://esm.sh/@tuteliq/sdk'\n\n  const tuteliq = new Tuteliq('your-api-key')\n  const result = await tuteliq.analyze('Hello world')\n</script>\n```\n\n> **Note**: Never expose your API key in client-side code for production applications. Use a backend proxy to protect your credentials.\n\n---\n\n## Rate Limits & Pricing\n\nRate limits depend on your subscription tier:\n\n| Plan | Price | Credits/month | Rate Limit | Features |\n|------|-------|---------------|------------|----------|\n| **Starter** | Free | 1,000 | 60/min | 3 Safety endpoints, 1 API key, Community support |\n| **Indie** | $29/mo | 10,000 | 300/min | All endpoints, 2 API keys, Dashboard analytics |\n| **Pro** | $99/mo | 50,000 | 1,000/min | 5 API keys, Webhooks, Custom policy, Priority latency |\n| **Business** | $349/mo | 200,000 | 5,000/min | 20 API keys, SSO, SLA 99.9%, Compliance docs |\n| **Enterprise** | Custom | Unlimited | Custom | Dedicated infra, 24/7 support, SCIM, On-premise |\n\n**Credit Packs** (available to all tiers): 5K credits/$15 | 25K credits/$59 | 100K credits/$199\n\n> **Note:** Credits are weighted by endpoint complexity. A simple text check costs 1 credit, while voice analysis costs 5. See the [Weighted Credits](#weighted-credits) table above.\n\n---\n\n## Best Practices\n\n### Message Batching\n\nThe **bullying** and **unsafe content** methods analyze a single `text` field per request. If your platform receives messages one at a time (e.g., a chat app), concatenate a **sliding window of recent messages** into one string before calling the API. Single words or short fragments lack context for accurate detection and can be exploited to bypass safety filters.\n\n```typescript\n// Bad — each message analyzed in isolation, easily evaded\nfor (const msg of messages) {\n  await client.detectBullying({ content: msg });\n}\n\n// Good — recent messages analyzed together\nconst window = recentMessages.slice(-10).join(' ');\nawait client.detectBullying({ content: window });\n```\n\nThe **grooming** method already accepts a `messages[]` array and analyzes the full conversation in context.\n\n### PII Redaction\n\nPII redaction is **enabled by default** on the Tuteliq API. It automatically strips emails, phone numbers, URLs, social handles, IPs, and other PII from detection summaries and webhook payloads. The original text is still analyzed in full — only stored outputs are scrubbed. Set `PII_REDACTION_ENABLED=false` to disable.\n\n---\n\n## API Documentation\n\n- **Base URL**: `https://api.tuteliq.ai`\n- **Swagger UI**: [docs.tuteliq.ai](https://docs.tuteliq.ai)\n- **OpenAPI JSON**: [docs.tuteliq.ai/json](https://docs.tuteliq.ai/json)\n\n---\n\n## Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](https://github.com/Tuteliq/node/blob/main/CONTRIBUTING.md) for details.\n\n```bash\n# Clone the repo\ngit clone https://github.com/Tuteliq/node.git\ncd node\n\n# Install dependencies\nnpm install\n\n# Run tests\nnpm test\n\n# Build\nnpm run build\n```\n\n---\n\n## Support\n\n- **Documentation**: [docs.tuteliq.ai](https://docs.tuteliq.ai)\n- **Discord**: [discord.gg/7kbTeRYRXD](https://discord.gg/7kbTeRYRXD)\n- **Email**: support@tuteliq.ai\n- **Issues**: [GitHub Issues](https://github.com/Tuteliq/node/is","readmeFilename":"README.md"}