{"_id":"@premai/pcci-sdk-ts","_rev":"26-a8ae93b9947d042a7d3cb09e9f45d9b7","name":"@premai/pcci-sdk-ts","dist-tags":{"latest":"1.0.29"},"versions":{"1.0.7":{"name":"@premai/pcci-sdk-ts","version":"1.0.7","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.7","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"},{"name":"tech-premai","email":"tech@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bin":{"pcci-proxy":"dist/server.cjs"},"dist":{"shasum":"ad34a258d8488d6781b9f10273a267c4c13386fa","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.7.tgz","fileCount":19,"integrity":"sha512-zvfXG+I/DJ400DfzDDIEJV2m+UO59sk3i32sSVH3Nt0xhAF6Gsa7zcH6PVm/ILlHwZiNwKOkDv+0bQLW7GJk0g==","signatures":[{"sig":"MEUCIAr+fjKDriKdTFo3iQ/X7bStlCcmH0Nw3TCpTUcEojt7AiEA0DrNsK2WYmAIe0hwKGlE+xRsl6OGS8n1L8AQoGNvbBc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7647203},"main":"./dist/index.cjs","shasum":"ad34a258d8488d6781b9f10273a267c4c13386fa","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"scripts":{"dev":"ts-node script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"ts-node src/server.ts"},"_npmUser":{"name":"federico-prem","email":"federico@premai.io"},"_integrity":"sha512-zvfXG+I/DJ400DfzDDIEJV2m+UO59sk3i32sSVH3Nt0xhAF6Gsa7zcH6PVm/ILlHwZiNwKOkDv+0bQLW7GJk0g==","repository":{"url":"https://github.com/premai-io/pcci-sdk-ts"},"_npmVersion":"10.8.3","description":"","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.7_1768944806938_0.7243791395581389","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@premai/pcci-sdk-ts","version":"1.0.12","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.12","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/server.cjs"},"dist":{"shasum":"d038b6897feb737defa85a98623bdf0ff0729469","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.12.tgz","fileCount":19,"integrity":"sha512-+ZaHP90BX6rDssAFOQsyXk4SgJiaA/3YEhCAFDIsGzrQ1Q4QPRKzlBKM5fJELxkRXukZRwjcu3B3BuJARwz75Q==","signatures":[{"sig":"MEUCIQDLeId0LXpn1U7zD+Umn4Q8HMBwzIDI/6Z5fYcAtlujowIgJVUwZiWqJcxGI6TjrE8WtjlwjawILTuh3JLRDBV+HWA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7647698},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"392bdd313ce1e42e33d3725954f6d1968a2c0f4e","scripts":{"dev":"ts-node script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"ts-node src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.8.0","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.12_1769344061717_0.6290833825693305","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@premai/pcci-sdk-ts","version":"1.0.13","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.13","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/server.cjs"},"dist":{"shasum":"fed5935e5677b5f463fdfa7486d728a5edd22da3","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.13.tgz","fileCount":19,"integrity":"sha512-DhtURTjGKEFER7P795I/qL70pmmaI8v83ccyq4X+S5hJWMe56h6d9/lCsPp9O3yZff/F+Yh4C7VFu/izi2sjbQ==","signatures":[{"sig":"MEQCIB2KPvrOTV1e9QzyH7bqChhln90Gls8AmEXMd/b10LtdAiBizBpp6it7OqKayNdxQ8AaYySrQb4EvyDU+RAjWpEggQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7649747},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"965c0b6edd870c928d37183bc250436912cc3a87","scripts":{"dev":"ts-node script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"ts-node src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.8.0","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.13_1769545746654_0.8243348270678275","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@premai/pcci-sdk-ts","version":"1.0.14","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.14","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/server.cjs"},"dist":{"shasum":"0d10eae02917262c79013392c4cfbb9e27d781e0","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.14.tgz","fileCount":19,"integrity":"sha512-X8bUt8fBDvZRHn1Hc6JSx4M4ZgGw39ir48hRNus24OEIVvSEkI0tS1tQ+Xq0hYryT/XKqNh/gnpUu49sh/TCMw==","signatures":[{"sig":"MEUCIQC4GJr0B87wvAsZn+fPQfekmwEbRucqcH1SkLO1zDoXAgIgCFkZza/qWLCFFj15N34n3TA4a4bsh/wePNHBJIh7DPg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7651066},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"e02dd0d09d48ea0814598d76bed8587049ce9272","scripts":{"dev":"ts-node script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"ts-node src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.10.0","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.14_1770908113085_0.14774845920323942","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"@premai/pcci-sdk-ts","version":"1.0.15","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.15","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/server.cjs"},"dist":{"shasum":"ea7892114d9179f395bf15ada765025acdca6856","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.15.tgz","fileCount":21,"integrity":"sha512-KYWZsSi884vdc85ik2XwE/oYcYCuzGMMnueRs0NvuKBuvDeyS7L+6aEXziTVYVwYrhqYuMZUXrUK0/1Mn+c/HA==","signatures":[{"sig":"MEUCICCkzGgeG3wKI4Bxw7bC2zFYLyFiP+/r7xTtLCUfxViqAiEA67m7ZejtBbnC3jo9O80/cGtg5k7J8D+zvdPAVL7fefA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9966879},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"95b1310c86e75585fceed7a1c6c71a9589565e5a","scripts":{"dev":"ts-node script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"ts-node src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.12.0","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@premAI-io/prem-rs":"^0.1.6","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.15_1773943743083_0.5756504313683426","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"@premai/pcci-sdk-ts","version":"1.0.16","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.16","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/server.cjs"},"dist":{"shasum":"56f4ea26af57527edf40d6e6025257007562d49b","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.16.tgz","fileCount":21,"integrity":"sha512-Th8s/bOwp07Ik9F/p1SoTIg3c6Hx8toySYMdOBaAXb+oIFlBLQk7Ab9Vew6C17eRsR9hks+jGRQi9gmRKKrYXQ==","signatures":[{"sig":"MEYCIQDQhuQAPLj6lTS3GwJIuOlTj6yIogpBxVFFhyQpTx6z/QIhAIzL8P36XteNsjkA4mmUDQ/RMcWPX7SHy+8zyNDHqavA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9971533},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"bd1885978ff6f68130016f867549daac9078639f","scripts":{"dev":"ts-node script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"ts-node src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.12.0","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@premAI-io/prem-rs":"^0.1.6","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.16_1774132133030_0.21390355056047183","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"@premai/pcci-sdk-ts","version":"1.0.17","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.17","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/server.cjs"},"dist":{"shasum":"f868dbd101b28c4872c1678f15dc0f80f58991ab","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.17.tgz","fileCount":20,"integrity":"sha512-XNOI09WMFjwGSYMan+pcUSPTwQyAoEHeTZVYOBXUZjP8tbAW/SpnpAXKX6jMfeo7S6IYEdV+63Si0O3JSyTkXA==","signatures":[{"sig":"MEQCIDIsLXR8rZaxksNqx4NC+/cnYNqItAhWi6zUNbpKd03+AiAFPcwHe+CbvVlhPp4FMIzRXFZe45I0hZZyci2wr0WWxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":338571},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"4b31611af93e06792e2441b5ec802c2c9aea191b","scripts":{"dev":"ts-node script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"ts-node src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.12.0","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@premAI-io/prem-rs":"^0.1.6","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.17_1774137378379_0.5823062400312167","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"@premai/pcci-sdk-ts","version":"1.0.18","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.18","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/server.cjs"},"dist":{"shasum":"77b3c2aac4da091daf9b48f18f71078aa86fd80a","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.18.tgz","fileCount":20,"integrity":"sha512-R4P5K2BQjMAEuAdJGTU7J5cNaKQrUO1h4g7wbyN67ef5ty7mFf1q8FLakzEarv2lAv/dMuIIC0ZBe1jty1suyg==","signatures":[{"sig":"MEYCIQDMWitTk6Q2u5Bjzficlu6utusdb5lQRBZ2w/9nQU9LYQIhAJGUAohzH7l8Sj1hykdYo7le0d4H8mnizHEjW6yrf3/i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":334902},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"3cd4f7d21116eb50d2252ee6bbdac77767792ba4","scripts":{"dev":"ts-node script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"ts-node src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.12.0","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@deepgram/sdk":"^5.0.0","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@premAI-io/prem-rs":"^0.1.6","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.18_1774279096774_0.4155756930974046","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"@premai/pcci-sdk-ts","version":"1.0.19","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.19","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/cli.cjs"},"dist":{"shasum":"06efc91181633926741f39d764d0d9290b82662f","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.19.tgz","fileCount":21,"integrity":"sha512-wyMZ4sYHF/aYnxlCLfRdZlZNIiK2D4Bc7XoLkgnllb2kwaaRDJEoL9AAVndllbiFggTfW9B9xo/j6vfOnCoDLw==","signatures":[{"sig":"MEUCIQCzpVoAKeWMn0+dsIxUnK1wgSwsZWKgSXCz/aX8o6t3jQIgAdbdRICmpqqxm8Pyeao4fpTNjHG6uMg5lF6ROT1B0ek=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":336174},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"be39e03ea58b9233f339666733666ffcaa7e8c24","scripts":{"dev":"bun run script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"bun run src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.12.0","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@deepgram/sdk":"^5.0.0","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@premAI-io/prem-rs":"^0.1.6","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.19_1774468667038_0.20435735032571745","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"@premai/pcci-sdk-ts","version":"1.0.20","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.20","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/cli.cjs"},"dist":{"shasum":"6efc68adf6d7d5ebabd8927612f348346e0ffb92","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.20.tgz","fileCount":22,"integrity":"sha512-4k8dsgJ7sJ9sYqm8wX7xpYfOsrRCr8HcsaYxUf45KUPf5bBEqrxxnMkPTsiugl7g3isNQX6CQq43YSyO+EorWA==","signatures":[{"sig":"MEUCIDR+KQpZyp47TQ6TcYlhbg6xj0MpOdiXLWnFSuMOhEQ1AiEAyTPldKGLQlRcc96PzHfuHcXKwqyb6dw8u1V9XIX50Us=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":344846},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"047b9c3117d5845679d9fcbecbb2f13f95a9a850","scripts":{"dev":"bun run script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"bun run src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.12.1","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@deepgram/sdk":"^5.0.0","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@premAI-io/prem-rs":"^0.1.6","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.20_1774628109060_0.26228875492698234","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"@premai/pcci-sdk-ts","version":"1.0.21","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.21","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/cli.cjs"},"dist":{"shasum":"789325fa9d4600691c1384e14b296bfa94f442d6","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.21.tgz","fileCount":22,"integrity":"sha512-Q2M+aWlFXGyjYPVT1K/FJ6Mx9M+YNimKzgebqSPKy/BbTsm1eeZkrdAS7UL1Hia7hyE84wn93h4+XTTqSod8aw==","signatures":[{"sig":"MEYCIQDqtt+c75rN4eI+7fDRUcvVgOtHWuf9sBhZ922ueeB+KAIhAKDivVoYHFG8pFr1xTTPcc6jJ/iG0qWL7jFjTjl07wLK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":344846},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"d5976184830274be70061773d13988be7561b964","scripts":{"dev":"bun run script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"bun run src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.12.1","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@deepgram/sdk":"^5.0.0","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@premAI-io/prem-rs":"^0.2.0","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.21_1774824212184_0.2307065463278628","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"@premai/pcci-sdk-ts","version":"1.0.22","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.22","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/cli.cjs"},"dist":{"shasum":"c7366e22dc73c8783cea0a55d6fda80b202e4e1d","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.22.tgz","fileCount":22,"integrity":"sha512-QYXe5AGWu+rDQMCWJMbjeHgyfo2NeP42B5LwoNnZ+wtLLTfMfgZ9yStP4rIBVePd6O1f0SwQcTHvM8EXjqkGEA==","signatures":[{"sig":"MEYCIQCUGjoRTUpixlP06rcs+0iextAwpQIMV2WGhxsG+pf1FQIhAL3XF/PDRQAgnjgq2NU2bksK6jptIpZzIn9JkG89Oct2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":344846},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"579d016ddd3893f257dad2f37fb1e260cacd752b","scripts":{"dev":"bun run script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"bun run src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.12.1","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@deepgram/sdk":"^5.0.0","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@premAI-io/prem-rs":"^0.2.1","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.22_1774867972961_0.8704017190351483","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"@premai/pcci-sdk-ts","version":"1.0.23","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.23","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/cli.cjs"},"dist":{"shasum":"c88dcbd0ff49094e9947ebcb4c41c646078a01f0","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.23.tgz","fileCount":22,"integrity":"sha512-xSL885cAzw+B5UCAWXIUcK9lEg9zWaknRvlGpHQ0e235CfNs8A9pl/5RD7zf0Jt1TtSpA4ZkJMJ++9OB+znHcA==","signatures":[{"sig":"MEUCIQCh5/M4ymd3WLnP6X2X4fnjB9+Aoc6Ww3Z158XzNhHgAQIgapd2YjAioPqJ30cVOm92G2b6fRO6Sk/ODSsQG8nqeF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":344846},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"4ceca3ce369906e11b1bc614fc44613cf5ce79cd","scripts":{"dev":"bun run script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"bun run src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.12.1","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@deepgram/sdk":"^5.0.0","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@premAI-io/prem-rs":"^0.2.2","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.23_1774944927804_0.15489382927852025","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"@premai/pcci-sdk-ts","version":"1.0.24","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.24","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/cli.cjs"},"dist":{"shasum":"ec7d12f97ca33f929ebbe98b02dd89c5eb9d5488","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.24.tgz","fileCount":22,"integrity":"sha512-39nklWT6d4p20vwp3qVOitaqk2MVrm4ZEan90F9i0wfTxjmZQ6bZdde1HJaaqwmk7irZKEewCgA5B+6jxIMfxQ==","signatures":[{"sig":"MEUCIBJoFmCGlL4KlXMAPq9fQvSG4bpbFnbQMIrmVchjvBpFAiEAwcZdvoANfl9QYc1kciFQOHz06Gb4ZekeTGjUSoZ4e/o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":345221},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"32d52a47633e9c6f543713d07aa60cb75ff7843a","scripts":{"dev":"bun run script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"bun run src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.12.1","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@deepgram/sdk":"^5.0.0","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@premAI-io/prem-rs":"^0.2.2","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.24_1775043533710_0.8448420347901608","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"@premai/pcci-sdk-ts","version":"1.0.25","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.25","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/cli.cjs"},"dist":{"shasum":"6b62e382fa79a44242c3d835e4b3a455b4102157","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.25.tgz","fileCount":22,"integrity":"sha512-vSj0Mphpx42TkK5DB2ay9W0knWJfE+xhNaAjEnEvLf4ECsIFSyT/PwFjb5RZDlRPLYyaNv4AoOXrqX+jHA4kzQ==","signatures":[{"sig":"MEYCIQD+GPRM6voUpkSzaFr+EIjBJwQUuhugDqKPHKh7EGPIKgIhAJo+aLNy5EUqiwlDiwSukomLpnB2H9RruM2EZg4paV/4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":345203},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"dee6e44b8018ba0f82529dfd5e8ba7365fbbd73d","scripts":{"dev":"bun run script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"bun run src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.12.1","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@deepgram/sdk":"^5.0.0","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@premai/prem-rs":"^0.2.2","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.25_1775057578582_0.46071464171971765","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"@premai/pcci-sdk-ts","version":"1.0.26","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.26","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/cli.cjs"},"dist":{"shasum":"17301238bcc2b21043eacb5a7d72f116e2a1702b","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.26.tgz","fileCount":22,"integrity":"sha512-01vvBKOTpt1Wmo+YsTHHIWGVyEHolIlntO61VI7neLW2DWgkhXB+j0Uu7VFSdRvMu1KCmkkCfBKkAVgbgZUSRg==","signatures":[{"sig":"MEQCIBuM9FsUXYKFw1t6Lqdhe1ZjiFN+RUlLFrp1Jr1Wh8mmAiAoiCWPrpHE349HpyW/tx6VzdtWV5yiZpR6qSTL/OW+kw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":345233},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"0f9d5eccdbff2db067f213054933f0bdd9f4ec81","scripts":{"dev":"bun run script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"bun run src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.12.1","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@deepgram/sdk":"^5.0.0","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@premai/prem-rs":"=0.2.4","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.26_1775909269996_0.07044485578104576","host":"s3://npm-registry-packages-npm-production"}},"1.0.27":{"name":"@premai/pcci-sdk-ts","version":"1.0.27","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.27","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/cli.cjs"},"dist":{"shasum":"0c00eaf876c887a236189b7902fbded438453b8f","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.27.tgz","fileCount":22,"integrity":"sha512-sg9wBmZqlZ9qozK2mCVUtC62lVXM+AgqNzirlCFTSnCtabDfTRg4GJtHFuNqAD4wOA9xf/+BJHDeG3eTiQm/ng==","signatures":[{"sig":"MEUCIQDslVNze7hYvOYtrpaRX8WjpszQVohY3dXxIw08pbOXHwIgDufhaJRuQNx0g5X5fJ9C8XvXmlrvmkxopjvpV42ur9o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":345233},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"b59fa4c25e4e625608ff412943b1b28d0ec76e02","scripts":{"dev":"bun run script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"bun run src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.13.0","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@deepgram/sdk":"^5.0.0","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@premai/prem-rs":"=0.2.7","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.27_1777065818683_0.4176020977865573","host":"s3://npm-registry-packages-npm-production"}},"1.0.28":{"name":"@premai/pcci-sdk-ts","version":"1.0.28","keywords":[],"author":"","license":"ISC","_id":"@premai/pcci-sdk-ts@1.0.28","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"homepage":"https://github.com/premai-io/pcci-sdk-ts","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"bin":{"pcci-proxy":"dist/cli.cjs"},"dist":{"shasum":"d91d4fa28719a25e64ed4186b8d73dd0b9486bb8","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.28.tgz","fileCount":23,"integrity":"sha512-f/b4Am5G/ruLXLFMz9BDCuUU/FIpvulmd/mLREE+90sDU9jZ35DpAKdnBpJEb09S6FEYBJnN94yU6CiBHaLDHA==","signatures":[{"sig":"MEUCIQDn0DE25DagH4Ii19uPSLbvjGczoLdSwtRU1oTfJUrxdQIgf7pYLscwRTBYsnKSsZwD0NC1poRMl/8zrrt6kNg1LIo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":345131},"main":"./dist/index.cjs","types":"./dist/index.d.ts","exports":{".":{"node":"./dist/index.cjs","types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/core.browser.mjs","require":"./dist/core.browser.cjs"}},"gitHead":"025fe0d0c342036f4b65d756e3475202f89d92e0","scripts":{"dev":"bun run script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"bun run src/server.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"_npmVersion":"11.13.0","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.2.1","dotenv":"^17.2.3","multer":"^2.0.2","openai":"^6.9.1","express":"^4.18.2","date-fns":"^4.1.0","typescript":"^5.9.3","@deepgram/sdk":"^5.0.0","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/ciphers":"^2.1.1","@premai/prem-rs":"=0.2.7","@noble/post-quantum":"^0.5.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","@types/bun":"^1.3.6","@types/node":"^22.15.21","@types/multer":"^2.0.0","@biomejs/biome":"2.3.10","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/pcci-sdk-ts_1.0.28_1777296776316_0.2813708467739191","host":"s3://npm-registry-packages-npm-production"}},"1.0.29":{"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"homepage":"https://github.com/premai-io/pcci-sdk-ts","name":"@premai/pcci-sdk-ts","version":"1.0.29","main":"./dist/index.cjs","bin":{"pcci-proxy":"dist/cli.cjs"},"keywords":[],"author":"","license":"ISC","description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","exports":{".":{"node":"./dist/index.cjs","require":"./dist/index.cjs","import":"./dist/index.mjs","types":"./dist/index.d.ts"},"./browser":{"require":"./dist/core.browser.cjs","import":"./dist/core.browser.mjs","types":"./dist/index.d.ts"}},"scripts":{"dev":"bun run script.ts","build":"bun run types && bun scripts/build.ts","types":"tsc --emitDeclarationOnly","server":"bun run src/server.ts"},"dependencies":{"@deepgram/sdk":"^5.0.0","@noble/ciphers":"^2.1.1","@noble/curves":"^1.8.1","@noble/hashes":"^1.7.1","@noble/post-quantum":"^0.5.2","@premai/prem-rs":"0.3.0","date-fns":"^4.1.0","dotenv":"^17.2.3","express":"^4.18.2","multer":"^2.0.2","openai":"^6.9.1","typescript":"^5.9.3","zod":"^4.2.1"},"devDependencies":{"@biomejs/biome":"2.3.10","@types/express":"^4.17.21","@types/multer":"^2.0.0","@types/bun":"^1.3.6","@types/node":"^22.15.21","ts-node":"^10.9.2"},"gitHead":"5368295c3a72dee213f57889cc1065c44117e630","types":"./dist/index.d.ts","_id":"@premai/pcci-sdk-ts@1.0.29","bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"_nodeVersion":"24.3.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-vLg/gc4S/BOemGebLqK9jQi1tv2cUIXKRe7I5guTiVcibJQGcgEXTlMq5asvW5MVvn0UuO87oCryJXSqALt3SQ==","shasum":"482fce6fe57a29930357e88421d747d6d8e78e5f","tarball":"https://registry.npmjs.org/@premai/pcci-sdk-ts/-/pcci-sdk-ts-1.0.29.tgz","fileCount":23,"unpackedSize":347660,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIATWyf3KXbrEUwzwWDFmbJuFHIbQw7JBVUy8hRLfaaXVAiEAsLKcLIJZuPCJ/nJCLg6MPMFg7oIUNzQyWbpx7SSakxY="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0cf70883-3cf5-4b5b-ae35-1b24b1705fab"}},"directories":{},"maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pcci-sdk-ts_1.0.29_1777373416438_0.3165875788699748"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-20T21:33:26.825Z","modified":"2026-04-28T10:50:16.767Z","1.0.7":"2026-01-20T21:33:27.246Z","1.0.8":"2026-01-25T11:58:27.541Z","1.0.9":"2026-01-25T12:06:36.328Z","1.0.10":"2026-01-25T12:06:52.902Z","1.0.12":"2026-01-25T12:27:41.987Z","1.0.13":"2026-01-27T20:29:06.916Z","1.0.14":"2026-02-12T14:55:13.310Z","1.0.15":"2026-03-19T18:09:03.374Z","1.0.16":"2026-03-21T22:28:53.281Z","1.0.17":"2026-03-21T23:56:18.523Z","1.0.18":"2026-03-23T15:18:16.973Z","1.0.19":"2026-03-25T19:57:47.216Z","1.0.20":"2026-03-27T16:15:09.202Z","1.0.21":"2026-03-29T22:43:32.334Z","1.0.22":"2026-03-30T10:52:53.114Z","1.0.23":"2026-03-31T08:15:27.951Z","1.0.24":"2026-04-01T11:38:53.851Z","1.0.25":"2026-04-01T15:32:58.784Z","1.0.26":"2026-04-11T12:07:50.152Z","1.0.27":"2026-04-24T21:23:38.845Z","1.0.28":"2026-04-27T13:32:56.458Z","1.0.29":"2026-04-28T10:50:16.582Z"},"bugs":{"url":"https://github.com/premai-io/pcci-sdk-ts/issues"},"license":"ISC","homepage":"https://github.com/premai-io/pcci-sdk-ts","keywords":[],"repository":{"url":"git+https://github.com/premai-io/pcci-sdk-ts.git"},"description":"End-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.","maintainers":[{"name":"lorenzodalmazzo","email":"lorenzod@premai.io"},{"name":"federico-prem","email":"federico@premai.io"}],"readme":"# RVENC Client\n\nEnd-to-end encrypted OpenAI-compatible client with file upload and tools support, using XWing (ML-KEM768 + X25519) hybrid post-quantum encryption.\n\n## Installation\n\n```bash\nnpm install\n```\n\n## Quick Start\n\n```typescript\nimport createRvencClient from \"@premai/pcci-sdk-ts\";\n\n// Create client (encryption keys auto-generated)\nconst client = await createRvencClient({\n  apiKey: \"your-api-key\"\n});\n\n// Chat completion\nconst response = await client.chat.completions.create({\n  model: \"openai/gpt-oss-120b\",\n  messages: [{ role: \"user\", content: \"Hello!\" }],\n});\n\nconsole.log(response.choices[0].message.content);\n```\n\n## OpenAI-Compatible API Server\n\nEnvironment Variables:\n\n* ENCLAVE_URL\n* PROXY_URL\n* CLIENT_KEK\n* HOST (optional)\n* PORT (optional)\n\nRun as a standalone server with automatic DEK store management per API key:\n\n```bash\n# ways to run the termination proxy\n## run command from local/remote NPM package\nbunx -p @premai/pcci-sdk-ts pcci-proxy\nnpx -p @premai/pcci-sdk-ts pcci-proxy\n\n## install globally\n## make sure to have the \"global bin dir\" in your PATH\n## `npm config get prefix`, for pure node runtime\nnpm i -g @premai/pcci-sdk-ts\nbun i -g @premai/pcci-sdk-ts\n\n# Server runs on http://localhost:3000\n```\n\nUse with any OpenAI-compatible client:\n\n```bash\ncurl http://localhost:3000/v1/chat/completions \\\n  -H \"Authorization: Bearer your-api-key\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"openai/gpt-oss-120b\",\n    \"messages\": [\n      {\"role\": \"user\", \"content\": \"Hello!\"}\n    ],\n    \"stream\": false\n  }'\n```\n\nOr use the OpenAI SDK in Node.js:\n\n```typescript\nimport OpenAI from \"openai\";\n\nconst client = new OpenAI({\n  apiKey: \"your-api-key\",\n  baseURL: \"http://localhost:3000/v1\",\n});\n\nconst stream = await client.chat.completions.create({\n  model: \"openai/gpt-oss-120b\",\n  messages: [{ role: \"user\", content: \"Count to 10\" }],\n  stream: true,\n});\n\nfor await (const chunk of stream) {\n  process.stdout.write(chunk.choices[0]?.delta?.content || \"\");\n}\n```\n\nThe server caches clients in memory per API key for better performance.\n\n## Features\n\n- ✅ **Chat Completions** - OpenAI-compatible API with streaming support\n- ✅ **Models** - List available models\n- ✅ **File Management** - Upload, list, get, and delete encrypted files\n- ✅ **File Upload** - Client-side encrypted file uploads with per-file DEKs\n- ✅ **Tools** - Image generation, transcription, RAG search, and more\n- ✅ **End-to-end Encryption** - Post-quantum cryptography (XWing)\n- ✅ **KEK Architecture** - Key Encryption Key wraps all file DEKs\n- ✅ **RAG Support** - Encrypted document retrieval with persistent RAG DEK\n- ✅ **TypeScript** - Full type safety\n\n## Chat Completions\n\n### Non-streaming\n\n```typescript\nconst response = await client.chat.completions.create({\n  model: \"openai/gpt-oss-120b\",\n  messages: [{ role: \"user\", content: \"Hello!\" }],\n});\n\nconsole.log(response.choices[0].message.content);\n```\n\n### Streaming\n\n```typescript\nconst stream = await client.chat.completions.create({\n  model: \"openai/gpt-oss-120b\",\n  messages: [{ role: \"user\", content: \"Count to 10\" }],\n  stream: true,\n});\n\nfor await (const chunk of stream) {\n  process.stdout.write(chunk.choices[0]?.delta?.content || \"\");\n}\n```\n\n## Vision\n\nUse vision models to analyze images:\n\n```typescript\nconst response = await client.chat.completions.create({\n  model: \"OpenGVLab/InternVL3-38B\",\n  messages: [{\n    role: \"user\",\n    content: [\n      { type: \"text\", text: \"What is in this image?\" },\n      {\n        type: \"image_url\",\n        image_url: {\n          url: \"https://fastly.picsum.photos/id/237/200/300.jpg?hmac=TmmQSbShHz9CdQm0NkEjx1Dyh_Y984R9LpNrpvH2D_U\",\n        },\n      },\n    ],\n  }],\n});\n\nconsole.log(response.choices[0].message.content);\n```\n\n## Audio\n\n### Transcriptions\n\nTranscribe audio files to text:\n\n```typescript\nimport createRvencClient from \"@premai/pcci-sdk-ts\";\nimport fs from \"fs\";\n\nconst client = await createRvencClient({\n  apiKey: \"your-api-key\"\n});\n\nconst transcription = await client.audio.transcriptions.create({\n  file: fs.createReadStream('./audio.wav'),\n  model: 'openai/whisper-large-v3',\n});\n\nconsole.log(transcription.text);\n```\n\n### Translations\n\nTranslate audio files to English:\n\n```typescript\nconst translation = await client.audio.translations.create({\n  file: fs.createReadStream('./audio.mp3'),\n  model: 'openai/whisper-large-v3',\n});\n\nconsole.log(translation.text);\n```\n\n> **Note:** openai/whisper-large-v3 model supports non-streaming only.\n\n## Models\n\nList available models\n\n```typescript\nconst client = await createRvencClient({\n  apiKey: \"your-api-key\",\n});\n\nconst models = await client.models.list({\n  type: \"CHAT\",\n});\n```\n\n## File Upload\n\n### First Time Setup\n\n```typescript\nimport createRvencClient, { serializeDEKStore } from \"@premai/pcci-sdk-ts\";\nimport fs from \"fs\";\n\n// Create client (DEK store auto-generated)\nconst client = await createRvencClient({\n  apiKey: \"your-api-key\",\n  clientKEK: \"your-kek\" // You can pass clientKEK here or as an env variable CLIENT_KEK\n});\n\n// Save DEK store for future use\nconst serializedStore = serializeDEKStore(client.dekStore);\nfs.writeFileSync(\"./dek-store.json\", serializedStore);\n\nconsole.log(\"✅ DEK store saved. Keep this file secure!\");\n```\n\n### Subsequent Usage\n\n```typescript\nimport createRvencClient, { deserializeDEKStore } from \"@premai/pcci-sdk-ts\";\nimport fs from \"fs\";\n\n// Load existing DEK store\nconst serializedStore = fs.readFileSync(\"./dek-store.json\", \"utf-8\");\nconst dekStore = deserializeDEKStore(serializedStore);\n\n// Create client with existing DEK store\nconst client = await createRvencClient({\n  apiKey: \"your-api-key\",\n  clientKEK: \"your-kek\" // You can pass clientKEK here or as an env variable CLIENT_KEK\n  dekStore,\n});\n```\n\n### Upload Files\n\n```typescript\nimport fs from \"fs\";\nimport { serializeDEKStore } from \"@premai/pcci-sdk-ts\";\n\nconst fileContent = fs.readFileSync(\"./document.pdf\");\nconst result = await client.files.upload({\n  file: new Uint8Array(fileContent),\n  fileName: \"document.pdf\",\n  mimeType: \"application/pdf\", // optional - auto-detected\n});\n\nconsole.log(\"Uploaded:\", result.id);\n\n// ⚠️ IMPORTANT: Save dekStore after upload to persist file DEKs\nconst serialized = serializeDEKStore(client.dekStore);\nfs.writeFileSync(\"./dek-store.json\", serialized);\nconsole.log(\"✅ DEK store updated with file encryption keys\");\n```\n\n### Upload Files with RAG Indexing\n\nTo enable RAG (Retrieval-Augmented Generation) indexing for a file, set `ragIndex: true`:\n\n```typescript\nconst result = await client.files.upload({\n  file: new Uint8Array(fileContent),\n  fileName: \"document.pdf\",\n  mimeType: \"application/pdf\",\n  ragIndex: true, // Enable RAG indexing\n});\n\n// Save dekStore to persist both file DEK and RAG DEK\nconst serialized = serializeDEKStore(client.dekStore);\nfs.writeFileSync(\"./dek-store.json\", serialized);\n```\n\n**RAG Indexing Notes:**\n- When `ragIndex: true`, additional encryption keys are generated for RAG operations\n- A shared `ragDEK` is created (or reused from dekStore) for all RAG-indexed files\n- The file DEK is encrypted with the RAG DEK for retrieval operations\n- RAG DEK is automatically persisted in `dekStore.ragDEK`\n\n**Important Notes:**\n- Each file is encrypted with a unique random DEK\n- The DEK is wrapped with your `clientKEK` and stored in `dekStore.fileDEKs`\n- **You must save the dekStore after uploading** to persist file DEKs\n- File DEKs are required for tools to process uploaded files\n\n### List Files\n\nRetrieve a paginated list of your encrypted files with optional filtering:\n\n```typescript\n// List all files (default: 20 per page)\nconst result = await client.files.list();\nconsole.log(result.files);        // Array of FileMetadata\nconsole.log(result.pagination);   // { total, page, limit, pages }\n\n// List with pagination\nconst page2 = await client.files.list({\n  limit: 50,\n  offset: 50,\n});\n\n// Filter by type\nconst images = await client.files.list({\n  type: 'image',  // 'image' | 'document' | 'video' | 'audio' | 'archive' | 'general'\n});\n\n// Search by name\nconst searchResults = await client.files.list({\n  search: 'report',\n});\n\n// Filter by date range (must be ISO8601 format)\nconst recentFiles = await client.files.list({\n  from: '2024-01-01T00:00:00Z',\n  to: '2024-12-31T23:59:59Z',\n});\n\n// Or with timezone offset\nconst specificRange = await client.files.list({\n  from: '2024-01-01T00:00:00+00:00',\n  to: '2024-12-31T23:59:59+00:00',\n});\n\n// Combine filters\nconst filtered = await client.files.list({\n  limit: 100,\n  offset: 0,\n  type: 'document',\n  search: 'quarterly',\n  from: '2024-01-01',\n  to: '2024-12-31',\n});\n```\n\n### Get File Details\n\nRetrieve detailed information about a specific file:\n\n```typescript\n// Get file metadata\nconst file = await client.files.get({ id: 'file-id-123' });\nconsole.log(file.original_name);\nconsole.log(file.file_size);\nconsole.log(file.mime_type);\nconsole.log(file.created_at);\n\n// Get file with signed download URL\nconst fileWithUrl = await client.files.get({ \n  id: 'file-id-123',\n  url: true  // Include signed download URL\n});\nconsole.log(fileWithUrl.url);  // Temporary signed URL for download\n```\n\n### Delete File\n\nDelete an encrypted file:\n\n```typescript\n// Delete a file\nawait client.files.delete({\n  id: 'file-id-123'\n});\n\n// With error handling\ntry {\n  await client.files.delete({\n    id: 'file-id-123'\n  });\n  console.log('File deleted successfully');\n} catch (error) {\n  console.error('Delete failed:', error.message);\n}\n```\n\n### Index Files for RAG\n\nIndex existing files for RAG (Retrieval-Augmented Generation) search. This allows you to add files to your RAG index that were uploaded without `ragIndex: true`:\n\n```typescript\n// First, list your files to get their IDs and paths\nconst filesList = await client.files.list();\n\n// Select files to index\nconst filesToIndex = filesList.files\n  .filter(f => f.type === 'document')\n  .map(f => ({\n    fileId: f.id,\n    filePath: f.file_path,\n  }));\n\n// Index the files for RAG (uses DEKs from dekStore)\nconst indexResult = await client.files.index({\n  files: filesToIndex\n});\n\n// Check results\nindexResult.data.results.forEach(result => {\n  if (result.success) {\n    console.log(`✓ File ${result.file_id}: ${result.rag_status}`);\n  } else {\n    console.error(`✗ File ${result.file_id} failed: ${result.error}`);\n  }\n});\n```\n\n**Flexible DEK Management:**\n\nYou can provide custom DEKs or let the function use DEKs from dekStore:\n\n```typescript\n// Option 1: Use DEKs from dekStore (default)\nawait client.files.index({\n  files: [\n    { fileId: 'file-id-1', filePath: 's3/path/file1.enc' },\n    { fileId: 'file-id-2', filePath: 's3/path/file2.enc' },\n  ]\n});\n\n// Option 2: Provide custom ragDEK\nawait client.files.index({\n  files: [\n    { fileId: 'file-id-1', filePath: 's3/path/file1.enc' },\n  ],\n  ragDEK: customRagDEK  // Override dekStore ragDEK\n});\n\n// Option 3: Provide custom fileDEK for specific files\nawait client.files.index({\n  files: [\n    { \n      fileId: 'file-id-1', \n      filePath: 's3/path/file1.enc',\n      fileDEK: customFileDEK  // Custom DEK for this file\n    },\n    { \n      fileId: 'file-id-2', \n      filePath: 's3/path/file2.enc' \n      // Uses dekStore for this file\n    },\n  ],\n  ragDEK: customRagDEK  // Single ragDEK for all files\n});\n```\n\n**Important Notes:**\n- **ragDEK**: Checks `options.ragDEK` first, then `dekStore.ragDEK`. Throws error if not found.\n- **fileDEK**: For each file, checks `file.fileDEK` first, then `dekStore.fileDEKs`. Throws error if not found.\n- To initialize RAG DEK in dekStore, upload at least one file with `ragIndex: true`\n- Once indexed, files can be searched using `client.tools.searchRag()`\n\n**Example Workflow:**\n\n```typescript\n// Step 1: Upload first file with RAG to initialize RAG DEK\nconst firstFile = await client.files.upload({\n  file: new Uint8Array(fs.readFileSync('./doc1.pdf')),\n  fileName: 'doc1.pdf',\n  ragIndex: true,  // Creates RAG DEK in dekStore\n});\n\n// Save dekStore to persist RAG DEK\nfs.writeFileSync('./dek-store.json', serializeDEKStore(client.dekStore));\n\n// Step 2: Upload other files without RAG indexing (faster)\nconst file2 = await client.files.upload({\n  file: new Uint8Array(fs.readFileSync('./doc2.pdf')),\n  fileName: 'doc2.pdf',\n  ragIndex: false,  // Skip RAG indexing during upload\n});\n\n// Step 3: Later, index the files for RAG\nconst result = await client.files.index({\n  files: [\n    { fileId: file2.id, filePath: file2.file_path },\n  ]\n});\n\nconsole.log('Indexed:', result.data.results[0].rag_status); // \"running\"\n```\n\n### Delete Files from RAG Index\n\nRemove files from the RAG index without deleting the actual files:\n\n```typescript\n// Delete specific files from RAG index\nconst deleteResult = await client.files.deleteIndex({\n  fileIds: ['file-id-1', 'file-id-2', 'file-id-3']\n});\n\n// Check results\ndeleteResult.data.results.forEach(result => {\n  if (result.success) {\n    console.log(`✓ File ${result.file_id} removed from index`);\n  } else {\n    console.error(`✗ File ${result.file_id} failed: ${result.error}`);\n  }\n});\n```\n\n**With Custom RAG DEK:**\n\n```typescript\n// Use custom ragDEK instead of dekStore\nawait client.files.deleteIndex({\n  fileIds: ['file-id-1', 'file-id-2'],\n  ragDEK: customRagDEK  // Optional: override dekStore ragDEK\n});\n```\n\n**Important Notes:**\n- This removes files from the RAG search index only\n- The actual encrypted files remain in storage\n- **ragDEK**: Checks `options.ragDEK` first, then `dekStore.ragDEK`. Throws error if not found.\n- Use `client.files.delete()` to completely delete files\n\n### File Upload Options\n\n```typescript\ninterface FileUploadOptions {\n  file: Uint8Array;        // File content as bytes\n  fileName: string;        // Name of the file\n  mimeType?: string;       // Optional MIME type (auto-detected from extension)\n  ragIndex?: boolean;      // Optional: Enable RAG indexing for this file\n}\n\ninterface ListFilesOptions {\n  limit?: number;          // Max files to return (default: 20)\n  offset?: number;         // Skip N files for pagination (default: 0)\n  search?: string;         // Search term to filter by name\n  from?: string;           // Minimum date filter (ISO8601: YYYY-MM-DDTHH:mm:ss+HH:mm or Z)\n  to?: string;             // Maximum date filter (ISO8601: YYYY-MM-DDTHH:mm:ss+HH:mm or Z)\n}\n\ninterface GetFileOptions {\n  id: string;              // File ID (required)\n  url?: boolean;           // Include signed download URL (default: false)\n}\n\ninterface DeleteFileOptions {\n  id: string;              // File ID (required)\n}\n\ninterface IndexFileInput {\n  fileId: string;          // File ID (required)\n  filePath: string;        // S3/R2 path to encrypted file (required)\n  fileDEK?: Uint8Array;    // Optional: custom file DEK (falls back to dekStore)\n}\n\ninterface IndexFilesOptions {\n  files: IndexFileInput[]; // Array of files to index (required)\n  ragDEK?: Uint8Array;     // Optional: custom RAG DEK for all files (falls back to dekStore)\n}\n\ninterface DeleteIndexOptions {\n  fileIds: string[];       // Array of file IDs to remove from index (required)\n  ragDEK?: Uint8Array;     // Optional: custom RAG DEK (falls back to dekStore)\n}\n```\n\n## Tools\n\nAll tools are encrypted end-to-end. Files are automatically downloaded and decrypted.\n\n### File-Producing Tools\n\nGenerate files that are automatically decrypted and returned:\n\n```typescript\n// Generate an image\nconst image = await client.tools.generateImage({prompt: \"sunset over mountains\"});\nconsole.log(image.fileName); // \"generated_image.png\"\nconsole.log(image.content);  // Uint8Array - save or use directly\nfs.writeFileSync(image.fileName, image.content);\n\n// Generate audio from text\nconst audio = await client.tools.audioGenerateFromText({text: \"Hello, world!\"});\nfs.writeFileSync(audio.fileName, audio.content);\n\n// Create a custom file\nconst file = await client.tools.createFileForUser(\n  {\n    fileName: 'test_file',\n    fileExtension: 'txt',\n    fileContent: 'This is the content of the test file.',\n    mimeType: 'text/plain'\n  }\n);\nfs.writeFileSync(file.fileName, file.content);\n```\n\n### File-Processing Tools\n\nProcess uploaded files and get results:\n\n```typescript\n// Upload a file first\nconst upload = await client.files.upload({\n  file: new Uint8Array(fs.readFileSync(\"./image.jpg\")),\n  fileName: \"image.jpg\",\n});\n\n// Describe and caption image\nconst description = await client.tools.imageDescribeAndCaption({fileId: upload.id});\nconsole.log(description);\n\n// Extract PDF content\nconst pdfUpload = await client.files.upload({\n  file: new Uint8Array(fs.readFileSync(\"./doc.pdf\")),\n  fileName: \"doc.pdf\",\n});\nconst pdfContent = await client.tools.getPDFContent({fileId: pdfUpload.id});\nconsole.log(pdfContent);\n\n// Transcribe audio\nconst audioUpload = await client.files.upload({\n  file: new Uint8Array(fs.readFileSync(\"./audio.mp3\")),\n  fileName: \"audio.mp3\",\n});\nconst transcript = await client.tools.transcribeAudioToText({fileId: audioUpload.id});\nconsole.log(transcript);\n\n// Video description\nconst videoUpload = await client.files.upload({\n  file: new Uint8Array(fs.readFileSync(\"./video.mp4\")),\n  fileName: \"video.mp4\",\n});\nconst videoDesc = await client.tools.videoDescribeAndCaption({fileId: videoUpload.id});\nconsole.log(videoDesc);\n```\n\n### Simple Tools\n\nTools that don't require file handling:\n\n```typescript\n// Get current time\nconst time = await client.tools.getTime({timezone: 'America/New_York'});\nconsole.log(time);\n\n// Web search\nconst searchResults = await client.tools.webSearchTool({query: 'latest AI news'});\nconsole.log(searchResults);\n\n// Web page scraper\nconst pageContent = await client.tools.webPageScraperTool({url: 'https://example.com', renderJs: false});\nconsole.log(pageContent);\n\n// RAG search across your uploaded files\nconst ragResults = await client.tools.searchRag({\n  query: 'test query',\n});\nconsole.log(ragResults);\n```\n\n## Available Tools\n\n### File-Producing Tools\n- `generateImage(params: { prompt: string })` - Generate images from text\n- `audioGenerateFromText(params: { text: string })` - Text-to-speech\n- `createFileForUser(params: { fileName: string, fileExtension: string, fileContent: string, mimeType: string })` - Create custom files\n\n### File-Processing Tools\n- `imageDescribeAndCaption(params: { fileId: string })` - Describe images\n- `imageDescribeAndCaptionFallback(params: { fileId: string })` - Alternative image description\n- `videoDescribeAndCaption(params: { fileId: string })` - Describe videos\n- `getPDFContent(params: { fileId: string })` - Extract PDF text\n- `getTextDocumentContent(params: { fileId: string })` - Extract document text\n- `transcribeAudioToText(params: { fileId: string, language?: string })` - Audio transcription\n- `transcribeAudioWithDiarization(params: { fileId: string, language?: string })` - Transcription with speakers\n- `audioDiarization(params: { fileId: string })` - Identify speakers\n- `getFileContentOCR(params: { fileId: string })` - OCR on images\n- `getSpreadsheetContent(params: { fileId: string })` - Extract spreadsheet data\n- `getDataFileContent(params: { fileId: string })` - Extract data file content\n- `getPowerPointContent(params: { fileId: string, slideNumbers?: number[] })` - Extract presentation content\n\n### Simple Tools\n- `getTime(params: { timezone: string })` - Get current time\n- `webSearchTool(params: { query: string, country?: string, searchLang?: string })` - Web search\n- `webPageScraperTool(params: { url: string, renderJs?: boolean })` - Scrape web pages\n\n### RAG Tools\n- `searchRag(params: { query: string })` - Search indexed documents with optional file filtering\n\n## Configuration Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `apiKey` | `string` | **required** | Authorization token |\n| `encryptionKeys` | `EncryptionKeys` | auto-generated | Pre-generated ML-KEM keys |\n| `dekStore` | `DEKStore` | auto-generated | DEKs for files and RAG |\n| `requestTimeoutMs` | `number` | `30000` | Request timeout in milliseconds |\n| `maxBufferSize` | `number` | `10485760` | Max SSE buffer size (10MB) |\n\n## DEK Store Management\n\nThe DEK store contains encryption keys for all file and RAG operations:\n\n```typescript\ninterface DEKStore {\n  fileDEKs?: Map<string, Uint8Array>;        // Per-file DEKs (fileId -> DEK)\n  ragDEK?: Uint8Array;                        // RAG operations DEK\n  ragVersion?: string;                        // RAG version identifier\n}\n```\n\n### Initialize New DEK Store\n\n```typescript\nimport { initializeDEKStore, serializeDEKStore } from \"@premai/pcci-sdk-ts\";\n\n// Create new DEK store with KEK from environment variable\nconst dekStore = initializeDEKStore();\n\n// Save to secure storage\nconst serialized = serializeDEKStore(dekStore);\nfs.writeFileSync(\"dek-store.json\", serialized);\n```\n\n### Serialize for Storage\n\n```typescript\nimport { serializeDEKStore } from \"@premai/pcci-sdk-ts\";\n\nconst serialized = serializeDEKStore(client.dekStore);\nfs.writeFileSync(\"dek-store.json\", serialized);\n```\n\n### Deserialize from Storage\n\n```typescript\nimport { deserializeDEKStore } from \"@premai/pcci-sdk-ts\";\n\nconst serialized = fs.readFileSync(\"dek-store.json\", \"utf-8\");\nconst dekStore = deserializeDEKStore(serialized);\n```\n\n### Important: Persist After File Operations\n\n```typescript\n// After uploading files\nconst upload = await client.files.upload({...});\n\n// ⚠️ MUST save to persist file DEKs\nconst serialized = serializeDEKStore(client.dekStore);\nfs.writeFileSync(\"dek-store.json\", serialized);\n\n// After using RAG tools\nawait client.tools.searchRag({query: \"...\"});\n\n// ⚠️ Save if ragDEK was auto-generated\nconst serialized = serializeDEKStore(client.dekStore);\nfs.writeFileSync(\"dek-store.json\", serialized);\n```\n\n## How It Works\n\n### Chat Completions\n\n1. **Key Exchange**: Fetches enclave public key → creates XWing encapsulation → shared secret\n2. **Request Encryption**: Encrypts inference params with XChaCha20-Poly1305\n3. **Encrypted Transport**: Sends `{ cipherText, encryptedInference, nonce }` to proxy\n4. **Response Decryption**: Decrypts response (streaming SSE or JSON) using shared secret\n\n### File Upload\n\n1. **DEK Generation**: Generates random 32-byte DEK for this file\n2. **File Encryption**: Encrypts file content with XChaCha20-Poly1305 + managed nonce\n3. **Metadata Encryption**: Encrypts filename and MIME type with same DEK\n4. **DEK Wrapping**: Wraps DEK with `clientKEK` using AES-KWP\n5. **Upload**: Sends encrypted data with `wrapped_dek` and `kid`\n6. **Storage**: Stores file DEK in `dekStore.fileDEKs[fileId]` for later use\n\n#### With RAG Indexing (`ragIndex: true`)\n\n1. **RAG DEK**: Retrieves existing `ragDEK` from dekStore or generates new 32-byte key\n2. **File DEK Encryption**: Encrypts file DEK with RAG DEK (XChaCha20-Poly1305)\n3. **RAG DEK Encryption**: Encrypts RAG DEK with `clientKEK` (XChaCha20-Poly1305)\n4. **Additional Payload**: Includes `encrypted_file_dek`, `encrypted_rag_dek`, `file_nonce`, `rag_dek_nonce`, `cipher_text`\n5. **RAG Storage**: Persists `ragDEK` in `dekStore.ragDEK` for reuse across files\n\n### Tools\n\n#### File-Processing Tools\n1. **Retrieve fileDEK**: Gets stored DEK from `dekStore.fileDEKs[fileId]`\n2. **Encrypt fileDEK**: Encrypts fileDEK with shared secret (per-request nonce)\n3. **Send Request**: Sends `encryptedFileDEK` + `fileDEKNonce` to enclave\n4. **Enclave Decrypts**: Enclave decrypts fileDEK, then decrypts file from S3\n5. **Response**: Returns encrypted result, SDK decrypts with shared secret\n\n#### File-Producing Tools  \n1. **Generate DEK**: Creates random DEK for output file\n2. **Encrypt Request**: Encrypts tool parameters with shared secret\n3. **Enclave Executes**: Generates file, encrypts with provided DEK\n4. **Download**: SDK downloads and decrypts file using the DEK\n5. **Response**: Returns `DecryptedFile` with content as Uint8Array\n\n#### RAG Tools\n1. **Retrieve fileDEKs**: Gets DEKs for all specified files\n2. **Encrypt DEKs**: Encrypts each fileDEK with shared secret (unique nonces)\n3. **Encrypt ragDEK**: Encrypts persistent `ragDEK` with shared secret\n4. **Send Request**: Sends `encryptedFileDEKs[]` + `ragDEK` + `ragVersion`\n5. **Enclave Processing**: Decrypts files, performs RAG search\n6. **Response**: Returns encrypted results\n\n## Error Handling\n\n```typescript\ntry {\n  const client = await createRvencClient({\n    apiKey: \"your-api-key\",\n    clientKEK: \"your-kek\" // You can pass clientKEK here or as an env variable CLIENT_KEK\n  });\n  \n  const image = await client.tools.generateImage(\"mountain landscape\");\n  fs.writeFileSync(image.fileName, image.content);\n  \n} catch (error) {\n  if (error.message.includes(\"timeout\")) {\n    console.error(\"Request timed out\");\n  } else {\n    console.error(\"Error:\", error.message);\n  }\n}\n```\n\n## Security Notes\n\n- ⚠️ **Use environment variables** for API keys & client KEK\n- ⚠️ **Always persist dekStore after file uploads** - file DEKs must be saved\n- ⚠️ **Backup your dekStore** - losing it means losing access to uploaded files\n- ✅ All encryption happens client-side (zero-knowledge)\n- ✅ Files are encrypted with unique DEKs before upload\n- ✅ KEK-based architecture - KEK wraps all file DEKs\n- ✅ Tool responses are automatically decrypted\n- ✅ Post-quantum secure (XWing: ML-KEM768 + X25519)\n\n### Encryption Architecture\n\n```\nclientKEK (32 bytes)\n    ├── wraps fileDEK₁ → file_1.pdf\n    ├── wraps fileDEK₂ → file_2.jpg\n    ├── wraps fileDEK₃ → file_3.mp3\n    └── wraps fileDEKₙ → file_n.txt\n\nragDEK (32 bytes) → encrypts RAG index\n\nEach file gets unique DEK, all wrapped by KEK\n```\n\n### Best Practices\n\n1. **Initialize Once**: Create dekStore once, reuse across sessions\n2. **Persist After Uploads**: Save dekStore immediately after each file upload\n3. **Secure Storage**: Store `dek-store.json` in secure, encrypted location\n4. **Regular Backups**: Backup dekStore to prevent data loss\n5. **Rotation**: Generate new dekStore periodically and re-upload files\n6. **Error Handling**: Always check if fileDEK exists before using tools\n\n## TypeScript Types\n\n```typescript\nimport type {\n  RvencClient,\n  RvencClientOptions,\n  DEKStore,\n  EncryptionKeys,\n  FileUploadOptions,\n  UploadedFile,\n  DecryptedFile,\n  ToolsClient,\n  ListFilesOptions,\n  ListFilesResponse,\n  GetFileOptions,\n  DeleteFileOptions,\n  DeleteFileResponse,\n  IndexFileInput,\n  IndexFilesOptions,\n  IndexFilesResponse,\n  DeleteIndexOptions,\n  DeleteIndexResponse,\n  FileMetadata,\n  PaginationInfo,\n} from \"@premai/pcci-sdk-ts\";\n```\n","readmeFilename":"README.md"}