{"_id":"@bernierllc/openai-client","_rev":"14-40031c3d8bdd4751a59674ff7f34ce92","name":"@bernierllc/openai-client","dist-tags":{"latest":"1.5.1"},"versions":{"1.0.2":{"name":"@bernierllc/openai-client","version":"1.0.2","keywords":["openai","gpt","gpt-4","ai","api","rate-limiting","retry","streaming","cost-tracking","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/openai-client@1.0.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"4ab29f7e9e1c735191dbe0f12b2cec0b207b4778","tarball":"https://registry.npmjs.org/@bernierllc/openai-client/-/openai-client-1.0.2.tgz","fileCount":14,"integrity":"sha512-Gs6l6nN/U36seuHB9AO2h+fvhUuBGvDDrEwRdtWc9cI41AYMJw9qZ6MZs8NQo8QGHDQSFCWxH+7Ktm9qbOKG0Q==","signatures":[{"sig":"MEUCID6kYv/63d6jw8hn6Fpa1OFsnhaelAXCQCTSIfkNHnNWAiEAhgNd2FeUZfM5avzzCGDe6uU01uA4UHNkrCkVHr8tf6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37914},"main":"dist/index.js","_from":"file:bernierllc-openai-client-1.0.2.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/ab6c45cb06a59e47b4cccac3fd569763/bernierllc-openai-client-1.0.2.tgz","_integrity":"sha512-Gs6l6nN/U36seuHB9AO2h+fvhUuBGvDDrEwRdtWc9cI41AYMJw9qZ6MZs8NQo8QGHDQSFCWxH+7Ktm9qbOKG0Q==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking","directories":{},"_nodeVersion":"25.1.0","dependencies":{"openai":"^4.73.0","@bernierllc/logger":"^1.0.1","@bernierllc/retry-policy":"^0.1.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openai-client_1.0.2_1762459629398_0.7685000197758021","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bernierllc/openai-client","version":"1.0.3","keywords":["openai","gpt","gpt-4","ai","api","rate-limiting","retry","streaming","cost-tracking","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/openai-client@1.0.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"3e00ada8cfee73204a8a616b67bc02714e88915c","tarball":"https://registry.npmjs.org/@bernierllc/openai-client/-/openai-client-1.0.3.tgz","fileCount":14,"integrity":"sha512-Qabjkqte+dZolEYHxIIB0XkyIJxeqhHy4nLqkXkIPmK6jvtpP91V6VsvrONcDlyONWS0llnbOIDYdkm37zZRFQ==","signatures":[{"sig":"MEUCIQCpPG0SD7TaOlRF0sFaTlAlUK9P8KmIzlKlcRszZM4SHwIgNY+n7vpxH4M4+YMm7LkqVn38MOsRObdRoi+o3bREnoQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37915},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f6345528830b37de89a4c8e23634f1d6f796e576","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking","directories":{},"_nodeVersion":"25.1.0","dependencies":{"openai":"^4.73.0","@bernierllc/logger":"^1.0.1","@bernierllc/retry-policy":"^0.1.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openai-client_1.0.3_1762459915662_0.6811990903548932","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@bernierllc/openai-client","version":"1.0.5","keywords":["openai","gpt","gpt-4","ai","api","rate-limiting","retry","streaming","cost-tracking","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/openai-client@1.0.5","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"c08c8eda3c5d3a87e149de274890ff529430c521","tarball":"https://registry.npmjs.org/@bernierllc/openai-client/-/openai-client-1.0.5.tgz","fileCount":14,"integrity":"sha512-CBOlGGMyoMLFx3OPSF4lFQHRWrUk8vt4+pD++lcIYSRZv9J0oGC6vPn1zHV3reudGZjY4NU8vtdlxBMxcFp8TQ==","signatures":[{"sig":"MEUCIH7uzwm8z76azgGYaaKcIUAin90izhfDv0tHkdLJU8JPAiEAhArS9gEMjHDtIAxsWintu31C1MlgARHKnnYZ3P0UK1g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38594},"main":"dist/index.js","_from":"file:bernierllc-openai-client-1.0.5.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/2cfe8f91ba9f7560b5e28ebc9c8bdd39/bernierllc-openai-client-1.0.5.tgz","_integrity":"sha512-CBOlGGMyoMLFx3OPSF4lFQHRWrUk8vt4+pD++lcIYSRZv9J0oGC6vPn1zHV3reudGZjY4NU8vtdlxBMxcFp8TQ==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.6.2","description":"Type-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking","directories":{},"_nodeVersion":"25.2.1","dependencies":{"openai":"^4.73.0","@bernierllc/logger":"^1.0.1","@bernierllc/retry-policy":"^0.1.6"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openai-client_1.0.5_1764636014680_0.4955180392253169","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@bernierllc/openai-client","version":"1.0.6","keywords":["openai","gpt","gpt-4","ai","api","rate-limiting","retry","streaming","cost-tracking","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/openai-client@1.0.6","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"4dbdc8e50316e62c2f473757d6e635af99d8928a","tarball":"https://registry.npmjs.org/@bernierllc/openai-client/-/openai-client-1.0.6.tgz","fileCount":14,"integrity":"sha512-KdNb4xsj2zBswGlgOOkzl3OtmBYN6Jvj5Mze0PfkgMT5oYrMkgzyL/M4dAz7wT91vckNO479GpqXLgT3Z4VGkw==","signatures":[{"sig":"MEYCIQCoY7xujIf4A67akv3Cwuc0qNuUWDnhcRUqhooIqdaI2wIhAP69vVEsJNPFJ8e3PfeScMmBh1rBdT1L84JI4F3GSK94","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38688},"main":"dist/index.js","_from":"file:bernierllc-openai-client-1.0.6.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ceae466b-9a83-4093-9337-9063a0d28840"}},"_resolved":"/tmp/6a22ebc9204c231d7759a25e8fa3e61a/bernierllc-openai-client-1.0.6.tgz","_integrity":"sha512-KdNb4xsj2zBswGlgOOkzl3OtmBYN6Jvj5Mze0PfkgMT5oYrMkgzyL/M4dAz7wT91vckNO479GpqXLgT3Z4VGkw==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.7.0","description":"Type-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking","directories":{},"_nodeVersion":"20.19.6","dependencies":{"openai":"^4.73.0","@bernierllc/logger":"1.0.4","@bernierllc/retry-policy":"0.1.6"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openai-client_1.0.6_1766437785094_0.7712413779428886","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@bernierllc/openai-client","version":"1.0.7","keywords":["openai","gpt","gpt-4","ai","api","rate-limiting","retry","streaming","cost-tracking","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/openai-client@1.0.7","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"1ed4b6d7ec217c45eae333b2853721b3a2e284ef","tarball":"https://registry.npmjs.org/@bernierllc/openai-client/-/openai-client-1.0.7.tgz","fileCount":14,"integrity":"sha512-o0uajHGq0hGWyO8uLkAWdidgZekVWQxDsK6fxD9aTgGq8e1Pcwu/lpqxZR1Q9YRN0p9FEUTnA72w2yNJfE/5EA==","signatures":[{"sig":"MEYCIQDYo6YCFzVsP3izK0juCOXLfL4clD8MiMALqbfd16WfNgIhAJH8sp0LnYQ5fdf5x7kFAdik9KtxX3IvMiRF2cOANFH1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38688},"main":"dist/index.js","_from":"file:bernierllc-openai-client-1.0.7.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ceae466b-9a83-4093-9337-9063a0d28840"}},"_resolved":"/tmp/dd6d7989ad4c2ef67239eaee0a7c8f3f/bernierllc-openai-client-1.0.7.tgz","_integrity":"sha512-o0uajHGq0hGWyO8uLkAWdidgZekVWQxDsK6fxD9aTgGq8e1Pcwu/lpqxZR1Q9YRN0p9FEUTnA72w2yNJfE/5EA==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.7.0","description":"Type-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking","directories":{},"_nodeVersion":"20.19.6","dependencies":{"openai":"^4.73.0","@bernierllc/logger":"1.1.0","@bernierllc/retry-policy":"0.1.6"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openai-client_1.0.7_1766454419301_0.8787085471184366","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/openai-client","version":"1.2.0","keywords":["openai","gpt","gpt-4","ai","api","rate-limiting","retry","streaming","cost-tracking","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/openai-client@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"fa22fddeab9af4ca889aa961bbe8601727052402","tarball":"https://registry.npmjs.org/@bernierllc/openai-client/-/openai-client-1.2.0.tgz","fileCount":14,"integrity":"sha512-GukMVJHF50A1kQD/gSJ2b43/i4p+8Xet/tGwfo87hJRRJCuiamYigif79B8WF69n/O47lnyIc0AbuWWpk2CQVw==","signatures":[{"sig":"MEUCIQDh9n4rZHDaZHnZ7t+4igvRTS7YT1FPvl/m8GXa1Ei/6wIgeubnQO/CtjGi8PD1xwlgmB4Y6vG9l73y1UpzyBVN63E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38746},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ceae466b-9a83-4093-9337-9063a0d28840"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Type-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking","directories":{},"_nodeVersion":"20.19.6","dependencies":{"openai":"^4.73.0","@bernierllc/logger":"1.3.0","@bernierllc/retry-policy":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openai-client_1.2.0_1767642445090_0.43382999296334335","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/openai-client","version":"1.2.2","keywords":["openai","gpt","gpt-4","ai","api","rate-limiting","retry","streaming","cost-tracking","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/openai-client@1.2.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"00c5d1c8ae2444f02104bf4dfa6b155e9083ee0b","tarball":"https://registry.npmjs.org/@bernierllc/openai-client/-/openai-client-1.2.2.tgz","fileCount":14,"integrity":"sha512-WnL7OLDutsO+0viH6plKFifN8h0/uSKLqd1U4flNwoSq3Jy/WvdH05HfWWB6PlpbQzM92PyUh2p+4kqBVYloRg==","signatures":[{"sig":"MEYCIQCyLywWscFS4U5LzpYYHfCnIc+0etB2sokTZO2IuEV1LAIhAOn4yq/EZ3fMQahj2SxwAYAaEou87PYVkZJhIAJ0MYYb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38688},"main":"dist/index.js","_from":"file:bernierllc-openai-client-1.2.2.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ceae466b-9a83-4093-9337-9063a0d28840"}},"_resolved":"/home/runner/work/tools/tools/packages/core/openai-client/bernierllc-openai-client-1.2.2.tgz","_integrity":"sha512-WnL7OLDutsO+0viH6plKFifN8h0/uSKLqd1U4flNwoSq3Jy/WvdH05HfWWB6PlpbQzM92PyUh2p+4kqBVYloRg==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.11.0","description":"Type-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking","directories":{},"_nodeVersion":"20.20.0","dependencies":{"openai":"^4.73.0","@bernierllc/logger":"1.3.2","@bernierllc/retry-policy":"0.3.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openai-client_1.2.2_1773163229788_0.9183607191736265","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@bernierllc/openai-client","version":"1.2.3","keywords":["openai","gpt","gpt-4","ai","api","rate-limiting","retry","streaming","cost-tracking","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/openai-client@1.2.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"3efc459aaa8ef5a5b5cc65e6649e2b398623aa67","tarball":"https://registry.npmjs.org/@bernierllc/openai-client/-/openai-client-1.2.3.tgz","fileCount":14,"integrity":"sha512-IDMWrK5l158LWoo3a1wLXL3aroXLJcTyi82CekpZ83iVBRKHIiUDzsMJCsMWNTpr3MuEbs2qeC8MjfduZBw9xA==","signatures":[{"sig":"MEUCID5E9uLjZcYd1o5emy0h3yhr4H3F566l37bAJZ9kirxNAiEAuFSj5iAOqTrIgyw0xD6LX5W6GImjAeJKK5clPSxoSlg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38688},"main":"dist/index.js","_from":"file:bernierllc-openai-client-1.2.3.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ceae466b-9a83-4093-9337-9063a0d28840"}},"_resolved":"/home/runner/work/tools/tools/packages/core/openai-client/bernierllc-openai-client-1.2.3.tgz","_integrity":"sha512-IDMWrK5l158LWoo3a1wLXL3aroXLJcTyi82CekpZ83iVBRKHIiUDzsMJCsMWNTpr3MuEbs2qeC8MjfduZBw9xA==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.14.1","description":"Type-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking","directories":{},"_nodeVersion":"20.20.2","dependencies":{"openai":"^4.73.0","@bernierllc/logger":"1.4.0","@bernierllc/retry-policy":"0.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openai-client_1.2.3_1779133569044_0.4639235469447336","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@bernierllc/openai-client","version":"1.2.4","keywords":["openai","gpt","gpt-4","ai","api","rate-limiting","retry","streaming","cost-tracking","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/openai-client@1.2.4","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"9b2d1071a88fafd8efa2172f68671ba997ac4c49","tarball":"https://registry.npmjs.org/@bernierllc/openai-client/-/openai-client-1.2.4.tgz","fileCount":14,"integrity":"sha512-kls8rnr72AMrulPKDXrSGIvgXHJ8TYe+YuAc1bgt+0I9zW/It/B+YQLecM5wWZFzQgsbGDV3kAC8wse05vGVjg==","signatures":[{"sig":"MEUCIQDkMBAVhXUB3jIiOYBcbDxvWUbC5mBarZ2WB/xjEAenmQIgHUimFqUFz/eDNd+TujpSzUiGI4r2MEqtnf1Drk1Kb/4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38688},"main":"dist/index.js","_from":"file:bernierllc-openai-client-1.2.4.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ceae466b-9a83-4093-9337-9063a0d28840"}},"_resolved":"/home/runner/work/tools/tools/packages/core/openai-client/bernierllc-openai-client-1.2.4.tgz","_integrity":"sha512-kls8rnr72AMrulPKDXrSGIvgXHJ8TYe+YuAc1bgt+0I9zW/It/B+YQLecM5wWZFzQgsbGDV3kAC8wse05vGVjg==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.14.1","description":"Type-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking","directories":{},"_nodeVersion":"20.20.2","dependencies":{"openai":"^4.73.0","@bernierllc/logger":"1.4.2","@bernierllc/retry-policy":"0.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openai-client_1.2.4_1779157272035_0.07230375516923959","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@bernierllc/openai-client","version":"1.2.5","keywords":["openai","gpt","gpt-4","ai","api","rate-limiting","retry","streaming","cost-tracking","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/openai-client@1.2.5","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"7e8cd103608d24aff5fa33b65ab8ff6383f2b7c1","tarball":"https://registry.npmjs.org/@bernierllc/openai-client/-/openai-client-1.2.5.tgz","fileCount":14,"integrity":"sha512-yO8nzQMwf3WE84Pc7zXPfc2RpA59MwV5P7xrwMnQYMIlZVchV37drjKRlQ5JROezbeQdE/o2//bnwSgHU7FDcA==","signatures":[{"sig":"MEYCIQCnllFab2Jl4lf2BRZO2J/Q+CKohUHsscdXm49IyF4PkwIhAMvE2RGBBhIQZSXx8KsRO9t/Dg7YVvAg5d70MhEkdxXZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38688},"main":"dist/index.js","_from":"file:bernierllc-openai-client-1.2.5.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ceae466b-9a83-4093-9337-9063a0d28840"}},"_resolved":"/home/runner/work/tools/tools/packages/core/openai-client/bernierllc-openai-client-1.2.5.tgz","_integrity":"sha512-yO8nzQMwf3WE84Pc7zXPfc2RpA59MwV5P7xrwMnQYMIlZVchV37drjKRlQ5JROezbeQdE/o2//bnwSgHU7FDcA==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.14.1","description":"Type-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking","directories":{},"_nodeVersion":"20.20.2","dependencies":{"openai":"^4.73.0","@bernierllc/logger":"1.4.3","@bernierllc/retry-policy":"0.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openai-client_1.2.5_1779221388394_0.8602859632126847","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/openai-client","version":"1.3.0","keywords":["openai","gpt","gpt-4","ai","api","rate-limiting","retry","streaming","cost-tracking","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/openai-client@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"4f7b349bdbe9d5b26c20beb8d7b1b415d7ce65ca","tarball":"https://registry.npmjs.org/@bernierllc/openai-client/-/openai-client-1.3.0.tgz","fileCount":14,"integrity":"sha512-fy3fdrLBP+empIq3Yr1K6R1vLf+tuZOdRRhBMJgUTcnPm6e16QOifz6gYxjdlpAjAczSZQtEGDd4o04DJGlQXw==","signatures":[{"sig":"MEUCIC9qAatrD+KnBtOiKgL8cgJbKBgU2Ug57P62XjcPkRPRAiEAqm+tzxJlYVx7Nc5K9E4ZxSZvzzgxuin+8RcTcLQeR0A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38688},"main":"dist/index.js","_from":"file:bernierllc-openai-client-1.3.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ceae466b-9a83-4093-9337-9063a0d28840"}},"_resolved":"/home/runner/work/tools/tools/packages/core/openai-client/bernierllc-openai-client-1.3.0.tgz","_integrity":"sha512-fy3fdrLBP+empIq3Yr1K6R1vLf+tuZOdRRhBMJgUTcnPm6e16QOifz6gYxjdlpAjAczSZQtEGDd4o04DJGlQXw==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.14.1","description":"Type-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking","directories":{},"_nodeVersion":"20.20.2","dependencies":{"openai":"^4.73.0","@bernierllc/logger":"1.6.0","@bernierllc/retry-policy":"0.6.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openai-client_1.3.0_1779241298909_0.257538599581435","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/openai-client","version":"1.4.0","keywords":["openai","gpt","gpt-4","ai","api","rate-limiting","retry","streaming","cost-tracking","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/openai-client@1.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"01205bdfb0b4d76bbb21ffbc47606a26981ede8c","tarball":"https://registry.npmjs.org/@bernierllc/openai-client/-/openai-client-1.4.0.tgz","fileCount":18,"integrity":"sha512-yuRVbN6hV9RG/Tj2S6imAIv/NbS5APl5JjpyzPlOTb0CQkeULrzfg7cyF+iRHq3DlJKZdDhXQWDRd0cRFnGr5g==","signatures":[{"sig":"MEYCIQCVaTR4+6sMjWuBQgyJCtjyBCA5+F1yhNsIsOfzmXybpwIhAMHVPrTvpR6YjXyb3GbrroTpyNCNUMCDNKaK/yi/f/Zr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41423},"main":"dist/index.js","_from":"file:bernierllc-openai-client-1.4.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ceae466b-9a83-4093-9337-9063a0d28840"}},"_resolved":"/home/runner/work/tools/tools/packages/core/openai-client/bernierllc-openai-client-1.4.0.tgz","_integrity":"sha512-yuRVbN6hV9RG/Tj2S6imAIv/NbS5APl5JjpyzPlOTb0CQkeULrzfg7cyF+iRHq3DlJKZdDhXQWDRd0cRFnGr5g==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.14.1","description":"Type-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking","directories":{},"_nodeVersion":"20.20.2","dependencies":{"openai":"^4.73.0","@bernierllc/logger":"1.6.0","@bernierllc/retry-policy":"0.6.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openai-client_1.4.0_1779243256786_0.07206249031449508","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@bernierllc/openai-client","version":"1.5.0","keywords":["openai","gpt","gpt-4","ai","api","rate-limiting","retry","streaming","cost-tracking","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","_id":"@bernierllc/openai-client@1.5.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"80340e0668149a6b58e074291c59dca49ee885a5","tarball":"https://registry.npmjs.org/@bernierllc/openai-client/-/openai-client-1.5.0.tgz","fileCount":18,"integrity":"sha512-GgekIL78X99yI6sSL1phdABbd25nOu0QjGB1YoDp+6etrGpdjlX/4VCk63xovljDAQG6othuj9kyQLn5DRVO2A==","signatures":[{"sig":"MEUCIQDJlfqS8uEB98iydgNzMzPNzlVSlS+SsCyv4XhM812RnAIgYlQwYhnu8wgBMkvttbRzlR0yFcEGCngpT8qHFMCJ/AM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41423},"main":"dist/index.js","_from":"file:bernierllc-openai-client-1.5.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","test:run":"jest --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ceae466b-9a83-4093-9337-9063a0d28840"}},"_resolved":"/home/runner/work/tools/tools/packages/core/openai-client/bernierllc-openai-client-1.5.0.tgz","_integrity":"sha512-GgekIL78X99yI6sSL1phdABbd25nOu0QjGB1YoDp+6etrGpdjlX/4VCk63xovljDAQG6othuj9kyQLn5DRVO2A==","repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.14.1","description":"Type-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking","directories":{},"_nodeVersion":"20.20.2","dependencies":{"openai":"^4.73.0","@bernierllc/logger":"1.7.0","@bernierllc/retry-policy":"0.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/openai-client_1.5.0_1779250048541_0.7956015064654915","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@bernierllc/openai-client","version":"1.5.1","description":"Type-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking","main":"dist/index.js","types":"dist/index.d.ts","keywords":["openai","gpt","gpt-4","ai","api","rate-limiting","retry","streaming","cost-tracking","bernierllc"],"author":{"name":"Bernier LLC"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bernier-llc/tools.git"},"dependencies":{"openai":"^4.73.0","@bernierllc/logger":"1.7.1","@bernierllc/retry-policy":"0.7.0"},"devDependencies":{"@types/jest":"^29.5.14","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","jest":"^29.5.0","rimraf":"^5.0.0","ts-jest":"^29.4.0","typescript":"^5.0.0"},"engines":{"node":">=18.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","test:run":"jest --passWithNoTests","lint":"eslint src/**/*.ts","clean":"rimraf dist"},"_id":"@bernierllc/openai-client@1.5.1","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"homepage":"https://github.com/bernier-llc/tools#readme","_integrity":"sha512-+sSdbSDaIGEtC6eMFOUg+5xYATXTKVzwzJ1G3CwJd/HvGhFqMV4PRHKRfIP+YYNyaVUL4olqIjViN+bIPoCZ+A==","_resolved":"/home/runner/work/tools/tools/packages/core/openai-client/bernierllc-openai-client-1.5.1.tgz","_from":"file:bernierllc-openai-client-1.5.1.tgz","_nodeVersion":"24.18.0","_npmVersion":"12.0.1","dist":{"integrity":"sha512-+sSdbSDaIGEtC6eMFOUg+5xYATXTKVzwzJ1G3CwJd/HvGhFqMV4PRHKRfIP+YYNyaVUL4olqIjViN+bIPoCZ+A==","shasum":"e18005cc7894cbd33d3f895f7c05f5e78a59708b","tarball":"https://registry.npmjs.org/@bernierllc/openai-client/-/openai-client-1.5.1.tgz","fileCount":18,"unpackedSize":41423,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFqI+E9n8qLo5/U8koHSuwRK2ih1Ex4DCFHurxz+fggVAiBhEMld02G7MoRUh9iEtExZbHnGeSKL48Zo8imQpedisw=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ceae466b-9a83-4093-9337-9063a0d28840"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openai-client_1.5.1_1784015677457_0.8591234657224973"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-06T20:07:09.319Z","modified":"2026-07-14T07:54:37.719Z","1.0.2":"2025-11-06T20:07:09.635Z","1.0.3":"2025-11-06T20:11:55.885Z","1.0.5":"2025-12-02T00:40:14.867Z","1.0.6":"2025-12-22T21:09:45.246Z","1.0.7":"2025-12-23T01:46:59.443Z","1.2.0":"2026-01-05T19:47:25.212Z","1.2.2":"2026-03-10T17:20:29.920Z","1.2.3":"2026-05-18T19:46:09.182Z","1.2.4":"2026-05-19T02:21:12.217Z","1.2.5":"2026-05-19T20:09:48.523Z","1.3.0":"2026-05-20T01:41:39.056Z","1.4.0":"2026-05-20T02:14:16.920Z","1.5.0":"2026-05-20T04:07:28.690Z","1.5.1":"2026-07-14T07:54:37.583Z"},"bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"MIT","homepage":"https://github.com/bernier-llc/tools#readme","keywords":["openai","gpt","gpt-4","ai","api","rate-limiting","retry","streaming","cost-tracking","bernierllc"],"repository":{"type":"git","url":"git+https://github.com/bernier-llc/tools.git"},"description":"Type-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/openai-client\n\nType-safe OpenAI API client with automatic rate limiting, retry logic, streaming support, and cost tracking.\n\n## Installation\n\n```bash\nnpm install @bernierllc/openai-client\n```\n\n## Features\n\n- **Type-safe API**: Full TypeScript support with strict typing\n- **Automatic Retries**: Built-in retry logic with exponential backoff\n- **Rate Limiting**: Configurable request rate limiting\n- **Cost Tracking**: Automatic tracking of API usage and costs\n- **Streaming Support**: Stream completions with real-time chunks\n- **Multiple Models**: Support for GPT-4, GPT-4 Turbo, GPT-4o, GPT-3.5 Turbo\n- **Usage Statistics**: Track tokens, costs, and requests by model\n- **Logger Integration**: Uses @bernierllc/logger for structured logging\n\n## Usage\n\n### Basic Completion\n\n```typescript\nimport { OpenAIClient, OpenAIModel } from '@bernierllc/openai-client';\n\nconst client = new OpenAIClient({\n  apiKey: process.env.OPENAI_API_KEY\n});\n\nconst result = await client.complete('Explain quantum computing in simple terms', {\n  model: OpenAIModel.GPT_4O,\n  maxTokens: 500\n});\n\nif (result.success) {\n  console.log(result.content);\n  console.log('Cost:', result.cost?.totalCost);\n  console.log('Tokens:', result.usage?.totalTokens);\n}\n```\n\n### Streaming Response\n\n```typescript\nconst result = await client.stream(\n  'Write a short story about a robot',\n  (chunk) => {\n    process.stdout.write(chunk);\n  },\n  {\n    model: OpenAIModel.GPT_4O_MINI,\n    maxTokens: 1000\n  }\n);\n\nconsole.log('\\nStreaming complete!');\nconsole.log('Total cost:', result.cost?.totalCost);\n```\n\n### With System Prompt\n\n```typescript\nconst result = await client.complete(\n  'What is the capital of France?',\n  {\n    systemPrompt: 'You are a helpful geography teacher. Keep answers brief.',\n    model: OpenAIModel.GPT_35_TURBO,\n    temperature: 0.7\n  }\n);\n```\n\n### Advanced Configuration\n\n```typescript\nconst client = new OpenAIClient({\n  apiKey: process.env.OPENAI_API_KEY,\n  organization: 'org-123',\n  defaultModel: OpenAIModel.GPT_4O,\n  maxRetries: 5,\n  rateLimit: {\n    requestsPerMinute: 60,\n    tokensPerMinute: 90000\n  },\n  enableLogging: true\n});\n```\n\n### Cost Tracking\n\n```typescript\n// Make several requests\nawait client.complete('Question 1');\nawait client.complete('Question 2');\nawait client.complete('Question 3');\n\n// Get usage statistics\nconst stats = client.getUsage();\n\nconsole.log('Total Requests:', stats.totalRequests);\nconsole.log('Total Tokens:', stats.totalTokens);\nconsole.log('Total Cost: $', stats.totalCost.toFixed(4));\nconsole.log('Requests by Model:', stats.requestsByModel);\n\n// Reset statistics\nclient.resetUsage();\n```\n\n### Rate Limiting\n\n```typescript\nconst client = new OpenAIClient({\n  apiKey: process.env.OPENAI_API_KEY,\n  rateLimit: {\n    requestsPerMinute: 10,\n    tokensPerMinute: 10000\n  }\n});\n\n// Check rate limit status\nconst status = client.getRateLimitStatus();\nconsole.log('Requests remaining:', status?.requestsRemaining);\nconsole.log('Reset time:', status?.resetTime);\n```\n\n### Disable Rate Limiting\n\n```typescript\nconst client = new OpenAIClient({\n  apiKey: process.env.OPENAI_API_KEY,\n  rateLimit: null // Disable rate limiting\n});\n```\n\n## API Reference\n\n### OpenAIClient\n\n#### Constructor\n\n```typescript\nnew OpenAIClient(config: OpenAIClientConfig)\n```\n\n**Config Options:**\n\n- `apiKey` (required): OpenAI API key\n- `organization` (optional): OpenAI organization ID\n- `defaultModel` (optional): Default model to use (default: GPT_4O_MINI)\n- `maxRetries` (optional): Maximum retry attempts (default: 3)\n- `rateLimit` (optional): Rate limiting configuration or null to disable\n- `enableLogging` (optional): Enable logging (default: true)\n\n#### Methods\n\n##### `complete(prompt: string, options?: CompletionOptions): Promise<CompletionResult>`\n\nSend a completion request to OpenAI.\n\n**Options:**\n\n- `model`: OpenAI model to use\n- `maxTokens`: Maximum tokens to generate (default: 1024)\n- `temperature`: Sampling temperature (0-2)\n- `topP`: Nucleus sampling parameter\n- `frequencyPenalty`: Frequency penalty (-2 to 2)\n- `presencePenalty`: Presence penalty (-2 to 2)\n- `stopSequences`: Array of stop sequences\n- `systemPrompt`: System message for conversation\n- `user`: Unique user identifier for abuse monitoring\n\n**Returns:**\n\n- `success`: Whether the request succeeded\n- `content`: Generated text content\n- `usage`: Token usage statistics\n- `cost`: Cost breakdown (input, output, total)\n- `model`: Model used\n- `finishReason`: Why generation stopped\n- `error`: Error message if failed\n\n##### `stream(prompt: string, onChunk: StreamChunkCallback, options?: CompletionOptions): Promise<CompletionResult>`\n\nStream a completion response with real-time chunks.\n\n**Parameters:**\n\n- `prompt`: The prompt text\n- `onChunk`: Callback function called for each chunk\n- `options`: Same as `complete()` options\n\n##### `getUsage(): UsageStats`\n\nGet current usage statistics.\n\n**Returns:**\n\n- `totalRequests`: Total number of requests\n- `totalInputTokens`: Total input tokens used\n- `totalOutputTokens`: Total output tokens used\n- `totalTokens`: Total tokens (input + output)\n- `totalCost`: Total cost in USD\n- `requestsByModel`: Request count per model\n\n##### `getRateLimitStatus(): RateLimitStatus | null`\n\nGet current rate limit status. Returns `null` if rate limiting is disabled.\n\n**Returns:**\n\n- `requestsRemaining`: Requests remaining in current window\n- `tokensRemaining`: Tokens remaining (currently not tracked)\n- `resetTime`: When the rate limit resets\n\n##### `resetUsage(): void`\n\nReset all usage statistics.\n\n### Models\n\n```typescript\nenum OpenAIModel {\n  GPT_4 = 'gpt-4',\n  GPT_4_TURBO = 'gpt-4-turbo-preview',\n  GPT_4O = 'gpt-4o',\n  GPT_4O_MINI = 'gpt-4o-mini',\n  GPT_35_TURBO = 'gpt-3.5-turbo',\n  GPT_35_TURBO_16K = 'gpt-3.5-turbo-16k'\n}\n```\n\n### Pricing (per 1M tokens)\n\n| Model | Input | Output |\n|-------|-------|--------|\n| GPT-4 | $30.00 | $60.00 |\n| GPT-4 Turbo | $10.00 | $30.00 |\n| GPT-4o | $2.50 | $10.00 |\n| GPT-4o Mini | $0.15 | $0.60 |\n| GPT-3.5 Turbo | $0.50 | $1.50 |\n| GPT-3.5 Turbo 16K | $3.00 | $4.00 |\n\n*Pricing as of January 2025. Check OpenAI's pricing page for current rates.*\n\n## Error Handling\n\nThe client automatically retries failed requests with exponential backoff. All methods return a `CompletionResult` with a `success` flag:\n\n```typescript\nconst result = await client.complete('Test prompt');\n\nif (result.success) {\n  console.log('Success:', result.content);\n} else {\n  console.error('Error:', result.error);\n}\n```\n\n## Integration Status\n\n### Logger Integration\n**Status**: Integrated\n\n**Justification**: This package uses `@bernierllc/logger` for structured logging of all AI operations. Logs include request/response metadata (model, tokens, cost), retry attempts and backoff delays, rate limit events, and error details to help with debugging and cost monitoring.\n\n**Pattern**: Direct integration - logger is a required dependency for this package.\n\n### NeverHub Integration\n**Status**: Not applicable\n\n**Justification**: This is a core AI client package that provides OpenAI API connectivity. It does not participate in service discovery, event publishing, or service mesh operations. AI clients are infrastructure utilities that don't require service registration or discovery.\n\n**Pattern**: Core utility - no service mesh integration needed. Service-level packages that use this client can integrate with NeverHub if needed.\n\n### Retry Policy Integration\n\nUses [@bernierllc/retry-policy](../retry-policy) for intelligent retry logic with:\n\n- Exponential backoff\n- Jitter to prevent thundering herd\n- Configurable retry attempts\n- Automatic error classification\n\n## See Also\n\n- [@bernierllc/anthropic-client](../anthropic-client) - Anthropic Claude API client\n- [@bernierllc/logger](../logger) - Structured logging\n- [@bernierllc/retry-policy](../retry-policy) - Retry logic utilities\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n","readmeFilename":"README.md"}