From 95d4f812cfe7f5a66c000a2531f61ebacb23c1f9 Mon Sep 17 00:00:00 2001 From: Marika Marszalkowski <868536+marikaner@users.noreply.github.com> Date: Wed, 9 Oct 2024 15:38:28 +0200 Subject: [PATCH 01/10] chore: Document release process (#198) * chore: Document release process * Update CONTRIBUTING.md Co-authored-by: KavithaSiva <32287936+KavithaSiva@users.noreply.github.com> * Add error steps * Apply suggestions from code review Co-authored-by: Zhongpin Wang --------- Co-authored-by: KavithaSiva <32287936+KavithaSiva@users.noreply.github.com> Co-authored-by: Zhongpin Wang --- CONTRIBUTING.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 57bd6f10..7bf66eb3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -82,6 +82,37 @@ To fix all linting issues, run: $ pnpm lint:fix ``` +## Releases + +To release a new version, ensure that the following prerequisites are met: + +- The smoke tests are passing. +- There are changesets under the `.changeset` directory. Without changesets, there should be nothing to release. + +If this is the case, follow these steps: + +1. **Bump the version**: Execute the `bump` workflow from the `main` branch. + If you want to release a new major version, enter the full major version as a precaution. + Skip providing a version for minor and patch version releases. + This bumps the version on the `main` branch and creates a tag and draft release with release notes on GitHub. +2. **Publish to npm**: Find the draft release in the [GitHub releases](https://github.com/SAP/ai-sdk-js/releases), check the release notes, and press **Publish release**. This triggers the `publish` workflow that publishes the new version to [`npmjs.com`](https://www.npmjs.com/settings/sap-ai-sdk/packages). + +Finally, check that everything is published as expected on npm. + +### How to Roll Back Releases + +Once a release is published on npm, you can no longer take it back. +To fix issues in published packages, you need to publish a new version. + +If you find an issue with the release or something fails before publishing, you can revert the release. +Make sure to: + +- Revert the bump commit. +- Delete the draft release. +- Delete the version tag. + +Then you can fix the error and try again from the state before the release. + ## Contributing Code or Documentation You are welcome to contribute code in order to fix a bug or to implement a new feature that is logged as an issue. From 280314661db80a95909c4503af45b3042214b157 Mon Sep 17 00:00:00 2001 From: Zhongpin Wang Date: Wed, 9 Oct 2024 17:14:11 +0200 Subject: [PATCH 02/10] chore: Create sample CAP app (#184) * feat: add cap app with openai chat completion * docs: add README * refactor: entity and service name * feat: add ai-api and orchestration * docs: add missing title * fix: use req.reply * fix: remove cdsrc private * fix: deps * fix: lint * chore: small changes in cap gitignore * docs: update README.md * docs: add toc * docs: rename * fix: Changes from lint * docs: small changes * chore: add changeset * refactor: use actions instead of entity projection * chore: format cds * review * review * docs: update README.md * fix: lint * fix: lock * fix: remove changeset * chore: remove db * chore: return string * chore: move cap deps to sample-cap * chore: remove use less import * fix: move @cap-js/cds-types back to root package.json * chore: remove sample cap from deps check --------- Co-authored-by: cloud-sdk-js --- package.json | 4 + pnpm-lock.yaml | 413 +++++++++++++++++- pnpm-workspace.yaml | 10 +- sample-cap/.gitignore | 36 ++ sample-cap/README.md | 85 ++++ sample-cap/eslint.config.mjs | 2 + sample-cap/jsconfig.json | 8 + sample-cap/package.json | 21 + sample-cap/srv/ai-api/ai-api-service.cds | 4 + sample-cap/srv/ai-api/ai-api-service.ts | 11 + .../azure-openai-service.cds | 9 + .../foundation-models/azure-openai-service.ts | 12 + sample-cap/srv/index.cds | 3 + .../orchestration/orchestration-service.cds | 14 + .../orchestration/orchestration-service.ts | 51 +++ 15 files changed, 661 insertions(+), 22 deletions(-) create mode 100644 sample-cap/.gitignore create mode 100644 sample-cap/README.md create mode 100644 sample-cap/eslint.config.mjs create mode 100644 sample-cap/jsconfig.json create mode 100644 sample-cap/package.json create mode 100644 sample-cap/srv/ai-api/ai-api-service.cds create mode 100644 sample-cap/srv/ai-api/ai-api-service.ts create mode 100644 sample-cap/srv/foundation-models/azure-openai-service.cds create mode 100644 sample-cap/srv/foundation-models/azure-openai-service.ts create mode 100644 sample-cap/srv/index.cds create mode 100644 sample-cap/srv/orchestration/orchestration-service.cds create mode 100644 sample-cap/srv/orchestration/orchestration-service.ts diff --git a/package.json b/package.json index a53432a6..daf8de69 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,8 @@ "type-tests": "pnpm -F=@sap-ai-sdk/type-tests", "smoke-tests": "pnpm -F=@sap-ai-sdk/smoke-tests", "schema-tests": "pnpm -F=@sap-ai-sdk/schema-tests", + "sample-code": "pnpm -F=@sap-ai-sdk/sample-code", + "sample-cap": "pnpm -F=@sap-ai-sdk/sample-cap", "check:public-api": "pnpm -r check:public-api", "check:deps": "pnpm -r -F !./tests/smoke-tests -F !./tests/schema-tests exec depcheck --ignores=\"nock,@jest/globals\" --quiet" }, @@ -38,6 +40,7 @@ "@sap-ai-sdk/core": "workspace:^", "@sap-ai-sdk/foundation-models": "workspace:^", "@sap-ai-sdk/orchestration": "workspace:^", + "tsx": "^4.19.1", "@sap-cloud-sdk/connectivity": "^3.22.1", "@sap-cloud-sdk/eslint-config": "^3.22.1", "@sap-cloud-sdk/generator-common": "^3.22.1", @@ -48,6 +51,7 @@ "@types/jsonwebtoken": "^9.0.7", "@types/mock-fs": "^4.13.4", "@types/node": "^20.16.11", + "@cap-js/cds-types": "^0.6.5", "depcheck": "^1.4.7", "eslint": "^9.12.0", "glob": "^11.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3c004d00..b95d2a96 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,6 +10,9 @@ importers: .: devDependencies: + '@cap-js/cds-types': + specifier: ^0.6.5 + version: 0.6.5(@sap/cds@8.3.1(express@4.21.1)) '@changesets/cli': specifier: ^2.27.9 version: 2.27.9 @@ -88,6 +91,9 @@ importers: ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@20.16.11)(typescript@5.6.3) + tsx: + specifier: ^4.19.1 + version: 4.19.1 typescript: specifier: ^5.6.3 version: 5.6.3 @@ -164,6 +170,24 @@ importers: specifier: ^3.22.1 version: 3.22.1 + sample-cap: + dependencies: + '@sap-ai-sdk/ai-api': + specifier: workspace:^ + version: link:../packages/ai-api + '@sap-ai-sdk/foundation-models': + specifier: workspace:^ + version: link:../packages/foundation-models + '@sap-ai-sdk/orchestration': + specifier: workspace:^ + version: link:../packages/orchestration + '@sap/cds': + specifier: ^8 + version: 8.3.1(express@4.21.1) + express: + specifier: ^4 + version: 4.21.1 + sample-code: dependencies: '@langchain/core': @@ -481,6 +505,11 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@cap-js/cds-types@0.6.5': + resolution: {integrity: sha512-lcsc0Bp9aINW2cQIqaadGZ1lSWqCmk9lagoyoHfQimddbSngexevoBm7RDOL9s/L4RMKGO+kBumcPq5sBBU9SA==} + peerDependencies: + '@sap/cds': ^8.0.0 + '@changesets/apply-release-plan@7.0.5': resolution: {integrity: sha512-1cWCk+ZshEkSVEZrm2fSj1Gz8sYvxgUL4Q78+1ZZqeqfuevPTPk033/yUZ3df8BKMohkqqHfzj0HOOrG0KtXTw==} @@ -551,6 +580,150 @@ packages: resolution: {integrity: sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==} engines: {node: '>=16'} + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -852,6 +1025,31 @@ packages: '@sap-cloud-sdk/util@3.22.1': resolution: {integrity: sha512-U15pw2j4zVGDg6PnSwo95lKzwi57XxDrxPCoFsCwRkRLSeBFVvoB64wnpyBPqUhtLWrM0ewOJoO5AEHuJVi87w==} + '@sap/cds-compiler@5.3.2': + resolution: {integrity: sha512-aePHQMZHb13+oQuHU+ug5bwxXO11NThBEfUyA3uMGlnjkAxa8pbzuot9pHiiAIMavXLcqTzbCfm/uFGKcfjqBQ==} + engines: {node: '>=18'} + hasBin: true + + '@sap/cds-fiori@1.2.7': + resolution: {integrity: sha512-F6Uf9wvkv0fXW+Fh7PiV2BbB/k+p1cFJLkQCCKDRJH8HvlxWEcXcn/YIvBrQGuX+GToi125MxB3wd712d8OLTA==} + peerDependencies: + '@sap/cds': '>=7.6' + express: '>=4' + + '@sap/cds-foss@5.0.1': + resolution: {integrity: sha512-q6h7LkEx6w9LswCIQzJJ2mnoyeGS8jrmBXN4I4+aECRL60mkLskoqGetot+2tX2xXGxCYJuo5v1dtSafwBqTRQ==} + engines: {node: '>=14'} + + '@sap/cds@8.3.1': + resolution: {integrity: sha512-v44OYZqeFYrH6ghfO/RqQ7eqgcNYAAQmVVFy9pIbOkxXay0uVDXB1nC3hu6cuqIYvp2PFInL0c3l1e+ycFSkPA==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + express: '>=4' + peerDependenciesMeta: + express: + optional: true + '@sap/xsenv@5.3.0': resolution: {integrity: sha512-2UqioTBYe7XTvrskulaqVvoQ8WUA06Ofumxfa545DlB9gZyvvdL0ncQDU9EWrqFKE6U/e+kdQRpaMfRnrM5ykQ==} engines: {node: ^18.0.0 || ^20.0.0} @@ -927,9 +1125,15 @@ packages: '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/express-serve-static-core@4.19.6': + resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + '@types/express-serve-static-core@5.0.0': resolution: {integrity: sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw==} + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + '@types/express@5.0.0': resolution: {integrity: sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==} @@ -1220,6 +1424,10 @@ packages: resolution: {integrity: sha512-cFthbBlt+Oi0i9Pv/j6YdVWJh54CtjGACaMPCIrEV4Ha7HWsIjXDwseYV79TIL0B4+KfSwD5S70PeQDkPUd1rA==} engines: {node: '>=15'} + antlr4@4.9.3: + resolution: {integrity: sha512-qNy2odgsa0skmNMCuxzXhM4M8J1YDaPv3TI+vCdnOAanu0N982wBrSqziDKRDctEZLZy9VffqIZXc0UGjjSP/g==} + engines: {node: '>=14'} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -1339,6 +1547,9 @@ packages: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} + big.js@6.2.2: + resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -1824,6 +2035,11 @@ packages: es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -2194,6 +2410,10 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + generic-pool@3.9.0: + resolution: {integrity: sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==} + engines: {node: '>= 4'} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -3928,6 +4148,11 @@ packages: peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + tsx@4.19.1: + resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==} + engines: {node: '>=18.0.0'} + hasBin: true + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -3982,11 +4207,6 @@ packages: typescript: optional: true - typescript@5.6.2: - resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} - engines: {node: '>=14.17'} - hasBin: true - typescript@5.6.3: resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} @@ -4140,6 +4360,10 @@ packages: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + xmlbuilder@15.1.1: + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -4433,6 +4657,11 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} + '@cap-js/cds-types@0.6.5(@sap/cds@8.3.1(express@4.21.1))': + dependencies: + '@sap/cds': 8.3.1(express@4.21.1) + '@types/express': 4.17.21 + '@changesets/apply-release-plan@7.0.5': dependencies: '@changesets/config': 3.0.3 @@ -4593,6 +4822,78 @@ snapshots: esquery: 1.6.0 jsdoc-type-pratt-parser: 4.1.0 + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + '@eslint-community/eslint-utils@4.4.0(eslint@9.12.0)': dependencies: eslint: 9.12.0 @@ -5114,7 +5415,7 @@ snapshots: eslint: 9.12.0 eslint-config-prettier: 9.1.0(eslint@9.12.0) eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0))(eslint@9.12.0) eslint-plugin-jsdoc: 50.3.1(eslint@9.12.0) eslint-plugin-prettier: 5.2.1(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@9.12.0))(eslint@9.12.0)(prettier@3.3.3) eslint-plugin-regex: 1.10.0(eslint@9.12.0) @@ -5198,6 +5499,30 @@ snapshots: transitivePeerDependencies: - debug + '@sap/cds-compiler@5.3.2': + dependencies: + antlr4: 4.9.3 + + '@sap/cds-fiori@1.2.7(@sap/cds@8.3.1(express@4.21.1))(express@4.21.1)': + dependencies: + '@sap/cds': 8.3.1(express@4.21.1) + express: 4.21.1 + + '@sap/cds-foss@5.0.1': + dependencies: + big.js: 6.2.2 + generic-pool: 3.9.0 + xmlbuilder: 15.1.1 + yaml: 2.5.1 + + '@sap/cds@8.3.1(express@4.21.1)': + dependencies: + '@sap/cds-compiler': 5.3.2 + '@sap/cds-fiori': 1.2.7(@sap/cds@8.3.1(express@4.21.1))(express@4.21.1) + '@sap/cds-foss': 5.0.1 + optionalDependencies: + express: 4.21.1 + '@sap/xsenv@5.3.0': dependencies: debug: 4.3.7(supports-color@8.1.1) @@ -5298,6 +5623,13 @@ snapshots: '@types/estree@1.0.6': {} + '@types/express-serve-static-core@4.19.6': + dependencies: + '@types/node': 20.16.11 + '@types/qs': 6.9.15 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + '@types/express-serve-static-core@5.0.0': dependencies: '@types/node': 20.16.10 @@ -5305,6 +5637,13 @@ snapshots: '@types/range-parser': 1.2.7 '@types/send': 0.17.4 + '@types/express@4.17.21': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.6 + '@types/qs': 6.9.15 + '@types/serve-static': 1.15.7 + '@types/express@5.0.0': dependencies: '@types/body-parser': 1.19.5 @@ -5537,10 +5876,10 @@ snapshots: '@typescript-eslint/types': 8.8.1 eslint-visitor-keys: 3.4.3 - '@typescript/vfs@1.6.0(typescript@5.6.2)': + '@typescript/vfs@1.6.0(typescript@5.6.3)': dependencies: debug: 4.3.7(supports-color@8.1.1) - typescript: 5.6.2 + typescript: 5.6.3 transitivePeerDependencies: - supports-color @@ -5643,6 +5982,8 @@ snapshots: ansis@3.3.2: {} + antlr4@4.9.3: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -5807,6 +6148,8 @@ snapshots: dependencies: is-windows: 1.0.2 + big.js@6.2.2: {} + binary-extensions@2.3.0: {} bl@4.1.0: @@ -6363,6 +6706,33 @@ snapshots: es6-promise@3.3.1: {} + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + escalade@3.1.2: {} escalade@3.2.0: {} @@ -6410,7 +6780,7 @@ snapshots: is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0))(eslint@9.12.0) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node @@ -6428,7 +6798,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0))(eslint@9.12.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -6816,6 +7186,8 @@ snapshots: functions-have-names@1.2.3: {} + generic-pool@3.9.0: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -8771,7 +9143,7 @@ snapshots: ts-to-zod@3.13.0: dependencies: '@oclif/core': 4.0.21 - '@typescript/vfs': 1.6.0(typescript@5.6.2) + '@typescript/vfs': 1.6.0(typescript@5.6.3) case: 1.6.3 chokidar: 3.6.0 fs-extra: 11.2.0 @@ -8783,8 +9155,8 @@ snapshots: slash: 3.0.0 threads: 1.7.0 tslib: 2.7.0 - tsutils: 3.21.0(typescript@5.6.2) - typescript: 5.6.2 + tsutils: 3.21.0(typescript@5.6.3) + typescript: 5.6.3 zod: 3.23.8 transitivePeerDependencies: - supports-color @@ -8810,10 +9182,17 @@ snapshots: tslib@2.7.0: {} - tsutils@3.21.0(typescript@5.6.2): + tsutils@3.21.0(typescript@5.6.3): dependencies: tslib: 1.14.1 - typescript: 5.6.2 + typescript: 5.6.3 + + tsx@4.19.1: + dependencies: + esbuild: 0.23.1 + get-tsconfig: 4.8.1 + optionalDependencies: + fsevents: 2.3.3 type-check@0.4.0: dependencies: @@ -8877,8 +9256,6 @@ snapshots: transitivePeerDependencies: - supports-color - typescript@5.6.2: {} - typescript@5.6.3: {} unbox-primitive@1.0.2: @@ -9047,6 +9424,8 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 + xmlbuilder@15.1.1: {} + y18n@5.0.8: {} yallist@2.1.2: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 668306b5..6e69fa57 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,12 +1,12 @@ packages: - # all packages in direct subdirs of packages/ - 'packages/ai-api' - - 'packages/foundation-models' - - 'packages/orchestration' - 'packages/core' + - 'packages/foundation-models' - 'packages/langchain' + - 'packages/orchestration' + - 'sample-cap' - 'sample-code' - 'tests/e2e-tests' - - 'tests/type-tests' - - 'tests/smoke-tests' - 'tests/schema-tests' + - 'tests/smoke-tests' + - 'tests/type-tests' diff --git a/sample-cap/.gitignore b/sample-cap/.gitignore new file mode 100644 index 00000000..eb0f2722 --- /dev/null +++ b/sample-cap/.gitignore @@ -0,0 +1,36 @@ +# CAP +_out +*.db +*.sqlite +connection.properties +default-*.json +.cdsrc-private.json +gen/ +node_modules/ +target/ + +# Web IDE, App Studio +.che/ +.gen/ + +# MTA +*_mta_build_tmp +*.mtar +mta_archives/ + +# Other +.DS_Store +*.orig +*.log + +*.iml +*.flattened-pom.xml + +# IDEs +.vscode +.idea + +# @cap-js/cds-typer +@cds-models + +.cdsrc-private.json diff --git a/sample-cap/README.md b/sample-cap/README.md new file mode 100644 index 00000000..0746a213 --- /dev/null +++ b/sample-cap/README.md @@ -0,0 +1,85 @@ +# Sample CAP Application with SAP Cloud SDK for AI + +Sample CAP application written in TypeScript to demonstrate the usage of SAP Cloud SDK for AI. + +### Table of Contents + +- [Local Deployment](#local-deployment) +- [Usage](#usage) + - [`ai-api`](#ai-api) + - [Deployment API](#deployment-api) + - [`foundation-models`](#foundation-models) + - [Azure OpenAI Chat Completion](#azure-openai-chat-completion) + - [`orchestration`](#orchestration) + - [Chat Completions with Templating](#chat-completions-with-templating) + +## Local Deployment + +1. Build the application with `pnpm install`. + +2. Login using `cf login -a API_ENDPOINT -o ORG -s SPACE`. + +3. Bind the application to your AI Core instance: + + ```bash + cds bind -2 AI_CORE_INSTANCE_NAME + ``` + +4. Run the application with the binding: + + ```bash + pnpm watch:hybrid + ``` + +## Usage + +### `ai-api` + +#### Deployment API + +```bash +curl --request GET \ + --url 'http://localhost:4004/odata/v4/ai-api/getDeployments' +``` + +### `foundation-models` + +#### Azure OpenAI Chat Completion + +```bash +curl --request POST \ + --url 'http://localhost:4004/odata/v4/azure-openai/chatCompletion' \ + --header 'Content-Type: application/json' \ + --data '{ + "messages": [ + { + "role": "user", + "content": "Hello, how are you?" + } + ] +}' +``` + +### `orchestration` + +#### Chat Completions with Templating + +```bash +curl --request POST \ + --url 'http://localhost:4004/odata/v4/orchestration/chatCompletion' \ + --header 'Content-Type: application/json' \ + --data '{ + "template": [ + { + "role": "user", + "content": "What is the capital of {{?country}}" + } + ], + "inputParams": [ + { + "name": "country", + "value": "France" + } + ] +}' +``` diff --git a/sample-cap/eslint.config.mjs b/sample-cap/eslint.config.mjs new file mode 100644 index 00000000..d762606f --- /dev/null +++ b/sample-cap/eslint.config.mjs @@ -0,0 +1,2 @@ +import cds from '@sap/cds/eslint.config.mjs'; +export default [...cds.recommended]; diff --git a/sample-cap/jsconfig.json b/sample-cap/jsconfig.json new file mode 100644 index 00000000..e74af340 --- /dev/null +++ b/sample-cap/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "moduleResolution": "nodenext", + "paths": { + "#cds-models/*": ["./@cds-models/*"] + } + } +} diff --git a/sample-cap/package.json b/sample-cap/package.json new file mode 100644 index 00000000..0e8f1d11 --- /dev/null +++ b/sample-cap/package.json @@ -0,0 +1,21 @@ +{ + "type": "module", + "name": "@sap-ai-sdk/sample-cap", + "version": "1.0.0", + "description": "Sample CAP application with Cloud SDK for AI.", + "repository": "https://github.com/sap/ai-sdk-js", + "private": true, + "dependencies": { + "@sap-ai-sdk/ai-api": "workspace:^", + "@sap-ai-sdk/foundation-models": "workspace:^", + "@sap-ai-sdk/orchestration": "workspace:^", + "@sap/cds": "^8", + "express": "^4" + }, + "scripts": { + "watch": "cds-tsx watch", + "watch:hybrid": "cds-tsx watch --profile hybrid", + "lint": "eslint . && prettier . --config ../.prettierrc --ignore-path ../.prettierignore -c", + "lint:fix": "eslint . --fix && prettier . --config ../.prettierrc --ignore-path ../.prettierignore -w --log-level error" + } +} diff --git a/sample-cap/srv/ai-api/ai-api-service.cds b/sample-cap/srv/ai-api/ai-api-service.cds new file mode 100644 index 00000000..3d7726df --- /dev/null +++ b/sample-cap/srv/ai-api/ai-api-service.cds @@ -0,0 +1,4 @@ +@path: 'ai-api' +service AiApiService { + action getDeployments() returns String; +} diff --git a/sample-cap/srv/ai-api/ai-api-service.ts b/sample-cap/srv/ai-api/ai-api-service.ts new file mode 100644 index 00000000..17bc4d23 --- /dev/null +++ b/sample-cap/srv/ai-api/ai-api-service.ts @@ -0,0 +1,11 @@ +import { DeploymentApi } from '@sap-ai-sdk/ai-api'; + +export default class AiApiService { + async getDeployments() { + const response = await DeploymentApi.deploymentQuery( + {}, + { 'AI-Resource-Group': 'default' } + ).execute(); + return JSON.stringify(response.resources); + } +} diff --git a/sample-cap/srv/foundation-models/azure-openai-service.cds b/sample-cap/srv/foundation-models/azure-openai-service.cds new file mode 100644 index 00000000..9609cbea --- /dev/null +++ b/sample-cap/srv/foundation-models/azure-openai-service.cds @@ -0,0 +1,9 @@ +@path: 'azure-openai' +service AzureOpenAiService { + action chatCompletion(messages : array of Message) returns String; +} + +type Message { + role : String; + content : String; +} diff --git a/sample-cap/srv/foundation-models/azure-openai-service.ts b/sample-cap/srv/foundation-models/azure-openai-service.ts new file mode 100644 index 00000000..81ec3ef2 --- /dev/null +++ b/sample-cap/srv/foundation-models/azure-openai-service.ts @@ -0,0 +1,12 @@ +import { Request } from '@sap/cds'; +import { AzureOpenAiChatClient } from '@sap-ai-sdk/foundation-models'; + +export default class AzureOpenAiService { + async chatCompletion(req: Request) { + const { messages } = req.data; + const response = await new AzureOpenAiChatClient('gpt-35-turbo').run({ + messages + }); + return response.getContent(); + } +} diff --git a/sample-cap/srv/index.cds b/sample-cap/srv/index.cds new file mode 100644 index 00000000..c6dc9b4b --- /dev/null +++ b/sample-cap/srv/index.cds @@ -0,0 +1,3 @@ +using from './foundation-models/azure-openai-service'; +using from './ai-api/ai-api-service'; +using from './orchestration/orchestration-service'; diff --git a/sample-cap/srv/orchestration/orchestration-service.cds b/sample-cap/srv/orchestration/orchestration-service.cds new file mode 100644 index 00000000..6b4afdb1 --- /dev/null +++ b/sample-cap/srv/orchestration/orchestration-service.cds @@ -0,0 +1,14 @@ +@path: 'orchestration' +service OrchestrationService { + action chatCompletion(template : array of Template, inputParams : array of InputParam) returns String; +} + +type Template { + role : String; + content : String; +} + +type InputParam { + name : String; + value : String; +} diff --git a/sample-cap/srv/orchestration/orchestration-service.ts b/sample-cap/srv/orchestration/orchestration-service.ts new file mode 100644 index 00000000..d8ddb7f6 --- /dev/null +++ b/sample-cap/srv/orchestration/orchestration-service.ts @@ -0,0 +1,51 @@ +import { Request } from '@sap/cds'; +import { OrchestrationClient } from '@sap-ai-sdk/orchestration'; + +export default class OrchestrationService { + async chatCompletion(req: Request) { + const { template, inputParams } = req.data; + const llm = { + model_name: 'gpt-4-32k', + model_params: {} + }; + const templating = { template }; + + const response = await new OrchestrationClient({ + llm, + templating + }).chatCompletion({ + inputParams: mapInputParams(inputParams) + }); + + return response.getContent(); + } +} + +/** + * Map input parameters since CAP does not support dynamic object keys. + * + * For example: + * + * ```ts + * inputParams: [{ + * name: 'param1', + * value: 'value1' + * }] + * ``` + * => + * ```ts + * mappedInputParams: { + * param1: 'value1' + * } + * ``` + * @param inputParams - Array of `InputParam` entity. + * @returns Mapped input parameters for AI Core. + */ +function mapInputParams( + inputParams: { name: string; value: string }[] +): Record { + return inputParams.reduce( + (acc, { name, value }) => ({ ...acc, [name]: value }), + {} as Record + ); +} From 2880dc41c557bb84f5c6f484f2fd7caf30f87018 Mon Sep 17 00:00:00 2001 From: shibeshduw <166374073+shibeshduw@users.noreply.github.com> Date: Thu, 10 Oct 2024 10:35:34 +0200 Subject: [PATCH 03/10] feat: Add license check (#207) * add license check script * testing action * deps * wrong repo * switch to main --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 45529497..0eb1922c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,6 +36,8 @@ jobs: run: pnpm check:public-api - name: Check dependencies run: pnpm check:deps + - name: License Check + uses: sap/cloud-sdk-js/.github/actions/check-license@main dependabot: runs-on: ubuntu-latest From 4982a201be8cad7f42ffd39d676a7098969c565e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 10 Oct 2024 23:33:12 +0000 Subject: [PATCH 04/10] chore(deps): Bump @langchain/core from 0.3.8 to 0.3.9 (#215) Bumps [@langchain/core](https://github.com/langchain-ai/langchainjs) from 0.3.8 to 0.3.9. - [Release notes](https://github.com/langchain-ai/langchainjs/releases) - [Changelog](https://github.com/langchain-ai/langchainjs/blob/main/release_workspace.js) - [Commits](https://github.com/langchain-ai/langchainjs/commits) --- updated-dependencies: - dependency-name: "@langchain/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/langchain/package.json | 2 +- pnpm-lock.yaml | 110 ++++++++++++++++---------------- sample-code/package.json | 2 +- tests/smoke-tests/package.json | 2 +- 4 files changed, 58 insertions(+), 58 deletions(-) diff --git a/packages/langchain/package.json b/packages/langchain/package.json index 541cf972..7dbb9a26 100644 --- a/packages/langchain/package.json +++ b/packages/langchain/package.json @@ -30,7 +30,7 @@ "@sap-ai-sdk/ai-api": "workspace:^", "@sap-ai-sdk/core": "workspace:^", "@sap-ai-sdk/foundation-models": "workspace:^", - "@langchain/core": "0.3.8", + "@langchain/core": "0.3.9", "zod-to-json-schema": "^3.23.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b95d2a96..9181b070 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -140,8 +140,8 @@ importers: packages/langchain: dependencies: '@langchain/core': - specifier: 0.3.8 - version: 0.3.8(openai@4.61.1(zod@3.23.8)) + specifier: 0.3.9 + version: 0.3.9(openai@4.61.1(zod@3.23.8)) '@sap-ai-sdk/ai-api': specifier: workspace:^ version: link:../ai-api @@ -191,11 +191,11 @@ importers: sample-code: dependencies: '@langchain/core': - specifier: 0.3.8 - version: 0.3.8(openai@4.61.1(zod@3.23.8)) + specifier: 0.3.9 + version: 0.3.9(openai@4.61.1(zod@3.23.8)) '@langchain/textsplitters': specifier: 0.1.0 - version: 0.1.0(@langchain/core@0.3.8(openai@4.61.1(zod@3.23.8))) + version: 0.1.0(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8))) '@sap-ai-sdk/ai-api': specifier: workspace:^ version: link:../packages/ai-api @@ -219,7 +219,7 @@ importers: version: 4.21.1 langchain: specifier: 0.3.2 - version: 0.3.2(@langchain/core@0.3.8(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)) + version: 0.3.2(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)) tests/e2e-tests: dependencies: @@ -255,23 +255,23 @@ importers: tests/smoke-tests: dependencies: '@langchain/core': - specifier: 0.3.8 - version: 0.3.8(openai@4.61.1(zod@3.23.8)) + specifier: 0.3.9 + version: 0.3.9(openai@4.61.1(zod@3.23.8)) '@langchain/textsplitters': specifier: 0.1.0 - version: 0.1.0(@langchain/core@0.3.8(openai@4.61.1(zod@3.23.8))) + version: 0.1.0(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8))) '@sap-ai-sdk/ai-api': specifier: canary - version: 1.1.1-20241008013106.0 + version: 1.1.1-20241010013103.0 '@sap-ai-sdk/foundation-models': specifier: canary - version: 1.1.1-20241008013106.0 + version: 1.1.1-20241010013103.0 '@sap-ai-sdk/langchain': specifier: canary - version: 1.1.1-20241008013106.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8) + version: 1.1.1-20241010013103.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8) '@sap-ai-sdk/orchestration': specifier: canary - version: 1.1.1-20241008013106.0 + version: 1.1.1-20241010013103.0 '@sap-cloud-sdk/util': specifier: ^3.22.1 version: 3.22.1 @@ -280,7 +280,7 @@ importers: version: 4.21.1 langchain: specifier: 0.3.2 - version: 0.3.2(@langchain/core@0.3.8(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)) + version: 0.3.2(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)) devDependencies: '@types/express': specifier: ^5.0.0 @@ -926,14 +926,14 @@ packages: '@jsdevtools/ono@7.1.3': resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} - '@langchain/core@0.3.7': - resolution: {integrity: sha512-6wsnEtw5GlhmBhoLfw/g8Hrp09BNwQwDLXyuv3GyK+ay4/3H3YuhAphqQLO4HNphuZIZKlW9ihSrqdCMvvbvZQ==} - engines: {node: '>=18'} - '@langchain/core@0.3.8': resolution: {integrity: sha512-4IaJr1canfQZUJ60yopdI0zANiyaeFMMxn6X29Wxxs2Tws1bSQn5gxNMK51L6QVAVZBFcNCGp/xx88EBOOOm9Q==} engines: {node: '>=18'} + '@langchain/core@0.3.9': + resolution: {integrity: sha512-Rttr9FuFwU+CWIoEyuLqQUPYg+3pKL1YpDgo3nvoDVhinoHqwGQ7aNGzZ/Sf+qASMi76sPSLm+75pHMJwwOiWg==} + engines: {node: '>=18'} + '@langchain/openai@0.3.2': resolution: {integrity: sha512-p513TVHkZ+mMV4dGloprPFKaukOuOZxyPXY/IWReQK34c1dpnywmjrXg8ydcnfncNbq+kJ/kKe671NK9bic4WA==} engines: {node: '>=18'} @@ -983,20 +983,20 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@sap-ai-sdk/ai-api@1.1.1-20241008013106.0': - resolution: {integrity: sha512-u4lG0h6WsYE6BU3p1ANqJB9VdHOpOmgKa6HVdRDyeC1PfRxGK6X0ytG/Dk6ZA9rWWngE53/L87rD0qpedZiz9w==} + '@sap-ai-sdk/ai-api@1.1.1-20241010013103.0': + resolution: {integrity: sha512-x0KmgPN3rB2NDqKNGwt+iJ6ULXk0YV+85oldaykJrXYTIQsdVZ5KUaDFk0iuQymrYAhvVOVLPK3zlozUtT0e0g==} - '@sap-ai-sdk/core@1.1.1-20241008013106.0': - resolution: {integrity: sha512-SwUQ05UPyBBMCVKVY5QUjvOkPA7WAUD+EJBObh15TXLS13n50ogMa+bqwfwYiMrH6oaSxiJMqbAT1M+xSizbQA==} + '@sap-ai-sdk/core@1.1.1-20241010013103.0': + resolution: {integrity: sha512-G9C4uFtH36W23asqoGBvz35JZ5gUHCynGuSW97x1biHv2r93eBvQXzi3V6OdJ/bbXVgcE4aW7tnZWfB02uuw4Q==} - '@sap-ai-sdk/foundation-models@1.1.1-20241008013106.0': - resolution: {integrity: sha512-THYVa7L7cqs5oGPebovEi6iUv5QNa1CCRxUqKxr/RYBDMAFKhZANA1VVN2ed2r5oiCJ2xqoTF7k6l1ZdVhIu5A==} + '@sap-ai-sdk/foundation-models@1.1.1-20241010013103.0': + resolution: {integrity: sha512-hC56BOzyJiDbXC6S0ide71Yk18S+pbm9VP/DuV1UlIL3QA5azZ/HYFlGwrFJoNReflo0RGmB49AUdjg/0NTv8w==} - '@sap-ai-sdk/langchain@1.1.1-20241008013106.0': - resolution: {integrity: sha512-TNrWiPX1KvkcSPKYsECxD5Q5RwdO2Haty7vnB+ECTZaZtz+sodyIAAL2HOnjz6SXgXfZKKGPf2guMbvIRO8C3w==} + '@sap-ai-sdk/langchain@1.1.1-20241010013103.0': + resolution: {integrity: sha512-RYI+BlESImKA+vFrDuUyK3Kua/8yEhMhC1Y+VldVBXLW7TfU+Clef6EBrzv/Qg9mezdJdjZnTsQKIYRP/sLoNw==} - '@sap-ai-sdk/orchestration@1.1.1-20241008013106.0': - resolution: {integrity: sha512-E2d7ossRCi+ot6XbYv4SOi3wCuL/N6heUeVi/IhalKAbznHQkb41eu2X8uArUa4lVl/nB6I38ing6MthlYGAog==} + '@sap-ai-sdk/orchestration@1.1.1-20241010013103.0': + resolution: {integrity: sha512-APwOSjaQgtQ9jlauDhyITlHW0fB3Pf+ixWJ9sgH/ZhNJI1lc26QQjVXzZojO20tgshdpp7k6W63558njJoIwig==} '@sap-cloud-sdk/connectivity@3.22.1': resolution: {integrity: sha512-H3kCVexTDsHkv3yWQUo6WPG/OFytQFgYa7hbU8dNiKfv5hiXPhWQ1EAegpz+trHemQAH1gKR0jnf845oIN+Z4w==} @@ -5239,7 +5239,7 @@ snapshots: '@jsdevtools/ono@7.1.3': {} - '@langchain/core@0.3.7(openai@4.61.1(zod@3.23.8))': + '@langchain/core@0.3.8(openai@4.61.1(zod@3.23.8))': dependencies: ansi-styles: 5.2.0 camelcase: 6.3.0 @@ -5255,7 +5255,7 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/core@0.3.8(openai@4.61.1(zod@3.23.8))': + '@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8))': dependencies: ansi-styles: 5.2.0 camelcase: 6.3.0 @@ -5271,9 +5271,9 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/openai@0.3.2(@langchain/core@0.3.8(openai@4.61.1(zod@3.23.8)))': + '@langchain/openai@0.3.2(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.8(openai@4.61.1(zod@3.23.8)) + '@langchain/core': 0.3.9(openai@4.61.1(zod@3.23.8)) js-tiktoken: 1.0.14 openai: 4.61.1(zod@3.23.8) zod: 3.23.8 @@ -5281,9 +5281,9 @@ snapshots: transitivePeerDependencies: - encoding - '@langchain/textsplitters@0.1.0(@langchain/core@0.3.8(openai@4.61.1(zod@3.23.8)))': + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.8(openai@4.61.1(zod@3.23.8)) + '@langchain/core': 0.3.9(openai@4.61.1(zod@3.23.8)) js-tiktoken: 1.0.14 '@manypkg/find-root@1.1.0': @@ -5343,15 +5343,15 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@sap-ai-sdk/ai-api@1.1.1-20241008013106.0': + '@sap-ai-sdk/ai-api@1.1.1-20241010013103.0': dependencies: - '@sap-ai-sdk/core': 1.1.1-20241008013106.0 + '@sap-ai-sdk/core': 1.1.1-20241010013103.0 '@sap-cloud-sdk/connectivity': 3.22.1 transitivePeerDependencies: - debug - supports-color - '@sap-ai-sdk/core@1.1.1-20241008013106.0': + '@sap-ai-sdk/core@1.1.1-20241010013103.0': dependencies: '@sap-cloud-sdk/connectivity': 3.22.1 '@sap-cloud-sdk/http-client': 3.22.1 @@ -5361,22 +5361,22 @@ snapshots: - debug - supports-color - '@sap-ai-sdk/foundation-models@1.1.1-20241008013106.0': + '@sap-ai-sdk/foundation-models@1.1.1-20241010013103.0': dependencies: - '@sap-ai-sdk/ai-api': 1.1.1-20241008013106.0 - '@sap-ai-sdk/core': 1.1.1-20241008013106.0 + '@sap-ai-sdk/ai-api': 1.1.1-20241010013103.0 + '@sap-ai-sdk/core': 1.1.1-20241010013103.0 '@sap-cloud-sdk/http-client': 3.22.1 '@sap-cloud-sdk/util': 3.22.1 transitivePeerDependencies: - debug - supports-color - '@sap-ai-sdk/langchain@1.1.1-20241008013106.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8)': + '@sap-ai-sdk/langchain@1.1.1-20241010013103.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8)': dependencies: - '@langchain/core': 0.3.7(openai@4.61.1(zod@3.23.8)) - '@sap-ai-sdk/ai-api': 1.1.1-20241008013106.0 - '@sap-ai-sdk/core': 1.1.1-20241008013106.0 - '@sap-ai-sdk/foundation-models': 1.1.1-20241008013106.0 + '@langchain/core': 0.3.8(openai@4.61.1(zod@3.23.8)) + '@sap-ai-sdk/ai-api': 1.1.1-20241010013103.0 + '@sap-ai-sdk/core': 1.1.1-20241010013103.0 + '@sap-ai-sdk/foundation-models': 1.1.1-20241010013103.0 zod-to-json-schema: 3.23.3(zod@3.23.8) transitivePeerDependencies: - debug @@ -5384,10 +5384,10 @@ snapshots: - supports-color - zod - '@sap-ai-sdk/orchestration@1.1.1-20241008013106.0': + '@sap-ai-sdk/orchestration@1.1.1-20241010013103.0': dependencies: - '@sap-ai-sdk/ai-api': 1.1.1-20241008013106.0 - '@sap-ai-sdk/core': 1.1.1-20241008013106.0 + '@sap-ai-sdk/ai-api': 1.1.1-20241010013103.0 + '@sap-ai-sdk/core': 1.1.1-20241010013103.0 '@sap-cloud-sdk/http-client': 3.22.1 '@sap-cloud-sdk/util': 3.22.1 transitivePeerDependencies: @@ -5415,7 +5415,7 @@ snapshots: eslint: 9.12.0 eslint-config-prettier: 9.1.0(eslint@9.12.0) eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0))(eslint@9.12.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0) eslint-plugin-jsdoc: 50.3.1(eslint@9.12.0) eslint-plugin-prettier: 5.2.1(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@9.12.0))(eslint@9.12.0)(prettier@3.3.3) eslint-plugin-regex: 1.10.0(eslint@9.12.0) @@ -6780,7 +6780,7 @@ snapshots: is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0))(eslint@9.12.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node @@ -6798,7 +6798,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0))(eslint@9.12.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -8073,11 +8073,11 @@ snapshots: kuler@2.0.0: {} - langchain@0.3.2(@langchain/core@0.3.8(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)): + langchain@0.3.2(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)): dependencies: - '@langchain/core': 0.3.8(openai@4.61.1(zod@3.23.8)) - '@langchain/openai': 0.3.2(@langchain/core@0.3.8(openai@4.61.1(zod@3.23.8))) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.8(openai@4.61.1(zod@3.23.8))) + '@langchain/core': 0.3.9(openai@4.61.1(zod@3.23.8)) + '@langchain/openai': 0.3.2(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8))) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8))) js-tiktoken: 1.0.14 js-yaml: 4.1.0 jsonpointer: 5.0.1 diff --git a/sample-code/package.json b/sample-code/package.json index 3061a843..8e7102e6 100644 --- a/sample-code/package.json +++ b/sample-code/package.json @@ -28,7 +28,7 @@ "@sap-ai-sdk/orchestration": "workspace:^", "@sap-ai-sdk/langchain": "workspace:^", "langchain": "0.3.2", - "@langchain/core": "0.3.8", + "@langchain/core": "0.3.9", "@langchain/textsplitters": "0.1.0", "@sap-cloud-sdk/util": "^3.22.1", "@types/express": "^5.0.0", diff --git a/tests/smoke-tests/package.json b/tests/smoke-tests/package.json index 32302152..7a14bd71 100644 --- a/tests/smoke-tests/package.json +++ b/tests/smoke-tests/package.json @@ -19,7 +19,7 @@ }, "dependencies": { "langchain": "0.3.2", - "@langchain/core": "0.3.8", + "@langchain/core": "0.3.9", "@langchain/textsplitters": "0.1.0", "@sap-ai-sdk/ai-api": "canary", "@sap-ai-sdk/foundation-models": "canary", From 952f3af1a1e76e9debb4ec6e1df81c3d5997bd3c Mon Sep 17 00:00:00 2001 From: Zhongpin Wang Date: Fri, 11 Oct 2024 15:01:18 +0200 Subject: [PATCH 05/10] chore: Add vale (#214) * chore: add vale * fix: existing documentation based on vale rules * fix: Changes from lint * fix: workflow * chore: remove mdx * fix: workflow --------- Co-authored-by: cloud-sdk-js --- .github/workflows/documentation.yaml | 42 ++ .vale.ini | 17 + CONTRIBUTING.md | 27 +- README.md | 48 +- adr/001-esm.md | 7 +- adr/002-project-structure.md | 4 +- adr/template.md | 2 +- docs/list-tested-APIs.md | 49 +- packages/ai-api/CHANGELOG.md | 3 +- packages/ai-api/README.md | 14 +- packages/core/README.md | 5 +- packages/foundation-models/CHANGELOG.md | 3 +- packages/foundation-models/README.md | 17 +- packages/langchain/README.md | 11 +- packages/orchestration/README.md | 8 +- sample-code/README.md | 2 +- sample-code/resources/orchestration.md | 3 +- styles/SAP/Adverbs.yml | 269 +++++++++ styles/SAP/Cliches.yml | 702 ++++++++++++++++++++++ styles/SAP/ComplexWords.yml | 119 ++++ styles/SAP/Ellipses.yml | 8 + styles/SAP/EndWithPeriod.yml | 7 + styles/SAP/FirstPerson.yml | 12 + styles/SAP/Gender.yml | 8 + styles/SAP/HeadingAcronyms.yml | 39 ++ styles/SAP/HeadingPunctuation.yml | 12 + styles/SAP/Headings.yml | 7 + styles/SAP/Illusions.yml | 11 + styles/SAP/Ordinal.yml | 6 + styles/SAP/OxfordComma.yml | 6 + styles/SAP/Passive.yml | 183 ++++++ styles/SAP/Products.yml | 27 + styles/SAP/Readability.yml | 8 + styles/SAP/SentenceLength.yml | 6 + styles/SAP/Sentences.yml | 7 + styles/SAP/SentencesList.yml | 7 + styles/SAP/Slang.yml | 10 + styles/SAP/So.yml | 5 + styles/SAP/Spacing.yml | 7 + styles/SAP/Spelling.yml | 7 + styles/SAP/ThereIs.yml | 6 + styles/SAP/Weasel.yml | 171 ++++++ styles/SAP/Wordiness.yml | 121 ++++ styles/SAP/meta.json | 4 + styles/config/vocabularies/SAP/accept.txt | 137 +++++ styles/config/vocabularies/SAP/reject.txt | 6 + tests/smoke-tests/README.md | 2 +- 47 files changed, 2097 insertions(+), 85 deletions(-) create mode 100644 .github/workflows/documentation.yaml create mode 100644 .vale.ini create mode 100644 styles/SAP/Adverbs.yml create mode 100644 styles/SAP/Cliches.yml create mode 100644 styles/SAP/ComplexWords.yml create mode 100644 styles/SAP/Ellipses.yml create mode 100644 styles/SAP/EndWithPeriod.yml create mode 100644 styles/SAP/FirstPerson.yml create mode 100644 styles/SAP/Gender.yml create mode 100644 styles/SAP/HeadingAcronyms.yml create mode 100644 styles/SAP/HeadingPunctuation.yml create mode 100644 styles/SAP/Headings.yml create mode 100644 styles/SAP/Illusions.yml create mode 100644 styles/SAP/Ordinal.yml create mode 100644 styles/SAP/OxfordComma.yml create mode 100644 styles/SAP/Passive.yml create mode 100644 styles/SAP/Products.yml create mode 100644 styles/SAP/Readability.yml create mode 100644 styles/SAP/SentenceLength.yml create mode 100644 styles/SAP/Sentences.yml create mode 100644 styles/SAP/SentencesList.yml create mode 100644 styles/SAP/Slang.yml create mode 100644 styles/SAP/So.yml create mode 100644 styles/SAP/Spacing.yml create mode 100644 styles/SAP/Spelling.yml create mode 100644 styles/SAP/ThereIs.yml create mode 100644 styles/SAP/Weasel.yml create mode 100644 styles/SAP/Wordiness.yml create mode 100644 styles/SAP/meta.json create mode 100644 styles/config/vocabularies/SAP/accept.txt create mode 100644 styles/config/vocabularies/SAP/reject.txt diff --git a/.github/workflows/documentation.yaml b/.github/workflows/documentation.yaml new file mode 100644 index 00000000..94f3d64c --- /dev/null +++ b/.github/workflows/documentation.yaml @@ -0,0 +1,42 @@ +name: documentation + +on: + pull_request: + branches: + - main + +jobs: + grammar-check: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Determine Changed Files + id: changed-files + run: | + ALL_FILES=$(gh pr view ${{ github.event.pull_request.number }} --json files --jq '.files.[] | select(.additions > 0) | .path') + CHANGED_FILES="${ALL_FILES//$'\n'/,}" + + echo "[DEBUG] Following files have been changed: $CHANGED_FILES" + echo "CHANGED_FILES=$CHANGED_FILES" >> $GITHUB_OUTPUT + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + - name: Vale + # vale fails if the PR is too large, e.g. when updating API docs + if: ${{ github.event.pull_request.changed_files < 100 }} + # You may pin to the exact commit or the version. + # uses: errata-ai/vale-action@0da98680790f89b8d5b685de9c264f55addc971b + uses: errata-ai/vale-action@reviewdog + with: + # version of 'vale' to use + # see https://github.com/errata-ai/vale for all releases + version: 3.7.1 + # changed files. computed in the step above + files: ${{ steps.changed-files.outputs.CHANGED_FILES }} + # the separator for the file list. we are using a comma (see step above) + separator: "," + # let review dog fail if there are errors + fail_on_error: true + env: + # Required + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.vale.ini b/.vale.ini new file mode 100644 index 00000000..d830c124 --- /dev/null +++ b/.vale.ini @@ -0,0 +1,17 @@ +; Vale is a command-line tool that brings code-like linting to prose. +; More information here: https://docs.errata.ai/vale/about/ + +StylesPath = styles + +Vocab = SAP +; MinAlertLevel = suggestion +MinAlertLevel = warning +WordTemplate = \b(?:%s)\b + +[*.md] +BasedOnStyles = Vale, SAP +BlockIgnores = (<(img|br|Tabs|Redirect|a|MvnBadge|embed|Csrf)\s[^>]+>+?), \ +(?s) *(import[^\n]+;) +TokenIgnores = (<(img|br|Tabs|Redirect|a|MvnBadge|embed|Csrf)\s[^\n]+>+?) + +Vale.Terms = warning diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7bf66eb3..0e087608 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,13 +5,15 @@ When contributing to this repository, please first discuss the changes you wish All members of the project community must abide by the [SAP Open Source Code of Conduct](https://github.com/SAP/.github/blob/main/CODE_OF_CONDUCT.md). Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting [a project maintainer](.reuse/dep5). -Once you are ready to make a change, please test it appropriately, create a pull request and describe your change in the pull request. The owners of the repository will review your changes as soon as possible. +Once you are ready to make a change, please test it appropriately, create a pull request and describe your change in the pull request. +The owners of the repository will review your changes as soon as possible. ## Project Structure This project contains multiple packages, that are managed using pnpm workspaces. Productive packages are located in the `packages` directory, test packages are located in the `tests` directory. -Some of the packages are interdependent, therefore pnpm install won't work from within those packages. Run `pnpm install` in the root directory instead. +Some of the packages are interdependent, therefore pnpm install won't work from within those packages. +Run `pnpm install` in the root directory instead. ## Testing @@ -19,7 +21,7 @@ All (new) functionality shall be covered by tests. ### Jest Runner Set-up -If you're using the Jest Runner extension in Visual Studio Code, you'll need to add the following settings to your `settings.json` file before running the tests from VSCode: +If you're using the Jest Runner extension in Visual Studio Code, you'll need to add the following settings to your `settings.json` file before running the tests from VS Code: ``` "jestrunner.debugOptions": { @@ -28,7 +30,7 @@ If you're using the Jest Runner extension in Visual Studio Code, you'll need to "jestrunner.jestCommand": "NODE_OPTIONS=--experimental-vm-modules node 'node_modules/jest/bin/jest.js'", ``` -You can run our tests either with the commands covered in the following sections or using the jest runnner extension directly from the IDE. +You can run our tests either with the commands covered in the following sections or using the jest runner extension directly from the IDE. ### Unit Tests @@ -39,7 +41,8 @@ You can run all unit tests by executing: $ pnpm test:unit ``` -To run unit tests for a specific package add the workspace name to the command. For the ai-api package this would be: +To run unit tests for a specific package add the workspace name to the command. +For the ai-api package this would be: ```bash $ pnpm ai-api test @@ -47,7 +50,8 @@ $ pnpm ai-api test ### Type Tests -As this project is written in TypeScript, it will be consumable by other TypeScript projects. We use `tsd` to test that our resulting API meets our expectations. +As this project is written in TypeScript, it will be consumable by other TypeScript projects. +We use `tsd` to test that our resulting API meets our expectations. The type tests are located at [`tests/type-tests`](./tests/type-tests). To run the type tests, execute: @@ -62,11 +66,11 @@ The E2E tests are based on a locally running server providing a REST interface u This server is used by the E2E tests located at [tests/e2e-tests](./test-packages/e2e-tests). **Attention** The imports in the E2E tests use the root packages e.g. `@sap-ai-sdk/ai-api` to mimic the way a customer would use it. -So if you made code changes in one of the packages you need to run `pnpm compile` to make the changes take effect. +Thus, if you made code changes in one of the packages you need to run `pnpm compile` to make the changes take effect. Before running the E2E tests, ensure that you have a `.env` file located in `tests/e2e-tests` folder. -Inside the `.env` file, define an `AICORE_SERVICE_KEY` variable and initialize it with the service binding of `aicore`. You can obtain this binding from the `VCAP_SERVICES` environment variable or from the service key defined in your BTP subaccount. +Inside the `.env` file, define an `AICORE_SERVICE_KEY` variable and initialize it with the service binding of `aicore`. You can obtain this binding from the `VCAP_SERVICES` environment variable or from the service key defined in your SAP BTP subaccount. To run the tests, use the following command: @@ -87,7 +91,8 @@ $ pnpm lint:fix To release a new version, ensure that the following prerequisites are met: - The smoke tests are passing. -- There are changesets under the `.changeset` directory. Without changesets, there should be nothing to release. +- There are changesets under the `.changeset` directory. + Without changesets, there should be nothing to release. If this is the case, follow these steps: @@ -120,7 +125,9 @@ You are welcome to contribute code in order to fix a bug or to implement a new f The following rules govern code contributions: - Contributions must be licensed under the [Apache 2.0 License](./LICENSE) -- Due to legal reasons, contributors will be asked to accept a Developer Certificate of Origin (DCO) when they create the first pull request to this project. This happens in an automated fashion during the submission process. SAP uses [the standard DCO text of the Linux Foundation](https://developercertificate.org/). +- Due to legal reasons, contributors will be asked to accept a Developer Certificate of Origin (DCO) when they create the first pull request to this project. + This happens in an automated fashion during the submission process. + SAP uses [the standard DCO text of the Linux Foundation](https://developercertificate.org/). Also make sure to follow our [style guide](./STYLEGUIDE) diff --git a/README.md b/README.md index d0105176..0ffd5714 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,9 @@ # SAP Cloud SDK for AI -Integrate chat completion into your business applications with SAP Cloud SDK for AI. Leverage the generative AI hub of [SAP AI Core](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/what-is-sap-ai-core) to make use of templating, grounding, data masking, content filtering and more. Setup your SAP AI Core instance with SAP Cloud SDK for AI Core. +Integrate chat completion into your business applications with SAP Cloud SDK for AI. +Leverage the generative AI hub of [SAP AI Core](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/what-is-sap-ai-core) to make use of templating, grounding, data masking, content filtering and more. +Setup your SAP AI Core instance with SAP Cloud SDK for AI Core. ### Table of Contents @@ -11,8 +13,8 @@ Integrate chat completion into your business applications with SAP Cloud SDK for - [Packages](#packages) - [@sap-ai-sdk/ai-api](#sap-ai-sdkai-api) - [@sap-ai-sdk/foundation-models](#sap-ai-sdkfoundation-models) - - [@sap-ai-sdk/orchestration](#sap-ai-sdkorchestration) - [@sap-ai-sdk/langchain](#sap-ai-sdklangchain) + - [@sap-ai-sdk/orchestration](#sap-ai-sdkorchestration) - [SAP Cloud SDK for AI Sample Project](#sap-cloud-sdk-for-ai-sample-project) - [Local Testing](#local-testing) - [Support, Feedback, Contribution](#support-feedback-contribution) @@ -28,18 +30,6 @@ See the documentation of each individual package under the [Packages](#packages) This project publishes multiple packages and is managed using [pnpm](https://pnpm.io/) -### @sap-ai-sdk/orchestration - -This package incorporates generative AI [orchestration](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/orchestration) capabilities into your AI activities in SAP AI Core and SAP AI Launchpad. - -#### Installation - -``` -$ npm install @sap-ai-sdk/orchestration -``` - -For details on orchestration client, refer to this [document](https://github.com/SAP/ai-sdk-js/blob/main/packages/orchestration/README.md). - ### @sap-ai-sdk/ai-api This package provides tools to manage your scenarios and workflows in SAP AI Core. @@ -81,9 +71,22 @@ $ npm install @sap-ai-sdk/langchain For details on LangChain model client, refer to this [document](https://github.com/SAP/ai-sdk-js/blob/main/packages/langchain/README.md). +### @sap-ai-sdk/orchestration + +This package incorporates generative AI [orchestration](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/orchestration) capabilities into your AI activities in SAP AI Core and SAP AI Launchpad. + +#### Installation + +``` +$ npm install @sap-ai-sdk/orchestration +``` + +For details on orchestration client, refer to this [document](https://github.com/SAP/ai-sdk-js/blob/main/packages/orchestration/README.md). + ## SAP Cloud SDK for AI Sample Project -We have created a sample project demonstrating the different clients' usage of the SAP Cloud SDK for AI for TypeScript/JavaScript. The [project README](https://github.com/SAP/ai-sdk-js/blob/main/sample-code/README.md) outlines the set-up needed to build and run it locally. +We have created a sample project demonstrating the different clients' usage of the SAP Cloud SDK for AI for TypeScript/JavaScript. +The [project README](https://github.com/SAP/ai-sdk-js/blob/main/sample-code/README.md) outlines the set-up needed to build and run it locally. ## Local Testing @@ -97,18 +100,23 @@ This setup enables local testing of clients such as orchestration and OpenAI, pr ## Support, Feedback, Contribution -This project is open to feature requests/suggestions, bug reports etc. via [GitHub issues](https://github.com/SAP/ai-sdk-js/issues). +This project is open to feature requests, bug reports and questions via [GitHub issues](https://github.com/SAP/ai-sdk-js/issues). -Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](https://github.com/SAP/ai-sdk-js/blob/main/CONTRIBUTING.md). +Contribution and feedback are encouraged and always welcome. +For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](https://github.com/SAP/ai-sdk-js/blob/main/CONTRIBUTING.md). ## Security / Disclosure -If you find any bug that may be a security problem, please follow our instructions at [in our security policy](https://github.com/SAP/ai-sdk-js/security/policy) on how to report it. Please do not create GitHub issues for security-related doubts or problems. +If you find any bug that may be a security problem, please follow our instructions at [in our security policy](https://github.com/SAP/ai-sdk-js/security/policy) on how to report it. +Please do not create GitHub issues for security-related doubts or problems. ## Code of Conduct -We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone. By participating in this project, you agree to abide by its [Code of Conduct](https://github.com/SAP/.github/blob/main/CODE_OF_CONDUCT.md) at all times. +We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone. +By participating in this project, you agree to abide by its [Code of Conduct](https://github.com/SAP/.github/blob/main/CODE_OF_CONDUCT.md) at all times. ## Licensing -Copyright 2024 SAP SE or an SAP affiliate company and ai-sdk-js contributors. Please see our [LICENSE](LICENSE) for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available [via the REUSE tool](https://api.reuse.software/info/github.com/SAP/ai-sdk-js). +Copyright 2024 SAP SE or an SAP affiliate company and ai-sdk-js contributors. +Please see our [LICENSE](LICENSE) for copyright and license information. +Detailed information including third-party components and their licensing/copyright information is available [via the REUSE tool](https://api.reuse.software/info/github.com/SAP/ai-sdk-js). diff --git a/adr/001-esm.md b/adr/001-esm.md index 1d923dcf..0d33432a 100644 --- a/adr/001-esm.md +++ b/adr/001-esm.md @@ -6,7 +6,8 @@ decided ## Context -The JavaScript ecosystem is changing. Node.js projects have to decide whether to use the legacy CommonJS modules (CJS, `require`) or ECMAScript Modules (ESM, `import`). +The JavaScript ecosystem is changing. +Node.js projects have to decide whether to use the legacy CommonJS modules (CJS, `require`) or ECMAScript Modules (ESM, `import`). As ESM is not compatible with CJS, this is an important decision. This [article](https://blog.stackademic.com/commonjs-vs-ecmascript-modules-esm-choosing-the-right-module-system-for-your-javascript-project-ef4efa856554) describes the most relevant differences. Although ESM has been on the market since 2016, CJS is still widely used (I couldn't find any concrete numbers). @@ -24,7 +25,7 @@ Due to the incompatibility between both module systems library developers hesita ### Pros -We can carefully check the community's opinion by communicating ESM compatibility only and be a pull factor as long as there are no hard blocks for either bigger projects or a large number of projects. +We can check the community's opinion by communicating ESM compatibility only and be a pull factor as long as there are no hard blocks for either bigger projects or a large number of projects. If it becomes a blocker, we can react without breaking changes. We can benefit from the performance improvements in ESM. @@ -84,7 +85,7 @@ Pro: ### Evaluation from PoC Hybrid mode is in fact CJS. -Generally it is possible to find workarounds to use ESM in CJS, but it gets ugly very quickly and has limitations: +Generally it is possible to find workarounds to use ESM in CJS, but it gets ugly quickly and has limitations: - The lib cannot use top level awaits. - Typings get lost. diff --git a/adr/002-project-structure.md b/adr/002-project-structure.md index 98d7e282..da163dfb 100644 --- a/adr/002-project-structure.md +++ b/adr/002-project-structure.md @@ -1,4 +1,4 @@ -# Project Structure of the SAP AI SDK for JS +# Project Structure of the SAP Cloud SDK for AI (JavaScript / TypeScript) ## Modules @@ -7,6 +7,6 @@ - @sap-ai-sdk/ai-api - AI API generated client + types - @sap-ai-sdk/foundation-models - - Foundation model client for LLM Access (Azure Openai, ...) + - Foundation model client for LLM Access (Azure Openai, and more) - @sap-ai-sdk/orchestration - Orchestration generated client diff --git a/adr/template.md b/adr/template.md index 002c0610..f0ae7e33 100644 --- a/adr/template.md +++ b/adr/template.md @@ -21,4 +21,4 @@ Often a list of options with pros and cons including the selection implementatio ## Option B -... + diff --git a/docs/list-tested-APIs.md b/docs/list-tested-APIs.md index 9c38ec54..36f974bd 100644 --- a/docs/list-tested-APIs.md +++ b/docs/list-tested-APIs.md @@ -1,28 +1,31 @@ # Available APIs -✅ Available and tested +APIs marked with ✅ are tested. -❗Warning: APIs not marked as tested are experimental. Use them at your own risk. +❗Otherwise experimental! +Use them at your own risk. -# AI Core +## AI API -- ApplicationAPI -- ArtifactApi ✅ -- ConfigurationApi ✅ -- DeploymentApi ✅ -- DockerRegistrySecretApi -- ExecutableApi -- ExecutionApi ✅ -- ExecutionScheduleApi -- FileApi -- KpiApi -- MetaApi -- MetricsApi -- ObjectStoreSecretApi -- RepositoryApi -- ResourceApi -- ResourceGroupApi -- ResourceQuotaApi -- ScenarioApi ✅ -- SecretApi -- ServiceApi \ No newline at end of file +| API | Status | +| ----------------------- | ------ | +| ApplicationApi | | +| ArtifactApi | ✅ | +| ConfigurationApi | ✅ | +| DeploymentApi | ✅ | +| DockerRegistrySecretApi | | +| ExecutableApi | | +| ExecutionApi | ✅ | +| ExecutionScheduleApi | | +| FileApi | | +| KpiApi | | +| MetaApi | | +| MetricsApi | | +| ObjectStoreSecretApi | | +| RepositoryApi | | +| ResourceApi | | +| ResourceGroupApi | | +| ResourceQuotaApi | | +| ScenarioApi | ✅ | +| SecretApi | | +| ServiceApi | | diff --git a/packages/ai-api/CHANGELOG.md b/packages/ai-api/CHANGELOG.md index f70815d5..22ca253c 100644 --- a/packages/ai-api/CHANGELOG.md +++ b/packages/ai-api/CHANGELOG.md @@ -7,7 +7,8 @@ - 5bd2e4d: [Compatibility Note] Move `modelsGet()` from `ModelApi` to `ScenarioApi`, and remove `ModelAPI`. - 5bd2e4d: [Fixed Issue] Fix `AiExecutionModificationResponseList` type to correctly represent an array of responses or errors. - 771f986: [Fixed Issue] Fix sending the correct resource group headers when custom resource group is set. -- 5bd2e4d: [Improvement] Add `kubesubmitV4ResourceQuotaGetDeploymentQuota()` function in `DeploymentApi` to get details about quota and usage for deployments. Additionally introduce two new types `BckndDeploymentQuotaItem` and `BckndDeploymentResourceQuotaResponse`. +- 5bd2e4d: [Improvement] Add `kubesubmitV4ResourceQuotaGetDeploymentQuota()` function in `DeploymentApi` to get details about quota and usage for deployments. + Additionally introduce two new types `BckndDeploymentQuotaItem` and `BckndDeploymentResourceQuotaResponse`. ### Patch Changes diff --git a/packages/ai-api/README.md b/packages/ai-api/README.md index aa559cb9..92947444 100644 --- a/packages/ai-api/README.md +++ b/packages/ai-api/README.md @@ -11,6 +11,7 @@ We maintain a list of [currently available and tested AI Core APIs](https://gith ## Table of Contents +- [Table of Contents](#table-of-contents) - [Installation](#installation) - [Version Management](#version-management) - [Prerequisites](#prerequisites) @@ -31,7 +32,8 @@ $ npm install @sap-ai-sdk/ai-api ## Version Management -⚠️ **Important**: This package contains generated code. Updates to this package may include breaking changes. +⚠️ **Important**: This package contains generated code. +Updates to this package may include breaking changes. To ensure compatibility and manage updates effectively, we strongly recommend using the tilde (`~`) version range in your project instead of the caret (`^`). This approach will allow patch-level updates while preventing potentially breaking minor version changes. @@ -43,7 +45,7 @@ To ensure compatibility and manage updates effectively, we strongly recommend us ## Prerequisites -- [Enable the AI Core service in BTP](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/initial-setup). +- [Enable the AI Core service in SAP BTP](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/initial-setup). - Project configured with Node.js v20 or higher and native ESM support enabled. ## Usage @@ -133,7 +135,8 @@ async function createDeployment() { ### Delete a Deployment -Only deployments with `targetStatus: STOPPED` can be deleted. So a modification request must be sent before deletion can occur. +Only deployments with `targetStatus: STOPPED` can be deleted. +Thus, a modification request must be sent before deletion can occur. ```TypeScript async function modifyDeployment() { @@ -177,9 +180,10 @@ For local testing instructions, refer to this [section](https://github.com/SAP/a ## Support, Feedback, Contribution -This project is open to feature requests/suggestions, bug reports etc. via [GitHub issues](https://github.com/SAP/ai-sdk-js/issues). +This project is open to feature requests, bug reports and questions via [GitHub issues](https://github.com/SAP/ai-sdk-js/issues). -Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](https://github.com/SAP/ai-sdk-js/blob/main/CONTRIBUTING.md). +Contribution and feedback are encouraged and always welcome. +For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](https://github.com/SAP/ai-sdk-js/blob/main/CONTRIBUTING.md). ## License diff --git a/packages/core/README.md b/packages/core/README.md index 734ff9c5..527824cf 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -15,9 +15,10 @@ The core package is not intended for direct usage. ## Support, Feedback, Contribution -This project is open to feature requests/suggestions, bug reports etc. via [GitHub issues](https://github.com/SAP/ai-sdk-js/issues). +This project is open to feature requests, bug reports and questions via [GitHub issues](https://github.com/SAP/ai-sdk-js/issues). -Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](https://github.com/SAP/ai-sdk-js/blob/main/CONTRIBUTING.md). +Contribution and feedback are encouraged and always welcome. +For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](https://github.com/SAP/ai-sdk-js/blob/main/CONTRIBUTING.md). ## License diff --git a/packages/foundation-models/CHANGELOG.md b/packages/foundation-models/CHANGELOG.md index 33dda10a..c5b0d29e 100644 --- a/packages/foundation-models/CHANGELOG.md +++ b/packages/foundation-models/CHANGELOG.md @@ -8,7 +8,8 @@ ### Patch Changes -- 3cbfdc7: [Fixed Issue] Fix index-based data access in embedding response. Previously, the 0th index data was always returned. +- 3cbfdc7: [Fixed Issue] Fix index-based data access in embedding response. + Previously, the 0th index data was always returned. - 506a1e4: [Fixed Issue] Fix missing and unused dependencies. - Updated dependencies [506a1e4] - Updated dependencies [5bd2e4d] diff --git a/packages/foundation-models/README.md b/packages/foundation-models/README.md index 57b4b7bd..7ae3a223 100644 --- a/packages/foundation-models/README.md +++ b/packages/foundation-models/README.md @@ -4,13 +4,14 @@ This package incorporates generative AI foundation models into your AI activitie ## Table of Contents +- [Table of Contents](#table-of-contents) - [Installation](#installation) - [Prerequisites](#prerequisites) - [Relationship between Models and Deployment ID](#relationship-between-models-and-deployment-id) - [Usage](#usage) - - [Azure OpenAI Client Initialization](#client-initialization) - - [Azure OpenAI Chat Client](#chat-client) - - [Azure OpenAI Embedding Client](#embedding-client) + - [Azure OpenAI Client Initialization](#azure-openai-client-initialization) + - [Azure OpenAI Chat Client](#azure-openai-chat-client) + - [Azure OpenAI Embedding Client](#azure-openai-embedding-client) - [Custom Request Configuration](#custom-request-configuration) - [Local Testing](#local-testing) - [Support, Feedback, Contribution](#support-feedback-contribution) @@ -24,7 +25,7 @@ $ npm install @sap-ai-sdk/foundation-models ## Prerequisites -- [Enable the AI Core service in BTP](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/initial-setup). +- [Enable the AI Core service in SAP BTP](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/initial-setup). - Project configured with Node.js v20 or higher and native ESM support enabled. - A deployed OpenAI model in SAP Generative AI hub. - Use the [`DeploymentApi`](https://github.com/SAP/ai-sdk-js/blob/main/packages/ai-api/README.md#create-a-deployment) from `@sap-ai-sdk/ai-api` to deploy a model to SAP generative AI hub. @@ -38,7 +39,8 @@ SAP AI Core manages access to generative AI models through the global AI scenari Creating a deployment for a model requires access to this scenario. Each model, model version, and resource group allows for a one-time deployment. -After deployment completion, the response includes a `deploymentUrl` and an `id`, which is the deployment ID. For more information, see [here](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/create-deployment-for-generative-ai-model-in-sap-ai-core). +After deployment completion, the response includes a `deploymentUrl` and an `id`, which is the deployment ID. +For more information, see [here](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/create-deployment-for-generative-ai-model-in-sap-ai-core). [Resource groups](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/resource-groups?q=resource+group) represent a virtual collection of related resources within the scope of one SAP AI Core tenant. Consequently, each deployment ID and resource group uniquely map to a combination of model and model version within the `foundation-models` scenario. @@ -178,9 +180,10 @@ For local testing instructions, refer to this [section](https://github.com/SAP/a ## Support, Feedback, Contribution -This project is open to feature requests/suggestions, bug reports etc. via [GitHub issues](https://github.com/SAP/ai-sdk-js/issues). +This project is open to feature requests, bug reports and questions via [GitHub issues](https://github.com/SAP/ai-sdk-js/issues). -Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](https://github.com/SAP/ai-sdk-js/blob/main/CONTRIBUTING.md). +Contribution and feedback are encouraged and always welcome. +For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](https://github.com/SAP/ai-sdk-js/blob/main/CONTRIBUTING.md). ## License diff --git a/packages/langchain/README.md b/packages/langchain/README.md index 3884e270..d4c90dd3 100644 --- a/packages/langchain/README.md +++ b/packages/langchain/README.md @@ -4,6 +4,7 @@ This package provides LangChain model clients built on top of the foundation mod ## Table of Contents +- [Table of Contents](#table-of-contents) - [Installation](#installation) - [Prerequisites](#prerequisites) - [Relationship between Models and Deployment ID](#relationship-between-models-and-deployment-id) @@ -37,7 +38,8 @@ SAP AI Core manages access to generative AI models through the global AI scenari Creating a deployment for a model requires access to this scenario. Each model, model version, and resource group allows for a one-time deployment. -After deployment completion, the response includes a `deploymentUrl` and an `id`, which is the deployment ID. For more information, see [here](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/create-deployment-for-generative-ai-model-in-sap-ai-core). +After deployment completion, the response includes a `deploymentUrl` and an `id`, which is the deployment ID. +For more information, see [here](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/create-deployment-for-generative-ai-model-in-sap-ai-core). [Resource groups](https://help.sap.com/docs/sap-ai-core/sap-ai-core-service-guide/resource-groups?q=resource+group) represent a virtual collection of related resources within the scope of one SAP AI Core tenant. @@ -90,7 +92,7 @@ const embeddingClient = new AzureOpenAiEmbeddingClient({ ### Chat Client The chat client allows you to interact with Azure OpenAI chat models, accessible via the generative AI hub of SAP AI Core. -To invoke the client, simply pass a prompt: +To invoke the client, pass a prompt: ```ts const response = await chatClient.invoke("What's the capital of France?"); @@ -178,9 +180,10 @@ For local testing instructions, refer to this [section](https://github.com/SAP/a ## Support, Feedback, Contribution -This project is open to feature requests/suggestions, bug reports etc. via [GitHub issues](https://github.com/SAP/ai-sdk-js/issues). +This project is open to feature requests, bug reports and questions via [GitHub issues](https://github.com/SAP/ai-sdk-js/issues). -Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](https://github.com/SAP/ai-sdk-js/blob/main/CONTRIBUTING.md). +Contribution and feedback are encouraged and always welcome. +For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](https://github.com/SAP/ai-sdk-js/blob/main/CONTRIBUTING.md). ## License diff --git a/packages/orchestration/README.md b/packages/orchestration/README.md index ab3b76db..3c7d09ce 100644 --- a/packages/orchestration/README.md +++ b/packages/orchestration/README.md @@ -4,6 +4,7 @@ This package incorporates generative AI orchestration capabilities into your AI ## Table of Contents +- [Table of Contents](#table-of-contents) - [Installation](#installation) - [Prerequisites](#prerequisites) - [Orchestration Service](#orchestration-service) @@ -202,11 +203,11 @@ try { Both `chatCompletion()` and `getContent()` methods can throw errors. -- **Axios Errors**: +- **axios errors**: When the chat completion request fails with a `400` status code, the caught error will be an `Axios` error. The property `error.response.data.message` may provide additional details about the failure's cause. -- **Output Content Filtered**: +- **output content filtered**: The method `getContent()` can throw an error if the output filter filters the model output. This can occur even if the chat completion request responds with a `200` HTTP status code. The `error.message` property indicates if the output was filtered. @@ -302,7 +303,8 @@ For local testing instructions, refer to this [section](https://github.com/SAP/a ## Support, Feedback, Contribution -Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](https://github.com/SAP/ai-sdk-js/blob/main/CONTRIBUTING.md). +Contribution and feedback are encouraged and always welcome. +For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](https://github.com/SAP/ai-sdk-js/blob/main/CONTRIBUTING.md). ## License diff --git a/sample-code/README.md b/sample-code/README.md index 6f1977b4..dcc068e0 100644 --- a/sample-code/README.md +++ b/sample-code/README.md @@ -2,7 +2,7 @@ ![e2e-test](https://github.com/SAP/ai-sdk-js/actions/workflows/e2e-tests.yaml/badge.svg) -Sample code to demonstrate the usage of the SAP AI SDK. +Sample code to demonstrate the usage of the SAP Cloud SDK for AI. Also used as basis for running E2E tests. ## Build, Run, Deploy Locally diff --git a/sample-code/resources/orchestration.md b/sample-code/resources/orchestration.md index d71c02ce..af281640 100644 --- a/sample-code/resources/orchestration.md +++ b/sample-code/resources/orchestration.md @@ -1,4 +1,5 @@ -!!! The below information is only a snapshot of our documentation, used for the purpose of the sample code. For the up-to-date documentation, please refer to the [official documentation](https://github.com/SAP/ai-sdk-js/blob/main/packages/orchestration/README.md). !!! +!!! The below information is only a snapshot of our documentation, used for the purpose of the sample code. +For the up-to-date documentation, please refer to the [official documentation](https://github.com/SAP/ai-sdk-js/blob/main/packages/orchestration/README.md). !!! ## Orchestration Service diff --git a/styles/SAP/Adverbs.yml b/styles/SAP/Adverbs.yml new file mode 100644 index 00000000..173479c7 --- /dev/null +++ b/styles/SAP/Adverbs.yml @@ -0,0 +1,269 @@ +extends: existence +message: "Consider removing '%s'." +ignorecase: true +level: suggestion +action: + name: remove +tokens: + - abnormally + - absentmindedly + - accidentally + - adventurously + - anxiously + - arrogantly + - awkwardly + - bashfully + - beautifully + - bitterly + - bleakly + - blindly + - blissfully + - boastfully + - boldly + - bravely + - briefly + - brightly + - briskly + - broadly + - busily + - calmly + - carefully + - carelessly + - cautiously + - cheerfully + - cleverly + - closely + - coaxingly + - colorfully + - continually + - coolly + - courageously + - crossly + - cruelly + - curiously + - daintily + - dearly + - deceivingly + - deeply + - defiantly + - deliberately + - delightfully + - diligently + - dimly + - doubtfully + - dreamily + - easily + - elegantly + - energetically + - enormously + - enthusiastically + - excitedly + - extremely + - fairly + - faithfully + - famously + - ferociously + - fervently + - fiercely + - fondly + - foolishly + - fortunately + - frankly + - frantically + - freely + - frenetically + - frightfully + - furiously + - generally + - generously + - gently + - gladly + - gleefully + - gracefully + - gratefully + - greatly + - greedily + - happily + - hastily + - healthily + - heavily + - helplessly + - honestly + - hopelessly + - hungrily + - innocently + - inquisitively + - intensely + - intently + - interestingly + - inwardly + - irritably + - jaggedly + - jealously + - jovially + - joyfully + - joyously + - jubilantly + - judgmentally + - justly + - keenly + - kiddingly + - kindheartedly + - knavishly + - knowingly + - knowledgeably + - lazily + - lightly + - limply + - lively + - loftily + - longingly + - loosely + - loudly + - lovingly + - loyally + - madly + - majestically + - meaningfully + - mechanically + - merrily + - miserably + - mockingly + - mortally + - mysteriously + - naturally + - nearly + - neatly + - nervously + - nicely + - noisily + - obediently + - obnoxiously + - oddly + - offensively + - optimistically + - overconfidently + - painfully + - partially + - patiently + - perfectly + - playfully + - politely + - poorly + - positively + - potentially + - powerfully + - promptly + - properly + - punctually + - quaintly + - queasily + - queerly + - questionably + - quickly + - quietly + - quirkily + - quizzically + - randomly + - rapidly + - rarely + - readily + - really + - reassuringly + - recklessly + - regularly + - reluctantly + - repeatedly + - reproachfully + - restfully + - righteously + - rightfully + - rigidly + - roughly + - rudely + - safely + - scarcely + - scarily + - searchingly + - sedately + - seemingly + - selfishly + - separately + - seriously + - shakily + - sharply + - sheepishly + - shrilly + - shyly + - silently + - sleepily + - slowly + - smoothly + - softly + - solemnly + - solidly + - speedily + - stealthily + - sternly + - strictly + - suddenly + - supposedly + - surprisingly + - suspiciously + - sweetly + - swiftly + - sympathetically + - tenderly + - tensely + - terribly + - thankfully + - thoroughly + - thoughtfully + - tightly + - tremendously + - triumphantly + - truthfully + - ultimately + - unabashedly + - unaccountably + - unbearably + - unethically + - unexpectedly + - unfortunately + - unimpressively + - unnaturally + - unnecessarily + - urgently + - usefully + - uselessly + - utterly + - vacantly + - vaguely + - vainly + - valiantly + - vastly + - verbally + - very + - viciously + - victoriously + - violently + - vivaciously + - voluntarily + - warmly + - weakly + - wearily + - wetly + - wholly + - wildly + - willfully + - wisely + - woefully + - wonderfully + - worriedly + - yawningly + - yearningly + - yieldingly + - youthfully + - zealously + - zestfully + - zestily diff --git a/styles/SAP/Cliches.yml b/styles/SAP/Cliches.yml new file mode 100644 index 00000000..c9531438 --- /dev/null +++ b/styles/SAP/Cliches.yml @@ -0,0 +1,702 @@ +extends: existence +message: "Try to avoid using clichés like '%s'." +ignorecase: true +level: warning +tokens: + - a chip off the old block + - a clean slate + - a dark and stormy night + - a far cry + - a fine kettle of fish + - a loose cannon + - a penny saved is a penny earned + - a tough row to hoe + - a word to the wise + - ace in the hole + - acid test + - add insult to injury + - against all odds + - air your dirty laundry + - all fun and games + - all in a day's work + - all talk, no action + - all thumbs + - all your eggs in one basket + - all's fair in love and war + - all's well that ends well + - almighty dollar + - American as apple pie + - an axe to grind + - another day, another dollar + - armed to the teeth + - as luck would have it + - as old as time + - as the crow flies + - at loose ends + - at my wits end + - avoid like the plague + - babe in the woods + - back against the wall + - back in the saddle + - back to square one + - back to the drawing board + - bad to the bone + - badge of honor + - bald faced liar + - ballpark figure + - banging your head against a brick wall + - baptism by fire + - barking up the wrong tree + - bat out of hell + - be all and end all + - beat a dead horse + - beat around the bush + - been there, done that + - beggars can't be choosers + - behind the eight ball + - bend over backwards + - benefit of the doubt + - bent out of shape + - best thing since sliced bread + - bet your bottom dollar + - better half + - better late than never + - better mousetrap + - better safe than sorry + - between a rock and a hard place + - beyond the pale + - bide your time + - big as life + - big cheese + - big fish in a small pond + - big man on campus + - bigger they are the harder they fall + - bird in the hand + - bird's eye view + - birds and the bees + - birds of a feather flock together + - bit the hand that feeds you + - bite the bullet + - bite the dust + - bitten off more than he can chew + - black as coal + - black as pitch + - black as the ace of spades + - blast from the past + - bleeding heart + - blessing in disguise + - blind ambition + - blind as a bat + - blind leading the blind + - blood is thicker than water + - blood sweat and tears + - blow off steam + - blow your own horn + - blushing bride + - boils down to + - bolt from the blue + - bone to pick + - bored stiff + - bored to tears + - bottomless pit + - boys will be boys + - bright and early + - brings home the bacon + - broad across the beam + - broken record + - brought back to reality + - bull by the horns + - bull in a china shop + - burn the midnight oil + - burning question + - burning the candle at both ends + - burst your bubble + - bury the hatchet + - busy as a bee + - by hook or by crook + - call a spade a spade + - called onto the carpet + - calm before the storm + - can of worms + - can't cut the mustard + - can't hold a candle to + - case of mistaken identity + - cat got your tongue + - cat's meow + - caught in the crossfire + - caught red-handed + - checkered past + - chomping at the bit + - cleanliness is next to godliness + - clear as a bell + - clear as mud + - close to the vest + - cock and bull story + - cold shoulder + - come hell or high water + - cool as a cucumber + - cool, calm, and collected + - cost a king's ransom + - count your blessings + - crack of dawn + - crash course + - creature comforts + - cross that bridge when you come to it + - crushing blow + - cry like a baby + - cry me a river + - cry over spilt milk + - crystal clear + - curiosity killed the cat + - cut and dried + - cut through the red tape + - cut to the chase + - cute as a bugs ear + - cute as a button + - cute as a puppy + - cuts to the quick + - dark before the dawn + - day in, day out + - dead as a doornail + - devil is in the details + - dime a dozen + - divide and conquer + - dog and pony show + - dog days + - dog eat dog + - dog tired + - don't burn your bridges + - don't count your chickens + - don't look a gift horse in the mouth + - don't rock the boat + - don't step on anyone's toes + - don't take any wooden nickels + - down and out + - down at the heels + - down in the dumps + - down the hatch + - down to earth + - draw the line + - dressed to kill + - dressed to the nines + - drives me up the wall + - dull as dishwater + - dyed in the wool + - eagle eye + - ear to the ground + - early bird catches the worm + - easier said than done + - easy as pie + - eat your heart out + - eat your words + - eleventh hour + - even the playing field + - every dog has its day + - every fiber of my being + - everything but the kitchen sink + - eye for an eye + - face the music + - facts of life + - fair weather friend + - fall by the wayside + - fan the flames + - feast or famine + - feather your nest + - feathered friends + - few and far between + - fifteen minutes of fame + - filthy vermin + - fine kettle of fish + - fish out of water + - fishing for a compliment + - fit as a fiddle + - fit the bill + - fit to be tied + - flash in the pan + - flat as a pancake + - flip your lid + - flog a dead horse + - fly by night + - fly the coop + - follow your heart + - for all intents and purposes + - for the birds + - for what it's worth + - force of nature + - force to be reckoned with + - forgive and forget + - fox in the henhouse + - free and easy + - free as a bird + - fresh as a daisy + - full steam ahead + - fun in the sun + - garbage in, garbage out + - gentle as a lamb + - get a kick out of + - get a leg up + - get down and dirty + - get the lead out + - get to the bottom of + - get your feet wet + - gets my goat + - gilding the lily + - give and take + - go against the grain + - go at it tooth and nail + - go for broke + - go him one better + - go the extra mile + - go with the flow + - goes without saying + - good as gold + - good deed for the day + - good things come to those who wait + - good time was had by all + - good times were had by all + - greased lightning + - greek to me + - green thumb + - green-eyed monster + - grist for the mill + - growing like a weed + - hair of the dog + - hand to mouth + - happy as a clam + - happy as a lark + - hasn't a clue + - have a nice day + - have high hopes + - have the last laugh + - haven't got a row to hoe + - head honcho + - head over heels + - hear a pin drop + - heard it through the grapevine + - heart's content + - heavy as lead + - hem and haw + - high and dry + - high and mighty + - high as a kite + - hit paydirt + - hold your head up high + - hold your horses + - hold your own + - hold your tongue + - honest as the day is long + - horns of a dilemma + - horse of a different color + - hot under the collar + - hour of need + - I beg to differ + - icing on the cake + - if the shoe fits + - if the shoe were on the other foot + - in a jam + - in a jiffy + - in a nutshell + - in a pig's eye + - in a pinch + - in a word + - in hot water + - in the gutter + - in the nick of time + - in the thick of it + - in your dreams + - it ain't over till the fat lady sings + - it goes without saying + - it takes all kinds + - it takes one to know one + - it's a small world + - it's only a matter of time + - ivory tower + - Jack of all trades + - jockey for position + - jog your memory + - joined at the hip + - judge a book by its cover + - jump down your throat + - jump in with both feet + - jump on the bandwagon + - jump the gun + - jump to conclusions + - just a hop, skip, and a jump + - just the ticket + - justice is blind + - keep a stiff upper lip + - keep an eye on + - keep it simple, stupid + - keep the home fires burning + - keep up with the Joneses + - keep your chin up + - keep your fingers crossed + - kick the bucket + - kick up your heels + - kick your feet up + - kid in a candy store + - kill two birds with one stone + - kiss of death + - knock it out of the park + - knock on wood + - knock your socks off + - know him from Adam + - know the ropes + - know the score + - knuckle down + - knuckle sandwich + - knuckle under + - labor of love + - ladder of success + - land on your feet + - lap of luxury + - last but not least + - last hurrah + - last-ditch effort + - law of the jungle + - law of the land + - lay down the law + - leaps and bounds + - let sleeping dogs lie + - let the cat out of the bag + - let the good times roll + - let your hair down + - let's talk turkey + - letter perfect + - lick your wounds + - lies like a rug + - life's a bitch + - life's a grind + - light at the end of the tunnel + - lighter than a feather + - lighter than air + - like clockwork + - like father like son + - like taking candy from a baby + - like there's no tomorrow + - lion's share + - live and learn + - live and let live + - long and short of it + - long lost love + - look before you leap + - look down your nose + - look what the cat dragged in + - looking a gift horse in the mouth + - looks like death warmed over + - loose cannon + - lose your head + - lose your temper + - loud as a horn + - lounge lizard + - loved and lost + - low man on the totem pole + - luck of the draw + - luck of the Irish + - make hay while the sun shines + - make money hand over fist + - make my day + - make the best of a bad situation + - make the best of it + - make your blood boil + - man of few words + - man's best friend + - mark my words + - meaningful dialogue + - missed the boat on that one + - moment in the sun + - moment of glory + - moment of truth + - money to burn + - more power to you + - more than one way to skin a cat + - movers and shakers + - moving experience + - naked as a jaybird + - naked truth + - neat as a pin + - needle in a haystack + - needless to say + - neither here nor there + - never look back + - never say never + - nip and tuck + - nip it in the bud + - no guts, no glory + - no love lost + - no pain, no gain + - no skin off my back + - no stone unturned + - no time like the present + - no use crying over spilled milk + - nose to the grindstone + - not a hope in hell + - not a minute's peace + - not in my backyard + - not playing with a full deck + - not the end of the world + - not written in stone + - nothing to sneeze at + - nothing ventured nothing gained + - now we're cooking + - off the top of my head + - off the wagon + - off the wall + - old hat + - older and wiser + - older than dirt + - older than Methuselah + - on a roll + - on cloud nine + - on pins and needles + - on the bandwagon + - on the money + - on the nose + - on the rocks + - on the spot + - on the tip of my tongue + - on the wagon + - on thin ice + - once bitten, twice shy + - one bad apple doesn't spoil the bushel + - one born every minute + - one brick short + - one foot in the grave + - one in a million + - one red cent + - only game in town + - open a can of worms + - open and shut case + - open the flood gates + - opportunity doesn't knock twice + - out of pocket + - out of sight, out of mind + - out of the frying pan into the fire + - out of the woods + - out on a limb + - over a barrel + - over the hump + - pain and suffering + - pain in the + - panic button + - par for the course + - part and parcel + - party pooper + - pass the buck + - patience is a virtue + - pay through the nose + - penny pincher + - perfect storm + - pig in a poke + - pile it on + - pillar of the community + - pin your hopes on + - pitter patter of little feet + - plain as day + - plain as the nose on your face + - play by the rules + - play your cards right + - playing the field + - playing with fire + - pleased as punch + - plenty of fish in the sea + - point with pride + - poor as a church mouse + - pot calling the kettle black + - pretty as a picture + - pull a fast one + - pull your punches + - pulling your leg + - pure as the driven snow + - put it in a nutshell + - put one over on you + - put the cart before the horse + - put the pedal to the metal + - put your best foot forward + - put your foot down + - quick as a bunny + - quick as a lick + - quick as a wink + - quick as lightning + - quiet as a dormouse + - rags to riches + - raining buckets + - raining cats and dogs + - rank and file + - rat race + - reap what you sow + - red as a beet + - red herring + - reinvent the wheel + - rich and famous + - rings a bell + - ripe old age + - ripped me off + - rise and shine + - road to hell is paved with good intentions + - rob Peter to pay Paul + - roll over in the grave + - rub the wrong way + - ruled the roost + - running in circles + - sad but true + - sadder but wiser + - salt of the earth + - scared stiff + - scared to death + - sealed with a kiss + - second to none + - see eye to eye + - seen the light + - seize the day + - set the record straight + - set the world on fire + - set your teeth on edge + - sharp as a tack + - shoot for the moon + - shoot the breeze + - shot in the dark + - shoulder to the wheel + - sick as a dog + - sigh of relief + - signed, sealed, and delivered + - sink or swim + - six of one, half a dozen of another + - skating on thin ice + - slept like a log + - slinging mud + - slippery as an eel + - slow as molasses + - smart as a whip + - smooth as a baby's bottom + - sneaking suspicion + - snug as a bug in a rug + - sow wild oats + - spare the rod, spoil the child + - speak of the devil + - spilled the beans + - spinning your wheels + - spitting image of + - spoke with relish + - spread like wildfire + - spring to life + - squeaky wheel gets the grease + - stands out like a sore thumb + - start from scratch + - stick in the mud + - still waters run deep + - stitch in time + - stop and smell the roses + - straight as an arrow + - straw that broke the camel's back + - strong as an ox + - stubborn as a mule + - stuff that dreams are made of + - stuffed shirt + - sweating blood + - sweating bullets + - take a load off + - take one for the team + - take the bait + - take the bull by the horns + - take the plunge + - takes one to know one + - takes two to tango + - the more the merrier + - the real deal + - the real McCoy + - the red carpet treatment + - the same old story + - there is no accounting for taste + - thick as a brick + - thick as thieves + - thin as a rail + - think outside of the box + - third time's the charm + - this day and age + - this hurts me worse than it hurts you + - this point in time + - three sheets to the wind + - through thick and thin + - throw in the towel + - tie one on + - tighter than a drum + - time and time again + - time is of the essence + - tip of the iceberg + - tired but happy + - to coin a phrase + - to each his own + - to make a long story short + - to the best of my knowledge + - toe the line + - tongue in cheek + - too good to be true + - too hot to handle + - too numerous to mention + - touch with a ten foot pole + - tough as nails + - trial and error + - trials and tribulations + - tried and true + - trip down memory lane + - twist of fate + - two cents worth + - two peas in a pod + - ugly as sin + - under the counter + - under the gun + - under the same roof + - under the weather + - until the cows come home + - unvarnished truth + - up the creek + - uphill battle + - upper crust + - upset the applecart + - vain attempt + - vain effort + - vanquish the enemy + - vested interest + - waiting for the other shoe to drop + - wakeup call + - warm welcome + - watch your p's and q's + - watch your tongue + - watching the clock + - water under the bridge + - weather the storm + - weed them out + - week of Sundays + - went belly up + - wet behind the ears + - what goes around comes around + - what you see is what you get + - when it rains, it pours + - when push comes to shove + - when the cat's away + - when the going gets tough, the tough get going + - white as a sheet + - whole ball of wax + - whole hog + - whole nine yards + - wild goose chase + - will wonders never cease? + - wisdom of the ages + - wise as an owl + - wolf at the door + - words fail me + - work like a dog + - world weary + - worst nightmare + - worth its weight in gold + - wrong side of the bed + - yanking your chain + - yappy as a dog + - years young + - you are what you eat + - you can run but you can't hide + - you only live once + - you're the boss + - young and foolish + - young and vibrant diff --git a/styles/SAP/ComplexWords.yml b/styles/SAP/ComplexWords.yml new file mode 100644 index 00000000..ef0f0969 --- /dev/null +++ b/styles/SAP/ComplexWords.yml @@ -0,0 +1,119 @@ +extends: substitution +message: "Consider using '%s' instead of '%s'." +ignorecase: true +level: suggestion +action: + name: replace +swap: + 'approximate(?:ly)?': about + abundance: plenty + accelerate: speed up + accentuate: stress + accompany: go with + accomplish: carry out|do + accorded: given + accordingly: so + accrue: add + accurate: right|exact + acquiesce: agree + acquire: get|buy + additional: more|extra + address: discuss + addressees: you + adjacent to: next to + adjustment: change + admissible: allowed + advantageous: helpful + advise: tell + aggregate: total + aircraft: plane + alleviate: ease + allocate: assign|divide + alternatively: or + alternatives: choices|options + ameliorate: improve + amend: change + anticipate: expect + apparent: clear|plain + ascertain: discover|find out + assistance: help + attain: meet + attempt: try + authorize: allow + belated: late + bestow: give + cease: stop|end + collaborate: work together + commence: begin + compensate: pay + component: part + comprise: form|include + concept: idea + concerning: about + confer: give|award + consequently: so + consolidate: merge + constitutes: forms + contains: has + convene: meet + demonstrate: show|prove + depart: leave + designate: choose + desire: want|wish + determine: decide|find + detrimental: bad|harmful + disclose: share|tell + discontinue: stop + disseminate: send|give + eliminate: end + elucidate: explain + employ: use + enclosed: inside|included + encounter: meet + endeavor: try + enumerate: count + equitable: fair + equivalent: equal + exclusively: only + expedite: hurry + facilitate: ease + females: women + finalize: complete|finish + frequently: often + identical: same + incorrect: wrong + indication: sign + initiate: start|begin + itemized: listed + jeopardize: risk + liaise: work with|partner with + maintain: keep|support + methodology: method + modify: change + monitor: check|watch + multiple: many + necessitate: cause + notify: tell + numerous: many + objective: aim|goal + obligate: bind|compel + optimum: best|most + permit: let + portion: part + possess: own + previous: earlier + previously: before + prioritize: rank + procure: buy + provide: give|offer + purchase: buy + relocate: move + solicit: request + state-of-the-art: latest + subsequent: later|next + substantial: large + sufficient: enough + terminate: end + transmit: send + utilization: use + utilize: use diff --git a/styles/SAP/Ellipses.yml b/styles/SAP/Ellipses.yml new file mode 100644 index 00000000..9734f0c5 --- /dev/null +++ b/styles/SAP/Ellipses.yml @@ -0,0 +1,8 @@ +extends: existence +message: "In general, don't use an ellipsis." +nonword: true +level: warning +action: + name: remove +tokens: + - '\.\.\.' diff --git a/styles/SAP/EndWithPeriod.yml b/styles/SAP/EndWithPeriod.yml new file mode 100644 index 00000000..9d2fdc17 --- /dev/null +++ b/styles/SAP/EndWithPeriod.yml @@ -0,0 +1,7 @@ +extends: existence +message: 'Each sentence should end with punctuation.' +nonword: true +scope: sentence +level: suggestion +raw: + - '^[^:]{3}.*[^\.:!?]$' diff --git a/styles/SAP/FirstPerson.yml b/styles/SAP/FirstPerson.yml new file mode 100644 index 00000000..9bdcc102 --- /dev/null +++ b/styles/SAP/FirstPerson.yml @@ -0,0 +1,12 @@ +extends: existence +message: "Avoid first-person pronouns such as '%s'." +ignorecase: true +level: suggestion +nonword: true +tokens: + - (?:^|\s)I\s + - (?:^|\s)I,\s + - \bI'm\b + - \bme\b + - \bmy\b + - \bmine\b diff --git a/styles/SAP/Gender.yml b/styles/SAP/Gender.yml new file mode 100644 index 00000000..9516ab52 --- /dev/null +++ b/styles/SAP/Gender.yml @@ -0,0 +1,8 @@ +extends: existence +message: "Don't use '%s' as a gender-neutral pronoun." +level: error +ignorecase: true +tokens: + - he/she + - s/he + - \(s\)he diff --git a/styles/SAP/HeadingAcronyms.yml b/styles/SAP/HeadingAcronyms.yml new file mode 100644 index 00000000..999fbf31 --- /dev/null +++ b/styles/SAP/HeadingAcronyms.yml @@ -0,0 +1,39 @@ +extends: existence +message: Avoid using acronyms in a title or heading. Found '%s'. +level: warning +scope: heading +tokens: + - '[A-Z]{2,5}' +raw: + - (?!SAP) + - (?!HANA) + - (?!SDK) + - (?!API) + - (?!BAPI) + - (?!RFC) + - (?!HTTP) + - (?!CRUD) + - (?!REST) + - (?!XSUAA) + - (?!JSON) + - (?!IDE) + - (?!BCP) + - (?!BTP) + - (?!WAR) + - (?!URL) + - (?!ERP) + - (?!FAQ) + - (?!CPU) + - (?!ABAP) + - (?!CLI) + - (?!TLS) + - (?!CVE) + - (?!SSL) + - (?!JWT) + - (?!IAS) + - (?!ZTIS) + - (?!AI) + - (?!ESM) + - (?!ID) + - (?!CAP) + - (?!CJS) diff --git a/styles/SAP/HeadingPunctuation.yml b/styles/SAP/HeadingPunctuation.yml new file mode 100644 index 00000000..d5591fc6 --- /dev/null +++ b/styles/SAP/HeadingPunctuation.yml @@ -0,0 +1,12 @@ +extends: existence +message: "Don't put a period at the end of a heading." +nonword: true +level: warning +scope: heading +action: + name: edit + params: + - remove + - '.' +tokens: + - '[a-z0-9][.](?:\s|$)' diff --git a/styles/SAP/Headings.yml b/styles/SAP/Headings.yml new file mode 100644 index 00000000..0f9340ec --- /dev/null +++ b/styles/SAP/Headings.yml @@ -0,0 +1,7 @@ +extends: capitalization +message: "'%s' should use title-style capitalization." +link: 'https://capitalizemytitle.com/style/AP/#' +level: suggestion +scope: heading +match: $title +style: AP diff --git a/styles/SAP/Illusions.yml b/styles/SAP/Illusions.yml new file mode 100644 index 00000000..b4f13218 --- /dev/null +++ b/styles/SAP/Illusions.yml @@ -0,0 +1,11 @@ +extends: repetition +message: "'%s' is repeated!" +level: warning +alpha: true +action: + name: edit + params: + - truncate + - " " +tokens: + - '[^\s]+' diff --git a/styles/SAP/Ordinal.yml b/styles/SAP/Ordinal.yml new file mode 100644 index 00000000..42c35ab3 --- /dev/null +++ b/styles/SAP/Ordinal.yml @@ -0,0 +1,6 @@ +extends: existence +message: "Spell out all ordinal numbers ('%s') in text." +level: suggestion +nonword: true +tokens: + - \d+(?:st|nd|rd|th) diff --git a/styles/SAP/OxfordComma.yml b/styles/SAP/OxfordComma.yml new file mode 100644 index 00000000..464d6e69 --- /dev/null +++ b/styles/SAP/OxfordComma.yml @@ -0,0 +1,6 @@ +extends: existence +message: "Use the Oxford comma in '%s'." +scope: sentence +level: suggestion +tokens: + - '(?:[^,]+,){1,}\s\w+\s(?:and|or)' diff --git a/styles/SAP/Passive.yml b/styles/SAP/Passive.yml new file mode 100644 index 00000000..4dcf4310 --- /dev/null +++ b/styles/SAP/Passive.yml @@ -0,0 +1,183 @@ +extends: existence +message: "'%s' may be passive voice. Use active voice if you can." +ignorecase: true +level: suggestion +raw: + - \b(am|are|were|being|is|been|was|be)\b\s* +tokens: + - '[\w]+ed' + - awoken + - beat + - become + - been + - begun + - bent + - beset + - bet + - bid + - bidden + - bitten + - bled + - blown + - born + - bought + - bound + - bred + - broadcast + - broken + - brought + - built + - burnt + - burst + - cast + - caught + - chosen + - clung + - come + - cost + - crept + - cut + - dealt + - dived + - done + - drawn + - dreamt + - driven + - drunk + - dug + - eaten + - fallen + - fed + - felt + - fit + - fled + - flown + - flung + - forbidden + - foregone + - forgiven + - forgotten + - forsaken + - fought + - found + - frozen + - given + - gone + - gotten + - ground + - grown + - heard + - held + - hidden + - hit + - hung + - hurt + - kept + - knelt + - knit + - known + - laid + - lain + - leapt + - learnt + - led + - left + - lent + - let + - lighted + - lost + - made + - meant + - met + - misspelt + - mistaken + - mown + - overcome + - overdone + - overtaken + - overthrown + - paid + - pled + - proven + - put + - quit + - read + - rid + - ridden + - risen + - run + - rung + - said + - sat + - sawn + - seen + - sent + - set + - sewn + - shaken + - shaven + - shed + - shod + - shone + - shorn + - shot + - shown + - shrunk + - shut + - slain + - slept + - slid + - slit + - slung + - smitten + - sold + - sought + - sown + - sped + - spent + - spilt + - spit + - split + - spoken + - spread + - sprung + - spun + - stolen + - stood + - stridden + - striven + - struck + - strung + - stuck + - stung + - stunk + - sung + - sunk + - swept + - swollen + - sworn + - swum + - swung + - taken + - taught + - thought + - thrived + - thrown + - thrust + - told + - torn + - trodden + - understood + - upheld + - upset + - wed + - wept + - withheld + - withstood + - woken + - won + - worn + - wound + - woven + - written + - wrung diff --git a/styles/SAP/Products.yml b/styles/SAP/Products.yml new file mode 100644 index 00000000..3294cac6 --- /dev/null +++ b/styles/SAP/Products.yml @@ -0,0 +1,27 @@ +extends: substitution +message: "Use '%s' instead of '%s'." +link: 'https://www.sapbrandtools.com/naming-center/' +level: error +ignorecase: false +swap: + (?:[^\s]*) ?(?:[^\s]*) ?AI SDKs?: SAP Cloud SDK for AI + (?:[^\s]*) ?Cloud Platform: SAP Cloud Platform + (?:[^\s]*) ?S/?4/? ?HANA: SAP S/4HANA + (?:[^\s]*) ?Success ?Factors: SAP SuccessFactors + SFSF: SAP SuccessFactors + C4C: SAP Cloud for Customer + (?:[^\s]*) ?Fieldglass: SAP Fieldglass + (?:[^\s]*) ?Ariba: SAP Ariba + (?:[^\s]*) ?Concur: SAP Concur + (?:[^\s]*) ?BTP: SAP BTP + (?:[^\s]*) ?cloud [fF]oundry: Cloud Foundry + (?:[^\s]*) ?[cC]loud foundry: Cloud Foundry + (?:[^\s]*) ?[oO]n[pP]remise[s]*: On-Premise #Not without - + (?:[^\s]*) ?[oO]n-[pP]remises: On-Premise #No s in the end + (?:[^\s]*) ?[oO]n[-]*[pP]rem: On-Premise #No OnPrem short term + # SAP S/4HANA OnPremise: SAP S/4HANA on-premise edition + (?:)[Tt]ype[ -]*[Ss]cript: TypeScript + (?:[^\s]*) [API|api] [hH]ub: SAP Business Accelerator Hub + # generative AI hub + (?:[^\s]*) ?[Gg]en ?[AI|ai] [hH]ub: generative AI hub + (?:[^\s]*) ?[Gg]enerative ?[AI|ai] [hH]ub: generative AI hub diff --git a/styles/SAP/Readability.yml b/styles/SAP/Readability.yml new file mode 100644 index 00000000..6960e733 --- /dev/null +++ b/styles/SAP/Readability.yml @@ -0,0 +1,8 @@ +extends: readability +message: 'The text is very complex! It has a grade score of >14.' +link: 'https://en.wikipedia.org/wiki/Gunning_fog_index' +level: warning +grade: 14 +metrics: + - Flesch-Kincaid + - Gunning Fog diff --git a/styles/SAP/SentenceLength.yml b/styles/SAP/SentenceLength.yml new file mode 100644 index 00000000..71e02dac --- /dev/null +++ b/styles/SAP/SentenceLength.yml @@ -0,0 +1,6 @@ +extends: occurrence +message: 'Try to keep sentences short (< 45 words).' +scope: sentence +level: warning +max: 45 +token: \b(\w+)\b diff --git a/styles/SAP/Sentences.yml b/styles/SAP/Sentences.yml new file mode 100644 index 00000000..c31e2d08 --- /dev/null +++ b/styles/SAP/Sentences.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Each sentence should have its own line." +nonword: true +scope: paragraph +level: error +raw: + - '(?:[\d\w]{2,})\.[^$\n\d\w\.\)]' diff --git a/styles/SAP/SentencesList.yml b/styles/SAP/SentencesList.yml new file mode 100644 index 00000000..360b5bb6 --- /dev/null +++ b/styles/SAP/SentencesList.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Each sentence should have it's own line." +nonword: true +scope: list +level: warning +raw: + - '(?:[\d\w]{2,})\.[^$\n\d\w\.\)]' diff --git a/styles/SAP/Slang.yml b/styles/SAP/Slang.yml new file mode 100644 index 00000000..9af16398 --- /dev/null +++ b/styles/SAP/Slang.yml @@ -0,0 +1,10 @@ +extends: existence +message: "Don't use internet slang abbreviations such as '%s'." +ignorecase: true +level: error +tokens: + - 'tl;dr' + - ymmv + - rtfm + - imo + - fwiw diff --git a/styles/SAP/So.yml b/styles/SAP/So.yml new file mode 100644 index 00000000..4882534d --- /dev/null +++ b/styles/SAP/So.yml @@ -0,0 +1,5 @@ +extends: existence +message: "Don't start a sentence with '%s'." +level: warning +raw: + - '(?:[;-]\s)so[\s,]|\bSo[\s,]' diff --git a/styles/SAP/Spacing.yml b/styles/SAP/Spacing.yml new file mode 100644 index 00000000..65ecb650 --- /dev/null +++ b/styles/SAP/Spacing.yml @@ -0,0 +1,7 @@ +extends: existence +message: "'%s' should have one space." +level: warning +nonword: true +tokens: + - '[.?!] {2,}[A-Z]' + - '[.?!][A-Z]' diff --git a/styles/SAP/Spelling.yml b/styles/SAP/Spelling.yml new file mode 100644 index 00000000..10f0ad4f --- /dev/null +++ b/styles/SAP/Spelling.yml @@ -0,0 +1,7 @@ +extends: existence +message: "In general, use American spelling instead of '%s'." +ignorecase: true +level: warning +tokens: + - '(?:\w+)nised?' + - '(?:\w+)logue' diff --git a/styles/SAP/ThereIs.yml b/styles/SAP/ThereIs.yml new file mode 100644 index 00000000..a962483d --- /dev/null +++ b/styles/SAP/ThereIs.yml @@ -0,0 +1,6 @@ +extends: existence +message: "Don't start a sentence with '%s'." +ignorecase: false +level: suggestion +raw: + - '(?:[;-]\s)There\s(is|are)|\bThere\s(is|are)\b' diff --git a/styles/SAP/Weasel.yml b/styles/SAP/Weasel.yml new file mode 100644 index 00000000..cf25c16c --- /dev/null +++ b/styles/SAP/Weasel.yml @@ -0,0 +1,171 @@ +extends: existence +message: "'%s' is a weasel word!" +ignorecase: true +level: warning +tokens: + - absolutely + - accidentally + - allegedly + - angrily + - anxiously + - awkwardly + - badly + - barely + - beautifully + - blindly + - boldly + - bravely + - brightly + - briskly + - bristly + - bubbly + - busily + - calmly + - carefully + - carelessly + - cautiously + - cheerfully + - clearly + - closely + - coldly + - courageously + - crinkly + - cruelly + - crumbly + - cuddly + - daily + - daringly + - deadly + - definitely + - deliberately + - doubtfully + - dumbly + - eagerly + - early + - easily + - elegantly + - enormously + - enthusiastically + - equally + - exceedingly + - exclusively + - extremely + - fairly + - faithfully + - fatally + - fiercely + - fondly + - foolishly + - fortunately + - frankly + - frantically + - generously + - gently + - giggly + - gladly + - gracefully + - greedily + - hardly + - hastily + - healthily + - heartily + - helpfully + - honestly + - hourly + - hungrily + - hurriedly + - impatiently + - inadequately + - ingeniously + - innocently + - inquisitively + - interestingly + - irritably + - jiggly + - joyously + - justly + - kindly + - largely + - lately + - literally + - lonely + - loosely + - loudly + - loudly + - luckily + - madly + - mentally + - mildly + - monthly + - mortally + - mysteriously + - neatly + - nervously + - nightly + - noisily + - obediently + - occasionally + - openly + - painfully + - particularly + - patiently + - perfectly + - politely + - poorly + - powerfully + - presumably + - promptly + - punctually + - rarely + - really + - recklessly + - remarkably + - relatively + - reluctantly + - repeatedly + - rightfully + - roughly + - rudely + - sadly + - safely + - selfishly + - sensibly + - seriously + - shyly + - silently + - simply + - sleepily + - slowly + - smartly + - smelly + - smoothly + - softly + - solemnly + - sparkly + - speedily + - stealthily + - sternly + - stupidly + - suddenly + - surprisingly + - suspiciously + - swiftly + - tenderly + - tensely + - thoughtfully + - tightly + - timely + - truthfully + - very + - victoriously + - violently + - vivaciously + - warmly + - waverly + - weakly + - wearily + - wildly + - wisely + - worldly + - wrinkly + - yearly diff --git a/styles/SAP/Wordiness.yml b/styles/SAP/Wordiness.yml new file mode 100644 index 00000000..5cafa8f6 --- /dev/null +++ b/styles/SAP/Wordiness.yml @@ -0,0 +1,121 @@ +extends: substitution +message: "Consider using '%s' instead of '%s'." +ignorecase: true +level: suggestion +action: + name: replace +swap: + (?:give|gave) rise to: lead to + (?:previous|prior) to: before + a (?:large)? majority of: most + a (?:large)? number of: many + a myriad of: myriad + adversely impact: hurt + all across: across + all of a sudden: suddenly + all of these: these + all of: all + all-time record: record + almost all: most + almost never: seldom + along the lines of: similar to + an adequate number of: enough + an appreciable number of: many + an estimated: about + any and all: all + are in agreement: agree + as a matter of fact: in fact + as a means of: to + as a result of: because of + as of yet: yet + as per: per + at a later date: later + at all times: always + at the present time: now + at this point in time: at this point + based in large part on: based on + based on the fact that: because + basic necessity: necessity + because of the fact that: because + came to a realization: realized + came to an abrupt end: ended abruptly + carry out an evaluation of: evaluate + close down: close + closed down: closed + complete stranger: stranger + completely separate: separate + concerning the matter of: regarding + conduct a review of: review + conduct an investigation: investigate + conduct experiments: experiment + continue on: continue + despite the fact that: although + disappear from sight: disappear + drag and drop: drag + drag-and-drop: drag + doomed to fail: doomed + due to the fact that: because + during the period of: during + during the time that: while + emergency situation: emergency + except when: unless + excessive number: too many + extend an invitation: invite + fall down: fall + fell down: fell + for the duration of: during + gather together: gather + has the ability to: can + has the capacity to: can + has the opportunity to: could + hold a meeting: meet + if this is not the case: if not + in a careful manner: carefully + in a thoughtful manner: thoughtfully + in a timely manner: timely + in an effort to: to + in between: between + in lieu of: instead of + in many cases: often + in most cases: usually + in order to: to + in some cases: sometimes + in spite of the fact that: although + in spite of: despite + in the (?:very)? near future: soon + in the event that: if + in the neighborhood of: roughly + in the vicinity of: close to + it would appear that: apparently + lift up: lift + made reference to: referred to + make reference to: refer to + mix together: mix + none at all: none + not in a position to: unable + not possible: impossible + of major importance: important + perform an assessment of: assess + pertaining to: about + place an order: order + plays a key role in: is essential to + present time: now + readily apparent: apparent + some of the: some + span across: span + subsequent to: after + successfully complete: complete + sufficient number (?:of)?: enough + take action: act + take into account: consider + the question as to whether: whether + there is no doubt but that: doubtless + this day and age: this age + this is a subject that: this subject + time (?:frame|period): time + under the provisions of: under + until such time as: until + used for fuel purposes: used for fuel + whether or not: whether + with regard to: regarding + with the exception of: except for diff --git a/styles/SAP/meta.json b/styles/SAP/meta.json new file mode 100644 index 00000000..a8387f67 --- /dev/null +++ b/styles/SAP/meta.json @@ -0,0 +1,4 @@ +{ + "feed": "https://github.com/SAP/cloud-sdk/releases.atom", + "vale_version": ">=1.0.0" +} diff --git a/styles/config/vocabularies/SAP/accept.txt b/styles/config/vocabularies/SAP/accept.txt new file mode 100644 index 00000000..a46527cb --- /dev/null +++ b/styles/config/vocabularies/SAP/accept.txt @@ -0,0 +1,137 @@ +SAP S/4HANA +SAP Cloud SDK +SAP Cloud SDK for AI +Cloud Foundry +Fieldglass +Ariba +Grammarly +[dD]ocusaurus +Javadoc +Theia +[Ww]ebpack +npm +[Ll]ogback +Lombok +JCache +axios +grant_type +login_hint +PUT +put +OData +APIs +BAPIs +JCo +OAuth +API's +SDK's +SAMLAssertion +zoneId +CRDs +destinationName +camelCase +tenantId +JWTs +BTP's +retrieveJwt +clientId +clientSecret +CAs +myFunction +rejectUnauthorized +registerDestination +ESLint +CLIs +GUIDs +[AI|ai] +Blust +Streifeneder +ESM + +subaccount +microservices +[Mm]ultitenancy +runtimes? +allowlist(ed)? +onboard(ed)? +[Bb]uildpack +BOM + +changesets? +subrequests? +subresponses? +iterable +untyped +anonymized +[Tt]ranspil(ed|ing)? +prepend(er|ed)? +append(er|ed)? +pre +(de)?serializ(e|ing) +approuter +stringif(y|ied) +namespace +[Bb]lockchain +hostname +multithreading +https? +www +semver +XML +MDX +classpath +[Ss]ervlet +[Aa]ccessor +[GgSs]etters? +hotfix(es)? +Northwind +REST(ful) +[Oo]pen[Aa]pi +ETag +CSRF +winston +kibana +env +boolean +sourcemap +validator +[Dd]eserialization +autogenerate +[Cc]omposable +[Ww]eb[Ff]lux +[Dd]ockerfile +[Mm]iddleware +Artifactory +Olingo +Kyma +Kubeconfig +polyfill +URIs +[Dd]estructure +[Dd]estructuring +config +Injectable +uncheck +[kK]eystore +[tT]ruststore +[Aa]pprouter +[Kk]ubeconfig +[Ss]caffolded +Webstorm +[Pp]arallelization +subscribable +Sandeep +browserified +untrusted + +v2 +v4 +edm +EDM +[Ee]num +unintuitive +Istio +[Mm]egaclite + +seldomly +lookups \ No newline at end of file diff --git a/styles/config/vocabularies/SAP/reject.txt b/styles/config/vocabularies/SAP/reject.txt new file mode 100644 index 00000000..73c18f17 --- /dev/null +++ b/styles/config/vocabularies/SAP/reject.txt @@ -0,0 +1,6 @@ +[Ww]hite-?list(ed|ing)? +[Bb]lack-?list(ed|ing)? +[Mm]aster +[Ss]lave +[Pp]re-generated? +S/4 diff --git a/tests/smoke-tests/README.md b/tests/smoke-tests/README.md index f37a48d3..32b1142a 100644 --- a/tests/smoke-tests/README.md +++ b/tests/smoke-tests/README.md @@ -6,7 +6,7 @@ The sample application is running on Cloud Foundry and uses the current canary v ## Deploying a new version of the sample code app -The sample application is deployed to SAP BTP nightly. +The sample application is deployed to SAP BTP every night. To deploy a new version of the sample application manually, make sure to provide your own `.env` file in the `test/smoke-tests` subdirectory with the following environment variables: - CF_API_URL From cb59be1ada83a26778a76e9753b8fe01994d58ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Oct 2024 23:33:55 +0000 Subject: [PATCH 06/10] chore(deps): Bump @langchain/core from 0.3.9 to 0.3.10 (#218) Bumps [@langchain/core](https://github.com/langchain-ai/langchainjs) from 0.3.9 to 0.3.10. - [Release notes](https://github.com/langchain-ai/langchainjs/releases) - [Changelog](https://github.com/langchain-ai/langchainjs/blob/main/release_workspace.js) - [Commits](https://github.com/langchain-ai/langchainjs/commits) --- updated-dependencies: - dependency-name: "@langchain/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/langchain/package.json | 2 +- pnpm-lock.yaml | 121 ++++++++++++++++++-------------- sample-code/package.json | 2 +- tests/smoke-tests/package.json | 2 +- 4 files changed, 73 insertions(+), 54 deletions(-) diff --git a/packages/langchain/package.json b/packages/langchain/package.json index 7dbb9a26..b7bf83d9 100644 --- a/packages/langchain/package.json +++ b/packages/langchain/package.json @@ -30,7 +30,7 @@ "@sap-ai-sdk/ai-api": "workspace:^", "@sap-ai-sdk/core": "workspace:^", "@sap-ai-sdk/foundation-models": "workspace:^", - "@langchain/core": "0.3.9", + "@langchain/core": "0.3.10", "zod-to-json-schema": "^3.23.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9181b070..cbce68b9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -140,8 +140,8 @@ importers: packages/langchain: dependencies: '@langchain/core': - specifier: 0.3.9 - version: 0.3.9(openai@4.61.1(zod@3.23.8)) + specifier: 0.3.10 + version: 0.3.10(openai@4.61.1(zod@3.23.8)) '@sap-ai-sdk/ai-api': specifier: workspace:^ version: link:../ai-api @@ -191,11 +191,11 @@ importers: sample-code: dependencies: '@langchain/core': - specifier: 0.3.9 - version: 0.3.9(openai@4.61.1(zod@3.23.8)) + specifier: 0.3.10 + version: 0.3.10(openai@4.61.1(zod@3.23.8)) '@langchain/textsplitters': specifier: 0.1.0 - version: 0.1.0(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8))) + version: 0.1.0(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8))) '@sap-ai-sdk/ai-api': specifier: workspace:^ version: link:../packages/ai-api @@ -219,7 +219,7 @@ importers: version: 4.21.1 langchain: specifier: 0.3.2 - version: 0.3.2(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)) + version: 0.3.2(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)) tests/e2e-tests: dependencies: @@ -255,23 +255,23 @@ importers: tests/smoke-tests: dependencies: '@langchain/core': - specifier: 0.3.9 - version: 0.3.9(openai@4.61.1(zod@3.23.8)) + specifier: 0.3.10 + version: 0.3.10(openai@4.61.1(zod@3.23.8)) '@langchain/textsplitters': specifier: 0.1.0 - version: 0.1.0(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8))) + version: 0.1.0(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8))) '@sap-ai-sdk/ai-api': specifier: canary - version: 1.1.1-20241010013103.0 + version: 1.1.1-20241013013059.0 '@sap-ai-sdk/foundation-models': specifier: canary - version: 1.1.1-20241010013103.0 + version: 1.1.1-20241013013059.0 '@sap-ai-sdk/langchain': specifier: canary - version: 1.1.1-20241010013103.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8) + version: 1.1.1-20241013013059.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8) '@sap-ai-sdk/orchestration': specifier: canary - version: 1.1.1-20241010013103.0 + version: 1.1.1-20241013013059.0 '@sap-cloud-sdk/util': specifier: ^3.22.1 version: 3.22.1 @@ -280,7 +280,7 @@ importers: version: 4.21.1 langchain: specifier: 0.3.2 - version: 0.3.2(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)) + version: 0.3.2(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)) devDependencies: '@types/express': specifier: ^5.0.0 @@ -926,8 +926,8 @@ packages: '@jsdevtools/ono@7.1.3': resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} - '@langchain/core@0.3.8': - resolution: {integrity: sha512-4IaJr1canfQZUJ60yopdI0zANiyaeFMMxn6X29Wxxs2Tws1bSQn5gxNMK51L6QVAVZBFcNCGp/xx88EBOOOm9Q==} + '@langchain/core@0.3.10': + resolution: {integrity: sha512-MBGDcNeMLRFsEtfzYrqFpome9M2KI7wa4VcFoHPrjf5cvw1gaEAWiMST0jq42tgV3XmukiueCog6kj9Q/hxw2w==} engines: {node: '>=18'} '@langchain/core@0.3.9': @@ -983,20 +983,20 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@sap-ai-sdk/ai-api@1.1.1-20241010013103.0': - resolution: {integrity: sha512-x0KmgPN3rB2NDqKNGwt+iJ6ULXk0YV+85oldaykJrXYTIQsdVZ5KUaDFk0iuQymrYAhvVOVLPK3zlozUtT0e0g==} + '@sap-ai-sdk/ai-api@1.1.1-20241013013059.0': + resolution: {integrity: sha512-LYX0Q9/NOJBuGI94HUrA+0GsiDrerWBS0UKYF9IallseBfwcenUo98tldsaotnWqZ13+TkN3/sFOz5vJ1/oL3Q==} - '@sap-ai-sdk/core@1.1.1-20241010013103.0': - resolution: {integrity: sha512-G9C4uFtH36W23asqoGBvz35JZ5gUHCynGuSW97x1biHv2r93eBvQXzi3V6OdJ/bbXVgcE4aW7tnZWfB02uuw4Q==} + '@sap-ai-sdk/core@1.1.1-20241013013059.0': + resolution: {integrity: sha512-K8Pb0XZdPZDak+haP4klQoskk6gEyJR/4tbXmV1JYN8cNGBSxHNJntcaPGX5hdKORWfYVar6B/xM6hWeEGVI8A==} - '@sap-ai-sdk/foundation-models@1.1.1-20241010013103.0': - resolution: {integrity: sha512-hC56BOzyJiDbXC6S0ide71Yk18S+pbm9VP/DuV1UlIL3QA5azZ/HYFlGwrFJoNReflo0RGmB49AUdjg/0NTv8w==} + '@sap-ai-sdk/foundation-models@1.1.1-20241013013059.0': + resolution: {integrity: sha512-Pr9bxeSPe2cr5hah690pmAGQoSCuYO2ANk/aIRjc188PsFfa4kr4fgpV5vNlxju5jAnLd1hIuMAXwKvSH5rP/Q==} - '@sap-ai-sdk/langchain@1.1.1-20241010013103.0': - resolution: {integrity: sha512-RYI+BlESImKA+vFrDuUyK3Kua/8yEhMhC1Y+VldVBXLW7TfU+Clef6EBrzv/Qg9mezdJdjZnTsQKIYRP/sLoNw==} + '@sap-ai-sdk/langchain@1.1.1-20241013013059.0': + resolution: {integrity: sha512-gbFOS0RDzNuEGPEpcWJ/+jRliB4FlFwxH/sgFjyH9a9rkYY6O3Ylan9EnNUOkqKtsnJAaBdn1IgbvWIz5xoRsQ==} - '@sap-ai-sdk/orchestration@1.1.1-20241010013103.0': - resolution: {integrity: sha512-APwOSjaQgtQ9jlauDhyITlHW0fB3Pf+ixWJ9sgH/ZhNJI1lc26QQjVXzZojO20tgshdpp7k6W63558njJoIwig==} + '@sap-ai-sdk/orchestration@1.1.1-20241013013059.0': + resolution: {integrity: sha512-SFeCKoYVevj7zc22Of7TRmGKWaw5TSt6KPZjC0GG6mGBrCsTSbX7tvl6RYgKzT9N8gENi1dLZ0hoMm7w3r/dlA==} '@sap-cloud-sdk/connectivity@3.22.1': resolution: {integrity: sha512-H3kCVexTDsHkv3yWQUo6WPG/OFytQFgYa7hbU8dNiKfv5hiXPhWQ1EAegpz+trHemQAH1gKR0jnf845oIN+Z4w==} @@ -3101,6 +3101,14 @@ packages: openai: optional: true + langsmith@0.1.65: + resolution: {integrity: sha512-+aBft8/jUQbVPv3MWVwFwW/rMxyyA8xSRIsjWl773Nc7LDniczuf2rxZEUslV02RB36EIBgCJPNX7jz2L5YsIQ==} + peerDependencies: + openai: '*' + peerDependenciesMeta: + openai: + optional: true + leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -5239,13 +5247,13 @@ snapshots: '@jsdevtools/ono@7.1.3': {} - '@langchain/core@0.3.8(openai@4.61.1(zod@3.23.8))': + '@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8))': dependencies: ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.14 - langsmith: 0.1.59(openai@4.61.1(zod@3.23.8)) + langsmith: 0.1.65(openai@4.61.1(zod@3.23.8)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -5261,7 +5269,7 @@ snapshots: camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.14 - langsmith: 0.1.59(openai@4.61.1(zod@3.23.8)) + langsmith: 0.1.65(openai@4.61.1(zod@3.23.8)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -5271,9 +5279,9 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/openai@0.3.2(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8)))': + '@langchain/openai@0.3.2(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.9(openai@4.61.1(zod@3.23.8)) + '@langchain/core': 0.3.10(openai@4.61.1(zod@3.23.8)) js-tiktoken: 1.0.14 openai: 4.61.1(zod@3.23.8) zod: 3.23.8 @@ -5281,9 +5289,9 @@ snapshots: transitivePeerDependencies: - encoding - '@langchain/textsplitters@0.1.0(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8)))': + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.9(openai@4.61.1(zod@3.23.8)) + '@langchain/core': 0.3.10(openai@4.61.1(zod@3.23.8)) js-tiktoken: 1.0.14 '@manypkg/find-root@1.1.0': @@ -5343,15 +5351,15 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@sap-ai-sdk/ai-api@1.1.1-20241010013103.0': + '@sap-ai-sdk/ai-api@1.1.1-20241013013059.0': dependencies: - '@sap-ai-sdk/core': 1.1.1-20241010013103.0 + '@sap-ai-sdk/core': 1.1.1-20241013013059.0 '@sap-cloud-sdk/connectivity': 3.22.1 transitivePeerDependencies: - debug - supports-color - '@sap-ai-sdk/core@1.1.1-20241010013103.0': + '@sap-ai-sdk/core@1.1.1-20241013013059.0': dependencies: '@sap-cloud-sdk/connectivity': 3.22.1 '@sap-cloud-sdk/http-client': 3.22.1 @@ -5361,22 +5369,22 @@ snapshots: - debug - supports-color - '@sap-ai-sdk/foundation-models@1.1.1-20241010013103.0': + '@sap-ai-sdk/foundation-models@1.1.1-20241013013059.0': dependencies: - '@sap-ai-sdk/ai-api': 1.1.1-20241010013103.0 - '@sap-ai-sdk/core': 1.1.1-20241010013103.0 + '@sap-ai-sdk/ai-api': 1.1.1-20241013013059.0 + '@sap-ai-sdk/core': 1.1.1-20241013013059.0 '@sap-cloud-sdk/http-client': 3.22.1 '@sap-cloud-sdk/util': 3.22.1 transitivePeerDependencies: - debug - supports-color - '@sap-ai-sdk/langchain@1.1.1-20241010013103.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8)': + '@sap-ai-sdk/langchain@1.1.1-20241013013059.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8)': dependencies: - '@langchain/core': 0.3.8(openai@4.61.1(zod@3.23.8)) - '@sap-ai-sdk/ai-api': 1.1.1-20241010013103.0 - '@sap-ai-sdk/core': 1.1.1-20241010013103.0 - '@sap-ai-sdk/foundation-models': 1.1.1-20241010013103.0 + '@langchain/core': 0.3.9(openai@4.61.1(zod@3.23.8)) + '@sap-ai-sdk/ai-api': 1.1.1-20241013013059.0 + '@sap-ai-sdk/core': 1.1.1-20241013013059.0 + '@sap-ai-sdk/foundation-models': 1.1.1-20241013013059.0 zod-to-json-schema: 3.23.3(zod@3.23.8) transitivePeerDependencies: - debug @@ -5384,10 +5392,10 @@ snapshots: - supports-color - zod - '@sap-ai-sdk/orchestration@1.1.1-20241010013103.0': + '@sap-ai-sdk/orchestration@1.1.1-20241013013059.0': dependencies: - '@sap-ai-sdk/ai-api': 1.1.1-20241010013103.0 - '@sap-ai-sdk/core': 1.1.1-20241010013103.0 + '@sap-ai-sdk/ai-api': 1.1.1-20241013013059.0 + '@sap-ai-sdk/core': 1.1.1-20241013013059.0 '@sap-cloud-sdk/http-client': 3.22.1 '@sap-cloud-sdk/util': 3.22.1 transitivePeerDependencies: @@ -8073,11 +8081,11 @@ snapshots: kuler@2.0.0: {} - langchain@0.3.2(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)): + langchain@0.3.2(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)): dependencies: - '@langchain/core': 0.3.9(openai@4.61.1(zod@3.23.8)) - '@langchain/openai': 0.3.2(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8))) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8))) + '@langchain/core': 0.3.10(openai@4.61.1(zod@3.23.8)) + '@langchain/openai': 0.3.2(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8))) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8))) js-tiktoken: 1.0.14 js-yaml: 4.1.0 jsonpointer: 5.0.1 @@ -8106,6 +8114,17 @@ snapshots: optionalDependencies: openai: 4.61.1(zod@3.23.8) + langsmith@0.1.65(openai@4.61.1(zod@3.23.8)): + dependencies: + '@types/uuid': 10.0.0 + commander: 10.0.1 + p-queue: 6.6.2 + p-retry: 4.6.2 + semver: 7.6.3 + uuid: 10.0.0 + optionalDependencies: + openai: 4.61.1(zod@3.23.8) + leven@3.1.0: {} levn@0.4.1: diff --git a/sample-code/package.json b/sample-code/package.json index 8e7102e6..ed88fbe5 100644 --- a/sample-code/package.json +++ b/sample-code/package.json @@ -28,7 +28,7 @@ "@sap-ai-sdk/orchestration": "workspace:^", "@sap-ai-sdk/langchain": "workspace:^", "langchain": "0.3.2", - "@langchain/core": "0.3.9", + "@langchain/core": "0.3.10", "@langchain/textsplitters": "0.1.0", "@sap-cloud-sdk/util": "^3.22.1", "@types/express": "^5.0.0", diff --git a/tests/smoke-tests/package.json b/tests/smoke-tests/package.json index 7a14bd71..63807623 100644 --- a/tests/smoke-tests/package.json +++ b/tests/smoke-tests/package.json @@ -19,7 +19,7 @@ }, "dependencies": { "langchain": "0.3.2", - "@langchain/core": "0.3.9", + "@langchain/core": "0.3.10", "@langchain/textsplitters": "0.1.0", "@sap-ai-sdk/ai-api": "canary", "@sap-ai-sdk/foundation-models": "canary", From b4b058c6e0583af3362a328bab88e0311af1bb4a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Oct 2024 23:37:40 +0000 Subject: [PATCH 07/10] chore(deps-dev): Bump mock-fs from 5.3.0 to 5.4.0 (#219) Bumps [mock-fs](https://github.com/tschaub/mock-fs) from 5.3.0 to 5.4.0. - [Release notes](https://github.com/tschaub/mock-fs/releases) - [Changelog](https://github.com/tschaub/mock-fs/blob/main/changelog.md) - [Commits](https://github.com/tschaub/mock-fs/compare/v5.3.0...v5.4.0) --- updated-dependencies: - dependency-name: mock-fs dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index daf8de69..528c8948 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "glob": "^11.0.0", "jest": "^30.0.0-alpha.6", "jsonwebtoken": "^9.0.2", - "mock-fs": "^5.3.0", + "mock-fs": "^5.4.0", "nock": "^13.5.5", "prettier": "^3.3.3", "ts-jest": "^29.2.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cbce68b9..40f212ff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -77,8 +77,8 @@ importers: specifier: ^9.0.2 version: 9.0.2 mock-fs: - specifier: ^5.3.0 - version: 5.3.0 + specifier: ^5.4.0 + version: 5.4.0 nock: specifier: ^13.5.5 version: 13.5.5 @@ -3292,8 +3292,8 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - mock-fs@5.3.0: - resolution: {integrity: sha512-IMvz1X+RF7vf+ur7qUenXMR7/FSKSIqS3HqFHXcyNI7G0FbpFO8L5lfsUJhl+bhK1AiulVHWKUSxebWauPA+xQ==} + mock-fs@5.4.0: + resolution: {integrity: sha512-3ROPnEMgBOkusBMYQUW2rnT3wZwsgfOKzJDLvx/TZ7FL1WmWvwSwn3j4aDR5fLDGtgcc1WF0Z1y0di7c9L4FKw==} engines: {node: '>=12.0.0'} mri@1.2.0: @@ -8292,7 +8292,7 @@ snapshots: minipass@7.1.2: {} - mock-fs@5.3.0: {} + mock-fs@5.4.0: {} mri@1.2.0: {} From 461bf375f67787868ad6337ed574bb6f2cb97c4c Mon Sep 17 00:00:00 2001 From: Marika Marszalkowski Date: Mon, 14 Oct 2024 14:49:39 +0200 Subject: [PATCH 08/10] fix typo --- sample-code/src/langchain-azure-openai.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sample-code/src/langchain-azure-openai.ts b/sample-code/src/langchain-azure-openai.ts index 2b71fdf3..75555f5f 100644 --- a/sample-code/src/langchain-azure-openai.ts +++ b/sample-code/src/langchain-azure-openai.ts @@ -59,7 +59,7 @@ export async function invokeChain(): Promise { } /** - * Perform retrieval augmeneted generation with the chat and embedding LangChain clients. + * Perform retrieval augmented generation with the chat and embedding LangChain clients. * @returns The answer from GPT. */ export async function invokeRagChain(): Promise { From f375100cfee788e14b307a5a702b494f90423141 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 17:31:29 +0200 Subject: [PATCH 09/10] chore(deps): Bump the sap-cloud-sdk group with 7 updates (#216) * chore(deps): Bump the sap-cloud-sdk group with 7 updates Bumps the sap-cloud-sdk group with 7 updates: | Package | From | To | | --- | --- | --- | | [@sap-cloud-sdk/connectivity](https://github.com/SAP/cloud-sdk-js) | `3.22.1` | `3.22.2` | | [@sap-cloud-sdk/eslint-config](https://github.com/SAP/cloud-sdk-js) | `3.22.1` | `3.22.2` | | [@sap-cloud-sdk/generator-common](https://github.com/SAP/cloud-sdk-js) | `3.22.1` | `3.22.2` | | [@sap-cloud-sdk/http-client](https://github.com/SAP/cloud-sdk-js) | `3.22.1` | `3.22.2` | | [@sap-cloud-sdk/openapi-generator](https://github.com/SAP/cloud-sdk-js) | `3.22.1` | `3.22.2` | | [@sap-cloud-sdk/util](https://github.com/SAP/cloud-sdk-js) | `3.22.1` | `3.22.2` | | [@sap-cloud-sdk/openapi](https://github.com/SAP/cloud-sdk-js) | `3.22.1` | `3.22.2` | Updates `@sap-cloud-sdk/connectivity` from 3.22.1 to 3.22.2 - [Release notes](https://github.com/SAP/cloud-sdk-js/releases) - [Changelog](https://github.com/SAP/cloud-sdk-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/SAP/cloud-sdk-js/compare/v3.22.1...v3.22.2) Updates `@sap-cloud-sdk/eslint-config` from 3.22.1 to 3.22.2 - [Release notes](https://github.com/SAP/cloud-sdk-js/releases) - [Changelog](https://github.com/SAP/cloud-sdk-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/SAP/cloud-sdk-js/compare/v3.22.1...v3.22.2) Updates `@sap-cloud-sdk/generator-common` from 3.22.1 to 3.22.2 - [Release notes](https://github.com/SAP/cloud-sdk-js/releases) - [Changelog](https://github.com/SAP/cloud-sdk-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/SAP/cloud-sdk-js/compare/v3.22.1...v3.22.2) Updates `@sap-cloud-sdk/http-client` from 3.22.1 to 3.22.2 - [Release notes](https://github.com/SAP/cloud-sdk-js/releases) - [Changelog](https://github.com/SAP/cloud-sdk-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/SAP/cloud-sdk-js/compare/v3.22.1...v3.22.2) Updates `@sap-cloud-sdk/openapi-generator` from 3.22.1 to 3.22.2 - [Release notes](https://github.com/SAP/cloud-sdk-js/releases) - [Changelog](https://github.com/SAP/cloud-sdk-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/SAP/cloud-sdk-js/compare/v3.22.1...v3.22.2) Updates `@sap-cloud-sdk/util` from 3.22.1 to 3.22.2 - [Release notes](https://github.com/SAP/cloud-sdk-js/releases) - [Changelog](https://github.com/SAP/cloud-sdk-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/SAP/cloud-sdk-js/compare/v3.22.1...v3.22.2) Updates `@sap-cloud-sdk/openapi` from 3.22.1 to 3.22.2 - [Release notes](https://github.com/SAP/cloud-sdk-js/releases) - [Changelog](https://github.com/SAP/cloud-sdk-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/SAP/cloud-sdk-js/compare/v3.22.1...v3.22.2) --- updated-dependencies: - dependency-name: "@sap-cloud-sdk/connectivity" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: sap-cloud-sdk - dependency-name: "@sap-cloud-sdk/eslint-config" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: sap-cloud-sdk - dependency-name: "@sap-cloud-sdk/generator-common" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: sap-cloud-sdk - dependency-name: "@sap-cloud-sdk/http-client" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: sap-cloud-sdk - dependency-name: "@sap-cloud-sdk/openapi-generator" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: sap-cloud-sdk - dependency-name: "@sap-cloud-sdk/util" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: sap-cloud-sdk - dependency-name: "@sap-cloud-sdk/openapi" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: sap-cloud-sdk ... Signed-off-by: dependabot[bot] * lint --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Marika Marszalkowski --- package.json | 12 +- packages/ai-api/package.json | 2 +- packages/core/package.json | 8 +- packages/foundation-models/package.json | 4 +- packages/orchestration/package.json | 4 +- pnpm-lock.yaml | 378 +++++++++--------------- sample-code/package.json | 2 +- sample-code/src/orchestration.ts | 2 +- tests/smoke-tests/package.json | 2 +- tests/type-tests/package.json | 4 +- 10 files changed, 164 insertions(+), 254 deletions(-) diff --git a/package.json b/package.json index 528c8948..c3bcd04e 100644 --- a/package.json +++ b/package.json @@ -41,12 +41,12 @@ "@sap-ai-sdk/foundation-models": "workspace:^", "@sap-ai-sdk/orchestration": "workspace:^", "tsx": "^4.19.1", - "@sap-cloud-sdk/connectivity": "^3.22.1", - "@sap-cloud-sdk/eslint-config": "^3.22.1", - "@sap-cloud-sdk/generator-common": "^3.22.1", - "@sap-cloud-sdk/http-client": "^3.22.1", - "@sap-cloud-sdk/openapi-generator": "^3.22.1", - "@sap-cloud-sdk/util": "^3.22.1", + "@sap-cloud-sdk/connectivity": "^3.22.2", + "@sap-cloud-sdk/eslint-config": "^3.22.2", + "@sap-cloud-sdk/generator-common": "^3.22.2", + "@sap-cloud-sdk/http-client": "^3.22.2", + "@sap-cloud-sdk/openapi-generator": "^3.22.2", + "@sap-cloud-sdk/util": "^3.22.2", "@types/jest": "^29.5.13", "@types/jsonwebtoken": "^9.0.7", "@types/mock-fs": "^4.13.4", diff --git a/packages/ai-api/package.json b/packages/ai-api/package.json index 4e6db53b..cf71147a 100644 --- a/packages/ai-api/package.json +++ b/packages/ai-api/package.json @@ -30,6 +30,6 @@ }, "dependencies": { "@sap-ai-sdk/core": "workspace:^", - "@sap-cloud-sdk/connectivity": "^3.22.1" + "@sap-cloud-sdk/connectivity": "^3.22.2" } } diff --git a/packages/core/package.json b/packages/core/package.json index d7951ef7..1de71cba 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -27,9 +27,9 @@ "check:public-api": "node --loader ts-node/esm ../../scripts/check-public-api-cli.ts" }, "dependencies": { - "@sap-cloud-sdk/connectivity": "^3.22.1", - "@sap-cloud-sdk/http-client": "^3.22.1", - "@sap-cloud-sdk/openapi": "^3.22.1", - "@sap-cloud-sdk/util": "^3.22.1" + "@sap-cloud-sdk/connectivity": "^3.22.2", + "@sap-cloud-sdk/http-client": "^3.22.2", + "@sap-cloud-sdk/openapi": "^3.22.2", + "@sap-cloud-sdk/util": "^3.22.2" } } diff --git a/packages/foundation-models/package.json b/packages/foundation-models/package.json index 8b01030c..7339f23f 100644 --- a/packages/foundation-models/package.json +++ b/packages/foundation-models/package.json @@ -33,7 +33,7 @@ "dependencies": { "@sap-ai-sdk/ai-api": "workspace:^", "@sap-ai-sdk/core": "workspace:^", - "@sap-cloud-sdk/http-client": "^3.22.1", - "@sap-cloud-sdk/util": "^3.22.1" + "@sap-cloud-sdk/http-client": "^3.22.2", + "@sap-cloud-sdk/util": "^3.22.2" } } diff --git a/packages/orchestration/package.json b/packages/orchestration/package.json index 221a00da..a4beed21 100644 --- a/packages/orchestration/package.json +++ b/packages/orchestration/package.json @@ -33,7 +33,7 @@ "dependencies": { "@sap-ai-sdk/core": "workspace:^", "@sap-ai-sdk/ai-api": "workspace:^", - "@sap-cloud-sdk/http-client": "^3.22.1", - "@sap-cloud-sdk/util": "^3.22.1" + "@sap-cloud-sdk/http-client": "^3.22.2", + "@sap-cloud-sdk/util": "^3.22.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 40f212ff..26ed2c87 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,23 +32,23 @@ importers: specifier: workspace:^ version: link:packages/orchestration '@sap-cloud-sdk/connectivity': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 '@sap-cloud-sdk/eslint-config': - specifier: ^3.22.1 - version: 3.22.1(@types/eslint@8.56.10)(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(prettier@3.3.3)(typescript@5.6.3) + specifier: ^3.22.2 + version: 3.22.2(@types/eslint@8.56.10)(@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(prettier@3.3.3)(typescript@5.6.3) '@sap-cloud-sdk/generator-common': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 '@sap-cloud-sdk/http-client': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 '@sap-cloud-sdk/openapi-generator': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 '@sap-cloud-sdk/util': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 '@types/jest': specifier: ^29.5.13 version: 29.5.13 @@ -104,23 +104,23 @@ importers: specifier: workspace:^ version: link:../core '@sap-cloud-sdk/connectivity': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 packages/core: dependencies: '@sap-cloud-sdk/connectivity': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 '@sap-cloud-sdk/http-client': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 '@sap-cloud-sdk/openapi': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 '@sap-cloud-sdk/util': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 packages/foundation-models: dependencies: @@ -131,11 +131,11 @@ importers: specifier: workspace:^ version: link:../core '@sap-cloud-sdk/http-client': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 '@sap-cloud-sdk/util': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 packages/langchain: dependencies: @@ -164,11 +164,11 @@ importers: specifier: workspace:^ version: link:../core '@sap-cloud-sdk/http-client': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 '@sap-cloud-sdk/util': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 sample-cap: dependencies: @@ -209,8 +209,8 @@ importers: specifier: workspace:^ version: link:../packages/orchestration '@sap-cloud-sdk/util': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 '@types/express': specifier: ^5.0.0 version: 5.0.0 @@ -273,8 +273,8 @@ importers: specifier: canary version: 1.1.1-20241013013059.0 '@sap-cloud-sdk/util': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 express: specifier: ^4.21.1 version: 4.21.1 @@ -304,11 +304,11 @@ importers: specifier: workspace:^ version: link:../../packages/orchestration '@sap-cloud-sdk/connectivity': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 '@sap-cloud-sdk/http-client': - specifier: ^3.22.1 - version: 3.22.1 + specifier: ^3.22.2 + version: 3.22.2 tsd: specifier: ^0.31.2 version: 0.31.2 @@ -998,32 +998,32 @@ packages: '@sap-ai-sdk/orchestration@1.1.1-20241013013059.0': resolution: {integrity: sha512-SFeCKoYVevj7zc22Of7TRmGKWaw5TSt6KPZjC0GG6mGBrCsTSbX7tvl6RYgKzT9N8gENi1dLZ0hoMm7w3r/dlA==} - '@sap-cloud-sdk/connectivity@3.22.1': - resolution: {integrity: sha512-H3kCVexTDsHkv3yWQUo6WPG/OFytQFgYa7hbU8dNiKfv5hiXPhWQ1EAegpz+trHemQAH1gKR0jnf845oIN+Z4w==} + '@sap-cloud-sdk/connectivity@3.22.2': + resolution: {integrity: sha512-kfJaRersOefqKn12Q6my+Bch8TVD83j9CsA/vKQI6D7UpdJjfy6k4EbwlVeuehWb4kvTLYvQLvjJE0JhelESPQ==} - '@sap-cloud-sdk/eslint-config@3.22.1': - resolution: {integrity: sha512-XapfPZELRtATN3yBnVxcNWxovniqjLqyQ87X9y7zGHAt6yIuOdxDOx2Gp6Bf6GliqL0fDLzzc1GezImrR32XaA==} + '@sap-cloud-sdk/eslint-config@3.22.2': + resolution: {integrity: sha512-1MFERwTrbhSu191mxnOalVPLaco7y5qk4AAYtuz1lX/uOYeVjlgs2kGCPOw/xtTwDm3wEcmK9JhMwa75hZ2otA==} peerDependencies: eslint: ^8.0.0 - '@sap-cloud-sdk/generator-common@3.22.1': - resolution: {integrity: sha512-DYD0US4oygLejP9vlCytBfOD0kdy6GbD60xOm0KwzzHZlJJnuggZWmWwYZ4jBNUx5dr+aYAs0p7I9qsv8vX32w==} + '@sap-cloud-sdk/generator-common@3.22.2': + resolution: {integrity: sha512-hvtGINB+hU3fY+GgEy1iutiNcq63GR5r3ehaEQvQ07iTgfRji3Jfwb6xd24UiMfgHngxOFZsAVwBUYGx5Nef4Q==} - '@sap-cloud-sdk/http-client@3.22.1': - resolution: {integrity: sha512-zbeWhYg5W46TU7KSQyFVbkjjw7w88EO+xlEBzg+soRKtCdrmpJeqDWFdc/VWcrRaZ3UhV7AP8phrfEoLJDdfnw==} + '@sap-cloud-sdk/http-client@3.22.2': + resolution: {integrity: sha512-YJRWwcm6kUOh8cDJlLkkJfpwj0LBgWpMhh9wZOXOwq506rBcBEFruMCj0GR9dJdW5hxJZf1rH4Byjp6skB+Bhg==} - '@sap-cloud-sdk/openapi-generator@3.22.1': - resolution: {integrity: sha512-mxjsp4M7KwfcwRznpWQdcmIuvDMrIVcudZq8aAAb8ZD+MIiNUBQh7ApWjSH/Mi7ZcTCP1PvzmQlxi1IsuERTRQ==} + '@sap-cloud-sdk/openapi-generator@3.22.2': + resolution: {integrity: sha512-mAQXiScSu/i3Xo+sPz2EkJw+6CND7nUEIiqcctLkhOGSGWRNRty5Ewr60C4Ovw87kAUqmW7VyWXKG5oSF0GzhQ==} hasBin: true - '@sap-cloud-sdk/openapi@3.22.1': - resolution: {integrity: sha512-tCTXG1f6BKjQJEXZj0JUKZ6QL3QdBc9na7bCJHb0k97MSmUSgkfzDOatMOorlhePyiVBwP3WKc1omfmFs01vkA==} + '@sap-cloud-sdk/openapi@3.22.2': + resolution: {integrity: sha512-pNKYm7gsV1NYFB+39qt+I076mr9qeZEJwUGwYgzPyHdpUBffO10MQFY0Cqy9DLQPfVXBlZEriM/6M8N1kQhnLw==} - '@sap-cloud-sdk/resilience@3.22.1': - resolution: {integrity: sha512-6XHPYbZDfBUD98a4WyiS61BtxZY2j6uHhY45lPl+Klrra9OhlzTBpMNWlCNWr9C/YsL7WYDWbg8QtgnyMY4rQQ==} + '@sap-cloud-sdk/resilience@3.22.2': + resolution: {integrity: sha512-IRls+Q75SckqErHDMcyLa/zouCWU8NuUdu1h6+pf3AEik6d/2Wto25FGA9MvFpBK4tnBVmVmzHRA8dFZxDFOBQ==} - '@sap-cloud-sdk/util@3.22.1': - resolution: {integrity: sha512-U15pw2j4zVGDg6PnSwo95lKzwi57XxDrxPCoFsCwRkRLSeBFVvoB64wnpyBPqUhtLWrM0ewOJoO5AEHuJVi87w==} + '@sap-cloud-sdk/util@3.22.2': + resolution: {integrity: sha512-lyiuy1lBSqw7POEGcwQ/smAaJdSTj3Id5BWUm0J8MDSUj/XFxEs3iyhR5PcwqnW4GQwfGV8xGfZf9tne0gCvXw==} '@sap/cds-compiler@5.3.2': resolution: {integrity: sha512-aePHQMZHb13+oQuHU+ug5bwxXO11NThBEfUyA3uMGlnjkAxa8pbzuot9pHiiAIMavXLcqTzbCfm/uFGKcfjqBQ==} @@ -1230,22 +1230,12 @@ packages: '@types/yargs@17.0.32': resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - '@typescript-eslint/eslint-plugin@7.18.0': - resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@7.18.0': - resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/eslint-plugin@8.8.1': + resolution: {integrity: sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: @@ -1261,41 +1251,23 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@7.18.0': - resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} - engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.8.1': resolution: {integrity: sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@7.18.0': - resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/type-utils@8.8.1': + resolution: {integrity: sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.8.1': resolution: {integrity: sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@7.18.0': - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/typescript-estree@8.8.1': resolution: {integrity: sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1305,22 +1277,12 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.18.0': - resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - '@typescript-eslint/utils@8.8.1': resolution: {integrity: sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@7.18.0': - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} - engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.8.1': resolution: {integrity: sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2120,8 +2082,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-jsdoc@50.3.1: - resolution: {integrity: sha512-SY9oUuTMr6aWoJggUS40LtMjsRzJPB5ZT7F432xZIHK3EfHF+8i48GbUBpwanrtlL9l1gILNTHK9o8gEhYLcKA==} + eslint-plugin-jsdoc@50.3.2: + resolution: {integrity: sha512-TjgZocG53N3a84PdCFGqVMWLWwDitOUuKjlJftwTu/iTiD7N/Q2Q3eEy/Q4GfJqpM4rTJCkzUYWQfol6RZNDcA==} engines: {node: '>=18'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -2364,8 +2326,8 @@ packages: form-data-encoder@1.7.2: resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} engines: {node: '>= 6'} formdata-node@4.4.1: @@ -3541,14 +3503,14 @@ packages: resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} engines: {node: '>=0.10.0'} - parse5-htmlparser2-tree-adapter@7.0.0: - resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} parse5-parser-stream@7.1.2: resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + parse5@7.2.0: + resolution: {integrity: sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==} parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} @@ -4205,11 +4167,10 @@ packages: resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} - typescript-eslint@7.18.0: - resolution: {integrity: sha512-PonBkP603E3tt05lDkbOMyaxJjvKqQrXsnow72sVeOFINDE/qNmnnd+f9b4N+U7W6MXnnYyrhtmF2t08QWwUbA==} - engines: {node: ^18.18.0 || >=20.0.0} + typescript-eslint@8.8.1: + resolution: {integrity: sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: @@ -4229,8 +4190,8 @@ packages: undici-types@6.19.6: resolution: {integrity: sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==} - undici@6.19.8: - resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==} + undici@6.20.0: + resolution: {integrity: sha512-AITZfPuxubm31Sx0vr8bteSalEbs9wQb/BOBi9FPlD9Qpd6HxZ4Q0+hI742jBhkPb4RT2v5MQzaW5VhRVyj+9A==} engines: {node: '>=18.17'} universalify@0.1.2: @@ -5354,17 +5315,17 @@ snapshots: '@sap-ai-sdk/ai-api@1.1.1-20241013013059.0': dependencies: '@sap-ai-sdk/core': 1.1.1-20241013013059.0 - '@sap-cloud-sdk/connectivity': 3.22.1 + '@sap-cloud-sdk/connectivity': 3.22.2 transitivePeerDependencies: - debug - supports-color '@sap-ai-sdk/core@1.1.1-20241013013059.0': dependencies: - '@sap-cloud-sdk/connectivity': 3.22.1 - '@sap-cloud-sdk/http-client': 3.22.1 - '@sap-cloud-sdk/openapi': 3.22.1 - '@sap-cloud-sdk/util': 3.22.1 + '@sap-cloud-sdk/connectivity': 3.22.2 + '@sap-cloud-sdk/http-client': 3.22.2 + '@sap-cloud-sdk/openapi': 3.22.2 + '@sap-cloud-sdk/util': 3.22.2 transitivePeerDependencies: - debug - supports-color @@ -5373,8 +5334,8 @@ snapshots: dependencies: '@sap-ai-sdk/ai-api': 1.1.1-20241013013059.0 '@sap-ai-sdk/core': 1.1.1-20241013013059.0 - '@sap-cloud-sdk/http-client': 3.22.1 - '@sap-cloud-sdk/util': 3.22.1 + '@sap-cloud-sdk/http-client': 3.22.2 + '@sap-cloud-sdk/util': 3.22.2 transitivePeerDependencies: - debug - supports-color @@ -5396,16 +5357,16 @@ snapshots: dependencies: '@sap-ai-sdk/ai-api': 1.1.1-20241013013059.0 '@sap-ai-sdk/core': 1.1.1-20241013013059.0 - '@sap-cloud-sdk/http-client': 3.22.1 - '@sap-cloud-sdk/util': 3.22.1 + '@sap-cloud-sdk/http-client': 3.22.2 + '@sap-cloud-sdk/util': 3.22.2 transitivePeerDependencies: - debug - supports-color - '@sap-cloud-sdk/connectivity@3.22.1': + '@sap-cloud-sdk/connectivity@3.22.2': dependencies: - '@sap-cloud-sdk/resilience': 3.22.1 - '@sap-cloud-sdk/util': 3.22.1 + '@sap-cloud-sdk/resilience': 3.22.2 + '@sap-cloud-sdk/util': 3.22.2 '@sap/xsenv': 5.3.0 '@sap/xssec': 4.2.4 async-retry: 1.3.3 @@ -5415,20 +5376,20 @@ snapshots: - debug - supports-color - '@sap-cloud-sdk/eslint-config@3.22.1(@types/eslint@8.56.10)(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(prettier@3.3.3)(typescript@5.6.3)': + '@sap-cloud-sdk/eslint-config@3.22.2(@types/eslint@8.56.10)(@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(prettier@3.3.3)(typescript@5.6.3)': dependencies: '@eslint/js': 9.12.0 '@stylistic/eslint-plugin': 2.9.0(eslint@9.12.0)(typescript@5.6.3) '@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.6.3) eslint: 9.12.0 eslint-config-prettier: 9.1.0(eslint@9.12.0) - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0) eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.12.0) - eslint-plugin-jsdoc: 50.3.1(eslint@9.12.0) + eslint-plugin-jsdoc: 50.3.2(eslint@9.12.0) eslint-plugin-prettier: 5.2.1(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@9.12.0))(eslint@9.12.0)(prettier@3.3.3) eslint-plugin-regex: 1.10.0(eslint@9.12.0) - eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0) - typescript-eslint: 7.18.0(eslint@9.12.0)(typescript@5.6.3) + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0) + typescript-eslint: 8.8.1(eslint@9.12.0)(typescript@5.6.3) transitivePeerDependencies: - '@types/eslint' - '@typescript-eslint/eslint-plugin' @@ -5439,9 +5400,9 @@ snapshots: - supports-color - typescript - '@sap-cloud-sdk/generator-common@3.22.1': + '@sap-cloud-sdk/generator-common@3.22.2': dependencies: - '@sap-cloud-sdk/util': 3.22.1 + '@sap-cloud-sdk/util': 3.22.2 fast-levenshtein: 3.0.0 fs-extra: 11.2.0 glob: 10.4.5 @@ -5452,22 +5413,22 @@ snapshots: transitivePeerDependencies: - debug - '@sap-cloud-sdk/http-client@3.22.1': + '@sap-cloud-sdk/http-client@3.22.2': dependencies: - '@sap-cloud-sdk/connectivity': 3.22.1 - '@sap-cloud-sdk/resilience': 3.22.1 - '@sap-cloud-sdk/util': 3.22.1 + '@sap-cloud-sdk/connectivity': 3.22.2 + '@sap-cloud-sdk/resilience': 3.22.2 + '@sap-cloud-sdk/util': 3.22.2 axios: 1.7.7 transitivePeerDependencies: - debug - supports-color - '@sap-cloud-sdk/openapi-generator@3.22.1': + '@sap-cloud-sdk/openapi-generator@3.22.2': dependencies: '@apidevtools/swagger-parser': 10.1.0(openapi-types@12.1.3) - '@sap-cloud-sdk/generator-common': 3.22.1 - '@sap-cloud-sdk/openapi': 3.22.1 - '@sap-cloud-sdk/util': 3.22.1 + '@sap-cloud-sdk/generator-common': 3.22.2 + '@sap-cloud-sdk/openapi': 3.22.2 + '@sap-cloud-sdk/util': 3.22.2 js-yaml: 4.1.0 openapi-types: 12.1.3 swagger2openapi: 7.0.8 @@ -5476,27 +5437,27 @@ snapshots: - encoding - supports-color - '@sap-cloud-sdk/openapi@3.22.1': + '@sap-cloud-sdk/openapi@3.22.2': dependencies: - '@sap-cloud-sdk/connectivity': 3.22.1 - '@sap-cloud-sdk/http-client': 3.22.1 - '@sap-cloud-sdk/resilience': 3.22.1 - '@sap-cloud-sdk/util': 3.22.1 + '@sap-cloud-sdk/connectivity': 3.22.2 + '@sap-cloud-sdk/http-client': 3.22.2 + '@sap-cloud-sdk/resilience': 3.22.2 + '@sap-cloud-sdk/util': 3.22.2 axios: 1.7.7 transitivePeerDependencies: - debug - supports-color - '@sap-cloud-sdk/resilience@3.22.1': + '@sap-cloud-sdk/resilience@3.22.2': dependencies: - '@sap-cloud-sdk/util': 3.22.1 + '@sap-cloud-sdk/util': 3.22.2 async-retry: 1.3.3 axios: 1.7.7 opossum: 8.1.4 transitivePeerDependencies: - debug - '@sap-cloud-sdk/util@3.22.1': + '@sap-cloud-sdk/util@3.22.2': dependencies: axios: 1.7.7 chalk: 4.1.2 @@ -5701,7 +5662,7 @@ snapshots: '@types/node-fetch@2.6.11': dependencies: '@types/node': 20.16.10 - form-data: 4.0.0 + form-data: 4.0.1 '@types/node@12.20.55': {} @@ -5752,14 +5713,14 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 7.18.0(eslint@9.12.0)(typescript@5.6.3) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@9.12.0)(typescript@5.6.3) - '@typescript-eslint/utils': 7.18.0(eslint@9.12.0)(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.8.1 + '@typescript-eslint/type-utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3) + '@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.8.1 eslint: 9.12.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -5770,19 +5731,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3)': - dependencies: - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.7(supports-color@8.1.1) - eslint: 9.12.0 - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3)': dependencies: '@typescript-eslint/scope-manager': 8.8.1 @@ -5796,47 +5744,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@8.8.1': dependencies: '@typescript-eslint/types': 8.8.1 '@typescript-eslint/visitor-keys': 8.8.1 - '@typescript-eslint/type-utils@7.18.0(eslint@9.12.0)(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.8.1(eslint@9.12.0)(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) - '@typescript-eslint/utils': 7.18.0(eslint@9.12.0)(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3) + '@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3) debug: 4.3.7(supports-color@8.1.1) - eslint: 9.12.0 ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: + - eslint - supports-color - '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@8.8.1': {} - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.3)': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.7(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.8.1(typescript@5.6.3)': dependencies: '@typescript-eslint/types': 8.8.1 @@ -5852,17 +5778,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@9.12.0)(typescript@5.6.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) - eslint: 9.12.0 - transitivePeerDependencies: - - supports-color - - typescript - '@typescript-eslint/utils@8.8.1(eslint@9.12.0)(typescript@5.6.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) @@ -5874,11 +5789,6 @@ snapshots: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.8.1': dependencies: '@typescript-eslint/types': 8.8.1 @@ -6082,7 +5992,7 @@ snapshots: axios@1.7.7: dependencies: follow-redirects: 1.15.9 - form-data: 4.0.0 + form-data: 4.0.1 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug @@ -6291,10 +6201,10 @@ snapshots: domutils: 3.1.0 encoding-sniffer: 0.2.0 htmlparser2: 9.1.0 - parse5: 7.1.2 - parse5-htmlparser2-tree-adapter: 7.0.0 + parse5: 7.2.0 + parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 - undici: 6.19.8 + undici: 6.20.0 whatwg-mimetype: 4.0.0 optional: true @@ -6776,13 +6686,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.7(supports-color@8.1.1) enhanced-resolve: 5.17.1 eslint: 9.12.0 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0))(eslint@9.12.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0))(eslint@9.12.0) fast-glob: 3.3.2 get-tsconfig: 4.8.1 is-bun-module: 1.2.1 @@ -6795,14 +6705,14 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0))(eslint@9.12.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0))(eslint@9.12.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.6.3) eslint: 9.12.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0) transitivePeerDependencies: - supports-color @@ -6817,7 +6727,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.12.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0))(eslint@9.12.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0))(eslint@9.12.0))(eslint@9.12.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -6835,7 +6745,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsdoc@50.3.1(eslint@9.12.0): + eslint-plugin-jsdoc@50.3.2(eslint@9.12.0): dependencies: '@es-joy/jsdoccomment': 0.48.0 are-docs-informative: 0.0.2 @@ -6866,11 +6776,11 @@ snapshots: dependencies: eslint: 9.12.0 - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0): dependencies: eslint: 9.12.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3) eslint-rule-docs@1.1.235: {} @@ -7145,7 +7055,7 @@ snapshots: form-data-encoder@1.7.2: {} - form-data@4.0.0: + form-data@4.0.1: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -8563,18 +8473,18 @@ snapshots: parse-passwd@1.0.0: {} - parse5-htmlparser2-tree-adapter@7.0.0: + parse5-htmlparser2-tree-adapter@7.1.0: dependencies: domhandler: 5.0.3 - parse5: 7.1.2 + parse5: 7.2.0 optional: true parse5-parser-stream@7.1.2: dependencies: - parse5: 7.1.2 + parse5: 7.2.0 optional: true - parse5@7.1.2: + parse5@7.2.0: dependencies: entities: 4.5.0 optional: true @@ -9264,15 +9174,15 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - typescript-eslint@7.18.0(eslint@9.12.0)(typescript@5.6.3): + typescript-eslint@8.8.1(eslint@9.12.0)(typescript@5.6.3): dependencies: - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3) - '@typescript-eslint/parser': 7.18.0(eslint@9.12.0)(typescript@5.6.3) - '@typescript-eslint/utils': 7.18.0(eslint@9.12.0)(typescript@5.6.3) - eslint: 9.12.0 + '@typescript-eslint/eslint-plugin': 8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3) + '@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.6.3) + '@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: + - eslint - supports-color typescript@5.6.3: {} @@ -9288,7 +9198,7 @@ snapshots: undici-types@6.19.6: {} - undici@6.19.8: + undici@6.20.0: optional: true universalify@0.1.2: {} diff --git a/sample-code/package.json b/sample-code/package.json index ed88fbe5..7355d954 100644 --- a/sample-code/package.json +++ b/sample-code/package.json @@ -30,7 +30,7 @@ "langchain": "0.3.2", "@langchain/core": "0.3.10", "@langchain/textsplitters": "0.1.0", - "@sap-cloud-sdk/util": "^3.22.1", + "@sap-cloud-sdk/util": "^3.22.2", "@types/express": "^5.0.0", "express": "^4.21.1" } diff --git a/sample-code/src/orchestration.ts b/sample-code/src/orchestration.ts index 54074d61..242860e4 100644 --- a/sample-code/src/orchestration.ts +++ b/sample-code/src/orchestration.ts @@ -135,7 +135,7 @@ export async function orchestrationOutputFiltering(): Promise Date: Mon, 14 Oct 2024 23:40:04 +0000 Subject: [PATCH 10/10] chore(deps): Bump @langchain/core from 0.3.10 to 0.3.11 (#222) Bumps [@langchain/core](https://github.com/langchain-ai/langchainjs) from 0.3.10 to 0.3.11. - [Release notes](https://github.com/langchain-ai/langchainjs/releases) - [Changelog](https://github.com/langchain-ai/langchainjs/blob/main/release_workspace.js) - [Commits](https://github.com/langchain-ai/langchainjs/commits) --- updated-dependencies: - dependency-name: "@langchain/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packages/langchain/package.json | 2 +- pnpm-lock.yaml | 98 ++++++++++++++++----------------- sample-code/package.json | 2 +- tests/smoke-tests/package.json | 2 +- 4 files changed, 52 insertions(+), 52 deletions(-) diff --git a/packages/langchain/package.json b/packages/langchain/package.json index b7bf83d9..25979ef3 100644 --- a/packages/langchain/package.json +++ b/packages/langchain/package.json @@ -30,7 +30,7 @@ "@sap-ai-sdk/ai-api": "workspace:^", "@sap-ai-sdk/core": "workspace:^", "@sap-ai-sdk/foundation-models": "workspace:^", - "@langchain/core": "0.3.10", + "@langchain/core": "0.3.11", "zod-to-json-schema": "^3.23.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 26ed2c87..502d0bf6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -140,8 +140,8 @@ importers: packages/langchain: dependencies: '@langchain/core': - specifier: 0.3.10 - version: 0.3.10(openai@4.61.1(zod@3.23.8)) + specifier: 0.3.11 + version: 0.3.11(openai@4.61.1(zod@3.23.8)) '@sap-ai-sdk/ai-api': specifier: workspace:^ version: link:../ai-api @@ -191,11 +191,11 @@ importers: sample-code: dependencies: '@langchain/core': - specifier: 0.3.10 - version: 0.3.10(openai@4.61.1(zod@3.23.8)) + specifier: 0.3.11 + version: 0.3.11(openai@4.61.1(zod@3.23.8)) '@langchain/textsplitters': specifier: 0.1.0 - version: 0.1.0(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8))) + version: 0.1.0(@langchain/core@0.3.11(openai@4.61.1(zod@3.23.8))) '@sap-ai-sdk/ai-api': specifier: workspace:^ version: link:../packages/ai-api @@ -219,7 +219,7 @@ importers: version: 4.21.1 langchain: specifier: 0.3.2 - version: 0.3.2(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)) + version: 0.3.2(@langchain/core@0.3.11(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)) tests/e2e-tests: dependencies: @@ -255,23 +255,23 @@ importers: tests/smoke-tests: dependencies: '@langchain/core': - specifier: 0.3.10 - version: 0.3.10(openai@4.61.1(zod@3.23.8)) + specifier: 0.3.11 + version: 0.3.11(openai@4.61.1(zod@3.23.8)) '@langchain/textsplitters': specifier: 0.1.0 - version: 0.1.0(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8))) + version: 0.1.0(@langchain/core@0.3.11(openai@4.61.1(zod@3.23.8))) '@sap-ai-sdk/ai-api': specifier: canary - version: 1.1.1-20241013013059.0 + version: 1.1.1-20241014013122.0 '@sap-ai-sdk/foundation-models': specifier: canary - version: 1.1.1-20241013013059.0 + version: 1.1.1-20241014013122.0 '@sap-ai-sdk/langchain': specifier: canary - version: 1.1.1-20241013013059.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8) + version: 1.1.1-20241014013122.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8) '@sap-ai-sdk/orchestration': specifier: canary - version: 1.1.1-20241013013059.0 + version: 1.1.1-20241014013122.0 '@sap-cloud-sdk/util': specifier: ^3.22.2 version: 3.22.2 @@ -280,7 +280,7 @@ importers: version: 4.21.1 langchain: specifier: 0.3.2 - version: 0.3.2(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)) + version: 0.3.2(@langchain/core@0.3.11(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)) devDependencies: '@types/express': specifier: ^5.0.0 @@ -930,8 +930,8 @@ packages: resolution: {integrity: sha512-MBGDcNeMLRFsEtfzYrqFpome9M2KI7wa4VcFoHPrjf5cvw1gaEAWiMST0jq42tgV3XmukiueCog6kj9Q/hxw2w==} engines: {node: '>=18'} - '@langchain/core@0.3.9': - resolution: {integrity: sha512-Rttr9FuFwU+CWIoEyuLqQUPYg+3pKL1YpDgo3nvoDVhinoHqwGQ7aNGzZ/Sf+qASMi76sPSLm+75pHMJwwOiWg==} + '@langchain/core@0.3.11': + resolution: {integrity: sha512-Mhwf0jkALxeQvEdcxEMD1IiNRhXF8pJqvvAh1LpvBTScTrprNVOYQHR4pujZ6z1SV54u4hULokDWJVVjfEf23w==} engines: {node: '>=18'} '@langchain/openai@0.3.2': @@ -983,20 +983,20 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@sap-ai-sdk/ai-api@1.1.1-20241013013059.0': - resolution: {integrity: sha512-LYX0Q9/NOJBuGI94HUrA+0GsiDrerWBS0UKYF9IallseBfwcenUo98tldsaotnWqZ13+TkN3/sFOz5vJ1/oL3Q==} + '@sap-ai-sdk/ai-api@1.1.1-20241014013122.0': + resolution: {integrity: sha512-ms5tz39OIFIg1bZ490n0bSpNCRPX+7D/1xWxbzL39FaWmtaw/+OnYPAltRThFoEKBb2ufWn51XNfXclXroo1EQ==} - '@sap-ai-sdk/core@1.1.1-20241013013059.0': - resolution: {integrity: sha512-K8Pb0XZdPZDak+haP4klQoskk6gEyJR/4tbXmV1JYN8cNGBSxHNJntcaPGX5hdKORWfYVar6B/xM6hWeEGVI8A==} + '@sap-ai-sdk/core@1.1.1-20241014013122.0': + resolution: {integrity: sha512-2zvnko3k3ehYvZTq9q1Rplx85jfV6HspWUupYmVSISNGJv2X94PeL2MS3ZHP/EjjTiTC3lteH6FMEWK3e9jfog==} - '@sap-ai-sdk/foundation-models@1.1.1-20241013013059.0': - resolution: {integrity: sha512-Pr9bxeSPe2cr5hah690pmAGQoSCuYO2ANk/aIRjc188PsFfa4kr4fgpV5vNlxju5jAnLd1hIuMAXwKvSH5rP/Q==} + '@sap-ai-sdk/foundation-models@1.1.1-20241014013122.0': + resolution: {integrity: sha512-pxk74txs3gpzKFJdsZFZu6mLEQFguwjkBpve2de660pry47zi5wuA45LG9FcxneEO/7+Q3VmqmLOW+bHel9oDw==} - '@sap-ai-sdk/langchain@1.1.1-20241013013059.0': - resolution: {integrity: sha512-gbFOS0RDzNuEGPEpcWJ/+jRliB4FlFwxH/sgFjyH9a9rkYY6O3Ylan9EnNUOkqKtsnJAaBdn1IgbvWIz5xoRsQ==} + '@sap-ai-sdk/langchain@1.1.1-20241014013122.0': + resolution: {integrity: sha512-wuie65U/WqPTkozgDpWPbGYlOAnb6ptRLSPdGOMJBbaDO9f+j+NF3spemzTC8rlXqd2g3fMzAjhj5Q4W+tEa3w==} - '@sap-ai-sdk/orchestration@1.1.1-20241013013059.0': - resolution: {integrity: sha512-SFeCKoYVevj7zc22Of7TRmGKWaw5TSt6KPZjC0GG6mGBrCsTSbX7tvl6RYgKzT9N8gENi1dLZ0hoMm7w3r/dlA==} + '@sap-ai-sdk/orchestration@1.1.1-20241014013122.0': + resolution: {integrity: sha512-IJ44rlQK4L4gS1e/ldjnNctFg866TWG9ovBi35+PM/7hlxsSxpF5opwl6WHGAIvPtLZ24EaNzqJ/qxJwYpmgaQ==} '@sap-cloud-sdk/connectivity@3.22.2': resolution: {integrity: sha512-kfJaRersOefqKn12Q6my+Bch8TVD83j9CsA/vKQI6D7UpdJjfy6k4EbwlVeuehWb4kvTLYvQLvjJE0JhelESPQ==} @@ -5224,7 +5224,7 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/core@0.3.9(openai@4.61.1(zod@3.23.8))': + '@langchain/core@0.3.11(openai@4.61.1(zod@3.23.8))': dependencies: ansi-styles: 5.2.0 camelcase: 6.3.0 @@ -5240,9 +5240,9 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/openai@0.3.2(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8)))': + '@langchain/openai@0.3.2(@langchain/core@0.3.11(openai@4.61.1(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.10(openai@4.61.1(zod@3.23.8)) + '@langchain/core': 0.3.11(openai@4.61.1(zod@3.23.8)) js-tiktoken: 1.0.14 openai: 4.61.1(zod@3.23.8) zod: 3.23.8 @@ -5250,9 +5250,9 @@ snapshots: transitivePeerDependencies: - encoding - '@langchain/textsplitters@0.1.0(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8)))': + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.11(openai@4.61.1(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.10(openai@4.61.1(zod@3.23.8)) + '@langchain/core': 0.3.11(openai@4.61.1(zod@3.23.8)) js-tiktoken: 1.0.14 '@manypkg/find-root@1.1.0': @@ -5312,15 +5312,15 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@sap-ai-sdk/ai-api@1.1.1-20241013013059.0': + '@sap-ai-sdk/ai-api@1.1.1-20241014013122.0': dependencies: - '@sap-ai-sdk/core': 1.1.1-20241013013059.0 + '@sap-ai-sdk/core': 1.1.1-20241014013122.0 '@sap-cloud-sdk/connectivity': 3.22.2 transitivePeerDependencies: - debug - supports-color - '@sap-ai-sdk/core@1.1.1-20241013013059.0': + '@sap-ai-sdk/core@1.1.1-20241014013122.0': dependencies: '@sap-cloud-sdk/connectivity': 3.22.2 '@sap-cloud-sdk/http-client': 3.22.2 @@ -5330,22 +5330,22 @@ snapshots: - debug - supports-color - '@sap-ai-sdk/foundation-models@1.1.1-20241013013059.0': + '@sap-ai-sdk/foundation-models@1.1.1-20241014013122.0': dependencies: - '@sap-ai-sdk/ai-api': 1.1.1-20241013013059.0 - '@sap-ai-sdk/core': 1.1.1-20241013013059.0 + '@sap-ai-sdk/ai-api': 1.1.1-20241014013122.0 + '@sap-ai-sdk/core': 1.1.1-20241014013122.0 '@sap-cloud-sdk/http-client': 3.22.2 '@sap-cloud-sdk/util': 3.22.2 transitivePeerDependencies: - debug - supports-color - '@sap-ai-sdk/langchain@1.1.1-20241013013059.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8)': + '@sap-ai-sdk/langchain@1.1.1-20241014013122.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8)': dependencies: - '@langchain/core': 0.3.9(openai@4.61.1(zod@3.23.8)) - '@sap-ai-sdk/ai-api': 1.1.1-20241013013059.0 - '@sap-ai-sdk/core': 1.1.1-20241013013059.0 - '@sap-ai-sdk/foundation-models': 1.1.1-20241013013059.0 + '@langchain/core': 0.3.10(openai@4.61.1(zod@3.23.8)) + '@sap-ai-sdk/ai-api': 1.1.1-20241014013122.0 + '@sap-ai-sdk/core': 1.1.1-20241014013122.0 + '@sap-ai-sdk/foundation-models': 1.1.1-20241014013122.0 zod-to-json-schema: 3.23.3(zod@3.23.8) transitivePeerDependencies: - debug @@ -5353,10 +5353,10 @@ snapshots: - supports-color - zod - '@sap-ai-sdk/orchestration@1.1.1-20241013013059.0': + '@sap-ai-sdk/orchestration@1.1.1-20241014013122.0': dependencies: - '@sap-ai-sdk/ai-api': 1.1.1-20241013013059.0 - '@sap-ai-sdk/core': 1.1.1-20241013013059.0 + '@sap-ai-sdk/ai-api': 1.1.1-20241014013122.0 + '@sap-ai-sdk/core': 1.1.1-20241014013122.0 '@sap-cloud-sdk/http-client': 3.22.2 '@sap-cloud-sdk/util': 3.22.2 transitivePeerDependencies: @@ -7991,11 +7991,11 @@ snapshots: kuler@2.0.0: {} - langchain@0.3.2(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)): + langchain@0.3.2(@langchain/core@0.3.11(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(openai@4.61.1(zod@3.23.8)): dependencies: - '@langchain/core': 0.3.10(openai@4.61.1(zod@3.23.8)) - '@langchain/openai': 0.3.2(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8))) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.10(openai@4.61.1(zod@3.23.8))) + '@langchain/core': 0.3.11(openai@4.61.1(zod@3.23.8)) + '@langchain/openai': 0.3.2(@langchain/core@0.3.11(openai@4.61.1(zod@3.23.8))) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.11(openai@4.61.1(zod@3.23.8))) js-tiktoken: 1.0.14 js-yaml: 4.1.0 jsonpointer: 5.0.1 diff --git a/sample-code/package.json b/sample-code/package.json index 7355d954..0d7709ad 100644 --- a/sample-code/package.json +++ b/sample-code/package.json @@ -28,7 +28,7 @@ "@sap-ai-sdk/orchestration": "workspace:^", "@sap-ai-sdk/langchain": "workspace:^", "langchain": "0.3.2", - "@langchain/core": "0.3.10", + "@langchain/core": "0.3.11", "@langchain/textsplitters": "0.1.0", "@sap-cloud-sdk/util": "^3.22.2", "@types/express": "^5.0.0", diff --git a/tests/smoke-tests/package.json b/tests/smoke-tests/package.json index 49279edd..faf025a6 100644 --- a/tests/smoke-tests/package.json +++ b/tests/smoke-tests/package.json @@ -19,7 +19,7 @@ }, "dependencies": { "langchain": "0.3.2", - "@langchain/core": "0.3.10", + "@langchain/core": "0.3.11", "@langchain/textsplitters": "0.1.0", "@sap-ai-sdk/ai-api": "canary", "@sap-ai-sdk/foundation-models": "canary",