From b65f85ec3f157222a907237a36d68983375d240a Mon Sep 17 00:00:00 2001 From: Himanshu Dixit Date: Mon, 23 Dec 2024 17:31:15 +0530 Subject: [PATCH 1/7] feat: add trigger list support (#1074) --- js/package.dist.json | 21 +- js/package.json | 48 +- js/pnpm-lock.yaml | 951 ++--------------------------- js/src/index.ts | 3 +- js/src/sdk/models/triggers.spec.ts | 2 +- js/src/sdk/models/triggers.ts | 33 +- 6 files changed, 133 insertions(+), 925 deletions(-) diff --git a/js/package.dist.json b/js/package.dist.json index 74864d488dd..e457c948056 100644 --- a/js/package.dist.json +++ b/js/package.dist.json @@ -12,8 +12,27 @@ "keywords": [], "author": "Utkarsh Dixit ", "license": "ISC", + "peerDependencies": { + "ai": "^3.2.22", + "@ai-sdk/openai": "^0.0.36", + "@cloudflare/workers-types": "^4.20240718.0", + "@langchain/core": "^0.2.18", + "@langchain/openai": "^0.2.5", + "langchain": "^0.2.11", + "openai": "^4.50.0" + }, "dependencies": { - "pusher-js": "8.4.0-rc2" + "chalk": "^4", + "winston": "^3.13.1", + "zod": "^3.23.8", + "uuid": "^10.0.0", + "zod-to-json-schema": "^3.23.2", + "axios": "^1.7.2", + "pusher-js": "8.4.0-rc2", + "commander": "^12.1.0", + "cli-progress": "^3.12.0", + "inquirer": "^10.2.2", + "open": "^8.4.0" }, "devDependencies": {}, "publishConfig": { diff --git a/js/package.json b/js/package.json index b1ffc0c1b2c..cd9a536076c 100644 --- a/js/package.json +++ b/js/package.json @@ -27,22 +27,34 @@ "keywords": [], "author": "Utkarsh Dixit ", "license": "ISC", + "peerDependencies": { + "ai": "^3.2.22", + "@ai-sdk/openai": "^0.0.36", + "@cloudflare/workers-types": "^4.20240718.0", + "@langchain/core": "^0.2.18", + "@langchain/openai": "^0.2.5", + "langchain": "^0.2.11", + "openai": "^4.50.0" + }, "dependencies": { + "chalk": "^4", + "winston": "^3.13.1", + "zod": "^3.23.8", + "uuid": "^10.0.0", + "zod-to-json-schema": "^3.23.2", + "axios": "^1.7.2", + "pusher-js": "8.4.0-rc2", + "commander": "^12.1.0", + "cli-progress": "^3.12.0", + "inquirer": "^10.2.2", + "open": "^8.4.0" }, "devDependencies": { - "pusher-js": "8.4.0-rc2", - "@ai-sdk/openai": "^0.0.36", - "@cloudflare/workers-types": "^4.20240718.0", - "@e2b/code-interpreter": "^0.0.8", - "@e2b/sdk": "^0.16.1", "@eslint/js": "^9.16.0", "@faker-js/faker": "^8.4.1", "@hey-api/client-axios": "^0.2.3", "@hey-api/openapi-ts": "^0.52.4", - "@hono/node-server": "^1.12.0", "@jest/globals": "^29.7.0", - "@langchain/core": "^0.2.18", - "@langchain/openai": "^0.2.5", "@rollup/plugin-commonjs": "^25.0.8", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.2.3", @@ -57,25 +69,12 @@ "@types/node": "^20.14.2", "@types/uuid": "^10.0.0", "@types/winston": "^2.4.4", - "ai": "^3.2.22", - "axios": "^1.7.2", "axios-mock-adapter": "^2.1.0", - "chalk": "^4", - "cli-progress": "^3.12.0", - "colors": "^1.4.0", - "commander": "^12.1.0", - "dockerode": "^4.0.2", - "e2b": "^0.16.1", "enumify": "^2.0.0", "eslint": "^9.16.0", "globals": "^15.13.0", - "hono": "^4.4.11", - "inquirer": "^10.2.2", "jest": "^29.7.0", "jest-html-reporters": "^3.1.7", - "langchain": "^0.2.11", - "open": "^8.4.0", - "openai": "^4.50.0", "prettier": "^3.4.2", "prettier-plugin-organize-imports": "^4.1.0", "regenerator-runtime": "^0.14.1", @@ -90,12 +89,7 @@ "tslib": "^2.6.2", "typedoc": "^0.25.13", "typescript": "^5.4.5", - "typescript-eslint": "^8.17.0", - "uuid": "^10.0.0", - "winston": "^3.13.1", - "wrangler": "^3.63.1", - "zod": "^3.23.8", - "zod-to-json-schema": "^3.23.2" + "typescript-eslint": "^8.17.0" }, "publishConfig": { "access": "public" diff --git a/js/pnpm-lock.yaml b/js/pnpm-lock.yaml index 88d5112a17e..0a4c5589760 100644 --- a/js/pnpm-lock.yaml +++ b/js/pnpm-lock.yaml @@ -7,19 +7,62 @@ settings: importers: .: - devDependencies: + dependencies: '@ai-sdk/openai': specifier: ^0.0.36 version: 0.0.36(zod@3.23.8) '@cloudflare/workers-types': specifier: ^4.20240718.0 version: 4.20240806.0 - '@e2b/code-interpreter': - specifier: ^0.0.8 - version: 0.0.8(bufferutil@4.0.8)(utf-8-validate@6.0.4) - '@e2b/sdk': - specifier: ^0.16.1 - version: 0.16.1 + '@langchain/core': + specifier: ^0.2.18 + version: 0.2.21(langchain@0.2.13(axios@1.7.2)(handlebars@4.7.8)(ignore@5.3.2)(openai@4.51.0)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(openai@4.51.0) + '@langchain/openai': + specifier: ^0.2.5 + version: 0.2.6(langchain@0.2.13(axios@1.7.2)(handlebars@4.7.8)(ignore@5.3.2)(openai@4.51.0)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))) + ai: + specifier: ^3.2.22 + version: 3.3.3(openai@4.51.0)(react@18.3.1)(sswr@2.1.0(svelte@4.2.18))(svelte@4.2.18)(vue@3.4.36(typescript@5.4.5))(zod@3.23.8) + axios: + specifier: ^1.7.2 + version: 1.7.2 + chalk: + specifier: ^4 + version: 4.1.2 + cli-progress: + specifier: ^3.12.0 + version: 3.12.0 + commander: + specifier: ^12.1.0 + version: 12.1.0 + inquirer: + specifier: ^10.2.2 + version: 10.2.2 + langchain: + specifier: ^0.2.11 + version: 0.2.13(axios@1.7.2)(handlebars@4.7.8)(ignore@5.3.2)(openai@4.51.0)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + open: + specifier: ^8.4.0 + version: 8.4.2 + openai: + specifier: ^4.50.0 + version: 4.51.0 + pusher-js: + specifier: 8.4.0-rc2 + version: 8.4.0-rc2 + uuid: + specifier: ^10.0.0 + version: 10.0.0 + winston: + specifier: ^3.13.1 + version: 3.14.0 + zod: + specifier: ^3.23.8 + version: 3.23.8 + zod-to-json-schema: + specifier: ^3.23.2 + version: 3.23.2(zod@3.23.8) + devDependencies: '@eslint/js': specifier: ^9.16.0 version: 9.16.0 @@ -32,18 +75,9 @@ importers: '@hey-api/openapi-ts': specifier: ^0.52.4 version: 0.52.5(typescript@5.4.5) - '@hono/node-server': - specifier: ^1.12.0 - version: 1.12.0 '@jest/globals': specifier: ^29.7.0 version: 29.7.0 - '@langchain/core': - specifier: ^0.2.18 - version: 0.2.21(langchain@0.2.13(axios@1.7.2)(handlebars@4.7.8)(ignore@5.3.2)(openai@4.51.0)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(openai@4.51.0) - '@langchain/openai': - specifier: ^0.2.5 - version: 0.2.6(langchain@0.2.13(axios@1.7.2)(handlebars@4.7.8)(ignore@5.3.2)(openai@4.51.0)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))) '@rollup/plugin-commonjs': specifier: ^25.0.8 version: 25.0.8(rollup@4.28.1) @@ -86,33 +120,9 @@ importers: '@types/winston': specifier: ^2.4.4 version: 2.4.4 - ai: - specifier: ^3.2.22 - version: 3.3.3(openai@4.51.0)(react@18.3.1)(sswr@2.1.0(svelte@4.2.18))(svelte@4.2.18)(vue@3.4.36(typescript@5.4.5))(zod@3.23.8) - axios: - specifier: ^1.7.2 - version: 1.7.2 axios-mock-adapter: specifier: ^2.1.0 version: 2.1.0(axios@1.7.2) - chalk: - specifier: ^4 - version: 4.1.2 - cli-progress: - specifier: ^3.12.0 - version: 3.12.0 - colors: - specifier: ^1.4.0 - version: 1.4.0 - commander: - specifier: ^12.1.0 - version: 12.1.0 - dockerode: - specifier: ^4.0.2 - version: 4.0.2 - e2b: - specifier: ^0.16.1 - version: 0.16.1 enumify: specifier: ^2.0.0 version: 2.0.0 @@ -122,36 +132,18 @@ importers: globals: specifier: ^15.13.0 version: 15.13.0 - hono: - specifier: ^4.4.11 - version: 4.4.12 - inquirer: - specifier: ^10.2.2 - version: 10.2.2 jest: specifier: ^29.7.0 version: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@20.14.2)(typescript@5.4.5)) jest-html-reporters: specifier: ^3.1.7 version: 3.1.7 - langchain: - specifier: ^0.2.11 - version: 0.2.13(axios@1.7.2)(handlebars@4.7.8)(ignore@5.3.2)(openai@4.51.0)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - open: - specifier: ^8.4.0 - version: 8.4.2 - openai: - specifier: ^4.50.0 - version: 4.51.0 prettier: specifier: ^3.4.2 version: 3.4.2 prettier-plugin-organize-imports: specifier: ^4.1.0 version: 4.1.0(prettier@3.4.2)(typescript@5.4.5) - pusher-js: - specifier: 8.4.0-rc2 - version: 8.4.0-rc2 regenerator-runtime: specifier: ^0.14.1 version: 0.14.1 @@ -172,10 +164,10 @@ importers: version: 7.0.2(rollup@4.28.1) ts-jest: specifier: ^29.1.2 - version: 29.2.4(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(esbuild@0.17.19)(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5) + version: 29.2.4(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5) ts-loader: specifier: ^9.5.1 - version: 9.5.1(typescript@5.4.5)(webpack@5.92.0(@swc/core@1.7.10(@swc/helpers@0.5.12))(esbuild@0.17.19)) + version: 9.5.1(typescript@5.4.5)(webpack@5.92.0(@swc/core@1.7.10(@swc/helpers@0.5.12))) ts-node: specifier: ^10.9.2 version: 10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@20.14.2)(typescript@5.4.5) @@ -191,21 +183,6 @@ importers: typescript-eslint: specifier: ^8.17.0 version: 8.17.0(eslint@9.16.0(jiti@1.21.6))(typescript@5.4.5) - uuid: - specifier: ^10.0.0 - version: 10.0.0 - winston: - specifier: ^3.13.1 - version: 3.14.0 - wrangler: - specifier: ^3.63.1 - version: 3.63.1(@cloudflare/workers-types@4.20240806.0)(bufferutil@4.0.8)(utf-8-validate@6.0.4) - zod: - specifier: ^3.23.8 - version: 3.23.8 - zod-to-json-schema: - specifier: ^3.23.2 - version: 3.23.2(zod@3.23.8) packages: @@ -463,46 +440,9 @@ packages: resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} engines: {node: '>=6.9.0'} - '@balena/dockerignore@1.0.2': - resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} - '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@cloudflare/kv-asset-handler@0.3.4': - resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} - engines: {node: '>=16.13'} - - '@cloudflare/workerd-darwin-64@1.20240701.0': - resolution: {integrity: sha512-XAZa4ZP+qyTn6JQQACCPH09hGZXP2lTnWKkmg5mPwT8EyRzCKLkczAf98vPP5bq7JZD/zORdFWRY0dOTap8zTQ==} - engines: {node: '>=16'} - cpu: [x64] - os: [darwin] - - '@cloudflare/workerd-darwin-arm64@1.20240701.0': - resolution: {integrity: sha512-w80ZVAgfH4UwTz7fXZtk7KmS2FzlXniuQm4ku4+cIgRTilBAuKqjpOjwUCbx5g13Gqcm9NuiHce+IDGtobRTIQ==} - engines: {node: '>=16'} - cpu: [arm64] - os: [darwin] - - '@cloudflare/workerd-linux-64@1.20240701.0': - resolution: {integrity: sha512-UWLr/Anxwwe/25nGv451MNd2jhREmPt/ws17DJJqTLAx6JxwGWA15MeitAIzl0dbxRFAJa+0+R8ag2WR3F/D6g==} - engines: {node: '>=16'} - cpu: [x64] - os: [linux] - - '@cloudflare/workerd-linux-arm64@1.20240701.0': - resolution: {integrity: sha512-3kCnF9kYgov1ggpuWbgpXt4stPOIYtVmPCa7MO2xhhA0TWP6JDUHRUOsnmIgKrvDjXuXqlK16cdg3v+EWsaPJg==} - engines: {node: '>=16'} - cpu: [arm64] - os: [linux] - - '@cloudflare/workerd-windows-64@1.20240701.0': - resolution: {integrity: sha512-6IPGITRAeS67j3BH1rN4iwYWDt47SqJG7KlZJ5bB4UaNAia4mvMBSy/p2p4vA89bbXoDRjMtEvRu7Robu6O7hQ==} - engines: {node: '>=16'} - cpu: [x64] - os: [win32] - '@cloudflare/workers-types@4.20240806.0': resolution: {integrity: sha512-8lvgrwXGTZEBsUQJ8YUnMk72Anh9omwr6fqWLw/EwVgcw1nQxs/bfdadBEbdP48l9fWXjE4E5XERLUrrFuEpsg==} @@ -517,157 +457,6 @@ packages: '@dabh/diagnostics@2.0.3': resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} - '@e2b/code-interpreter@0.0.8': - resolution: {integrity: sha512-cKDFY9js9l3MfL71x0IDvaz0mAhvHIurVFnimtFRXNzuV0TxhuFqsauKabet0TMOrcDF3H3trC7pct6mNgRYTA==} - engines: {node: '>=18'} - - '@e2b/sdk@0.16.1': - resolution: {integrity: sha512-7D8NkogBlDAh/zO3LnsZR5duPToriAkfoPgu/jq2HinUF8hgzPeOyBe3OX386CyltAttEI+q12qBegv++NVPgg==} - engines: {node: '>=18'} - deprecated: 'The package @e2b/sdk has been renamed to e2b. Please uninstall the old one and install the new by running following command: npm uninstall @e2b/sdk && npm install e2b' - - '@esbuild-plugins/node-globals-polyfill@0.2.3': - resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==} - peerDependencies: - esbuild: '*' - - '@esbuild-plugins/node-modules-polyfill@0.2.2': - resolution: {integrity: sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==} - peerDependencies: - esbuild: '*' - - '@esbuild/android-arm64@0.17.19': - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.17.19': - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.17.19': - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.17.19': - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.17.19': - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.17.19': - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.17.19': - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.17.19': - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.17.19': - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.17.19': - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.17.19': - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.17.19': - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.17.19': - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.17.19': - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.17.19': - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.17.19': - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.17.19': - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.17.19': - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.17.19': - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.17.19': - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.17.19': - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.17.19': - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - '@eslint-community/eslint-utils@4.4.1': resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -706,10 +495,6 @@ packages: resolution: {integrity: sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - '@hey-api/client-axios@0.2.3': resolution: {integrity: sha512-v1BoTozp8LQ9JawZF9atXdmaBdQEvoIf39pIYf/0WSdkZSv0rUJDVXxNWHnDDs+S1/6pOfbOhM/0VXD5YJqr8w==} peerDependencies: @@ -722,10 +507,6 @@ packages: peerDependencies: typescript: ^5.x - '@hono/node-server@1.12.0': - resolution: {integrity: sha512-e6oHjNiErRxsZRZBmc2KucuvY3btlO/XPncIpP2X75bRdTilF9GLjm3NHvKKunpJbbJJj31/FoPTksTf8djAVw==} - engines: {node: '>=18.14.1'} - '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -1250,9 +1031,6 @@ packages: '@types/node-fetch@2.6.11': resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} - '@types/node-forge@1.3.11': - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@18.19.34': resolution: {integrity: sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g==} @@ -1538,12 +1316,6 @@ packages: aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - as-table@1.0.55: - resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} - - asn1@0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - async@3.2.5: resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} @@ -1593,19 +1365,10 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - bcrypt-pbkdf@1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - blake3-wasm@2.1.5: - resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} - brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -1631,17 +1394,10 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - bufferutil@4.0.8: resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} engines: {node: '>=6.14.2'} - buildcheck@0.0.6: - resolution: {integrity: sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==} - engines: {node: '>=10.0.0'} - c12@1.11.1: resolution: {integrity: sha512-KDU0TvSvVdaYcQKQ6iPHATGz/7p/KiVjPg4vQrB6Jg/wX9R0yl5RZxWm9IoZqaIHD2+6PZd81+KMGwRr/lRIUg==} peerDependencies: @@ -1665,9 +1421,6 @@ packages: caniuse-lite@1.0.30001633: resolution: {integrity: sha512-6sT0yf/z5jqf8tISAgpJDrmwOpLsrpnyCdD/lOZKvKkkJK4Dn0X5i7KF7THEZhOq+30bmhwBlNEaqPUiHiKtZg==} - capnp-ts@0.7.0: - resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==} - chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -1691,9 +1444,6 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} @@ -1798,14 +1548,6 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - - cpu-features@0.0.10: - resolution: {integrity: sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==} - engines: {node: '>=10.0.0'} - create-jest@29.7.0: resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1829,12 +1571,6 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - data-uri-to-buffer@2.0.2: - resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} - - date-fns@3.6.0: - resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} - debug@4.3.5: resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} @@ -1896,22 +1632,10 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - docker-modem@5.0.3: - resolution: {integrity: sha512-89zhop5YVhcPEt5FpUFGr3cDyceGhq/F9J+ZndQ4KfqNvfbJpPMfgeixFgUj5OjCYAboElqODxY5Z1EBsSa6sg==} - engines: {node: '>= 8.0'} - - dockerode@4.0.2: - resolution: {integrity: sha512-9wM1BVpVMFr2Pw3eJNXrYYt6DT9k0xMcsSCjtPvyQ+xa1iPg/Mo3T/gUcwI0B2cczqCeCYRPF8yFYDwtFXT0+w==} - engines: {node: '>= 8.0'} - dotenv@16.4.5: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} - e2b@0.16.1: - resolution: {integrity: sha512-2L1R/REEB+EezD4Q4MmcXXNATjvCYov2lv/69+PY6V95+wl1PZblIMTYAe7USxX6P6sqANxNs+kXqZr6RvXkSw==} - engines: {node: '>=18'} - ejs@3.1.10: resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} engines: {node: '>=0.10.0'} @@ -1930,9 +1654,6 @@ packages: enabled@2.0.0: resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.17.0: resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} engines: {node: '>=10.13.0'} @@ -1950,11 +1671,6 @@ packages: es-module-lexer@1.5.3: resolution: {integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==} - esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} - engines: {node: '>=12'} - hasBin: true - escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -2022,9 +1738,6 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - estree-walker@0.6.1: - resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} - estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -2058,10 +1771,6 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - exit-hook@2.2.1: - resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} - engines: {node: '>=6'} - exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} @@ -2145,9 +1854,6 @@ packages: resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} engines: {node: '>= 12.20'} - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -2179,9 +1885,6 @@ packages: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} - get-source@2.0.12: - resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} - get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -2249,10 +1952,6 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hono@4.4.12: - resolution: {integrity: sha512-Lx4Vwbws0IqFfXIVYychxUW0A4EE+7dn/jsjVeM34OXSA2Xs45MkDDP14Mzznp7LlDemUNHQG2uv2N5jQld0hA==} - engines: {node: '>=16.0.0'} - html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -2271,9 +1970,6 @@ packages: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -2368,11 +2064,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isomorphic-ws@5.0.0: - resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} - peerDependencies: - ws: '*' - istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -2853,9 +2544,6 @@ packages: lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} - magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} @@ -2896,11 +2584,6 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -2909,11 +2592,6 @@ packages: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - miniflare@3.20240701.0: - resolution: {integrity: sha512-m9+I+7JNyqDGftCMKp9cK9pCZkK72hAL2mM9IWwhct+ZmucLBA8Uu6+rHQqA5iod86cpwOkrB2PrPA3wx9YNgw==} - engines: {node: '>=16.13'} - hasBin: true - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2940,9 +2618,6 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -2965,9 +2640,6 @@ packages: resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - nan@2.20.0: - resolution: {integrity: sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==} - nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -3000,10 +2672,6 @@ packages: encoding: optional: true - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - node-gyp-build@4.8.1: resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} hasBin: true @@ -3068,10 +2736,6 @@ packages: openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} - openapi-typescript-fetch@1.1.3: - resolution: {integrity: sha512-smLZPck4OkKMNExcw8jMgrMOGgVGx2N/s6DbKL2ftNl77g5HfoGpZGFy79RBzU/EkaO0OZpwBnslfdBfh7ZcWg==} - engines: {node: '>= 12.0.0', npm: '>= 7.0.0'} - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -3124,9 +2788,6 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -3154,9 +2815,6 @@ packages: resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} engines: {node: '>=0.10.0'} - path-to-regexp@6.2.2: - resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} - pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -3188,9 +2846,6 @@ packages: pkg-types@1.1.1: resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} - platform@1.3.6: - resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} - postcss@8.4.41: resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} engines: {node: ^10 || ^12 || >=14} @@ -3218,9 +2873,6 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - printable-characters@1.0.42: - resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} - prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -3228,9 +2880,6 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -3314,22 +2963,12 @@ packages: rollup-plugin-ignore@1.0.10: resolution: {integrity: sha512-VsbnfwwaTv2Dxl2onubetX/3RnSnplNnjdix0hvF8y2YpqdzlZrjIq6zkcuVJ08XysS8zqW3gt3ORBndFDgsrg==} - rollup-plugin-inject@3.0.2: - resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. - - rollup-plugin-node-polyfills@0.2.1: - resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==} - rollup-plugin-terser@7.0.2: resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser peerDependencies: rollup: ^2.0.0 - rollup-pluginutils@2.8.2: - resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - rollup@4.28.1: resolution: {integrity: sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -3362,10 +3001,6 @@ packages: secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} - semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -3432,20 +3067,9 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - - split-ca@1.0.1: - resolution: {integrity: sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==} - sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - ssh2@1.15.0: - resolution: {integrity: sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==} - engines: {node: '>=10.16.0'} - sswr@2.1.0: resolution: {integrity: sha512-Cqc355SYlTAaUt8iDPaC/4DPPXK925PePLMxyBKuWd5kKc5mwsG3nT9+Mq2tyguL5s7b4Jg+IRMpTRsNTAfpSQ==} peerDependencies: @@ -3458,13 +3082,6 @@ packages: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} - stacktracey@2.1.8: - resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} - - stoppable@1.1.0: - resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} - engines: {node: '>=4', npm: '>=6'} - string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -3533,13 +3150,6 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - tar-fs@2.0.1: - resolution: {integrity: sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} @@ -3648,9 +3258,6 @@ packages: tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - tweetnacl@0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - tweetnacl@1.0.3: resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} @@ -3702,13 +3309,6 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici@5.28.4: - resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} - engines: {node: '>=14.0'} - - unenv-nightly@1.10.0-1717606461.a117952: - resolution: {integrity: sha512-u3TfBX02WzbHTpaEfWEKwDijDSFAHcgXkayUZ+MVDrjhLFvgAJzFGTSTmwlEhwWi2exyRQey23ah9wELMM6etg==} - universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -3818,21 +3418,6 @@ packages: wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - workerd@1.20240701.0: - resolution: {integrity: sha512-qSgNVqauqzNCij9MaJLF2c2ko3AnFioVSIxMSryGbRK+LvtGr9BKBt6JOxCb24DoJASoJDx3pe3DJHBVydUiBg==} - engines: {node: '>=16'} - hasBin: true - - wrangler@3.63.1: - resolution: {integrity: sha512-fxMPNEyDc9pZNtQOuYqRikzv6lL5eP4S1zv7L/kw24uu1cCEmJ39j8bfJGzrAEqKDNsiFXVjEka0RjlpgEVWPg==} - engines: {node: '>=16.17.0'} - hasBin: true - peerDependencies: - '@cloudflare/workers-types': ^4.20240620.0 - peerDependenciesMeta: - '@cloudflare/workers-types': - optional: true - wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -3860,9 +3445,6 @@ packages: utf-8-validate: optional: true - xxhash-wasm@1.0.2: - resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -3898,9 +3480,6 @@ packages: resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} engines: {node: '>=18'} - youch@3.3.3: - resolution: {integrity: sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA==} - zod-to-json-schema@3.22.5: resolution: {integrity: sha512-+akaPo6a0zpVCCseDed504KBJUQpEW5QZw7RMneNmKw+fGaML1Z9tUNLnHHAC8x6dzVRO1eB2oEMyZRnuBZg7Q==} peerDependencies: @@ -4202,29 +3781,8 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - '@balena/dockerignore@1.0.2': {} - '@bcoe/v8-coverage@0.2.3': {} - '@cloudflare/kv-asset-handler@0.3.4': - dependencies: - mime: 3.0.0 - - '@cloudflare/workerd-darwin-64@1.20240701.0': - optional: true - - '@cloudflare/workerd-darwin-arm64@1.20240701.0': - optional: true - - '@cloudflare/workerd-linux-64@1.20240701.0': - optional: true - - '@cloudflare/workerd-linux-arm64@1.20240701.0': - optional: true - - '@cloudflare/workerd-windows-64@1.20240701.0': - optional: true - '@cloudflare/workers-types@4.20240806.0': {} '@colors/colors@1.6.0': {} @@ -4239,103 +3797,6 @@ snapshots: enabled: 2.0.0 kuler: 2.0.0 - '@e2b/code-interpreter@0.0.8(bufferutil@4.0.8)(utf-8-validate@6.0.4)': - dependencies: - e2b: 0.16.1 - isomorphic-ws: 5.0.0(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@e2b/sdk@0.16.1': - dependencies: - isomorphic-ws: 5.0.0(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - normalize-path: 3.0.0 - openapi-typescript-fetch: 1.1.3 - path-browserify: 1.0.1 - platform: 1.3.6 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 6.0.4 - - '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.17.19)': - dependencies: - esbuild: 0.17.19 - - '@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.17.19)': - dependencies: - esbuild: 0.17.19 - escape-string-regexp: 4.0.0 - rollup-plugin-node-polyfills: 0.2.1 - - '@esbuild/android-arm64@0.17.19': - optional: true - - '@esbuild/android-arm@0.17.19': - optional: true - - '@esbuild/android-x64@0.17.19': - optional: true - - '@esbuild/darwin-arm64@0.17.19': - optional: true - - '@esbuild/darwin-x64@0.17.19': - optional: true - - '@esbuild/freebsd-arm64@0.17.19': - optional: true - - '@esbuild/freebsd-x64@0.17.19': - optional: true - - '@esbuild/linux-arm64@0.17.19': - optional: true - - '@esbuild/linux-arm@0.17.19': - optional: true - - '@esbuild/linux-ia32@0.17.19': - optional: true - - '@esbuild/linux-loong64@0.17.19': - optional: true - - '@esbuild/linux-mips64el@0.17.19': - optional: true - - '@esbuild/linux-ppc64@0.17.19': - optional: true - - '@esbuild/linux-riscv64@0.17.19': - optional: true - - '@esbuild/linux-s390x@0.17.19': - optional: true - - '@esbuild/linux-x64@0.17.19': - optional: true - - '@esbuild/netbsd-x64@0.17.19': - optional: true - - '@esbuild/openbsd-x64@0.17.19': - optional: true - - '@esbuild/sunos-x64@0.17.19': - optional: true - - '@esbuild/win32-arm64@0.17.19': - optional: true - - '@esbuild/win32-ia32@0.17.19': - optional: true - - '@esbuild/win32-x64@0.17.19': - optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.16.0(jiti@1.21.6))': dependencies: eslint: 9.16.0(jiti@1.21.6) @@ -4379,8 +3840,6 @@ snapshots: '@faker-js/faker@8.4.1': {} - '@fastify/busboy@2.1.1': {} - '@hey-api/client-axios@0.2.3(axios@1.7.2)': dependencies: axios: 1.7.2 @@ -4395,8 +3854,6 @@ snapshots: transitivePeerDependencies: - magicast - '@hono/node-server@1.12.0': {} - '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.6': @@ -5046,10 +4503,6 @@ snapshots: '@types/node': 20.14.2 form-data: 4.0.0 - '@types/node-forge@1.3.11': - dependencies: - '@types/node': 20.14.2 - '@types/node@18.19.34': dependencies: undici-types: 5.26.5 @@ -5402,14 +4855,6 @@ snapshots: dependencies: dequal: 2.0.3 - as-table@1.0.55: - dependencies: - printable-characters: 1.0.42 - - asn1@0.2.6: - dependencies: - safer-buffer: 2.1.2 - async@3.2.5: {} asynckit@0.4.0: {} @@ -5489,20 +4934,8 @@ snapshots: base64-js@1.5.1: {} - bcrypt-pbkdf@1.0.2: - dependencies: - tweetnacl: 0.14.5 - binary-extensions@2.3.0: {} - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - - blake3-wasm@2.1.5: {} - brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -5533,19 +4966,11 @@ snapshots: buffer-from@1.1.2: {} - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - bufferutil@4.0.8: dependencies: node-gyp-build: 4.8.1 optional: true - buildcheck@0.0.6: - optional: true - c12@1.11.1: dependencies: chokidar: 3.6.0 @@ -5569,13 +4994,6 @@ snapshots: caniuse-lite@1.0.30001633: {} - capnp-ts@0.7.0: - dependencies: - debug: 4.3.5 - tslib: 2.6.3 - transitivePeerDependencies: - - supports-color - chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -5605,8 +5023,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chownr@1.1.4: {} - chownr@2.0.0: {} chrome-trace-event@1.0.4: {} @@ -5696,14 +5112,6 @@ snapshots: convert-source-map@2.0.0: {} - cookie@0.5.0: {} - - cpu-features@0.0.10: - dependencies: - buildcheck: 0.0.6 - nan: 2.20.0 - optional: true - create-jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@20.14.2)(typescript@5.4.5)): dependencies: '@jest/types': 29.6.3 @@ -5740,10 +5148,6 @@ snapshots: csstype@3.1.3: {} - data-uri-to-buffer@2.0.2: {} - - date-fns@3.6.0: {} - debug@4.3.5: dependencies: ms: 2.1.2 @@ -5774,37 +5178,8 @@ snapshots: diff@4.0.2: {} - docker-modem@5.0.3: - dependencies: - debug: 4.3.5 - readable-stream: 3.6.2 - split-ca: 1.0.1 - ssh2: 1.15.0 - transitivePeerDependencies: - - supports-color - - dockerode@4.0.2: - dependencies: - '@balena/dockerignore': 1.0.2 - docker-modem: 5.0.3 - tar-fs: 2.0.1 - transitivePeerDependencies: - - supports-color - dotenv@16.4.5: {} - e2b@0.16.1: - dependencies: - isomorphic-ws: 5.0.0(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - normalize-path: 3.0.0 - openapi-typescript-fetch: 1.1.3 - path-browserify: 1.0.1 - platform: 1.3.6 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 6.0.4 - ejs@3.1.10: dependencies: jake: 10.9.2 @@ -5817,10 +5192,6 @@ snapshots: enabled@2.0.0: {} - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - enhanced-resolve@5.17.0: dependencies: graceful-fs: 4.2.11 @@ -5836,31 +5207,6 @@ snapshots: es-module-lexer@1.5.3: {} - esbuild@0.17.19: - optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 - escalade@3.1.2: {} escape-string-regexp@1.0.5: {} @@ -5944,8 +5290,6 @@ snapshots: estraverse@5.3.0: {} - estree-walker@0.6.1: {} - estree-walker@2.0.2: {} estree-walker@3.0.3: @@ -5986,8 +5330,6 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - exit-hook@2.2.1: {} - exit@0.1.2: {} expect@29.7.0: @@ -6074,8 +5416,6 @@ snapshots: node-domexception: 1.0.0 web-streams-polyfill: 4.0.0-beta.3 - fs-constants@1.0.0: {} - fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 @@ -6099,11 +5439,6 @@ snapshots: get-package-type@0.1.0: {} - get-source@2.0.12: - dependencies: - data-uri-to-buffer: 2.0.2 - source-map: 0.6.1 - get-stream@6.0.1: {} get-stream@8.0.1: {} @@ -6173,8 +5508,6 @@ snapshots: dependencies: function-bind: 1.1.2 - hono@4.4.12: {} - html-escaper@2.0.2: {} human-signals@2.1.0: {} @@ -6189,8 +5522,6 @@ snapshots: dependencies: safer-buffer: 2.1.2 - ieee754@1.2.1: {} - ignore@5.3.2: {} import-fresh@3.3.0: @@ -6271,10 +5602,6 @@ snapshots: isexe@2.0.0: {} - isomorphic-ws@5.0.0(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)): - dependencies: - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - istanbul-lib-coverage@3.2.2: {} istanbul-lib-instrument@5.2.1: @@ -6799,10 +6126,6 @@ snapshots: lunr@2.3.9: {} - magic-string@0.25.9: - dependencies: - sourcemap-codec: 1.4.8 - magic-string@0.30.11: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -6836,31 +6159,10 @@ snapshots: dependencies: mime-db: 1.52.0 - mime@3.0.0: {} - mimic-fn@2.1.0: {} mimic-fn@4.0.0: {} - miniflare@3.20240701.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - acorn: 8.11.3 - acorn-walk: 8.3.3 - capnp-ts: 0.7.0 - exit-hook: 2.2.1 - glob-to-regexp: 0.4.1 - stoppable: 1.1.0 - undici: 5.28.4 - workerd: 1.20240701.0 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - youch: 3.3.3 - zod: 3.23.8 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -6886,8 +6188,6 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 - mkdirp-classic@0.5.3: {} - mkdirp@1.0.4: {} mlly@1.7.1: @@ -6905,9 +6205,6 @@ snapshots: mute-stream@1.0.0: {} - nan@2.20.0: - optional: true - nanoid@3.3.6: {} nanoid@3.3.7: {} @@ -6924,8 +6221,6 @@ snapshots: dependencies: whatwg-url: 5.0.0 - node-forge@1.3.1: {} - node-gyp-build@4.8.1: optional: true @@ -7004,8 +6299,6 @@ snapshots: openapi-types@12.1.3: {} - openapi-typescript-fetch@1.1.3: {} - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -7062,8 +6355,6 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - path-browserify@1.0.1: {} - path-exists@4.0.0: {} path-is-absolute@1.0.1: {} @@ -7080,8 +6371,6 @@ snapshots: dependencies: path-root-regex: 0.1.2 - path-to-regexp@6.2.2: {} - pathe@1.1.2: {} perfect-debounce@1.0.0: {} @@ -7110,8 +6399,6 @@ snapshots: mlly: 1.7.1 pathe: 1.1.2 - platform@1.3.6: {} - postcss@8.4.41: dependencies: nanoid: 3.3.7 @@ -7133,8 +6420,6 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 - printable-characters@1.0.42: {} - prompts@2.4.2: dependencies: kleur: 3.0.3 @@ -7142,11 +6427,6 @@ snapshots: proxy-from-env@1.1.0: {} - pump@3.0.0: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - punycode@2.3.1: {} pure-rand@6.1.0: {} @@ -7220,16 +6500,6 @@ snapshots: rollup-plugin-ignore@1.0.10: {} - rollup-plugin-inject@3.0.2: - dependencies: - estree-walker: 0.6.1 - magic-string: 0.25.9 - rollup-pluginutils: 2.8.2 - - rollup-plugin-node-polyfills@0.2.1: - dependencies: - rollup-plugin-inject: 3.0.2 - rollup-plugin-terser@7.0.2(rollup@4.28.1): dependencies: '@babel/code-frame': 7.24.7 @@ -7238,10 +6508,6 @@ snapshots: serialize-javascript: 4.0.0 terser: 5.31.1 - rollup-pluginutils@2.8.2: - dependencies: - estree-walker: 0.6.1 - rollup@4.28.1: dependencies: '@types/estree': 1.0.6 @@ -7291,11 +6557,6 @@ snapshots: secure-json-parse@2.7.0: {} - selfsigned@2.4.1: - dependencies: - '@types/node-forge': 1.3.11 - node-forge: 1.3.1 - semver@6.3.1: {} semver@7.6.2: {} @@ -7351,20 +6612,8 @@ snapshots: source-map@0.7.4: {} - sourcemap-codec@1.4.8: {} - - split-ca@1.0.1: {} - sprintf-js@1.0.3: {} - ssh2@1.15.0: - dependencies: - asn1: 0.2.6 - bcrypt-pbkdf: 1.0.2 - optionalDependencies: - cpu-features: 0.0.10 - nan: 2.20.0 - sswr@2.1.0(svelte@4.2.18): dependencies: svelte: 4.2.18 @@ -7376,13 +6625,6 @@ snapshots: dependencies: escape-string-regexp: 2.0.0 - stacktracey@2.1.8: - dependencies: - as-table: 1.0.55 - get-source: 2.0.12 - - stoppable@1.1.0: {} - string-length@4.0.2: dependencies: char-regex: 1.0.2 @@ -7455,21 +6697,6 @@ snapshots: tapable@2.2.1: {} - tar-fs@2.0.1: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 2.2.0 - - 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 - tar@6.2.1: dependencies: chownr: 2.0.0 @@ -7479,17 +6706,16 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - terser-webpack-plugin@5.3.10(@swc/core@1.7.10(@swc/helpers@0.5.12))(esbuild@0.17.19)(webpack@5.92.0(@swc/core@1.7.10(@swc/helpers@0.5.12))(esbuild@0.17.19)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.10(@swc/helpers@0.5.12))(webpack@5.92.0(@swc/core@1.7.10(@swc/helpers@0.5.12))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.1 - webpack: 5.92.0(@swc/core@1.7.10(@swc/helpers@0.5.12))(esbuild@0.17.19) + webpack: 5.92.0(@swc/core@1.7.10(@swc/helpers@0.5.12)) optionalDependencies: '@swc/core': 1.7.10(@swc/helpers@0.5.12) - esbuild: 0.17.19 terser@5.31.1: dependencies: @@ -7526,7 +6752,7 @@ snapshots: dependencies: typescript: 5.4.5 - ts-jest@29.2.4(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(esbuild@0.17.19)(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5): + ts-jest@29.2.4(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@20.14.2)(typescript@5.4.5)))(typescript@5.4.5): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -7544,9 +6770,8 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.25.2) - esbuild: 0.17.19 - ts-loader@9.5.1(typescript@5.4.5)(webpack@5.92.0(@swc/core@1.7.10(@swc/helpers@0.5.12))(esbuild@0.17.19)): + ts-loader@9.5.1(typescript@5.4.5)(webpack@5.92.0(@swc/core@1.7.10(@swc/helpers@0.5.12))): dependencies: chalk: 4.1.2 enhanced-resolve: 5.17.0 @@ -7554,7 +6779,7 @@ snapshots: semver: 7.6.2 source-map: 0.7.4 typescript: 5.4.5 - webpack: 5.92.0(@swc/core@1.7.10(@swc/helpers@0.5.12))(esbuild@0.17.19) + webpack: 5.92.0(@swc/core@1.7.10(@swc/helpers@0.5.12)) ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@20.14.2)(typescript@5.4.5): dependencies: @@ -7578,8 +6803,6 @@ snapshots: tslib@2.6.3: {} - tweetnacl@0.14.5: {} - tweetnacl@1.0.3: {} type-check@0.4.0: @@ -7620,19 +6843,6 @@ snapshots: undici-types@6.19.8: {} - undici@5.28.4: - dependencies: - '@fastify/busboy': 2.1.1 - - unenv-nightly@1.10.0-1717606461.a117952: - dependencies: - consola: 3.2.3 - defu: 6.1.4 - mime: 3.0.0 - node-fetch-native: 1.6.4 - pathe: 1.1.2 - ufo: 1.5.3 - universalify@2.0.1: {} update-browserslist-db@1.0.16(browserslist@4.23.1): @@ -7699,7 +6909,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.92.0(@swc/core@1.7.10(@swc/helpers@0.5.12))(esbuild@0.17.19): + webpack@5.92.0(@swc/core@1.7.10(@swc/helpers@0.5.12)): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.6 @@ -7722,7 +6932,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.10(@swc/helpers@0.5.12))(esbuild@0.17.19)(webpack@5.92.0(@swc/core@1.7.10(@swc/helpers@0.5.12))(esbuild@0.17.19)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.10(@swc/helpers@0.5.12))(webpack@5.92.0(@swc/core@1.7.10(@swc/helpers@0.5.12))) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -7763,40 +6973,6 @@ snapshots: wordwrap@1.0.0: {} - workerd@1.20240701.0: - optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20240701.0 - '@cloudflare/workerd-darwin-arm64': 1.20240701.0 - '@cloudflare/workerd-linux-64': 1.20240701.0 - '@cloudflare/workerd-linux-arm64': 1.20240701.0 - '@cloudflare/workerd-windows-64': 1.20240701.0 - - wrangler@3.63.1(@cloudflare/workers-types@4.20240806.0)(bufferutil@4.0.8)(utf-8-validate@6.0.4): - dependencies: - '@cloudflare/kv-asset-handler': 0.3.4 - '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) - '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) - blake3-wasm: 2.1.5 - chokidar: 3.6.0 - date-fns: 3.6.0 - esbuild: 0.17.19 - miniflare: 3.20240701.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - nanoid: 3.3.7 - path-to-regexp: 6.2.2 - resolve: 1.22.8 - resolve.exports: 2.0.2 - selfsigned: 2.4.1 - source-map: 0.6.1 - unenv: unenv-nightly@1.10.0-1717606461.a117952 - xxhash-wasm: 1.0.2 - optionalDependencies: - '@cloudflare/workers-types': 4.20240806.0 - fsevents: 2.3.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -7820,8 +6996,7 @@ snapshots: optionalDependencies: bufferutil: 4.0.8 utf-8-validate: 6.0.4 - - xxhash-wasm@1.0.2: {} + optional: true y18n@5.0.8: {} @@ -7849,12 +7024,6 @@ snapshots: yoctocolors-cjs@2.1.2: {} - youch@3.3.3: - dependencies: - cookie: 0.5.0 - mustache: 4.2.0 - stacktracey: 2.1.8 - zod-to-json-schema@3.22.5(zod@3.23.8): dependencies: zod: 3.23.8 diff --git a/js/src/index.ts b/js/src/index.ts index d1506ab0f53..daeb8d6f5c3 100644 --- a/js/src/index.ts +++ b/js/src/index.ts @@ -4,7 +4,7 @@ import { LangGraphToolSet } from "./frameworks/langgraph"; import { OpenAIToolSet } from "./frameworks/openai"; import { VercelAIToolSet } from "./frameworks/vercel"; import { Composio } from "./sdk/index"; - +import { ConnectionRequest } from "./sdk/models/connectedAccounts"; // eslint-disable-next-line @typescript-eslint/no-require-imports const { APPS, ACTIONS } = require("./constants"); @@ -13,6 +13,7 @@ export { APPS, CloudflareToolSet, Composio, + ConnectionRequest, LangGraphToolSet, LangchainToolSet, OpenAIToolSet, diff --git a/js/src/sdk/models/triggers.spec.ts b/js/src/sdk/models/triggers.spec.ts index c6f712e3e41..8f691fcffca 100644 --- a/js/src/sdk/models/triggers.spec.ts +++ b/js/src/sdk/models/triggers.spec.ts @@ -29,7 +29,7 @@ describe("Apps class tests", () => { it("should retrieve a list of triggers for a specific app", async () => { const triggerList = await triggers.list({ - appNames: "github", + appNames: ["github"], }); // this is breaking for now expect(triggerList.length).toBeGreaterThan(0); diff --git a/js/src/sdk/models/triggers.ts b/js/src/sdk/models/triggers.ts index 1fee706163a..364d41b1c7e 100644 --- a/js/src/sdk/models/triggers.ts +++ b/js/src/sdk/models/triggers.ts @@ -4,12 +4,26 @@ import { BackendClient } from "./backendClient"; import apiClient from "../client/client"; -import { ListTriggersData } from "../client"; +import { z } from "zod"; import { CEG } from "../utils/error"; import { TELEMETRY_LOGGER } from "../utils/telemetry"; import { TELEMETRY_EVENTS } from "../utils/telemetry/events"; -type RequiredQuery = ListTriggersData["query"]; +const ZTriggerQuery = z.object({ + triggerIds: z.array(z.string()).optional().describe("Trigger IDs"), + appNames: z.array(z.string()).optional().describe("App Names in lowercase"), + connectedAccountIds: z + .array(z.string()) + .optional() + .describe("Connected Account UUIDs"), + integrationIds: z.array(z.string()).optional().describe("Integration IDs"), + showEnabledOnly: z + .boolean() + .optional() + .describe("Show Enabled triggers only"), +}); + +type TTriggerQuery = z.infer; export class Triggers { trigger_to_client_event = "trigger_to_client"; @@ -29,16 +43,27 @@ export class Triggers { * @returns {CancelablePromise} A promise that resolves to the list of all triggers. * @throws {ApiError} If the request fails. */ - async list(data: RequiredQuery = {}) { + async list(data: TTriggerQuery = {}) { TELEMETRY_LOGGER.manualTelemetry(TELEMETRY_EVENTS.SDK_METHOD_INVOKED, { method: "list", file: this.fileName, params: { data }, }); try { + const { + appNames, + triggerIds, + connectedAccountIds, + integrationIds, + showEnabledOnly, + } = ZTriggerQuery.parse(data); const { data: response } = await apiClient.triggers.listTriggers({ query: { - appNames: data?.appNames, + appNames: appNames?.join(","), + triggerIds: triggerIds?.join(","), + connectedAccountIds: connectedAccountIds?.join(","), + integrationIds: integrationIds?.join(","), + showEnabledOnly: showEnabledOnly, }, }); return response || []; From 27795fc1f5b672c0f1bc2106589f201a0929dba2 Mon Sep 17 00:00:00 2001 From: Karan Vaidya Date: Mon, 23 Dec 2024 19:21:39 +0530 Subject: [PATCH 2/7] fix: Move send attachment test to openai (#1081) Co-authored-by: Tushar Sadhwani --- .../attachment/send_attachment.py | 45 ++++++++----------- python/tests/test_example.py | 3 +- 2 files changed, 20 insertions(+), 28 deletions(-) diff --git a/python/examples/miscellaneous/attachment/send_attachment.py b/python/examples/miscellaneous/attachment/send_attachment.py index 9d4f65bbf66..64ef2133770 100644 --- a/python/examples/miscellaneous/attachment/send_attachment.py +++ b/python/examples/miscellaneous/attachment/send_attachment.py @@ -1,48 +1,39 @@ """ -CrewAI Send Email with Attachment demo. +OpenAI Send Email with Attachment demo. """ import os import dotenv -from crewai import Agent, Crew, Task -from langchain_openai import ChatOpenAI +from openai import OpenAI -from composio_crewai import App, ComposioToolSet, Action +from composio_openai import App, ComposioToolSet # Load environment variables from .env dotenv.load_dotenv() # Initialize tools. -openai_client = ChatOpenAI(api_key=os.environ["OPENAI_API_KEY"], model="gpt-4-turbo") +openai_client = OpenAI() composio_toolset = ComposioToolSet() -# Get All the tools +# Get Gmail tools tools = composio_toolset.get_tools(apps=[App.GMAIL]) -print(composio_toolset.get_action_schemas(actions=[Action.GMAIL_SEND_EMAIL])) - -# Define agent -crewai_agent = Agent( - role="Gmail Agent", - goal="""You take action on Gmail using Gmail APIs""", - backstory=( - "You are AI agent that is responsible for taking actions on Gmail " - "on users behalf. You need to take action on Gmail using Gmail APIs" - ), - verbose=True, - tools=tools, - llm=openai_client, -) # Define task -task = Task( - description="Send an email to testcomposio@gmail.com with attachment as ./examples/miscellaneous/attachment/send_attachment.py", - agent=crewai_agent, - expected_output="if the email was sent", -) +task = "Send an email to testcomposio@gmail.com with 'send_attachment.py' as attachment." -my_crew = Crew(agents=[crewai_agent], tasks=[task]) +# Get response from the LLM +response = openai_client.chat.completions.create( + model="gpt-4-turbo-preview", + tools=tools, + messages=[ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": task}, + ], +) +print(response) -result = my_crew.kickoff() +# Execute the function calls. +result = composio_toolset.handle_tool_calls(response) print(result) diff --git a/python/tests/test_example.py b/python/tests/test_example.py index b1fe77e1f27..b86e869d2b7 100644 --- a/python/tests/test_example.py +++ b/python/tests/test_example.py @@ -130,7 +130,7 @@ "env": {"OPENAI_API_KEY": OPENAI_API_KEY, "COMPOSIO_API_KEY": COMPOSIO_API_KEY}, }, "upload_file": { - "plugin": "crew_ai", + "plugin": "openai", "file": EXAMPLES_PATH / "miscellaneous" / "attachment" / "send_attachment.py", "match": { "type": "stdout", @@ -220,6 +220,7 @@ def test_example( env={**os.environ, **example["env"]}, stdout=subprocess.PIPE, stderr=subprocess.PIPE, + cwd=filepath.parent, ) # Wait for 2 minutes for example to run From 3d48a0fcdd50d1a00fed202b86cf016b3e2be16c Mon Sep 17 00:00:00 2001 From: Prathit <67639393+Prat011@users.noreply.github.com> Date: Mon, 23 Dec 2024 21:43:40 +0530 Subject: [PATCH 3/7] feat: add twitter thread generator examples (#1078) --- .../llamaindex/.env.example | 4 + .../content_writing_agent/llamaindex/main.py | 121 ++++++++++++++++++ .../llamaindex/readme.md | 30 +++++ .../llamaindex/requirements.txt | 3 + .../content_writing_agent/llamaindex/setup.sh | 39 ++++++ .../phidata/.env.example | 4 + .../content_writing_agent/phidata/main.py | 95 ++++++++++++++ .../content_writing_agent/phidata/readme.md | 30 +++++ .../phidata/requirements.txt | 3 + .../content_writing_agent/phidata/setup.sh | 39 ++++++ .../indie_hacker_agent/langgraph/.env.example | 4 + .../indie_hacker_agent/langgraph/main.py | 75 +++++++++++ .../indie_hacker_agent/langgraph/readme.md | 30 +++++ .../langgraph/requirements.txt | 3 + .../indie_hacker_agent/langgraph/setup.sh | 39 ++++++ .../indie_hacker_agent/letta/.env.example | 4 + .../indie_hacker_agent/letta/main.py | 38 ++++++ .../indie_hacker_agent/letta/readme.md | 30 +++++ .../indie_hacker_agent/letta/requirements.txt | 3 + .../indie_hacker_agent/letta/setup.sh | 39 ++++++ .../advanced_agents/recruiter_agent/main.py | 3 + 21 files changed, 636 insertions(+) create mode 100644 python/examples/advanced_agents/content_writing_agent/llamaindex/.env.example create mode 100644 python/examples/advanced_agents/content_writing_agent/llamaindex/main.py create mode 100644 python/examples/advanced_agents/content_writing_agent/llamaindex/readme.md create mode 100644 python/examples/advanced_agents/content_writing_agent/llamaindex/requirements.txt create mode 100644 python/examples/advanced_agents/content_writing_agent/llamaindex/setup.sh create mode 100644 python/examples/advanced_agents/content_writing_agent/phidata/.env.example create mode 100644 python/examples/advanced_agents/content_writing_agent/phidata/main.py create mode 100644 python/examples/advanced_agents/content_writing_agent/phidata/readme.md create mode 100644 python/examples/advanced_agents/content_writing_agent/phidata/requirements.txt create mode 100644 python/examples/advanced_agents/content_writing_agent/phidata/setup.sh create mode 100644 python/examples/advanced_agents/indie_hacker_agent/langgraph/.env.example create mode 100644 python/examples/advanced_agents/indie_hacker_agent/langgraph/main.py create mode 100644 python/examples/advanced_agents/indie_hacker_agent/langgraph/readme.md create mode 100644 python/examples/advanced_agents/indie_hacker_agent/langgraph/requirements.txt create mode 100644 python/examples/advanced_agents/indie_hacker_agent/langgraph/setup.sh create mode 100644 python/examples/advanced_agents/indie_hacker_agent/letta/.env.example create mode 100644 python/examples/advanced_agents/indie_hacker_agent/letta/main.py create mode 100644 python/examples/advanced_agents/indie_hacker_agent/letta/readme.md create mode 100644 python/examples/advanced_agents/indie_hacker_agent/letta/requirements.txt create mode 100644 python/examples/advanced_agents/indie_hacker_agent/letta/setup.sh diff --git a/python/examples/advanced_agents/content_writing_agent/llamaindex/.env.example b/python/examples/advanced_agents/content_writing_agent/llamaindex/.env.example new file mode 100644 index 00000000000..39bc53f1c30 --- /dev/null +++ b/python/examples/advanced_agents/content_writing_agent/llamaindex/.env.example @@ -0,0 +1,4 @@ +OPENAI_API_KEY=YOUR_OPENAI_API_KEY +COMPOSIO_API_KEY=YOUR_COMPOSIO_API_KEY +GROQ_API_KEY=YOUR_GROQ_API_KEY +CEREBRAS_API_KEY=YOUR_CEREBRAS_API_KEY \ No newline at end of file diff --git a/python/examples/advanced_agents/content_writing_agent/llamaindex/main.py b/python/examples/advanced_agents/content_writing_agent/llamaindex/main.py new file mode 100644 index 00000000000..996a72c8b0f --- /dev/null +++ b/python/examples/advanced_agents/content_writing_agent/llamaindex/main.py @@ -0,0 +1,121 @@ +from composio_llamaindex import ComposioToolSet, App, Action +from llama_index.core.agent import FunctionCallingAgentWorker +from llama_index.core.llms import ChatMessage +from llama_index.llms.openai import OpenAI +from llama_index.llms.cerebras import Cerebras +from dotenv import load_dotenv + +import json + +# Load environment variables +load_dotenv() + +# Initialize toolset and LLM +toolset = ComposioToolSet() +tools = toolset.get_tools(actions=[ + Action.TWITTER_CREATION_OF_A_POST, + Action.TWITTER_POST_LOOKUP_BY_POST_ID, + Action.FIRECRAWL_CRAWL_URLS, + Action.TAVILY_TAVILY_SEARCH, + Action.GOOGLESHEETS_CREATE_GOOGLE_SHEET1, + Action.GOOGLESHEETS_BATCH_UPDATE, + Action.LINKEDIN_CREATE_LINKED_IN_POST,]) + +llm = OpenAI(model="gpt-4o") +#llm = Cerebras(model="llama-3.3-70b", is_chat_model=True) +# Define file paths for saving ideas and generated content +content_ideas_file = "content_ideas.json" +generated_content_file = "generated_content.json" + +# Setup chatbot-style prefix messages +def create_prefix_message(): + return [ + ChatMessage( + role="system", + content=( + """ + You are a creative content automation agent. Your tasks are: + 1. Scrape the internet for the latest news and trending content using FIRECRAWL. + 2. Suggest content ideas based on your findings and any specified topics or categories. + 3. Ask the user to pick an idea. + 4. Generate detailed written content for the chosen idea. + 5. Save the chosen idea and the written content to files for future reference. + 6. Optionally, post the generated content on Twitter or LinkedIn with the user's permission. + """ + ), + ) + ] + +prefix_messages = create_prefix_message() + +# Initialize the agent +agent = FunctionCallingAgentWorker( + tools=tools, + llm=llm, + prefix_messages=prefix_messages, + max_function_calls=10, + allow_parallel_tool_calls=False, + verbose=True, +).as_agent() + +# Task-specific logic in a chatbot-like flow +def chatbot(): + print("πŸ€–: Hi! I can help you create content based on the latest trends. Let’s start!") + + # Step 1: Ask the user for a content topic + category = input( + "πŸ€–: What category of content are you looking for? (e.g., Technology, Health, Business, Entertainment): " + ).strip() + + # Step 2: Scrape the internet for trending content in the specified category + task = f"Find the latest news and suggest 10 content ideas in the \"{category}\" category. " + ideas_response = agent.chat(task) + print(f"\nπŸ€–: Here are some content ideas I found in the \"{category}\" category:\n") + + chosen_idea = input("\nπŸ€–: Which idea do you like the most? (Enter a number)") + print(f"\nπŸ€–: Great! You chose: \"{chosen_idea}\". I'll generate content for you.\n") + + # Step 4: Save the chosen idea to a file + try: + with open(content_ideas_file, "w") as f: + json.dump({"chosen_idea": chosen_idea}, f, indent=2) + print("πŸ€–: Done! Your idea has been saved for future reference.") + except Exception as e: + print(f"πŸ€–: Oops! I ran into an issue while saving your idea: {e}") + + # Step 5: Generate written content based on the chosen idea + content_task = f"Write detailed content based on the following idea: \"{chosen_idea}\". Please don't add any text after or before the blog post asking me any kind of questions or telling me anything. I only want the blog post content." + content_response = agent.chat(content_task) + generated_content = content_response.response + + # Step 6: Save the generated content to a file + try: + with open(generated_content_file, "w") as f: + json.dump({"chosen_idea": chosen_idea, "content": generated_content}, f, indent=2) + with open(f"{chosen_idea}.md", "w") as f: + f.write(generated_content) + print(f"πŸ€–: Done! The written long form content has been saved:\n{generated_content}\n") + except Exception as e: + print(f"πŸ€–: Oops! I ran into an issue while saving your content: {e}") + + # Step 7: Ask the user where they want to post the content + platform = input("πŸ€–: Would you like to post the content on Twitter or LinkedIn? (Enter 'Twitter' or 'LinkedIn'): ").strip().lower() + + if platform == "twitter": + twitter_thread = agent.chat("Don't write it in markdown.Write a twitter thread from the blog, shouldn't be beyond 5-7 posts. Dont add hashtags, tweets shouldn't be too short and surfacial.") + twitter_task = f"Post the following content on Twitter: \"{twitter_thread.response}\". Post it as a series of threads, quote each tweet in the next one. Print the final link to the tweet." + twitter_response = agent.chat(twitter_task) + print(f"πŸ€–: I posted the content to Twitter! Here's the post: {twitter_response}") + + elif platform == "linkedin": + linkedin_post = agent.chat(f"Dont write it in markdown. Write a LinkedIn post from the blog content, dont use emojis: \"{generated_content}\".") + linkedin_task = f"Post the following content on LinkedIn: \"{linkedin_post.response}\"." + linkedin_response = agent.chat(linkedin_task) + print(f"πŸ€–: I posted the content to LinkedIn! Here's the post: {linkedin_response}") + + else: + print("πŸ€–: I'm sorry, I can only post on Twitter or LinkedIn. Let me know if you'd like help with something else!") + +# Start the chatbot interaction +if __name__ == "__main__": + chatbot() diff --git a/python/examples/advanced_agents/content_writing_agent/llamaindex/readme.md b/python/examples/advanced_agents/content_writing_agent/llamaindex/readme.md new file mode 100644 index 00000000000..20edeb8a060 --- /dev/null +++ b/python/examples/advanced_agents/content_writing_agent/llamaindex/readme.md @@ -0,0 +1,30 @@ +# Content Writing Agent Guide + +This guide provides detailed steps to create a Content Writing Agent that leverages Composio, agentic frameworks such as LlamaIndex and Groq to create a complete content writing and posting pipeline. Ensure you have Python 3.8 or higher installed. + + +## Steps to Run + +**Navigate to the Project Directory:** +Change to the directory where the `setup.sh`, `main.py`, `requirements.txt`, and `README.md` files are located. For example: +```sh +cd path/to/project/directory +``` + +### 1. Run the Setup File +Make the setup.sh Script Executable (if necessary): +On Linux or macOS, you might need to make the setup.sh script executable: +```shell +chmod +x setup.sh +``` +Execute the setup.sh script to set up the environment and install dependencies: +```shell +./setup.sh +``` +Now, fill in the `.env` file with your secrets. + +### 2. Run the Python Script +```shell +python cookbook/python-examples/advanced_agents/content_writing_agent/llamaindex/main.py +``` + diff --git a/python/examples/advanced_agents/content_writing_agent/llamaindex/requirements.txt b/python/examples/advanced_agents/content_writing_agent/llamaindex/requirements.txt new file mode 100644 index 00000000000..8bbca3e841e --- /dev/null +++ b/python/examples/advanced_agents/content_writing_agent/llamaindex/requirements.txt @@ -0,0 +1,3 @@ +composio-llamaindex +llama-index +python-dotenv \ No newline at end of file diff --git a/python/examples/advanced_agents/content_writing_agent/llamaindex/setup.sh b/python/examples/advanced_agents/content_writing_agent/llamaindex/setup.sh new file mode 100644 index 00000000000..0ff8854e651 --- /dev/null +++ b/python/examples/advanced_agents/content_writing_agent/llamaindex/setup.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Create a virtual environment +echo "Creating virtual environment..." +python3 -m venv ~/.venvs/content_writing + +# Activate the virtual environment +echo "Activating virtual environment..." +source ~/.venvs/content_writing/bin/activate + +# Install libraries from requirements.txt +echo "Installing libraries from requirements.txt..." +pip install -r requirements.txt + +# Login to your account +echo "Login to your Composio acount" +composio login + +# Add trello tool + +echo "Add slackbot tool. Finish the flow" +composio add twitter +composio add linkedin +composio add firecrawl +composio add tavily + +# Copy env backup to .env file +if [ -f ".env.example" ]; then + echo "Copying .env.example to .env..." + cp .env.example .env +else + echo "No .env.example file found. Creating a new .env file..." + touch .env +fi + +# Prompt user to fill the .env file +echo "Please fill in the .env file with the necessary environment variables." + +echo "Setup completed successfully!" \ No newline at end of file diff --git a/python/examples/advanced_agents/content_writing_agent/phidata/.env.example b/python/examples/advanced_agents/content_writing_agent/phidata/.env.example new file mode 100644 index 00000000000..e63e56c8456 --- /dev/null +++ b/python/examples/advanced_agents/content_writing_agent/phidata/.env.example @@ -0,0 +1,4 @@ +OPENAI_API_KEY=KEY +COMPOSIO_API_KEY=KEY +GROQ_API_KEY=KEY +PHI_API_KEY=KEY \ No newline at end of file diff --git a/python/examples/advanced_agents/content_writing_agent/phidata/main.py b/python/examples/advanced_agents/content_writing_agent/phidata/main.py new file mode 100644 index 00000000000..438f5242537 --- /dev/null +++ b/python/examples/advanced_agents/content_writing_agent/phidata/main.py @@ -0,0 +1,95 @@ +from phi.agent import Agent +from phi.model.openai import OpenAIChat +from composio_phidata import ComposioToolSet, App, Action +from dotenv import load_dotenv +import json + +load_dotenv() +toolset = ComposioToolSet() +tools = toolset.get_tools(apps=[App.EXA, App.TWITTER, App.LINKEDIN]) + +agent = Agent( + description="you help the user plan their weekends", + name="AI Writer", + add_chat_history_to_messages=True, + model=OpenAIChat(id="gpt-4o"), + instructions=[ + """ + You are a creative content automation agent. Your tasks are: + 1. Scrape the internet for the latest news and trending content using FIRECRAWL. + 2. Suggest content ideas based on your findings and any specified topics or categories. + 3. Ask the user to pick an idea. + 4. Generate detailed written content for the chosen idea. + 5. Save the chosen idea and the written content to files for future reference. + 6. Optionally, post the generated content on Twitter or LinkedIn with the user's permission. + """ + ], + tools=tools, +) +print("πŸ€–: Hi! I can help you create content based on the latest trends. Let’s start!") + +# Step 1: Ask the user for a content topic +category = input( + "πŸ€–: What category of content are you looking for? (e.g., Technology, Health, Business, Entertainment): " +).strip() + +# Step 2: Scrape the internet for trending content in the specified category +task = f"Find the latest news using EXA and suggest 10 content ideas in the \"{category}\" category. " + +print(f"\nπŸ€–: Here are some content ideas I found in the \"{category}\" category:\n") +ideas_response = agent.print_response(task) +last_assistant_message = [m.model_dump(include={"role", "content"}) for m in agent.memory.messages if m.role == "assistant"][-1] +ideas_response = last_assistant_message['content'] +chosen_idea = input("\nπŸ€–: Which idea do you like the most? (Enter a number)") +print(f"\nπŸ€–: Great! You chose: \"{chosen_idea}\". I'll generate content for you.\n") + +content_ideas_file = "content_ideas.json" +generated_content_file = "generated_content.json" +# Step 4: Save the chosen idea to a file +try: + with open(content_ideas_file, "w") as f: + json.dump({"chosen_idea": chosen_idea}, f, indent=2) + print("πŸ€–: Done! Your idea has been saved for future reference.") +except Exception as e: + print(f"πŸ€–: Oops! I ran into an issue while saving your idea: {e}") + +# Step 5: Generate written content based on the chosen idea +content_task = f"Write detailed content based on the following idea: \"{chosen_idea}\". Please don't add any text after or before the blog post asking me any kind of questions or telling me anything. I only want the blog post content." +content_response = agent.print_response(content_task) +last_assistant_message = [m.model_dump(include={"role", "content"}) for m in agent.memory.messages if m.role == "assistant"][-1] +generated_content = last_assistant_message['content'] +# Step 6: Save the generated content to a file +try: + with open(generated_content_file, "w") as f: + json.dump({"chosen_idea": chosen_idea, "content": generated_content}, f, indent=2) + with open(f"{chosen_idea}.md", "w") as f: + f.write(generated_content) + print(f"πŸ€–: Done! The written long form content has been saved:\n{generated_content}\n") +except Exception as e: + print(f"πŸ€–: Oops! I ran into an issue while saving your content: {e}") + +# Step 7: Ask the user where they want to post the content +platform = input("πŸ€–: Would you like to post the content on Twitter or LinkedIn? (Enter 'Twitter' or 'LinkedIn'): ").strip().lower() + +if platform == "twitter": + twitter_thread = agent.print_response("Don't write it in markdown.Write a twitter thread from the blog, shouldn't be beyond 5-7 posts. Dont add hashtags, tweets shouldn't be too short and surfacial.") + last_assistant_message = [m.model_dump(include={"role", "content"}) for m in agent.memory.messages if m.role == "assistant"][-1] + twitter_thread = last_assistant_message['content'] + twitter_task = f"Post the following content on Twitter: \"{twitter_thread}\". Post it as a series of threads, quote each tweet in the next one. Print the final link to the tweet." + agent.print_response(twitter_task) + last_assistant_message = [m.model_dump(include={"role", "content"}) for m in agent.memory.messages if m.role == "assistant"][-1] + twitter_response = last_assistant_message['content'] + print(f"πŸ€–: I posted the content to Twitter! Here's the post: {twitter_response}") + +elif platform == "linkedin": + linkedin_post = agent.print_response(f"Dont write it in markdown. Write a LinkedIn post from the blog content, dont use emojis: \"{generated_content}\".") + last_assistant_message = [m.model_dump(include={"role", "content"}) for m in agent.memory.messages if m.role == "assistant"][-1] + linkedin_post = last_assistant_message['content'] + linkedin_task = f"Post the following content on LinkedIn: \"{linkedin_post}\"." + agent.print_response(linkedin_task) + last_assistant_message = [m.model_dump(include={"role", "content"}) for m in agent.memory.messages if m.role == "assistant"][-1] + linkedin_response = last_assistant_message['content'] + print(f"πŸ€–: I posted the content to LinkedIn! Here's the post: {linkedin_response}") + +else: + print("πŸ€–: I'm sorry, I can only post on Twitter or LinkedIn. Let me know if you'd like help with something else!") diff --git a/python/examples/advanced_agents/content_writing_agent/phidata/readme.md b/python/examples/advanced_agents/content_writing_agent/phidata/readme.md new file mode 100644 index 00000000000..2fef41b8ee0 --- /dev/null +++ b/python/examples/advanced_agents/content_writing_agent/phidata/readme.md @@ -0,0 +1,30 @@ +# Content Writing Agent Guide + +This guide provides detailed steps to create a Content Writing Agent that leverages Composio, agentic frameworks such as Phidata and Groq to create a complete content writing and posting pipeline. Ensure you have Python 3.8 or higher installed. + + +## Steps to Run + +**Navigate to the Project Directory:** +Change to the directory where the `setup.sh`, `main.py`, `requirements.txt`, and `README.md` files are located. For example: +```sh +cd path/to/project/directory +``` + +### 1. Run the Setup File +Make the setup.sh Script Executable (if necessary): +On Linux or macOS, you might need to make the setup.sh script executable: +```shell +chmod +x setup.sh +``` +Execute the setup.sh script to set up the environment and install dependencies: +```shell +./setup.sh +``` +Now, fill in the `.env` file with your secrets. + +### 2. Run the Python Script +```shell +python cookbook/python-examples/advanced_agents/content_writing_agent/phidata/main.py +``` + diff --git a/python/examples/advanced_agents/content_writing_agent/phidata/requirements.txt b/python/examples/advanced_agents/content_writing_agent/phidata/requirements.txt new file mode 100644 index 00000000000..8bbca3e841e --- /dev/null +++ b/python/examples/advanced_agents/content_writing_agent/phidata/requirements.txt @@ -0,0 +1,3 @@ +composio-llamaindex +llama-index +python-dotenv \ No newline at end of file diff --git a/python/examples/advanced_agents/content_writing_agent/phidata/setup.sh b/python/examples/advanced_agents/content_writing_agent/phidata/setup.sh new file mode 100644 index 00000000000..0ff8854e651 --- /dev/null +++ b/python/examples/advanced_agents/content_writing_agent/phidata/setup.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Create a virtual environment +echo "Creating virtual environment..." +python3 -m venv ~/.venvs/content_writing + +# Activate the virtual environment +echo "Activating virtual environment..." +source ~/.venvs/content_writing/bin/activate + +# Install libraries from requirements.txt +echo "Installing libraries from requirements.txt..." +pip install -r requirements.txt + +# Login to your account +echo "Login to your Composio acount" +composio login + +# Add trello tool + +echo "Add slackbot tool. Finish the flow" +composio add twitter +composio add linkedin +composio add firecrawl +composio add tavily + +# Copy env backup to .env file +if [ -f ".env.example" ]; then + echo "Copying .env.example to .env..." + cp .env.example .env +else + echo "No .env.example file found. Creating a new .env file..." + touch .env +fi + +# Prompt user to fill the .env file +echo "Please fill in the .env file with the necessary environment variables." + +echo "Setup completed successfully!" \ No newline at end of file diff --git a/python/examples/advanced_agents/indie_hacker_agent/langgraph/.env.example b/python/examples/advanced_agents/indie_hacker_agent/langgraph/.env.example new file mode 100644 index 00000000000..39bc53f1c30 --- /dev/null +++ b/python/examples/advanced_agents/indie_hacker_agent/langgraph/.env.example @@ -0,0 +1,4 @@ +OPENAI_API_KEY=YOUR_OPENAI_API_KEY +COMPOSIO_API_KEY=YOUR_COMPOSIO_API_KEY +GROQ_API_KEY=YOUR_GROQ_API_KEY +CEREBRAS_API_KEY=YOUR_CEREBRAS_API_KEY \ No newline at end of file diff --git a/python/examples/advanced_agents/indie_hacker_agent/langgraph/main.py b/python/examples/advanced_agents/indie_hacker_agent/langgraph/main.py new file mode 100644 index 00000000000..f52e348ce7e --- /dev/null +++ b/python/examples/advanced_agents/indie_hacker_agent/langgraph/main.py @@ -0,0 +1,75 @@ +from composio import Composio, ComposioToolSet +import os +from dotenv import load_dotenv +from langchain_groq import ChatGroq +from langchain_openai import ChatOpenAI +from langgraph.checkpoint.memory import MemorySaver +from typing import Annotated +from langchain_core.messages import BaseMessage +from typing_extensions import TypedDict +from composio_langgraph import Action, ComposioToolSet, App +from langgraph.graph import StateGraph, START, END +from langgraph.graph.message import add_messages +from langgraph.prebuilt import ToolNode, tools_condition +load_dotenv() + +class State(TypedDict): + messages: Annotated[list, add_messages] + +graph_builder = StateGraph(State) + +toolset = ComposioToolSet() +tools = toolset.get_tools(apps=[App.CODEINTERPRETER, App.FILETOOL, App.HACKERNEWS, App.SHELLTOOL, App.WEBTOOL]) + +llm = ChatOpenAI(model="gpt-4o") +#llm = ChatGroq(model='llama3.3-70b-versatile') +llm_with_tools = llm.bind_tools(tools) + +def chatbot(state: State): + return {"messages": [llm_with_tools.invoke(state["messages"])]} + +graph_builder.add_node("chatbot", chatbot) + +tool_node = ToolNode(tools=tools) +graph_builder.add_node("tools", tool_node) + +graph_builder.add_conditional_edges( + "chatbot", + tools_condition, +) +# Any time a tool is called, we return to the chatbot to decide the next step +graph_builder.add_edge("tools", "chatbot") +graph_builder.add_edge(START, "chatbot") +memory = MemorySaver() + +graph = graph_builder.compile(checkpointer=memory) + +config = {"configurable": {"thread_id": "1"}, "recursion_limit": 50} + + +user_input = ("""You are an Indie Hacker Agent, you are supposed to research hackernews. +Find an interesting idea to implement, and implement an MVP Version of it. The idea implementation +should then be executed and shown to the user. The idea is to build a very simple but very very cool MVP. You cannot ask any questions to the user. +Also print the link to the original idea on hackernews.""") +# The config is the **second positional argument** to stream() or invoke()! +events = graph.stream( + {"messages": [("user", user_input)]}, config, stream_mode="values" +) +for event in events: + event["messages"][-1].pretty_print() + +user_input_2 = input("Anything else you want to ask: ") +events = graph.stream( + { + "messages": [ + ( + "user", + user_input_2 + ) + ] + }, + config, + stream_mode="values", +) +for event in events: + event["messages"][-1].pretty_print() \ No newline at end of file diff --git a/python/examples/advanced_agents/indie_hacker_agent/langgraph/readme.md b/python/examples/advanced_agents/indie_hacker_agent/langgraph/readme.md new file mode 100644 index 00000000000..0de4fba1d6f --- /dev/null +++ b/python/examples/advanced_agents/indie_hacker_agent/langgraph/readme.md @@ -0,0 +1,30 @@ +# Indie Hacker Agent Guide + +This guide provides detailed steps to create an Indie Hacker Agent that leverages Composio, agentic frameworks such as Letta and OpenAI to create a complete content writing and posting pipeline. Ensure you have Python 3.8 or higher installed. + + +## Steps to Run + +**Navigate to the Project Directory:** +Change to the directory where the `setup.sh`, `main.py`, `requirements.txt`, and `README.md` files are located. For example: +```sh +cd path/to/project/directory +``` + +### 1. Run the Setup File +Make the setup.sh Script Executable (if necessary): +On Linux or macOS, you might need to make the setup.sh script executable: +```shell +chmod +x setup.sh +``` +Execute the setup.sh script to set up the environment and install dependencies: +```shell +./setup.sh +``` +Now, fill in the `.env` file with your secrets. + +### 2. Run the Python Script +```shell +python cookbook/python-examples/advanced_agents/indie_hacker_agent/letta/main.py +``` + diff --git a/python/examples/advanced_agents/indie_hacker_agent/langgraph/requirements.txt b/python/examples/advanced_agents/indie_hacker_agent/langgraph/requirements.txt new file mode 100644 index 00000000000..e02185993df --- /dev/null +++ b/python/examples/advanced_agents/indie_hacker_agent/langgraph/requirements.txt @@ -0,0 +1,3 @@ +composio-langgraph +langgraph +python-dotenv \ No newline at end of file diff --git a/python/examples/advanced_agents/indie_hacker_agent/langgraph/setup.sh b/python/examples/advanced_agents/indie_hacker_agent/langgraph/setup.sh new file mode 100644 index 00000000000..0ff8854e651 --- /dev/null +++ b/python/examples/advanced_agents/indie_hacker_agent/langgraph/setup.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Create a virtual environment +echo "Creating virtual environment..." +python3 -m venv ~/.venvs/content_writing + +# Activate the virtual environment +echo "Activating virtual environment..." +source ~/.venvs/content_writing/bin/activate + +# Install libraries from requirements.txt +echo "Installing libraries from requirements.txt..." +pip install -r requirements.txt + +# Login to your account +echo "Login to your Composio acount" +composio login + +# Add trello tool + +echo "Add slackbot tool. Finish the flow" +composio add twitter +composio add linkedin +composio add firecrawl +composio add tavily + +# Copy env backup to .env file +if [ -f ".env.example" ]; then + echo "Copying .env.example to .env..." + cp .env.example .env +else + echo "No .env.example file found. Creating a new .env file..." + touch .env +fi + +# Prompt user to fill the .env file +echo "Please fill in the .env file with the necessary environment variables." + +echo "Setup completed successfully!" \ No newline at end of file diff --git a/python/examples/advanced_agents/indie_hacker_agent/letta/.env.example b/python/examples/advanced_agents/indie_hacker_agent/letta/.env.example new file mode 100644 index 00000000000..39bc53f1c30 --- /dev/null +++ b/python/examples/advanced_agents/indie_hacker_agent/letta/.env.example @@ -0,0 +1,4 @@ +OPENAI_API_KEY=YOUR_OPENAI_API_KEY +COMPOSIO_API_KEY=YOUR_COMPOSIO_API_KEY +GROQ_API_KEY=YOUR_GROQ_API_KEY +CEREBRAS_API_KEY=YOUR_CEREBRAS_API_KEY \ No newline at end of file diff --git a/python/examples/advanced_agents/indie_hacker_agent/letta/main.py b/python/examples/advanced_agents/indie_hacker_agent/letta/main.py new file mode 100644 index 00000000000..09c8974ca4d --- /dev/null +++ b/python/examples/advanced_agents/indie_hacker_agent/letta/main.py @@ -0,0 +1,38 @@ +import dotenv +from composio_langchain import Action, ComposioToolSet +from letta import create_client, LLMConfig +from letta.schemas.tool import Tool + +# Load environment variables from .env +# Set your OpenAI API Key in a .env file +dotenv.load_dotenv() + + +toolset = ComposioToolSet() +tools = toolset.get_tools(actions=[ +Action.CODEINTERPRETER_EXECUTE_CODE, +Action.CODEINTERPRETER_GET_FILE_CMD, +Action.CODEINTERPRETER_RUN_TERMINAL_CMD, +Action.HACKERNEWS_GET_TODAYS_POSTS, +Action.HACKERNEWS_GET_FRONTPAGE, +Action.HACKERNEWS_GET_LATEST_POSTS, +Action.HACKERNEWS_GET_ITEM_WITH_ID, +]) +task = ( +"""You are an Indie Hacker Agent, you are supposed to research hackernews. +Find a latest post to implement, brainstorm creative ideas and implement an MVP Version of it. +The idea implementation should then be executed and shown to the user. + Also print the link to the original idea on hackernews. Please execute the code on the code interpreter.""" +) + +client = create_client() + +agent_state = client.create_agent( + name="Indie Hacker Agent", +) + +client.add_tool(tools) + +response = client.send_message(agent_id=agent_state.id, role="user", message=task) +print("Usage:", response.usage) +print("Agent messages:", response.messages) diff --git a/python/examples/advanced_agents/indie_hacker_agent/letta/readme.md b/python/examples/advanced_agents/indie_hacker_agent/letta/readme.md new file mode 100644 index 00000000000..4b335d9909b --- /dev/null +++ b/python/examples/advanced_agents/indie_hacker_agent/letta/readme.md @@ -0,0 +1,30 @@ +# Indie Hacker Agent Guide + +This guide provides detailed steps to create an Indie Hacker Agent that leverages Composio, agentic frameworks such as LangGraph and Groq to create a complete content writing and posting pipeline. Ensure you have Python 3.8 or higher installed. + + +## Steps to Run + +**Navigate to the Project Directory:** +Change to the directory where the `setup.sh`, `main.py`, `requirements.txt`, and `README.md` files are located. For example: +```sh +cd path/to/project/directory +``` + +### 1. Run the Setup File +Make the setup.sh Script Executable (if necessary): +On Linux or macOS, you might need to make the setup.sh script executable: +```shell +chmod +x setup.sh +``` +Execute the setup.sh script to set up the environment and install dependencies: +```shell +./setup.sh +``` +Now, fill in the `.env` file with your secrets. + +### 2. Run the Python Script +```shell +python cookbook/python-examples/advanced_agents/indie_hacker_agent/langgraph/main.py +``` + diff --git a/python/examples/advanced_agents/indie_hacker_agent/letta/requirements.txt b/python/examples/advanced_agents/indie_hacker_agent/letta/requirements.txt new file mode 100644 index 00000000000..2870f4d54b3 --- /dev/null +++ b/python/examples/advanced_agents/indie_hacker_agent/letta/requirements.txt @@ -0,0 +1,3 @@ +composio-letta +letta +python-dotenv \ No newline at end of file diff --git a/python/examples/advanced_agents/indie_hacker_agent/letta/setup.sh b/python/examples/advanced_agents/indie_hacker_agent/letta/setup.sh new file mode 100644 index 00000000000..0ff8854e651 --- /dev/null +++ b/python/examples/advanced_agents/indie_hacker_agent/letta/setup.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Create a virtual environment +echo "Creating virtual environment..." +python3 -m venv ~/.venvs/content_writing + +# Activate the virtual environment +echo "Activating virtual environment..." +source ~/.venvs/content_writing/bin/activate + +# Install libraries from requirements.txt +echo "Installing libraries from requirements.txt..." +pip install -r requirements.txt + +# Login to your account +echo "Login to your Composio acount" +composio login + +# Add trello tool + +echo "Add slackbot tool. Finish the flow" +composio add twitter +composio add linkedin +composio add firecrawl +composio add tavily + +# Copy env backup to .env file +if [ -f ".env.example" ]; then + echo "Copying .env.example to .env..." + cp .env.example .env +else + echo "No .env.example file found. Creating a new .env file..." + touch .env +fi + +# Prompt user to fill the .env file +echo "Please fill in the .env file with the necessary environment variables." + +echo "Setup completed successfully!" \ No newline at end of file diff --git a/python/examples/advanced_agents/recruiter_agent/main.py b/python/examples/advanced_agents/recruiter_agent/main.py index 72ed7a33517..81fb377f027 100644 --- a/python/examples/advanced_agents/recruiter_agent/main.py +++ b/python/examples/advanced_agents/recruiter_agent/main.py @@ -1,6 +1,7 @@ from composio_llamaindex import ComposioToolSet, App, Action from llama_index.core.agent import FunctionCallingAgentWorker from llama_index.core.llms import ChatMessage +from llama_index.llms.openai import OpenAI from llama_index.llms.groq import Groq from dotenv import load_dotenv import os @@ -12,6 +13,7 @@ toolset = ComposioToolSet(api_key=os.getenv("COMPOSIO_API_KEY")) + tools = [*toolset.get_tools(apps=[App.GOOGLESHEETS]), *toolset.get_tools(actions=[Action.PEOPLEDATALABS_NATURAL_LANGUAGE_QUERY_ACTION])] llm = Groq(model="llama3-groq-70b-8192-tool-use-preview") @@ -39,6 +41,7 @@ verbose=True, ).as_agent() + candidate_description = '10 Senior Python Developers working in seed to series A startups living in San Francisco' user_input = f"Create a candidate list based on the description: {candidate_description}. Include all the important details required for the job. Add all of it the google sheet." response = agent.chat(user_input) From 7c89483bf1c8f76687765c37a14fc995eae1b44d Mon Sep 17 00:00:00 2001 From: Tyler-Odenthal <113200203+Tyler-Odenthal@users.noreply.github.com> Date: Tue, 24 Dec 2024 05:06:40 -0800 Subject: [PATCH 4/7] feat: Enhanced SQL Query Tool with SQLite and Remote Database Support (#1048) --- .../tools/local/sqltool/actions/sql_query.py | 81 ++++++++++++------- 1 file changed, 54 insertions(+), 27 deletions(-) diff --git a/python/composio/tools/local/sqltool/actions/sql_query.py b/python/composio/tools/local/sqltool/actions/sql_query.py index 5ce4b59cf79..9d6bdc76aea 100644 --- a/python/composio/tools/local/sqltool/actions/sql_query.py +++ b/python/composio/tools/local/sqltool/actions/sql_query.py @@ -1,4 +1,5 @@ import sqlite3 +import sqlalchemy from pathlib import Path from typing import Dict @@ -25,37 +26,63 @@ class SqlQueryResponse(BaseModel): class SqlQuery(LocalAction[SqlQueryRequest, SqlQueryResponse]): """ - Executes a SQL Query and returns the results + Executes a SQL Query and returns the results for both local SQLite and remote databases """ _tags = ["sql", "sql_query"] - def execute(self, request: SqlQueryRequest, metadata: Dict) -> SqlQueryResponse: - """Execute SQL query""" - # Implement logic to process input and return output - # Example: - # response_data = {"result": "Processed text: " + request.text} - # Implement logic to process input and return output - - # Check if the database file exists - if not Path(request.connection_string).exists(): - raise ValueError( - f"Error: Database file '{request.connection_string}' does not exist." - ) + def _is_sqlite_connection(self, connection_string: str) -> bool: + """Determine if the connection string is for a SQLite database""" + return ( + connection_string.endswith(".db") + or connection_string.endswith(".sqlite") + or connection_string.endswith(".sqlite3") + or connection_string.startswith("sqlite:///") + ) + def execute(self, request: SqlQueryRequest, metadata: Dict) -> SqlQueryResponse: + """Execute SQL query for either SQLite or remote databases""" try: - # Use 'with' statement to manage the database connection - with sqlite3.connect(request.connection_string) as connection: - cursor = connection.cursor() - cursor.execute(request.query) - response_data = cursor.fetchall() - connection.commit() - - # Prepare the response data - return SqlQueryResponse( - execution_details={"executed": True}, - response_data=response_data, - ) - + if self._is_sqlite_connection(request.connection_string): + return self._execute_sqlite(request) + else: + return self._execute_remote(request) except sqlite3.Error as e: - raise ValueError(f"SQLite error: {str(e)}") from e + raise ValueError(f"SQLite database error: {str(e)}") from e + except sqlalchemy.exc.SQLAlchemyError as e: + raise ValueError(f"Database connection error: {str(e)}") from e + except Exception as e: + raise ValueError(f"Unexpected error: {str(e)}") from e + + def _execute_sqlite(self, request: SqlQueryRequest) -> SqlQueryResponse: + """Execute query for SQLite database""" + db_path = request.connection_string.replace("sqlite:///", "") + if not Path(db_path).exists(): + raise ValueError(f"Error: Database file '{db_path}' does not exist.") + with sqlite3.connect(db_path) as connection: + cursor = connection.cursor() + cursor.execute(request.query, {}) + response_data = [list(row) for row in cursor.fetchall()] + connection.commit() + return SqlQueryResponse( + execution_details={"executed": True, "type": "sqlite"}, + response_data=response_data, + ) + + def _execute_remote(self, request: SqlQueryRequest) -> SqlQueryResponse: + """Execute query for remote databases""" + engine = sqlalchemy.create_engine( + request.connection_string, + pool_size=5, + max_overflow=10, + pool_timeout=30, + pool_recycle=3600, + connect_args={"connect_timeout": 10}, + ) + with engine.connect() as connection: + result = connection.execute(sqlalchemy.text(request.query), {}) + response_data = [list(row) for row in result.fetchall()] + return SqlQueryResponse( + execution_details={"executed": True, "type": "remote"}, + response_data=response_data, + ) From 0717ec8a62bcce4497915fe81c01cdfa58a3b931 Mon Sep 17 00:00:00 2001 From: tushar-composio Date: Tue, 24 Dec 2024 05:54:53 -0800 Subject: [PATCH 5/7] fix: create local cache if running `App.all()` on a fresh install (#1085) --- python/composio/client/enums/enum.py | 10 +++++++++- python/composio/client/utils.py | 6 ++++++ .../composio/tools/local/sqltool/actions/sql_query.py | 11 +++++++---- python/composio/tools/local/sqltool/tool.py | 2 ++ python/composio/tools/toolset.py | 6 +----- python/tests/test_tools/test_toolset.py | 2 +- 6 files changed, 26 insertions(+), 11 deletions(-) diff --git a/python/composio/client/enums/enum.py b/python/composio/client/enums/enum.py index ac13f11fc99..bfeacb322e2 100644 --- a/python/composio/client/enums/enum.py +++ b/python/composio/client/enums/enum.py @@ -97,7 +97,15 @@ def iter(cls) -> t.Iterator[str]: # If we try to fetch Actions.iter() with local caching disabled # for example, we'd get here. if not path.exists(): - return + # pylint: disable=import-outside-toplevel + from composio.client import Composio + + # pylint: disable=import-outside-toplevel + from composio.client.utils import check_cache_refresh + + check_cache_refresh(Composio.get_latest()) + if not path.exists(): + return yield from os.listdir(path) diff --git a/python/composio/client/utils.py b/python/composio/client/utils.py index e49532ca299..b2e811504c8 100644 --- a/python/composio/client/utils.py +++ b/python/composio/client/utils.py @@ -1,4 +1,5 @@ import json +import os import typing as t from composio.client import Composio, enums @@ -14,6 +15,8 @@ logger = get_logger(__name__) +NO_CACHE_REFRESH = os.getenv("COMPOSIO_NO_CACHE_REFRESH", "false") == "true" + def filter_non_beta_items(items: t.Sequence[EnumModels]) -> t.List: filtered_items: t.List[EnumModels] = [] @@ -215,6 +218,9 @@ def check_cache_refresh(client: Composio) -> None: SDK version, and didn't come from the API. We need to start storing the data from the API and invalidate the cache if the data is not already stored. """ + if NO_CACHE_REFRESH: + return + if enums.base.ACTIONS_CACHE.exists(): first_file = next(enums.base.ACTIONS_CACHE.iterdir(), None) if first_file is not None: diff --git a/python/composio/tools/local/sqltool/actions/sql_query.py b/python/composio/tools/local/sqltool/actions/sql_query.py index 9d6bdc76aea..49e7bb7d54c 100644 --- a/python/composio/tools/local/sqltool/actions/sql_query.py +++ b/python/composio/tools/local/sqltool/actions/sql_query.py @@ -1,5 +1,4 @@ import sqlite3 -import sqlalchemy from pathlib import Path from typing import Dict @@ -42,11 +41,13 @@ def _is_sqlite_connection(self, connection_string: str) -> bool: def execute(self, request: SqlQueryRequest, metadata: Dict) -> SqlQueryResponse: """Execute SQL query for either SQLite or remote databases""" + import sqlalchemy.exc # pylint: disable=import-outside-toplevel + try: if self._is_sqlite_connection(request.connection_string): return self._execute_sqlite(request) - else: - return self._execute_remote(request) + + return self._execute_remote(request) except sqlite3.Error as e: raise ValueError(f"SQLite database error: {str(e)}") from e except sqlalchemy.exc.SQLAlchemyError as e: @@ -61,7 +62,7 @@ def _execute_sqlite(self, request: SqlQueryRequest) -> SqlQueryResponse: raise ValueError(f"Error: Database file '{db_path}' does not exist.") with sqlite3.connect(db_path) as connection: cursor = connection.cursor() - cursor.execute(request.query, {}) + cursor.execute(request.query) response_data = [list(row) for row in cursor.fetchall()] connection.commit() return SqlQueryResponse( @@ -71,6 +72,8 @@ def _execute_sqlite(self, request: SqlQueryRequest) -> SqlQueryResponse: def _execute_remote(self, request: SqlQueryRequest) -> SqlQueryResponse: """Execute query for remote databases""" + import sqlalchemy # pylint: disable=import-outside-toplevel + engine = sqlalchemy.create_engine( request.connection_string, pool_size=5, diff --git a/python/composio/tools/local/sqltool/tool.py b/python/composio/tools/local/sqltool/tool.py index 32f375928ed..953af93bbb8 100644 --- a/python/composio/tools/local/sqltool/tool.py +++ b/python/composio/tools/local/sqltool/tool.py @@ -12,6 +12,8 @@ class Sqltool(LocalTool, autoload=True): logo = "https://raw.githubusercontent.com/ComposioHQ/composio/master/python/docs/imgs/logos/sqltool.png" + requires = ["sqlalchemy>=2.0"] + @classmethod def actions(cls) -> list[Type[LocalAction]]: return [SqlQuery] diff --git a/python/composio/tools/toolset.py b/python/composio/tools/toolset.py index 6ddc471f5fe..c74d6bdfb3e 100644 --- a/python/composio/tools/toolset.py +++ b/python/composio/tools/toolset.py @@ -80,9 +80,6 @@ ProcessorType = te.Literal["pre", "post", "schema"] -NO_CACHE_REFRESH = os.environ.get("COMPOSIO_NO_CACHE_REFRESH", "false") == "true" - - class IntegrationParams(te.TypedDict): integration_id: str @@ -374,8 +371,7 @@ def client(self) -> Composio: base_url=self._base_url, runtime=self._runtime, ) - if not NO_CACHE_REFRESH: - check_cache_refresh(self._remote_client) + check_cache_refresh(self._remote_client) self._remote_client.local = self._local_client return self._remote_client diff --git a/python/tests/test_tools/test_toolset.py b/python/tests/test_tools/test_toolset.py index d914ee8a29f..95e47daad91 100644 --- a/python/tests/test_tools/test_toolset.py +++ b/python/tests/test_tools/test_toolset.py @@ -46,7 +46,7 @@ def test_find_actions_by_tags() -> None: App.SLACK, App.GITHUB, tags=["important"] ): assert "important" in action.tags - assert action.app in ("github", "slack", "slackbot") + assert action.app in ("GITHUB", "SLACK", "SLACKBOT") def test_uninitialize_app() -> None: From 6594302d45f7610d548ed54bc145732eae5cdcb2 Mon Sep 17 00:00:00 2001 From: tushar-composio Date: Tue, 24 Dec 2024 05:57:32 -0800 Subject: [PATCH 6/7] chore: Release v0.6.7 (#1086) --- python/composio/__version__.py | 2 +- python/dockerfiles/Dockerfile | 2 +- python/plugins/autogen/setup.py | 2 +- python/plugins/camel/setup.py | 2 +- python/plugins/claude/setup.py | 2 +- python/plugins/crew_ai/setup.py | 2 +- python/plugins/google/setup.py | 2 +- python/plugins/griptape/setup.py | 2 +- python/plugins/julep/setup.py | 2 +- python/plugins/langchain/setup.py | 2 +- python/plugins/langgraph/setup.py | 2 +- python/plugins/llamaindex/setup.py | 2 +- python/plugins/lyzr/setup.py | 2 +- python/plugins/openai/setup.py | 2 +- python/plugins/phidata/setup.py | 2 +- python/plugins/praisonai/setup.py | 2 +- python/setup.py | 2 +- python/swe/setup.py | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/python/composio/__version__.py b/python/composio/__version__.py index 4c513f3b53c..f6104e0c26b 100644 --- a/python/composio/__version__.py +++ b/python/composio/__version__.py @@ -1 +1 @@ -__version__ = "0.6.6" +__version__ = "0.6.7" diff --git a/python/dockerfiles/Dockerfile b/python/dockerfiles/Dockerfile index a54b8b901d7..bf2839f3802 100644 --- a/python/dockerfiles/Dockerfile +++ b/python/dockerfiles/Dockerfile @@ -19,7 +19,7 @@ RUN /bin/python3 -m venv .composio/venv RUN export PATH=$PATH:$(pwd)/.composio/venv/bin # Install composio -RUN python -m pip install composio-core[all]==0.6.6 fastapi playwright uvicorn +RUN python -m pip install composio-core[all]==0.6.7 fastapi playwright uvicorn # Install playwright deps RUN playwright install-deps diff --git a/python/plugins/autogen/setup.py b/python/plugins/autogen/setup.py index 1379ad08cdf..96b02d4551a 100644 --- a/python/plugins/autogen/setup.py +++ b/python/plugins/autogen/setup.py @@ -9,7 +9,7 @@ setup( name="composio_autogen", - version="0.6.6", + version="0.6.7", author="Sawradip", author_email="sawradip@composio.dev", description="Use Composio to get an array of tools with your Autogen agent.", diff --git a/python/plugins/camel/setup.py b/python/plugins/camel/setup.py index 6712f4661fc..d3e91dd854e 100644 --- a/python/plugins/camel/setup.py +++ b/python/plugins/camel/setup.py @@ -9,7 +9,7 @@ setup( name="composio_camel", - version="0.6.6", + version="0.6.7", author="Sawradip", author_email="sawradip@composio.dev", description="Use Composio to get an array of tools with your Claude LLMs.", diff --git a/python/plugins/claude/setup.py b/python/plugins/claude/setup.py index a5b7fcfd9ff..6e28476cc98 100644 --- a/python/plugins/claude/setup.py +++ b/python/plugins/claude/setup.py @@ -9,7 +9,7 @@ setup( name="composio_claude", - version="0.6.6", + version="0.6.7", author="Sawradip", author_email="sawradip@composio.dev", description="Use Composio to get an array of tools with your Claude LLMs.", diff --git a/python/plugins/crew_ai/setup.py b/python/plugins/crew_ai/setup.py index ce5e5882c09..719dd33ca4f 100644 --- a/python/plugins/crew_ai/setup.py +++ b/python/plugins/crew_ai/setup.py @@ -9,7 +9,7 @@ setup( name="composio_crewai", - version="0.6.6", + version="0.6.7", author="Himanshu", author_email="himanshu@composio.dev", description="Use Composio to get an array of tools with your CrewAI agent.", diff --git a/python/plugins/google/setup.py b/python/plugins/google/setup.py index 5f85328e545..2972948748d 100644 --- a/python/plugins/google/setup.py +++ b/python/plugins/google/setup.py @@ -9,7 +9,7 @@ setup( name="composio_google", - version="0.6.6", + version="0.6.7", author="Assistant", author_email="karan@composio.dev", description="Use Composio to get an array of tools with your Google AI Python Gemini model.", diff --git a/python/plugins/griptape/setup.py b/python/plugins/griptape/setup.py index 8af931bca20..0a6e34355d9 100644 --- a/python/plugins/griptape/setup.py +++ b/python/plugins/griptape/setup.py @@ -9,7 +9,7 @@ setup( name="composio_griptape", - version="0.6.6", + version="0.6.7", author="Sawradip", author_email="sawradip@composio.dev", description="Use Composio to get an array of tools with your Griptape workflow.", diff --git a/python/plugins/julep/setup.py b/python/plugins/julep/setup.py index 388f5b43a06..f9f40484300 100644 --- a/python/plugins/julep/setup.py +++ b/python/plugins/julep/setup.py @@ -9,7 +9,7 @@ setup( name="composio_julep", - version="0.6.6", + version="0.6.7", author="Sawradip", author_email="sawradip@composio.dev", description="Use Composio to get an array of tools with your Julep workflow.", diff --git a/python/plugins/langchain/setup.py b/python/plugins/langchain/setup.py index d75b2ab8de1..42aec62859b 100644 --- a/python/plugins/langchain/setup.py +++ b/python/plugins/langchain/setup.py @@ -9,7 +9,7 @@ setup( name="composio_langchain", - version="0.6.6", + version="0.6.7", author="Karan", author_email="karan@composio.dev", description="Use Composio to get an array of tools with your LangChain agent.", diff --git a/python/plugins/langgraph/setup.py b/python/plugins/langgraph/setup.py index d7e3bac70e4..8252a62dbc6 100644 --- a/python/plugins/langgraph/setup.py +++ b/python/plugins/langgraph/setup.py @@ -9,7 +9,7 @@ setup( name="composio_langgraph", - version="0.6.6", + version="0.6.7", author="Sawradip", author_email="sawradip@composio.dev", description="Use Composio to get array of tools with LangGraph Agent Workflows", diff --git a/python/plugins/llamaindex/setup.py b/python/plugins/llamaindex/setup.py index cc46eb5bbdc..c18f970f5bf 100644 --- a/python/plugins/llamaindex/setup.py +++ b/python/plugins/llamaindex/setup.py @@ -9,7 +9,7 @@ setup( name="composio_llamaindex", - version="0.6.6", + version="0.6.7", author="Sawradip", author_email="sawradip@composio.dev", description="Use Composio to get an array of tools with your LlamaIndex agent.", diff --git a/python/plugins/lyzr/setup.py b/python/plugins/lyzr/setup.py index c314fa6c5e1..2845fee87d5 100644 --- a/python/plugins/lyzr/setup.py +++ b/python/plugins/lyzr/setup.py @@ -9,7 +9,7 @@ setup( name="composio_lyzr", - version="0.6.6", + version="0.6.7", author="Sawradip", author_email="sawradip@composio.dev", description="Use Composio to get an array of tools with your Lyzr workflow.", diff --git a/python/plugins/openai/setup.py b/python/plugins/openai/setup.py index 64521c2a49a..5a6f0d2bc16 100644 --- a/python/plugins/openai/setup.py +++ b/python/plugins/openai/setup.py @@ -9,7 +9,7 @@ setup( name="composio_openai", - version="0.6.6", + version="0.6.7", author="Sawradip", author_email="sawradip@composio.dev", description="Use Composio to get an array of tools with your OpenAI Function Call.", diff --git a/python/plugins/phidata/setup.py b/python/plugins/phidata/setup.py index 589f3f51494..edfe4ddd5e0 100644 --- a/python/plugins/phidata/setup.py +++ b/python/plugins/phidata/setup.py @@ -9,7 +9,7 @@ setup( name="composio_phidata", - version="0.6.6", + version="0.6.7", author="Sawradip", author_email="sawradip@composio.dev", description="Use Composio to get an array of tools with your Phidata Plugin.", diff --git a/python/plugins/praisonai/setup.py b/python/plugins/praisonai/setup.py index 39fb41a812d..ceab1ca5633 100644 --- a/python/plugins/praisonai/setup.py +++ b/python/plugins/praisonai/setup.py @@ -9,7 +9,7 @@ setup( name="composio_praisonai", - version="0.6.6", + version="0.6.7", author="Sawradip", author_email="sawradip@composio.dev", description="Use Composio Tools to enhance your PraisonAI agents capabilities.", diff --git a/python/setup.py b/python/setup.py index 01971a0352b..8f632e10faf 100644 --- a/python/setup.py +++ b/python/setup.py @@ -90,7 +90,7 @@ def scan_for_package_data( setup( name="composio_core", - version="0.6.6", + version="0.6.7", author="Utkarsh", author_email="utkarsh@composio.dev", description="Core package to act as a bridge between composio platform and other services.", diff --git a/python/swe/setup.py b/python/swe/setup.py index 6c8d297339e..abe1cd20ab2 100644 --- a/python/swe/setup.py +++ b/python/swe/setup.py @@ -35,7 +35,7 @@ def scan_for_package_data( setup( name="swekit", - version="0.3.7", + version="0.3.8", author="Shubhra", author_email="shubhra@composio.dev", description="Tools for running a SWE agent using Composio platform", From a5aba110aee8bfb70141ed1f1bafe299d91895a5 Mon Sep 17 00:00:00 2001 From: Abhishek Patil <83769052+abhishekpatil4@users.noreply.github.com> Date: Tue, 24 Dec 2024 20:32:12 +0530 Subject: [PATCH 7/7] feat: add custom GPT to docs (#1084) --- docs/mint.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/mint.json b/docs/mint.json index bced1589fdd..af39a116b01 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -70,6 +70,10 @@ { "name": "All Tools", "url": "https://composio.dev/tools" + }, + { + "name": "Chat with Code", + "url": "https://chatgpt.com/g/g-67697db23c808191a1787ea4b86ac1ce-composio" } ], "navigation": [