diff --git a/package.json b/package.json index abe7f808..9078a9ce 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "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" + "check:deps": "pnpm -r -F !./tests/smoke-tests -F !./tests/schema-tests -F !./sample-cap exec depcheck --ignores=\"nock,@jest/globals\" --quiet" }, "devDependencies": { "@changesets/cli": "^2.27.9", @@ -51,7 +51,6 @@ "@types/jsonwebtoken": "^9.0.7", "@types/mock-fs": "^4.13.4", "@types/node": "^20.17.6", - "@cap-js/cds-types": "^0.7.0", "depcheck": "^1.4.7", "eslint": "^9.14.0", "glob": "^11.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ec926ab1..b5bfe267 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,9 +10,6 @@ importers: .: devDependencies: - '@cap-js/cds-types': - specifier: ^0.7.0 - version: 0.7.0(@sap/cds@8.4.2(express@4.21.1)) '@changesets/cli': specifier: ^2.27.9 version: 2.27.9 @@ -170,20 +167,27 @@ importers: sample-cap: dependencies: '@sap-ai-sdk/ai-api': - specifier: workspace:^ - version: link:../packages/ai-api + specifier: ^1 + version: 1.2.0 '@sap-ai-sdk/foundation-models': - specifier: workspace:^ - version: link:../packages/foundation-models + specifier: ^1 + version: 1.2.0 '@sap-ai-sdk/orchestration': - specifier: workspace:^ - version: link:../packages/orchestration + specifier: ^1 + version: 1.2.0 '@sap/cds': - specifier: ^8 - version: 8.3.1(express@4.21.1) + specifier: ^8.4.1 + version: 8.4.1(express@4.21.1) + '@sap/xssec': + specifier: ^4 + version: 4.2.4 express: specifier: ^4 version: 4.21.1 + devDependencies: + '@sap/cds-dk': + specifier: ^8.4.1 + version: 8.4.1 sample-code: dependencies: @@ -216,7 +220,7 @@ importers: version: 4.21.1 langchain: specifier: 0.3.5 - version: 0.3.5(@langchain/core@0.3.18(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.5(@langchain/core@0.3.18(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.61.1(zod@3.23.8)) tests/e2e-tests: dependencies: @@ -262,16 +266,16 @@ importers: version: 0.1.0(@langchain/core@0.3.18(openai@4.61.1(zod@3.23.8))) '@sap-ai-sdk/ai-api': specifier: canary - version: 1.2.1-20241114013105.0 + version: 1.2.1-20241112013051.0 '@sap-ai-sdk/foundation-models': specifier: canary - version: 1.2.1-20241114013105.0 + version: 1.2.1-20241112013051.0 '@sap-ai-sdk/langchain': specifier: canary - version: 1.2.1-20241114013105.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8) + version: 1.2.1-20241112013051.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8) '@sap-ai-sdk/orchestration': specifier: canary - version: 1.2.1-20241114013105.0 + version: 1.2.1-20241112013051.0 '@sap-cloud-sdk/util': specifier: ^3.22.2 version: 3.22.2 @@ -280,7 +284,7 @@ importers: version: 4.21.1 langchain: specifier: 0.3.5 - version: 0.3.5(@langchain/core@0.3.18(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.5(@langchain/core@0.3.18(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.61.1(zod@3.23.8)) devDependencies: '@types/express': specifier: ^5.0.0 @@ -505,10 +509,25 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@cap-js/cds-types@0.7.0': - resolution: {integrity: sha512-zprkz3csN7z7v+0V78UlCfg2psm7Q3DJwvBjQB5BxVhlBcmuzoXn5EKKvzIXjflgWP1hUsDUhjVU5Hg9Quvq0g==} + '@cap-js/asyncapi@1.0.2': + resolution: {integrity: sha512-1EbZUaKxWvhxmdjM1raFEQT9MkI28mFJMtYEEbUGdD2NMpd7pWH//xcWpLb+9NOKye+mXEtZxvD9bZcRE5y2lA==} peerDependencies: - '@sap/cds': ^8.0.0 + '@sap/cds': '>=7.6' + + '@cap-js/db-service@1.15.0': + resolution: {integrity: sha512-9MCyfumDsPRA/axkQ0kePd8MqolbDTCGAaSN1jR07bMSNo/gFoRGfqcqvlP8+XdX5S1xBiMmP1gbw8VktZr0yg==} + peerDependencies: + '@sap/cds': '>=7.9' + + '@cap-js/openapi@1.0.7': + resolution: {integrity: sha512-Ntfu5vqT3xVJQ/D/Ayuy/uZhxhUGUZsr4ngJrQMLwiK1NaFpY1rrv2A0rabVRRKO++QBfEOmVKxEEDaAfbf6Hg==} + peerDependencies: + '@sap/cds': '>=7.6' + + '@cap-js/sqlite@1.7.7': + resolution: {integrity: sha512-SOmFJMr6pjWOniFRkJsrI0BpQEQT5Q8o+IVZ/LXFj6+bAe0NQQztzxhMQx62V/Px3u58JJM3xkPMU+QC5PcJHw==} + peerDependencies: + '@sap/cds': '>=7.6' '@changesets/apply-release-plan@7.0.5': resolution: {integrity: sha512-1cWCk+ZshEkSVEZrm2fSj1Gz8sYvxgUL4Q78+1ZZqeqfuevPTPk033/yUZ3df8BKMohkqqHfzj0HOOrG0KtXTw==} @@ -987,20 +1006,41 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@sap-ai-sdk/ai-api@1.2.1-20241114013105.0': - resolution: {integrity: sha512-AK/P+rGvkqL20RneAg03iIWGdh/VFgk+k+UvrP3d+Ai3xc7BD14WX0vKlLx6Kjf6V3vPEYru1YGBeebqStEqWw==} + '@sap-ai-sdk/ai-api@1.2.0': + resolution: {integrity: sha512-pUZiGg7q3BJzcAgqxAi2EX7ru2/ks5c7YzmImMoRqQafZr0McsqpCKGRp/VOw+CARyqpsV1AZ8GL50Kk8gxorQ==} + + '@sap-ai-sdk/ai-api@1.2.1-20241112013051.0': + resolution: {integrity: sha512-yZqp+4K8pvjosTleG3t3TFSmOEKRlmVVduwNMYkYHaPKcbQxhSs2FdAA0e/5mL+9nc103rDPv/DEE59Czti3Hg==} + + '@sap-ai-sdk/ai-api@1.2.1-20241115013129.0': + resolution: {integrity: sha512-m+of7l6Mw9DYyqxeE23lMUSqJSXaXFEeeuCNkjnnrKGjXSHCnO7iUYD2NSE6lxGqE8bzNwIrG6oqe/3NW1qGew==} - '@sap-ai-sdk/core@1.2.1-20241114013105.0': - resolution: {integrity: sha512-ia5UxmrlqLOrvABDooPHFSbLbowiWM6Vs9g79Dro5ueYrvnRYS/RN0lQNaI17kUXBJoTE4f/dQvvKj4M2CXRmw==} + '@sap-ai-sdk/core@1.2.0': + resolution: {integrity: sha512-55Mmx8eLw6JIphOYSBPRE1kVnV5DvRyXT2CxFhCnEcQnD1unf0GZbG+XdmGSYxhj3VoqO42Y4P0Qxq5yRAIRGQ==} - '@sap-ai-sdk/foundation-models@1.2.1-20241114013105.0': - resolution: {integrity: sha512-BgnON2AG0SdpRJWAJgg2wcNcT/7epFKw449MchxbiAjhzdt9adUp3vFQoTa0K9NbGynWhVS3OlDOzAuj8+oBYw==} + '@sap-ai-sdk/core@1.2.1-20241112013051.0': + resolution: {integrity: sha512-Tkowlt5RyQdD9J74OE6zdlWkjoId6KxG8qTVzwVv/tJx/0aiq9DvQqH3HBisJJIOj3kY2pAMYrjayn6HxsqcCQ==} - '@sap-ai-sdk/langchain@1.2.1-20241114013105.0': - resolution: {integrity: sha512-FcrAa8TCLqrie/vDgFMd16iAVQyIZdoiX2rmpFVK+o36mArGM8m9q7o6S17cAH7jlSaEyFFyyr8c3hIQpI573w==} + '@sap-ai-sdk/core@1.2.1-20241115013129.0': + resolution: {integrity: sha512-J1b1iCdgMRSsE3f2FMy0OzkA5hwc88JFttEGBlKKGI58bZp8QDIRZRGFJuEswLIHO/Tov3DNTtdyzMRgQ1Du3g==} - '@sap-ai-sdk/orchestration@1.2.1-20241114013105.0': - resolution: {integrity: sha512-VBRjRD3z/iiRz84SEQhva4SrsZUtKpmhs7pBeicSr6QyA7txaGiyN9WTfXNqQsBpWqOkZVEM8eDkuGHQldqesQ==} + '@sap-ai-sdk/foundation-models@1.2.0': + resolution: {integrity: sha512-Zzv3lcV0aZNKsh99Tq8ptai0W4tTNRK6xy1hrMYKsZenIJR2h+xypQtN/Sw95uwF2Ldsf1xxZvPK6xoOI4cGlw==} + + '@sap-ai-sdk/foundation-models@1.2.1-20241112013051.0': + resolution: {integrity: sha512-DwV+c1qwryYKi+rl7OZTJIai2YJCJExiom0+LRyHqMzaVAfA5vbfMIBWFabWmQE1iSwfFKcRbzs56h5sTh8TFg==} + + '@sap-ai-sdk/foundation-models@1.2.1-20241115013129.0': + resolution: {integrity: sha512-y/Iaj5SGYhe7Vwi4Gfp+lpM7VkHBjHebpBEKgU2fZBn1c4qxiGSCeRVs1x9RJZUyqPFSUCpbj1QcVraiTroNXA==} + + '@sap-ai-sdk/langchain@1.2.1-20241112013051.0': + resolution: {integrity: sha512-z7SFAPQXq8e1ek6A/NFaHXAbnuERBkQ+Ttilp6lG63u6KVAoSu6JH3G6vnQxObvhyYW9IbGj8aIqR2ASaBxdMw==} + + '@sap-ai-sdk/orchestration@1.2.0': + resolution: {integrity: sha512-wgfZ5bX2D0RmVtg3S7WUZFRRq0YL/3ewh7xySUXBZM29rHtPmzqLGKJuxKe1a+qvFNCwGJiGd3kpuAqnUdj1jg==} + + '@sap-ai-sdk/orchestration@1.2.1-20241112013051.0': + resolution: {integrity: sha512-PeMwA0iNR7VmNeNiRcHDuB9BA37QEg5A+CCjYx9PkyJ7jJXnXsSDKYxYpYni4m1vkdm2auFaMsoL4BvBEqiVhQ==} '@sap-cloud-sdk/connectivity@3.22.2': resolution: {integrity: sha512-kfJaRersOefqKn12Q6my+Bch8TVD83j9CsA/vKQI6D7UpdJjfy6k4EbwlVeuehWb4kvTLYvQLvjJE0JhelESPQ==} @@ -1034,6 +1074,10 @@ packages: engines: {node: '>=18'} hasBin: true + '@sap/cds-dk@8.4.1': + resolution: {integrity: sha512-+/DU/gSGD6iEDdZ4/heUJqP2Mf0qqy38aKtmKpw0o/FKlTy6RrN5P4R4PIa4Y8gyGrn4i1Uk1H9cheBSQAk15A==} + hasBin: true + '@sap/cds-fiori@1.2.7': resolution: {integrity: sha512-F6Uf9wvkv0fXW+Fh7PiV2BbB/k+p1cFJLkQCCKDRJH8HvlxWEcXcn/YIvBrQGuX+GToi125MxB3wd712d8OLTA==} peerDependencies: @@ -1044,8 +1088,12 @@ packages: resolution: {integrity: sha512-q6h7LkEx6w9LswCIQzJJ2mnoyeGS8jrmBXN4I4+aECRL60mkLskoqGetot+2tX2xXGxCYJuo5v1dtSafwBqTRQ==} engines: {node: '>=14'} - '@sap/cds@8.3.1': - resolution: {integrity: sha512-v44OYZqeFYrH6ghfO/RqQ7eqgcNYAAQmVVFy9pIbOkxXay0uVDXB1nC3hu6cuqIYvp2PFInL0c3l1e+ycFSkPA==} + '@sap/cds-mtxs@2.3.1': + resolution: {integrity: sha512-WmWJAUnXGeki6ax2zq9MFGduZq8k+bfoMI/Tn+WJbv6P82qI7Ul15/0lljpvi4I7obOgM02+szXILVi5MorATQ==} + hasBin: true + + '@sap/cds@8.4.1': + resolution: {integrity: sha512-dchM8blfY9lYiB2hGA/yWQ+Mtu83qD4Y/romWIYLMzD8vhiLrovXcuR8fwP5dyuP2i33ZOG1twNOXR5ObWqZWg==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -1054,14 +1102,34 @@ packages: express: optional: true - '@sap/cds@8.4.2': - resolution: {integrity: sha512-wHiPU+PciyG6L7oGglUq22ji+aV5SFwef/gF/rnIheMirzxpDlHq+K8GwqmcrrFu3GWRioQGRe3rr8KAalOQrg==} + '@sap/eslint-plugin-cds@3.1.2': + resolution: {integrity: sha512-tstnON4GgR6/FLdbHT0zxkAYYYPqatPk3zP6xxo3RWsP0+UVJeM2kAfzseUoRUEKAilRrx8hduxFr3PzUPQCFQ==} engines: {node: '>=18'} - hasBin: true peerDependencies: - express: '>=4' + eslint: '>=8' + + '@sap/hdi-deploy@5.3.2': + resolution: {integrity: sha512-1QvlrMdeVXCIc2DSLjR5ZIKFz9GVcuC8JvXtifU7bYetajc6mgU5FRR9zseZgrHVdCveeRIURmoPplUl4Hszag==} + engines: {node: ^18.0.0 || ^20.0.0} + peerDependencies: + '@sap/hana-client': ^2 >= 2.6 + hdb: ^0 peerDependenciesMeta: - express: + '@sap/hana-client': + optional: true + hdb: + optional: true + + '@sap/hdi@4.6.0': + resolution: {integrity: sha512-heRX6dvyr58LT0jrZECpt9jJTHIWttDSuLKsBccpKPBbBJxCDr6hpIXKmtCJj7M7ASDgESSGx1fE326V/ltlLQ==} + engines: {node: '>=18 <=20'} + peerDependencies: + '@sap/hana-client': ^2 >= 2.5 + hdb: ^0 + peerDependenciesMeta: + '@sap/hana-client': + optional: true + hdb: optional: true '@sap/xsenv@5.3.0': @@ -1139,15 +1207,9 @@ 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==} @@ -1528,6 +1590,9 @@ packages: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} + better-sqlite3@11.5.0: + resolution: {integrity: sha512-e/6eggfOutzoK0JWiU36jsisdWoHOfN9iWiW/SieKvb7SAa6aGNmBM/UKyp+/wWSXpLlWNN8tCPwoDNPhzUvuQ==} + big.js@6.2.2: resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} @@ -1535,6 +1600,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -1642,6 +1710,9 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -1815,6 +1886,10 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dedent@1.5.3: resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} peerDependencies: @@ -1823,6 +1898,10 @@ packages: babel-plugin-macros: optional: true + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -1869,6 +1948,10 @@ packages: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -1959,6 +2042,9 @@ packages: encoding-sniffer@0.2.0: resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + enhanced-resolve@5.17.1: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} @@ -2215,6 +2301,10 @@ packages: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + expand-tilde@2.0.2: resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} engines: {node: '>=0.10.0'} @@ -2288,6 +2378,9 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} @@ -2360,6 +2453,9 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + fs-extra@11.2.0: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} @@ -2421,6 +2517,9 @@ packages: get-tsconfig@4.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -2475,6 +2574,11 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -2509,6 +2613,10 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hdb@0.19.10: + resolution: {integrity: sha512-er0oyute1aMjf6v41JU7z1a6Zo8lqj3muC7C4Uoi81Xf4WNdjPb424wUnXIhaf4HS8H9ARDyWrMGJTvPU2jjPw==} + engines: {node: '>= 0.12'} + homedir-polyfill@1.0.3: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} @@ -3096,6 +3204,9 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + livereload-js@4.0.2: + resolution: {integrity: sha512-Fy7VwgQNiOkynYyNBTo3v9hQUhcW5pFAheJN148+DTgpShjsy/22pLHKKwDK5v0kOsZsJBK+6q1PMgLvRmrwFQ==} + locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -3230,6 +3341,10 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -3264,6 +3379,9 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + mock-fs@5.4.1: resolution: {integrity: sha512-sz/Q8K1gXXXHR+qr0GZg2ysxCRr323kuN10O7CtQjraJsFDJ4SJ+0I5MzALz7aRp9lHk8Cc/YdsT95h9Ka1aFw==} engines: {node: '>=12.0.0'} @@ -3294,6 +3412,9 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -3301,10 +3422,17 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + nock@13.5.6: resolution: {integrity: sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ==} engines: {node: '>= 10.13'} + node-abi@3.71.0: + resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} + engines: {node: '>=10'} + node-cache@5.1.2: resolution: {integrity: sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==} engines: {node: '>= 8.0.0'} @@ -3335,6 +3463,10 @@ packages: node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + node-watch@0.7.4: + resolution: {integrity: sha512-RinNxoz4W1cep1b928fuFhvAQ5ag/+1UlMDV7rbyGthBIgsiEouS4kvRayvvboxii4m8eolKOIBo3OjDqbc+uQ==} + engines: {node: '>=6'} + normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -3583,6 +3715,10 @@ packages: resolution: {integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==} engines: {node: '>=10'} + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} @@ -3591,6 +3727,11 @@ packages: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} + prebuild-install@7.1.2: + resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} + engines: {node: '>=10'} + hasBin: true + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -3640,6 +3781,9 @@ packages: pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -3666,6 +3810,10 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} @@ -3785,6 +3933,9 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + semver-compare@1.0.0: resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} @@ -3865,6 +4016,12 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} @@ -3968,6 +4125,10 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -4004,6 +4165,13 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -4130,6 +4298,9 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -4188,6 +4359,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -4336,6 +4512,22 @@ packages: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xml-js@1.6.11: + resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} + hasBin: true + xmlbuilder@15.1.1: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} @@ -4633,10 +4825,27 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@cap-js/cds-types@0.7.0(@sap/cds@8.4.2(express@4.21.1))': + '@cap-js/asyncapi@1.0.2(@sap/cds@8.4.1(express@4.21.1))': + dependencies: + '@sap/cds': 8.4.1(express@4.21.1) + + '@cap-js/db-service@1.15.0(@sap/cds@8.4.1(express@4.21.1))': + dependencies: + '@sap/cds': 8.4.1(express@4.21.1) + generic-pool: 3.9.0 + optional: true + + '@cap-js/openapi@1.0.7(@sap/cds@8.4.1(express@4.21.1))': + dependencies: + '@sap/cds': 8.4.1(express@4.21.1) + pluralize: 8.0.0 + + '@cap-js/sqlite@1.7.7(@sap/cds@8.4.1(express@4.21.1))': dependencies: - '@sap/cds': 8.4.2(express@4.21.1) - '@types/express': 4.17.21 + '@cap-js/db-service': 1.15.0(@sap/cds@8.4.1(express@4.21.1)) + '@sap/cds': 8.4.1(express@4.21.1) + better-sqlite3: 11.5.0 + optional: true '@changesets/apply-release-plan@7.0.5': dependencies: @@ -5167,7 +5376,7 @@ snapshots: jest-haste-map: 30.0.0-alpha.6 jest-regex-util: 30.0.0-alpha.6 jest-util: 30.0.0-alpha.6 - micromatch: 4.0.7 + micromatch: 4.0.8 pirates: 4.0.6 slash: 3.0.0 write-file-atomic: 5.0.1 @@ -5307,15 +5516,31 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@sap-ai-sdk/ai-api@1.2.1-20241114013105.0': + '@sap-ai-sdk/ai-api@1.2.0': + dependencies: + '@sap-ai-sdk/core': 1.2.0 + '@sap-cloud-sdk/connectivity': 3.22.2 + transitivePeerDependencies: + - debug + - supports-color + + '@sap-ai-sdk/ai-api@1.2.1-20241112013051.0': + dependencies: + '@sap-ai-sdk/core': 1.2.1-20241112013051.0 + '@sap-cloud-sdk/connectivity': 3.22.2 + transitivePeerDependencies: + - debug + - supports-color + + '@sap-ai-sdk/ai-api@1.2.1-20241115013129.0': dependencies: - '@sap-ai-sdk/core': 1.2.1-20241114013105.0 + '@sap-ai-sdk/core': 1.2.1-20241115013129.0 '@sap-cloud-sdk/connectivity': 3.22.2 transitivePeerDependencies: - debug - supports-color - '@sap-ai-sdk/core@1.2.1-20241114013105.0': + '@sap-ai-sdk/core@1.2.0': dependencies: '@sap-cloud-sdk/connectivity': 3.22.2 '@sap-cloud-sdk/http-client': 3.22.2 @@ -5325,22 +5550,62 @@ snapshots: - debug - supports-color - '@sap-ai-sdk/foundation-models@1.2.1-20241114013105.0': + '@sap-ai-sdk/core@1.2.1-20241112013051.0': dependencies: - '@sap-ai-sdk/ai-api': 1.2.1-20241114013105.0 - '@sap-ai-sdk/core': 1.2.1-20241114013105.0 + '@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 - '@sap-ai-sdk/langchain@1.2.1-20241114013105.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8)': + '@sap-ai-sdk/core@1.2.1-20241115013129.0': + dependencies: + '@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 + + '@sap-ai-sdk/foundation-models@1.2.0': + dependencies: + '@sap-ai-sdk/ai-api': 1.2.0 + '@sap-ai-sdk/core': 1.2.0 + '@sap-cloud-sdk/http-client': 3.22.2 + '@sap-cloud-sdk/util': 3.22.2 + transitivePeerDependencies: + - debug + - supports-color + + '@sap-ai-sdk/foundation-models@1.2.1-20241112013051.0': + dependencies: + '@sap-ai-sdk/ai-api': 1.2.1-20241115013129.0 + '@sap-ai-sdk/core': 1.2.1-20241112013051.0 + '@sap-cloud-sdk/http-client': 3.22.2 + '@sap-cloud-sdk/util': 3.22.2 + transitivePeerDependencies: + - debug + - supports-color + + '@sap-ai-sdk/foundation-models@1.2.1-20241115013129.0': + dependencies: + '@sap-ai-sdk/ai-api': 1.2.1-20241115013129.0 + '@sap-ai-sdk/core': 1.2.1-20241115013129.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.2.1-20241112013051.0(openai@4.61.1(zod@3.23.8))(zod@3.23.8)': dependencies: '@langchain/core': 0.3.18(openai@4.61.1(zod@3.23.8)) - '@sap-ai-sdk/ai-api': 1.2.1-20241114013105.0 - '@sap-ai-sdk/core': 1.2.1-20241114013105.0 - '@sap-ai-sdk/foundation-models': 1.2.1-20241114013105.0 + '@sap-ai-sdk/ai-api': 1.2.1-20241115013129.0 + '@sap-ai-sdk/core': 1.2.1-20241112013051.0 + '@sap-ai-sdk/foundation-models': 1.2.1-20241115013129.0 zod-to-json-schema: 3.23.5(zod@3.23.8) transitivePeerDependencies: - debug @@ -5348,10 +5613,20 @@ snapshots: - supports-color - zod - '@sap-ai-sdk/orchestration@1.2.1-20241114013105.0': + '@sap-ai-sdk/orchestration@1.2.0': + dependencies: + '@sap-ai-sdk/ai-api': 1.2.0 + '@sap-ai-sdk/core': 1.2.0 + '@sap-cloud-sdk/http-client': 3.22.2 + '@sap-cloud-sdk/util': 3.22.2 + transitivePeerDependencies: + - debug + - supports-color + + '@sap-ai-sdk/orchestration@1.2.1-20241112013051.0': dependencies: - '@sap-ai-sdk/ai-api': 1.2.1-20241114013105.0 - '@sap-ai-sdk/core': 1.2.1-20241114013105.0 + '@sap-ai-sdk/ai-api': 1.2.1-20241115013129.0 + '@sap-ai-sdk/core': 1.2.1-20241112013051.0 '@sap-cloud-sdk/http-client': 3.22.2 '@sap-cloud-sdk/util': 3.22.2 transitivePeerDependencies: @@ -5379,7 +5654,7 @@ snapshots: eslint: 9.14.0 eslint-config-prettier: 9.1.0(eslint@9.14.0) eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.14.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0))(eslint@9.14.0) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.14.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.14.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.14.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.14.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0))(eslint@9.14.0))(eslint@9.14.0) eslint-plugin-jsdoc: 50.3.2(eslint@9.14.0) eslint-plugin-prettier: 5.2.1(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@9.14.0))(eslint@9.14.0)(prettier@3.3.3) eslint-plugin-regex: 1.10.0(eslint@9.14.0) @@ -5467,14 +5742,37 @@ snapshots: dependencies: antlr4: 4.9.3 - '@sap/cds-fiori@1.2.7(@sap/cds@8.3.1(express@4.21.1))(express@4.21.1)': + '@sap/cds-dk@8.4.1': dependencies: - '@sap/cds': 8.3.1(express@4.21.1) + '@cap-js/asyncapi': 1.0.2(@sap/cds@8.4.1(express@4.21.1)) + '@cap-js/openapi': 1.0.7(@sap/cds@8.4.1(express@4.21.1)) + '@sap/cds': 8.4.1(express@4.21.1) + '@sap/cds-foss': 5.0.1 + '@sap/cds-mtxs': 2.3.1(hdb@0.19.10) + '@sap/eslint-plugin-cds': 3.1.2(eslint@9.14.0)(express@4.21.1) + '@sap/hdi-deploy': 5.3.2(hdb@0.19.10) + axios: 1.7.7 + eslint: 9.14.0 express: 4.21.1 + hdb: 0.19.10 + livereload-js: 4.0.2 + mustache: 4.2.0 + node-watch: 0.7.4 + ws: 8.18.0 + xml-js: 1.6.11 + optionalDependencies: + '@cap-js/sqlite': 1.7.7(@sap/cds@8.4.1(express@4.21.1)) + transitivePeerDependencies: + - '@sap/hana-client' + - bufferutil + - debug + - jiti + - supports-color + - utf-8-validate - '@sap/cds-fiori@1.2.7(@sap/cds@8.4.2(express@4.21.1))(express@4.21.1)': + '@sap/cds-fiori@1.2.7(@sap/cds@8.4.1(express@4.21.1))(express@4.21.1)': dependencies: - '@sap/cds': 8.4.2(express@4.21.1) + '@sap/cds': 8.4.1(express@4.21.1) express: 4.21.1 '@sap/cds-foss@5.0.1': @@ -5484,21 +5782,50 @@ snapshots: xmlbuilder: 15.1.1 yaml: 2.5.1 - '@sap/cds@8.3.1(express@4.21.1)': + '@sap/cds-mtxs@2.3.1(hdb@0.19.10)': + dependencies: + '@sap/hdi-deploy': 5.3.2(hdb@0.19.10) + axios: 1.7.7 + transitivePeerDependencies: + - '@sap/hana-client' + - debug + - hdb + - supports-color + + '@sap/cds@8.4.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-fiori': 1.2.7(@sap/cds@8.4.1(express@4.21.1))(express@4.21.1) '@sap/cds-foss': 5.0.1 optionalDependencies: express: 4.21.1 - '@sap/cds@8.4.2(express@4.21.1)': + '@sap/eslint-plugin-cds@3.1.2(eslint@9.14.0)(express@4.21.1)': dependencies: - '@sap/cds-compiler': 5.3.2 - '@sap/cds-fiori': 1.2.7(@sap/cds@8.4.2(express@4.21.1))(express@4.21.1) - '@sap/cds-foss': 5.0.1 + '@sap/cds': 8.4.1(express@4.21.1) + eslint: 9.14.0 + semver: 7.6.3 + transitivePeerDependencies: + - express + + '@sap/hdi-deploy@5.3.2(hdb@0.19.10)': + dependencies: + '@sap/hdi': 4.6.0(hdb@0.19.10) + '@sap/xsenv': 5.3.0 + async: 3.2.6 + dotenv: 16.4.5 + handlebars: 4.7.8 + micromatch: 4.0.8 optionalDependencies: - express: 4.21.1 + hdb: 0.19.10 + transitivePeerDependencies: + - supports-color + + '@sap/hdi@4.6.0(hdb@0.19.10)': + dependencies: + async: 3.2.6 + optionalDependencies: + hdb: 0.19.10 '@sap/xsenv@5.3.0': dependencies: @@ -5600,13 +5927,6 @@ snapshots: '@types/estree@1.0.6': {} - '@types/express-serve-static-core@4.19.6': - dependencies: - '@types/node': 20.17.6 - '@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.17.5 @@ -5614,13 +5934,6 @@ 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 @@ -6080,10 +6393,21 @@ snapshots: dependencies: is-windows: 1.0.2 + better-sqlite3@11.5.0: + dependencies: + bindings: 1.5.0 + prebuild-install: 7.1.2 + optional: true + big.js@6.2.2: {} binary-extensions@2.3.0: {} + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + optional: true + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -6234,6 +6558,9 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chownr@1.1.4: + optional: true + ci-info@3.9.0: {} ci-info@4.0.0: {} @@ -6396,8 +6723,16 @@ snapshots: decamelize@1.2.0: {} + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + optional: true + dedent@1.5.3: {} + deep-extend@0.6.0: + optional: true + deep-is@0.1.4: {} deepmerge@4.3.1: {} @@ -6458,6 +6793,9 @@ snapshots: detect-indent@6.1.0: {} + detect-libc@2.0.3: + optional: true + detect-newline@3.1.0: {} diff-sequences@29.6.3: {} @@ -6539,6 +6877,11 @@ snapshots: whatwg-encoding: 3.1.1 optional: true + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + optional: true + enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 @@ -6708,7 +7051,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.14.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.14.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.14.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.14.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0))(eslint@9.14.0))(eslint@9.14.0) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node @@ -6726,7 +7069,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.14.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.14.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.14.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.8.1(eslint@9.14.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.8.1(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0))(eslint@9.14.0))(eslint@9.14.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -6898,6 +7241,9 @@ snapshots: exit@0.1.2: {} + expand-template@2.0.3: + optional: true + expand-tilde@2.0.2: dependencies: homedir-polyfill: 1.0.3 @@ -7009,6 +7355,9 @@ snapshots: dependencies: flat-cache: 4.0.1 + file-uri-to-path@1.0.0: + optional: true + filelist@1.0.4: dependencies: minimatch: 5.1.6 @@ -7088,6 +7437,9 @@ snapshots: fresh@0.5.2: {} + fs-constants@1.0.0: + optional: true + fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 @@ -7150,6 +7502,9 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + github-from-package@0.0.0: + optional: true + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -7225,6 +7580,15 @@ snapshots: graphemer@1.4.0: {} + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + hard-rejection@2.1.0: {} has-bigints@1.0.2: {} @@ -7249,6 +7613,10 @@ snapshots: dependencies: function-bind: 1.1.2 + hdb@0.19.10: + dependencies: + iconv-lite: 0.4.24 + homedir-polyfill@1.0.3: dependencies: parse-passwd: 1.0.0 @@ -7592,7 +7960,7 @@ snapshots: jest-runner: 30.0.0-alpha.6 jest-util: 30.0.0-alpha.6 jest-validate: 30.0.0-alpha.6 - micromatch: 4.0.7 + micromatch: 4.0.8 parse-json: 5.2.0 pretty-format: 30.0.0-alpha.6 slash: 3.0.0 @@ -7669,7 +8037,7 @@ snapshots: jest-regex-util: 30.0.0-alpha.6 jest-util: 30.0.0-alpha.6 jest-worker: 30.0.0-alpha.6 - micromatch: 4.0.7 + micromatch: 4.0.8 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 @@ -7712,7 +8080,7 @@ snapshots: '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.7 + micromatch: 4.0.8 pretty-format: 30.0.0-alpha.6 slash: 3.0.0 stack-utils: 2.0.6 @@ -8009,7 +8377,7 @@ snapshots: kuler@2.0.0: {} - langchain@0.3.5(@langchain/core@0.3.18(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.5(@langchain/core@0.3.18(openai@4.61.1(zod@3.23.8)))(axios@1.7.7)(cheerio@1.0.0)(handlebars@4.7.8)(openai@4.61.1(zod@3.23.8)): dependencies: '@langchain/core': 0.3.18(openai@4.61.1(zod@3.23.8)) '@langchain/openai': 0.3.2(@langchain/core@0.3.18(openai@4.61.1(zod@3.23.8))) @@ -8027,6 +8395,7 @@ snapshots: optionalDependencies: axios: 1.7.7 cheerio: 1.0.0 + handlebars: 4.7.8 transitivePeerDependencies: - encoding - openai @@ -8053,6 +8422,8 @@ snapshots: lines-and-columns@1.2.4: {} + livereload-js@4.0.2: {} + locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -8177,6 +8548,9 @@ snapshots: mimic-fn@2.1.0: {} + mimic-response@3.1.0: + optional: true + min-indent@1.0.1: {} minimatch@10.0.1: @@ -8209,6 +8583,9 @@ snapshots: minipass@7.1.2: {} + mkdirp-classic@0.5.3: + optional: true + mock-fs@5.4.1: {} mri@1.2.0: {} @@ -8231,10 +8608,15 @@ snapshots: nanoid@3.3.7: {} + napi-build-utils@1.0.2: + optional: true + natural-compare@1.4.0: {} negotiator@0.6.3: {} + neo-async@2.6.2: {} + nock@13.5.6: dependencies: debug: 4.3.7(supports-color@8.1.1) @@ -8243,6 +8625,11 @@ snapshots: transitivePeerDependencies: - supports-color + node-abi@3.71.0: + dependencies: + semver: 7.6.3 + optional: true + node-cache@5.1.2: dependencies: clone: 2.1.2 @@ -8265,6 +8652,8 @@ snapshots: node-releases@2.0.14: {} + node-watch@0.7.4: {} + normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 @@ -8540,6 +8929,8 @@ snapshots: dependencies: irregular-plurals: 3.5.0 + pluralize@8.0.0: {} + possible-typed-array-names@1.0.0: {} postcss@8.4.47: @@ -8548,6 +8939,22 @@ snapshots: picocolors: 1.1.0 source-map-js: 1.2.1 + prebuild-install@7.1.2: + dependencies: + detect-libc: 2.0.3 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.71.0 + pump: 3.0.2 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + optional: true + prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.0: @@ -8585,6 +8992,12 @@ snapshots: pseudomap@1.0.2: {} + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + optional: true + punycode@2.3.1: {} pure-rand@6.1.0: {} @@ -8606,6 +9019,14 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + optional: true + react-is@18.3.1: {} read-pkg-up@7.0.1: @@ -8729,6 +9150,8 @@ snapshots: safer-buffer@2.1.2: {} + sax@1.4.1: {} + semver-compare@1.0.0: {} semver@5.7.2: {} @@ -8831,6 +9254,16 @@ snapshots: signal-exit@4.1.0: {} + simple-concat@1.0.1: + optional: true + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + optional: true + simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 @@ -8940,6 +9373,9 @@ snapshots: dependencies: min-indent: 1.0.1 + strip-json-comments@2.0.1: + optional: true + strip-json-comments@3.1.1: {} supports-color@5.5.0: @@ -8984,6 +9420,23 @@ snapshots: tapable@2.2.1: {} + tar-fs@2.1.1: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.2 + tar-stream: 2.2.0 + optional: true + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + optional: true + term-size@2.2.1: {} test-exclude@6.0.0: @@ -9128,6 +9581,11 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + optional: true + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -9192,6 +9650,9 @@ snapshots: typescript@5.6.3: {} + uglify-js@3.19.3: + optional: true + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.7 @@ -9358,6 +9819,12 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 + ws@8.18.0: {} + + xml-js@1.6.11: + dependencies: + sax: 1.4.1 + xmlbuilder@15.1.1: {} y18n@5.0.8: {} diff --git a/sample-cap/.cdsrc.json b/sample-cap/.cdsrc.json new file mode 100644 index 00000000..59f2f3e9 --- /dev/null +++ b/sample-cap/.cdsrc.json @@ -0,0 +1,5 @@ +{ + "build": { + "target": "dist" + } +} diff --git a/sample-cap/README.md b/sample-cap/README.md index 0746a213..fb064518 100644 --- a/sample-cap/README.md +++ b/sample-cap/README.md @@ -5,17 +5,15 @@ Sample CAP application written in TypeScript to demonstrate the usage of SAP Clo ### Table of Contents - [Local Deployment](#local-deployment) +- [Remote Deployment](#remote-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`. +1. Install dependencies using `pnpm install`. 2. Login using `cf login -a API_ENDPOINT -o ORG -s SPACE`. @@ -31,15 +29,32 @@ Sample CAP application written in TypeScript to demonstrate the usage of SAP Clo pnpm watch:hybrid ``` +## Remote Deployment + +> [!WARNING] +> All CDS services are marked with `@requires: 'any'` and are publicly accessible in order to simplify the deployment process. +> Apply proper authentication mechanisms to avoid unauthorized access. + +1. Install dependencies using `pnpm install`. +2. Transpile the CAP application using `pnpm build`. + +3. Modify `services` and `routes` values in `manifest.yml`. + +4. Login using `cf login -a API_ENDPOINT -o ORG -s SPACE`. + +5. Deploy the application using `cf push`. + ## Usage +For local deployment, set `SAMPLE_CAP_HOST` as `http://localhost:4004`. For remote deployment, set `SAMPLE_CAP_HOST` as the `route` value defined in `manifest.yaml`. + ### `ai-api` #### Deployment API ```bash -curl --request GET \ - --url 'http://localhost:4004/odata/v4/ai-api/getDeployments' +curl --request POST \ + --url $SAMPLE_CAP_HOST/odata/v4/ai-api/getDeployments ``` ### `foundation-models` @@ -48,7 +63,7 @@ curl --request GET \ ```bash curl --request POST \ - --url 'http://localhost:4004/odata/v4/azure-openai/chatCompletion' \ + --url $SAMPLE_CAP_HOST/odata/v4/azure-openai/chatCompletion \ --header 'Content-Type: application/json' \ --data '{ "messages": [ @@ -66,7 +81,7 @@ curl --request POST \ ```bash curl --request POST \ - --url 'http://localhost:4004/odata/v4/orchestration/chatCompletion' \ + --url $SAMPLE_CAP_HOST/odata/v4/orchestration/chatCompletion \ --header 'Content-Type: application/json' \ --data '{ "template": [ diff --git a/sample-cap/jsconfig.json b/sample-cap/jsconfig.json deleted file mode 100644 index e74af340..00000000 --- a/sample-cap/jsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "compilerOptions": { - "moduleResolution": "nodenext", - "paths": { - "#cds-models/*": ["./@cds-models/*"] - } - } -} diff --git a/sample-cap/manifest.yml b/sample-cap/manifest.yml new file mode 100644 index 00000000..a0959940 --- /dev/null +++ b/sample-cap/manifest.yml @@ -0,0 +1,11 @@ +applications: + - name: ai-sdk-js-sample-cap + path: ./dist/srv + memory: 256M + buildpacks: + - nodejs_buildpack + services: + - default_aicore + - default_xsuaa + routes: + - route: 'ai-sdk-js-sample-cap.cfapps.eu12-001.hana.ondemand.com' diff --git a/sample-cap/package.json b/sample-cap/package.json index a2e5038d..2c0039e5 100644 --- a/sample-cap/package.json +++ b/sample-cap/package.json @@ -6,16 +6,34 @@ "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" + "@sap-ai-sdk/ai-api": "^1", + "@sap-ai-sdk/foundation-models": "^1", + "@sap-ai-sdk/orchestration": "^1", + "express": "^4", + "@sap/xssec": "^4", + "@sap/cds": "^8.4.1" + }, + "devDependencies": { + "@sap/cds-dk": "^8.4.1" }, "scripts": { + "prebuild": "rm -rf dist", + "build": "pnpm cds-build && pnpm compile && pnpm cleanup", + "cds-build": "cds build --production", + "compile": "tsc", + "cleanup": "rm -f ./dist/srv/srv/**/*.ts ./dist/srv/package-lock.json", + "postbuild": "pushd ./dist/srv && npm i --package-lock-only && popd", + "start": "npx cds-serve", "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" + }, + "cds": { + "requires": { + "[production]": { + "auth": "xsuaa" + } + } } } diff --git a/sample-cap/srv/ai-api/ai-api-service.cds b/sample-cap/srv/ai-api/ai-api-service.cds index 3d7726df..75cc79e0 100644 --- a/sample-cap/srv/ai-api/ai-api-service.cds +++ b/sample-cap/srv/ai-api/ai-api-service.cds @@ -1,4 +1,5 @@ @path: 'ai-api' +@requires: 'any' service AiApiService { action getDeployments() returns String; } diff --git a/sample-cap/srv/foundation-models/azure-openai-service.cds b/sample-cap/srv/foundation-models/azure-openai-service.cds index 9609cbea..e7700a89 100644 --- a/sample-cap/srv/foundation-models/azure-openai-service.cds +++ b/sample-cap/srv/foundation-models/azure-openai-service.cds @@ -1,4 +1,5 @@ @path: 'azure-openai' +@requires: 'any' service AzureOpenAiService { action chatCompletion(messages : array of Message) returns String; } diff --git a/sample-cap/srv/foundation-models/azure-openai-service.ts b/sample-cap/srv/foundation-models/azure-openai-service.ts index 81ec3ef2..28a3d909 100644 --- a/sample-cap/srv/foundation-models/azure-openai-service.ts +++ b/sample-cap/srv/foundation-models/azure-openai-service.ts @@ -1,8 +1,7 @@ -import { Request } from '@sap/cds'; import { AzureOpenAiChatClient } from '@sap-ai-sdk/foundation-models'; export default class AzureOpenAiService { - async chatCompletion(req: Request) { + async chatCompletion(req: any) { const { messages } = req.data; const response = await new AzureOpenAiChatClient('gpt-35-turbo').run({ messages diff --git a/sample-cap/srv/orchestration/orchestration-service.cds b/sample-cap/srv/orchestration/orchestration-service.cds index 6b4afdb1..be776aa2 100644 --- a/sample-cap/srv/orchestration/orchestration-service.cds +++ b/sample-cap/srv/orchestration/orchestration-service.cds @@ -1,4 +1,5 @@ @path: 'orchestration' +@requires: 'any' service OrchestrationService { action chatCompletion(template : array of Template, inputParams : array of InputParam) returns String; } diff --git a/sample-cap/srv/orchestration/orchestration-service.ts b/sample-cap/srv/orchestration/orchestration-service.ts index d8ddb7f6..6ab9af4a 100644 --- a/sample-cap/srv/orchestration/orchestration-service.ts +++ b/sample-cap/srv/orchestration/orchestration-service.ts @@ -1,8 +1,7 @@ -import { Request } from '@sap/cds'; import { OrchestrationClient } from '@sap-ai-sdk/orchestration'; export default class OrchestrationService { - async chatCompletion(req: Request) { + async chatCompletion(req: any) { const { template, inputParams } = req.data; const llm = { model_name: 'gpt-4-32k', diff --git a/sample-cap/tsconfig.json b/sample-cap/tsconfig.json new file mode 100644 index 00000000..a724c5b5 --- /dev/null +++ b/sample-cap/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": "./srv", + "outDir": "./dist/srv/srv", + "tsBuildInfoFile": "./dist/.tsbuildinfo", + "composite": true + }, + "include": ["srv/**/*.ts"], + "exclude": ["dist/**/*", "**/*.test.ts", "node_modules/**/*"] +} diff --git a/sample-cap/xs-security.json b/sample-cap/xs-security.json new file mode 100644 index 00000000..c666101c --- /dev/null +++ b/sample-cap/xs-security.json @@ -0,0 +1,5 @@ +{ + "scopes": [], + "attributes": [], + "role-templates": [] +} diff --git a/styles/config/vocabularies/SAP/accept.txt b/styles/config/vocabularies/SAP/accept.txt index a46527cb..35b4cc00 100644 --- a/styles/config/vocabularies/SAP/accept.txt +++ b/styles/config/vocabularies/SAP/accept.txt @@ -134,4 +134,6 @@ Istio [Mm]egaclite seldomly -lookups \ No newline at end of file +lookups + +CDS