From ecca6bc2eea391ee53f1a1d6cac9665199447ae0 Mon Sep 17 00:00:00 2001 From: Stainless Bot <107565488+stainless-bot@users.noreply.github.com> Date: Wed, 14 Feb 2024 15:16:30 -0500 Subject: [PATCH 1/3] chore(ci): move github release logic to github app (#671) --- .github/workflows/create-releases.yml | 64 --------------------------- .github/workflows/publish-deno.yml | 8 +++- .github/workflows/publish-npm.yml | 8 +++- .github/workflows/release-doctor.yml | 1 - bin/check-release-environment | 4 -- 5 files changed, 12 insertions(+), 73 deletions(-) delete mode 100644 .github/workflows/create-releases.yml diff --git a/.github/workflows/create-releases.yml b/.github/workflows/create-releases.yml deleted file mode 100644 index 7ecd6282a..000000000 --- a/.github/workflows/create-releases.yml +++ /dev/null @@ -1,64 +0,0 @@ -name: Create releases -on: - schedule: - - cron: '0 5 * * *' # every day at 5am UTC - push: - branches: - - master - -jobs: - release: - name: release - if: github.ref == 'refs/heads/master' && github.repository == 'openai/openai-node' - runs-on: ubuntu-latest - environment: publish - - steps: - - uses: actions/checkout@v3 - - - uses: stainless-api/trigger-release-please@v1 - id: release - with: - repo: ${{ github.event.repository.full_name }} - stainless-api-key: ${{ secrets.STAINLESS_API_KEY }} - - - name: Generate a token - id: generate_token - uses: actions/create-github-app-token@v1 - with: - app-id: ${{ secrets.APP_ID }} - private-key: ${{ secrets.APP_PRIVATE_KEY }} - owner: 'openai' - repositories: 'openai-node,openai-deno-build' - - - name: Set up Node - if: ${{ steps.release.outputs.releases_created }} - uses: actions/setup-node@v3 - with: - node-version: '18' - - - name: Set up Deno - if: ${{ steps.release.outputs.releases_created }} - uses: denoland/setup-deno@v1 - with: - deno-version: v1.35.1 - - - name: Install dependencies - if: ${{ steps.release.outputs.releases_created }} - run: | - yarn install - - - name: Publish to NPM - if: ${{ steps.release.outputs.releases_created }} - run: | - bash ./bin/publish-npm - env: - NPM_TOKEN: ${{ secrets.OPENAI_NPM_TOKEN || secrets.NPM_TOKEN }} - - - name: Publish to Deno - if: ${{ steps.release.outputs.releases_created }} - run: | - bash ./scripts/git-publish-deno.sh - env: - DENO_PUSH_REMOTE_URL: https://username:${{ steps.generate_token.outputs.token }}@github.com/openai/openai-deno-build.git - DENO_PUSH_BRANCH: main diff --git a/.github/workflows/publish-deno.yml b/.github/workflows/publish-deno.yml index 578b592b3..38d2a69b4 100644 --- a/.github/workflows/publish-deno.yml +++ b/.github/workflows/publish-deno.yml @@ -1,9 +1,13 @@ -# workflow for re-running publishing to Deno in case it fails for some reason -# you can run this workflow by navigating to https://www.github.com/openai/openai-node/actions/workflows/publish-deno.yml +# This workflow is triggered when a GitHub release is created. +# It can also be run manually to re-publish to Deno in case it failed for some reason. +# You can run this workflow by navigating to https://www.github.com/openai/openai-node/actions/workflows/publish-deno.yml name: Publish Deno on: workflow_dispatch: + release: + types: [published] + jobs: publish: name: publish diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index 2258ec560..96e0a6c48 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -1,9 +1,13 @@ -# workflow for re-running publishing to NPM in case it fails for some reason -# you can run this workflow by navigating to https://www.github.com/openai/openai-node/actions/workflows/publish-npm.yml +# This workflow is triggered when a GitHub release is created. +# It can also be run manually to re-publish to NPM in case it failed for some reason. +# You can run this workflow by navigating to https://www.github.com/openai/openai-node/actions/workflows/publish-npm.yml name: Publish NPM on: workflow_dispatch: + release: + types: [published] + jobs: publish: name: publish diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml index b640869d0..819ef9f8e 100644 --- a/.github/workflows/release-doctor.yml +++ b/.github/workflows/release-doctor.yml @@ -19,5 +19,4 @@ jobs: run: | bash ./bin/check-release-environment env: - STAINLESS_API_KEY: ${{ secrets.STAINLESS_API_KEY }} NPM_TOKEN: ${{ secrets.OPENAI_NPM_TOKEN || secrets.NPM_TOKEN }} diff --git a/bin/check-release-environment b/bin/check-release-environment index fdd847176..69bd03ea6 100644 --- a/bin/check-release-environment +++ b/bin/check-release-environment @@ -2,10 +2,6 @@ errors=() -if [ -z "${STAINLESS_API_KEY}" ]; then - errors+=("The STAINLESS_API_KEY secret has not been set. Please contact Stainless for an API key & set it in your organization secrets on GitHub.") -fi - if [ -z "${NPM_TOKEN}" ]; then errors+=("The OPENAI_NPM_TOKEN secret has not been set. Please set it in either this repository's secrets or your organization secrets") fi From 27d37705d17e05c3761ccefcf09c4e2018eb5772 Mon Sep 17 00:00:00 2001 From: Stainless Bot <107565488+stainless-bot@users.noreply.github.com> Date: Thu, 15 Feb 2024 14:37:22 -0500 Subject: [PATCH 2/3] chore(internal): refactor release environment script (#674) --- bin/check-release-environment | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/check-release-environment b/bin/check-release-environment index 69bd03ea6..68536cedb 100644 --- a/bin/check-release-environment +++ b/bin/check-release-environment @@ -6,9 +6,9 @@ if [ -z "${NPM_TOKEN}" ]; then errors+=("The OPENAI_NPM_TOKEN secret has not been set. Please set it in either this repository's secrets or your organization secrets") fi -len=${#errors[@]} +lenErrors=${#errors[@]} -if [[ len -gt 0 ]]; then +if [[ lenErrors -gt 0 ]]; then echo -e "Found the following errors in the release environment:\n" for error in "${errors[@]}"; do From aba4658b9f10536579d0ddb667c9926847d6976f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 15 Feb 2024 19:38:46 +0000 Subject: [PATCH 3/3] chore(next => master): release abc 0.0.1 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 82 +++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2cb1bcea1..b985ff6e7 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "4.28.0" + ".": "0.0.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index cc193b5a8..cf33040f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,87 @@ # Changelog +## 0.0.1 (2024-02-15) + +Full Changelog: [...abc-v0.0.1](https://github.com/openai/openai-node/compare/...abc-v0.0.1) + +### Features + +* allow installing package directly from github ([#522](https://github.com/openai/openai-node/issues/522)) ([51926d7](https://github.com/openai/openai-node/commit/51926d7a0092744e49de39f4988feddf313adafa)) +* **api:** add 'gpt-3.5-turbo-instruct', fine-tune error objects, update documentation ([#329](https://github.com/openai/openai-node/issues/329)) ([e5f3852](https://github.com/openai/openai-node/commit/e5f385233737002b4bb47a94cba33da7fedfe64d)) +* **api:** add `timestamp_granularities`, add `gpt-3.5-turbo-0125` model ([#661](https://github.com/openai/openai-node/issues/661)) ([9b2d5be](https://github.com/openai/openai-node/commit/9b2d5be896d3e4da08a9bb5bbdf7ba7bacca8caf)) +* **api:** add additional instructions for runs ([#586](https://github.com/openai/openai-node/issues/586)) ([dcf732b](https://github.com/openai/openai-node/commit/dcf732bf1cd9c9be6d818d45d3658a43bcf795c5)) +* **api:** add embeddings encoding_format ([#390](https://github.com/openai/openai-node/issues/390)) ([cf70dea](https://github.com/openai/openai-node/commit/cf70deaba1426786aba9b938d280c61aeb516e34)) +* **api:** add gpt-3.5-turbo-1106 ([#496](https://github.com/openai/openai-node/issues/496)) ([206a43b](https://github.com/openai/openai-node/commit/206a43baa7186d55031113eda7a1ca1e7a3453a1)) +* **api:** add optional `name` argument + improve docs ([#569](https://github.com/openai/openai-node/issues/569)) ([c4fadb4](https://github.com/openai/openai-node/commit/c4fadb4513fc2e35cf0e4b9512ec39a6bd0e42dd)) +* **api:** add text embeddings dimensions param ([#650](https://github.com/openai/openai-node/issues/650)) ([413df77](https://github.com/openai/openai-node/commit/413df77441c8da1a8971a41d342815a6e9223698)) +* **api:** add token logprobs to chat completions ([#576](https://github.com/openai/openai-node/issues/576)) ([f1852f6](https://github.com/openai/openai-node/commit/f1852f6d016919938117445d9ad8c65472b91996)) +* **api:** add usage to runs and run steps ([#640](https://github.com/openai/openai-node/issues/640)) ([ebc786b](https://github.com/openai/openai-node/commit/ebc786b8330b0450724354fe169483d74beca7e8)) +* **api:** releases from DevDay; assistants, multimodality, tools, dall-e-3, tts, and more ([#433](https://github.com/openai/openai-node/issues/433)) ([84b4328](https://github.com/openai/openai-node/commit/84b43280089eacdf18f171723591856811beddce)) +* **api:** remove `content_filter` stop_reason and update documentation ([#352](https://github.com/openai/openai-node/issues/352)) ([a4b401e](https://github.com/openai/openai-node/commit/a4b401e91a0b3fbf55aedfb6ed6d93396377bf27)) +* **api:** unify function types ([#467](https://github.com/openai/openai-node/issues/467)) ([df2727a](https://github.com/openai/openai-node/commit/df2727a216095d49b6ba3fc52cc2b361742ef1f3)) +* **api:** updates ([#501](https://github.com/openai/openai-node/issues/501)) ([bdb79f9](https://github.com/openai/openai-node/commit/bdb79f9ed2ad4fdebae3c42cdad97f2ffa109589)) +* **api:** updates ([#669](https://github.com/openai/openai-node/issues/669)) ([0ab363d](https://github.com/openai/openai-node/commit/0ab363de477910ea2fedb5ac3d4c50b3e49798eb)) +* **beta:** add streaming and function calling helpers ([#409](https://github.com/openai/openai-node/issues/409)) ([e4ea7a1](https://github.com/openai/openai-node/commit/e4ea7a171a82019d9aa75f4bb111b31dd6afd3d7)) +* **client:** add auto-pagination to fine tuning list endpoints ([#254](https://github.com/openai/openai-node/issues/254)) ([5f89c5e](https://github.com/openai/openai-node/commit/5f89c5e6b9088cc2e86405a32b60cae91c078ce1)) +* **client:** add files.waitForProcessing() method ([#292](https://github.com/openai/openai-node/issues/292)) ([ef59010](https://github.com/openai/openai-node/commit/ef59010cab0c666fa8a437ec6e27800789aa8705)) +* **client:** adjust retry behavior to be exponential backoff ([#400](https://github.com/openai/openai-node/issues/400)) ([2bc14ce](https://github.com/openai/openai-node/commit/2bc14ce300ef020bc045199fe3d76dd352d78ef9)) +* **client:** allow binary returns ([#416](https://github.com/openai/openai-node/issues/416)) ([d50a216](https://github.com/openai/openai-node/commit/d50a2162eb1de7dff9bad3e02ca7ec12bf46b6b8)) +* **client:** handle retry-after with a date ([#340](https://github.com/openai/openai-node/issues/340)) ([b6dd384](https://github.com/openai/openai-node/commit/b6dd38488ea7cc4c22495f16d027b7ffdb87da53)) +* **client:** retry on 408 Request Timeout ([#310](https://github.com/openai/openai-node/issues/310)) ([1f98eac](https://github.com/openai/openai-node/commit/1f98eac5be956e56d75ef5456115165b45a4763c)) +* **client:** support importing node or web shims manually ([#325](https://github.com/openai/openai-node/issues/325)) ([49101a0](https://github.com/openai/openai-node/commit/49101a0e864033cf30273c7b30283a9f5fb8b05e)) +* **client:** support reading the base url from an env variable ([#547](https://github.com/openai/openai-node/issues/547)) ([eb82824](https://github.com/openai/openai-node/commit/eb82824f89c31d752cdb4f198716a199e3b6eafd)) +* **cli:** rewrite in JS for better compatibility ([#244](https://github.com/openai/openai-node/issues/244)) ([d8d7c05](https://github.com/openai/openai-node/commit/d8d7c0592bfad89669cd2f174e6207370cd7d3fb)) +* **errors:** add status code to error message ([#315](https://github.com/openai/openai-node/issues/315)) ([9341219](https://github.com/openai/openai-node/commit/93412197c67cb3fb203f35e3ae0a7c3fb173453e)) +* fixes tests where an array has to have unique enum values ([#290](https://github.com/openai/openai-node/issues/290)) ([a10b895](https://github.com/openai/openai-node/commit/a10b8956b3eaae7cdcb90329a8386a41219ca021)) +* **github:** include a devcontainer setup ([#413](https://github.com/openai/openai-node/issues/413)) ([647a417](https://github.com/openai/openai-node/commit/647a41780c33ce6348d3b5d6e5f41d3667cc1b97)) +* handle 204 No Content gracefully ([#391](https://github.com/openai/openai-node/issues/391)) ([2dd005c](https://github.com/openai/openai-node/commit/2dd005c1c497605036d3524f19d130b3fc5f8d8b)) +* make docs more readable by eliminating unnecessary escape sequences ([#287](https://github.com/openai/openai-node/issues/287)) ([a068043](https://github.com/openai/openai-node/commit/a06804314d4815d420c97f6f965c926ea70d56df)) +* make docs urls in comments absolute ([#306](https://github.com/openai/openai-node/issues/306)) ([9db3819](https://github.com/openai/openai-node/commit/9db381961e38d2280b0602447e7d91691b327bde)) +* **package:** add Bun export map ([#269](https://github.com/openai/openai-node/issues/269)) ([16f239c](https://github.com/openai/openai-node/commit/16f239c6b4e8526371b01c511d2e0ebba4c5c8c6)) +* **package:** export a root error type ([#338](https://github.com/openai/openai-node/issues/338)) ([462bcda](https://github.com/openai/openai-node/commit/462bcda7140611afa20bc25de4aec6d4b205b37d)) +* re-export chat completion types at the top level ([#268](https://github.com/openai/openai-node/issues/268)) ([1a71a39](https://github.com/openai/openai-node/commit/1a71a39421828fdde7b8605094363a5047d2fdc9)) +* re-export chat completion types at the top level, and work around webpack limitations ([#365](https://github.com/openai/openai-node/issues/365)) ([bb815d0](https://github.com/openai/openai-node/commit/bb815d0373ae33f58329e34e8983f5b3881db22d)) +* streaming improvements ([#411](https://github.com/openai/openai-node/issues/411)) ([4b28553](https://github.com/openai/openai-node/commit/4b28553fc609bc9aa4a1f642cbb2887c936a7d97)) +* **tests:** unskip multipart form data tests ([#275](https://github.com/openai/openai-node/issues/275)) ([47d3e18](https://github.com/openai/openai-node/commit/47d3e18a3ee987d04b958dad1a51821ad5472d54)) +* **types:** export RequestOptions type ([#240](https://github.com/openai/openai-node/issues/240)) ([ecf3bce](https://github.com/openai/openai-node/commit/ecf3bcee3c64a80a3cd901aa32d3db78d1364645)) +* **types:** extract ChatCompletionRole enum to its own type ([#298](https://github.com/openai/openai-node/issues/298)) ([5893e37](https://github.com/openai/openai-node/commit/5893e37406ff85331c85a3baa519ca3051a28e00)) +* **types:** fix ambiguous auto-import for chat completions params ([#266](https://github.com/openai/openai-node/issues/266)) ([19c99fb](https://github.com/openai/openai-node/commit/19c99fb268d6d6c7fc7aaa66475c35f45d12b4bd)) + + +### Bug Fixes + +* allow body type in RequestOptions to be null ([#637](https://github.com/openai/openai-node/issues/637)) ([00a2d43](https://github.com/openai/openai-node/commit/00a2d43ae24547e2381c5368dcd39721bda8c963)) +* **api:** accidentally required params, add new models & other fixes ([#463](https://github.com/openai/openai-node/issues/463)) ([5d50c4e](https://github.com/openai/openai-node/commit/5d50c4e18f4ba00bfaf4709348c4742101a96785)) +* **api:** add content_filter to chat completion finish reason ([#344](https://github.com/openai/openai-node/issues/344)) ([f10c757](https://github.com/openai/openai-node/commit/f10c757d831d90407ba47b4659d9cd34b1a35b1d)) +* **api:** retreival -> retrieval ([#437](https://github.com/openai/openai-node/issues/437)) ([2a397db](https://github.com/openai/openai-node/commit/2a397dbbe67c1ed3eba6fccb93dc2df48b9c7a16)) +* **api:** update embedding response object type ([#466](https://github.com/openai/openai-node/issues/466)) ([99bee97](https://github.com/openai/openai-node/commit/99bee97a842d77ec01d8d8f4b6b04d62848e9a2c)) +* asssitant_deleted -> assistant_deleted ([#452](https://github.com/openai/openai-node/issues/452)) ([85a71ca](https://github.com/openai/openai-node/commit/85a71cafa9c93a76a79e4ad09c54bfefe1958166)) +* **client:** correctly handle errors during streaming ([#377](https://github.com/openai/openai-node/issues/377)) ([09233b1](https://github.com/openai/openai-node/commit/09233b1ccc80ee900be19050f438cc8aa9dbb513)) +* **client:** correctly handle errors during streaming ([#379](https://github.com/openai/openai-node/issues/379)) ([9ced580](https://github.com/openai/openai-node/commit/9ced5804777a5857d6775a49ddf30ed9cc016fab)) +* **client:** fix TS errors that appear when users Go to Source in VSCode ([#281](https://github.com/openai/openai-node/issues/281)) ([8dc59bc](https://github.com/openai/openai-node/commit/8dc59bcf924cc991747ca475c714d915e04c6012)), closes [#249](https://github.com/openai/openai-node/issues/249) +* **client:** handle case where the client is instantiated with a undefined baseURL ([#285](https://github.com/openai/openai-node/issues/285)) ([5095cf3](https://github.com/openai/openai-node/commit/5095cf340743e4627b4f0ad2f055ebe332824d23)) +* **client:** use explicit file extensions in _shims imports ([#276](https://github.com/openai/openai-node/issues/276)) ([16fe929](https://github.com/openai/openai-node/commit/16fe929688d35c2ebe52c8cf1c1570bafda5f97e)) +* correct some runTools behavior and deprecate runFunctions ([#562](https://github.com/openai/openai-node/issues/562)) ([c8040e8](https://github.com/openai/openai-node/commit/c8040e833f56c266aa8d6b558ff43fbf18f23722)) +* deploy deno in a github workflow instead of postpublish step ([#405](https://github.com/openai/openai-node/issues/405)) ([9880794](https://github.com/openai/openai-node/commit/9880794b8ecd08ac61b9b49e1b696bb7bd8e1032)) +* fix module not found errors in Vercel edge ([#300](https://github.com/openai/openai-node/issues/300)) ([47c79fe](https://github.com/openai/openai-node/commit/47c79fee0fa715ad04410e73530829602736d85f)) +* fix namespace exports regression ([#366](https://github.com/openai/openai-node/issues/366)) ([b2b1d85](https://github.com/openai/openai-node/commit/b2b1d85d90eef51e689ca75c0ca2f35bb63cccc0)) +* handle system_fingerprint in streaming helpers ([#636](https://github.com/openai/openai-node/issues/636)) ([fa02e48](https://github.com/openai/openai-node/commit/fa02e4883fdb01138f3f25d87ed2e75d236f61f2)) +* **headers:** always send lowercase headers and strip undefined (BREAKING in rare cases) ([#608](https://github.com/openai/openai-node/issues/608)) ([842efac](https://github.com/openai/openai-node/commit/842efac485a5fd1bb87fc2032dfacd8f61136bca)) +* import web-streams-polyfill without overriding globals ([#385](https://github.com/openai/openai-node/issues/385)) ([be8e18b](https://github.com/openai/openai-node/commit/be8e18ba4c6a16e7b6413c77246f83230e0b8fc2)) +* improve deno readme ([#429](https://github.com/openai/openai-node/issues/429)) ([18b04e8](https://github.com/openai/openai-node/commit/18b04e8bf872ea15cbbcd92a12282cbba873c677)) +* improve deno releases ([#425](https://github.com/openai/openai-node/issues/425)) ([d438ee1](https://github.com/openai/openai-node/commit/d438ee1bf97fbc3a843dba71950a2ea6e731da8d)) +* improve status code in error messages ([#381](https://github.com/openai/openai-node/issues/381)) ([68dfb17](https://github.com/openai/openai-node/commit/68dfb17cce300ade8d29afc854d616833b3283ca)) +* **pagination:** correct type annotation object field ([#590](https://github.com/openai/openai-node/issues/590)) ([824089d](https://github.com/openai/openai-node/commit/824089dcf6d51b35d0918c37542a1a01bb2def1b)) +* prevent 400 when using runTools/runFunctions with Azure OpenAI API ([#544](https://github.com/openai/openai-node/issues/544)) ([ab8b73b](https://github.com/openai/openai-node/commit/ab8b73bdfb95f1c3b9c98240e7f8f73ec28bafad)) +* prevent ReferenceError, update compatibility to ES2020 and Node 18+ ([#356](https://github.com/openai/openai-node/issues/356)) ([fc71a4b](https://github.com/openai/openai-node/commit/fc71a4b6b73208ff3e8f0c8792a9a03e3790d26b)) +* revert import change which triggered circular import bug in webpack ([#274](https://github.com/openai/openai-node/issues/274)) ([6534e36](https://github.com/openai/openai-node/commit/6534e3620d7e2983e98b42cf95fa966deab1ab1d)) +* **stream:** declare Stream.controller as public ([#252](https://github.com/openai/openai-node/issues/252)) ([81e5de7](https://github.com/openai/openai-node/commit/81e5de7ba94c992cafa3d08e2697c8122382497a)) +* **types:** accept undefined for optional client options ([#635](https://github.com/openai/openai-node/issues/635)) ([74e06ff](https://github.com/openai/openai-node/commit/74e06ffe384708ef1e7fe8614683787152f1eb23)) +* **types:** ensure all code paths return a value ([#458](https://github.com/openai/openai-node/issues/458)) ([4402f0e](https://github.com/openai/openai-node/commit/4402f0efd23bf1b85d09dbde9ac5d5d0ef8225d6)) +* **types:** improve getNextPage() return type ([#262](https://github.com/openai/openai-node/issues/262)) ([245a984](https://github.com/openai/openai-node/commit/245a9847d1ba5bbe5262bc06b2f7bb7385cd3a9a)) +* typo in build script ([#403](https://github.com/openai/openai-node/issues/403)) ([f706a4c](https://github.com/openai/openai-node/commit/f706a4c930da33f337fe0c199b9dafcf348de136)) +* use default base url if BASE_URL env var is blank ([#615](https://github.com/openai/openai-node/issues/615)) ([cc1bf07](https://github.com/openai/openai-node/commit/cc1bf072fb23c9c19262946793ca2dc31a864d72)) + ## 4.28.0 (2024-02-13) Full Changelog: [v4.27.1...v4.28.0](https://github.com/openai/openai-node/compare/v4.27.1...v4.28.0)