├── .gitignore ├── README.md ├── generate-tool.js ├── index.js ├── package.json ├── pnpm-lock.yaml ├── tools └── DownloadYoutubeVideo.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | *.env 106 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # langchain-tools-demo 2 | A simple LangChain agent setup that makes it easy to test out new agent tools. 3 | 4 | You can paste tools you generate from Toolkit into the `/tools` folder and import them into the agent in the index.js file. 5 | 6 | Start the agent by calling: 7 | 8 | `pnpm dev` 9 | 10 | # Tool Generation 11 | You can also try to generate a new LangChain tool using the work we've been doing with Toolkit (toolkit.club) 12 | 13 | (https://github.com/hey-pal/toolkit-ai)[https://github.com/hey-pal/toolkit-ai] 14 | 15 | Just open up the `generate-tool.js` file, and swap out the info for the tool you want to generate. 16 | 17 | Then call `pnpm generate-tool` 18 | 19 | In a little bit of time you'll have a working LangChain tool you can then import and try using. 20 | 21 | -------------------------------------------------------------------------------- /generate-tool.js: -------------------------------------------------------------------------------- 1 | /* 2 | This script generates a tool using the Toolkit AI library 3 | https://github.com/hey-pal/toolkit-ai 4 | 5 | You can call it by just calling `node generate-tool.js` from the command line. 6 | */ 7 | 8 | import * as dotenv from 'dotenv'; // see https://github.com/motdotla/dotenv#how-do-i-use-dotenv-with-import 9 | dotenv.config(); 10 | import Toolkit from '@heypal/toolkit-ai'; 11 | 12 | // OpenAI API key can optionally be set here, or the underlying model 13 | // will use the environment variable OPENAI_API_KEY 14 | const toolkit = new Toolkit({ 15 | // openAIApiKey: '', 16 | }); 17 | 18 | (async () => { 19 | const tool = await toolkit.generateTool({ 20 | name: 'Temperature Converter', 21 | description: 22 | 'Converts a temperature from Farenheit, Celsius, or Kelvin to any other unit.', 23 | }); 24 | 25 | console.log(tool.langChainCode); 26 | })(); -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | import * as dotenv from 'dotenv'; // see https://github.com/motdotla/dotenv#how-do-i-use-dotenv-with-import 2 | dotenv.config(); 3 | 4 | import { OpenAI } from 'langchain'; 5 | import { initializeAgentExecutor } from 'langchain/agents'; 6 | import { 7 | SerpAPI, 8 | Calculator, 9 | RequestsGetTool, 10 | RequestsPostTool, 11 | } from 'langchain/tools'; 12 | 13 | import readline from 'readline'; 14 | 15 | /* 16 | An example of a Toolkit generated file we copied over 17 | */ 18 | import DownloadYoutubeVideoToFile from './tools/DownloadYoutubeVideo.js'; 19 | 20 | const model = new OpenAI({ temperature: 0, model: 'gpt-4' }); 21 | const tools = [ 22 | new SerpAPI(), 23 | new Calculator(), 24 | new RequestsPostTool(), 25 | new RequestsGetTool(), 26 | new DownloadYoutubeVideoToFile(), 27 | ]; 28 | 29 | const executor = await initializeAgentExecutor( 30 | tools, 31 | model, 32 | 'zero-shot-react-description', 33 | true 34 | ); 35 | console.log('Loaded agent.'); 36 | 37 | const rl = readline.createInterface({ 38 | input: process.stdin, 39 | output: process.stdout, 40 | }); 41 | 42 | rl.question('What do you want to do? ', async (input) => { 43 | console.log(`Executing with input "${input}"...`); 44 | 45 | const result = await executor.call({ input }); 46 | 47 | console.log(`Got output ${result.output}`); 48 | 49 | rl.close(); 50 | }); 51 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "langchain-demos", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "type": "module", 7 | "scripts": { 8 | "dev": "node ./index.js", 9 | "test": "echo \"Error: no test specified\" && exit 1", 10 | "generate-tool": "node ./generate-tool.js" 11 | }, 12 | "author": "", 13 | "license": "ISC", 14 | "dependencies": { 15 | "@heypal/toolkit-ai": "^0.1.2", 16 | "ajv": "^8.12.0", 17 | "axios": "^1.3.4", 18 | "dotenv": "^16.0.3", 19 | "langchain": "^0.0.47", 20 | "ytdl": "^1.4.1", 21 | "ytdl-core": "^4.11.3" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | dependencies: 4 | ajv: 5 | specifier: ^8.12.0 6 | version: 8.12.0 7 | axios: 8 | specifier: ^1.3.4 9 | version: 1.3.4 10 | dotenv: 11 | specifier: ^16.0.3 12 | version: 16.0.3 13 | langchain: 14 | specifier: ^0.0.47 15 | version: 0.0.47 16 | ytdl: 17 | specifier: ^1.4.1 18 | version: 1.4.1 19 | ytdl-core: 20 | specifier: ^4.11.3 21 | version: 4.11.3 22 | 23 | packages: 24 | 25 | /@anthropic-ai/sdk@0.4.2: 26 | resolution: {integrity: sha512-L/uhXDxPNWKIUV3V2v+97XyVVjY2P6vhxpdNFqmZEKUKy6FqVwcfPPHcckH6ixyQ5+j/Zq4A6eybc7ewc2+WjQ==} 27 | dependencies: 28 | '@fortaine/fetch-event-source': 3.0.6 29 | cross-fetch: 3.1.5 30 | transitivePeerDependencies: 31 | - encoding 32 | dev: false 33 | 34 | /@fortaine/fetch-event-source@3.0.6: 35 | resolution: {integrity: sha512-621GAuLMvKtyZQ3IA6nlDWhV1V/7PGOTNIGLUifxt0KzM+dZIweJ6F3XvQF3QnqeNfS1N7WQ0Kil1Di/lhChEw==} 36 | engines: {node: '>=16.15'} 37 | dev: false 38 | 39 | /ajv@8.12.0: 40 | resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} 41 | dependencies: 42 | fast-deep-equal: 3.1.3 43 | json-schema-traverse: 1.0.0 44 | require-from-string: 2.0.2 45 | uri-js: 4.4.1 46 | dev: false 47 | 48 | /ansi-escape-sequences@6.2.1: 49 | resolution: {integrity: sha512-0gK95MrLXv+Vy5h4eKGvSX1yXopBqSYBi3/w4hekUxs/hHakF6asH9Gg7UXbb7IH9weAlVIrUzVOITNBr8Imag==} 50 | engines: {node: '>=12.17'} 51 | dependencies: 52 | array-back: 6.2.2 53 | dev: false 54 | 55 | /ansi-regex@5.0.1: 56 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 57 | engines: {node: '>=8'} 58 | dev: false 59 | 60 | /ansi-styles@4.3.0: 61 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 62 | engines: {node: '>=8'} 63 | dependencies: 64 | color-convert: 2.0.1 65 | dev: false 66 | 67 | /array-back@6.2.2: 68 | resolution: {integrity: sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==} 69 | engines: {node: '>=12.17'} 70 | dev: false 71 | 72 | /asynckit@0.4.0: 73 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 74 | dev: false 75 | 76 | /axios@0.26.1: 77 | resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} 78 | dependencies: 79 | follow-redirects: 1.15.2 80 | transitivePeerDependencies: 81 | - debug 82 | dev: false 83 | 84 | /axios@1.3.4: 85 | resolution: {integrity: sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==} 86 | dependencies: 87 | follow-redirects: 1.15.2 88 | form-data: 4.0.0 89 | proxy-from-env: 1.1.0 90 | transitivePeerDependencies: 91 | - debug 92 | dev: false 93 | 94 | /binary-extensions@2.2.0: 95 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 96 | engines: {node: '>=8'} 97 | dev: false 98 | 99 | /browser-or-node@2.1.1: 100 | resolution: {integrity: sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==} 101 | dev: false 102 | 103 | /chalk@4.1.2: 104 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 105 | engines: {node: '>=10'} 106 | dependencies: 107 | ansi-styles: 4.3.0 108 | supports-color: 7.2.0 109 | dev: false 110 | 111 | /cli-progress@3.12.0: 112 | resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} 113 | engines: {node: '>=4'} 114 | dependencies: 115 | string-width: 4.2.3 116 | dev: false 117 | 118 | /color-convert@2.0.1: 119 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 120 | engines: {node: '>=7.0.0'} 121 | dependencies: 122 | color-name: 1.1.4 123 | dev: false 124 | 125 | /color-name@1.1.4: 126 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 127 | dev: false 128 | 129 | /combined-stream@1.0.8: 130 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 131 | engines: {node: '>= 0.8'} 132 | dependencies: 133 | delayed-stream: 1.0.0 134 | dev: false 135 | 136 | /commander@6.2.1: 137 | resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} 138 | engines: {node: '>= 6'} 139 | dev: false 140 | 141 | /cross-fetch@3.1.5: 142 | resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} 143 | dependencies: 144 | node-fetch: 2.6.7 145 | transitivePeerDependencies: 146 | - encoding 147 | dev: false 148 | 149 | /debug@4.3.4: 150 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 151 | engines: {node: '>=6.0'} 152 | peerDependencies: 153 | supports-color: '*' 154 | peerDependenciesMeta: 155 | supports-color: 156 | optional: true 157 | dependencies: 158 | ms: 2.1.2 159 | dev: false 160 | 161 | /delayed-stream@1.0.0: 162 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 163 | engines: {node: '>=0.4.0'} 164 | dev: false 165 | 166 | /dotenv@16.0.3: 167 | resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} 168 | engines: {node: '>=12'} 169 | dev: false 170 | 171 | /eastasianwidth@0.2.0: 172 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 173 | dev: false 174 | 175 | /emoji-regex@8.0.0: 176 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 177 | dev: false 178 | 179 | /eventemitter3@4.0.7: 180 | resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} 181 | dev: false 182 | 183 | /exponential-backoff@3.1.1: 184 | resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} 185 | dev: false 186 | 187 | /expr-eval@2.0.2: 188 | resolution: {integrity: sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg==} 189 | dev: false 190 | 191 | /fast-deep-equal@3.1.3: 192 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 193 | dev: false 194 | 195 | /flat@5.0.2: 196 | resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} 197 | hasBin: true 198 | dev: false 199 | 200 | /follow-redirects@1.15.2: 201 | resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} 202 | engines: {node: '>=4.0'} 203 | peerDependencies: 204 | debug: '*' 205 | peerDependenciesMeta: 206 | debug: 207 | optional: true 208 | dev: false 209 | 210 | /form-data@4.0.0: 211 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 212 | engines: {node: '>= 6'} 213 | dependencies: 214 | asynckit: 0.4.0 215 | combined-stream: 1.0.8 216 | mime-types: 2.1.35 217 | dev: false 218 | 219 | /has-flag@4.0.0: 220 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 221 | engines: {node: '>=8'} 222 | dev: false 223 | 224 | /hash-arg@1.0.5: 225 | resolution: {integrity: sha512-RRLtO4ffau3NHOHgufXXk26OBL8bG7iZ1sPZiiBbL7Ri5kdl/ONaUqy2fCTzYeWamEYNMRB9mD0n1ThXsLhmhA==} 226 | engines: {node: '>=8.17.0', npm: '>=6.13.4'} 227 | dev: false 228 | 229 | /homedir@0.6.0: 230 | resolution: {integrity: sha512-KZFBHenkVuyyG4uaqRSXqWJr3HTxcaPguM7rU1BlH/mtbDlzaXNSXTa9AhV+fXEjrNemHu9vtLRIaM8/8OW0xA==} 231 | dev: false 232 | 233 | /is-binary-path@2.1.0: 234 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 235 | engines: {node: '>=8'} 236 | dependencies: 237 | binary-extensions: 2.2.0 238 | dev: false 239 | 240 | /is-fullwidth-code-point@3.0.0: 241 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 242 | engines: {node: '>=8'} 243 | dev: false 244 | 245 | /json-schema-traverse@1.0.0: 246 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 247 | dev: false 248 | 249 | /jsonpointer@5.0.1: 250 | resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} 251 | engines: {node: '>=0.10.0'} 252 | dev: false 253 | 254 | /langchain@0.0.47: 255 | resolution: {integrity: sha512-jfQTIs4P1Bwa1Ip7xJ8BgbK0Ms0ggyFidEmYKtuyx6IEQu1envSVbUJtBg526LhAPnPzwaN3128zjSHY2h4adw==} 256 | engines: {node: '>=18'} 257 | peerDependencies: 258 | '@dqbd/tiktoken': ^1.0.2 259 | '@huggingface/inference': ^1.5.1 260 | '@pinecone-database/pinecone': ^0.0.10 261 | '@supabase/supabase-js': ^2.10.0 262 | cheerio: ^1.0.0-rc.12 263 | chromadb: ^1.3.0 264 | cohere-ai: ^5.0.2 265 | d3-dsv: ^3.0.1 266 | hnswlib-node: ^1.4.2 267 | pdfjs-dist: ^3.4.120 268 | puppeteer: ^19.7.2 269 | redis: ^4.6.4 270 | replicate: ^0.6.0 271 | srt-parser-2: ^1.2.2 272 | typeorm: ^0.3.12 273 | peerDependenciesMeta: 274 | '@dqbd/tiktoken': 275 | optional: true 276 | '@huggingface/inference': 277 | optional: true 278 | '@pinecone-database/pinecone': 279 | optional: true 280 | '@supabase/supabase-js': 281 | optional: true 282 | cheerio: 283 | optional: true 284 | chromadb: 285 | optional: true 286 | cohere-ai: 287 | optional: true 288 | d3-dsv: 289 | optional: true 290 | hnswlib-node: 291 | optional: true 292 | pdfjs-dist: 293 | optional: true 294 | puppeteer: 295 | optional: true 296 | redis: 297 | optional: true 298 | replicate: 299 | optional: true 300 | srt-parser-2: 301 | optional: true 302 | typeorm: 303 | optional: true 304 | dependencies: 305 | '@anthropic-ai/sdk': 0.4.2 306 | '@fortaine/fetch-event-source': 3.0.6 307 | browser-or-node: 2.1.1 308 | exponential-backoff: 3.1.1 309 | expr-eval: 2.0.2 310 | flat: 5.0.2 311 | is-binary-path: 2.1.0 312 | jsonpointer: 5.0.1 313 | object-hash: 3.0.0 314 | openai: 3.2.1 315 | p-queue: 7.3.4 316 | uuid: 9.0.0 317 | yaml: 2.2.1 318 | zod: 3.21.4 319 | transitivePeerDependencies: 320 | - debug 321 | - encoding 322 | dev: false 323 | 324 | /list-it@1.3.10: 325 | resolution: {integrity: sha512-eXBVYLe8Qgb3LX/bX5ApLJ9TASQjT20ECex7lmCFx30p/iQJFWKyFK7BA0j0GXdEEKwKaS0WAoVkLbvthMHZoA==} 326 | hasBin: true 327 | dependencies: 328 | ansi-escape-sequences: 6.2.1 329 | debug: 4.3.4 330 | eastasianwidth: 0.2.0 331 | hash-arg: 1.0.5 332 | node-getopt: 0.3.2 333 | transitivePeerDependencies: 334 | - supports-color 335 | dev: false 336 | 337 | /lodash.throttle@4.1.1: 338 | resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} 339 | dev: false 340 | 341 | /m3u8stream@0.8.6: 342 | resolution: {integrity: sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA==} 343 | engines: {node: '>=12'} 344 | dependencies: 345 | miniget: 4.2.2 346 | sax: 1.2.4 347 | dev: false 348 | 349 | /mime-db@1.52.0: 350 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 351 | engines: {node: '>= 0.6'} 352 | dev: false 353 | 354 | /mime-types@2.1.35: 355 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 356 | engines: {node: '>= 0.6'} 357 | dependencies: 358 | mime-db: 1.52.0 359 | dev: false 360 | 361 | /miniget@4.2.2: 362 | resolution: {integrity: sha512-a7voNL1N5lDMxvTMExOkg+Fq89jM2vY8pAi9ZEWzZtfNmdfP6RXkvUtFnCAXoCv2T9k1v/fUJVaAEuepGcvLYA==} 363 | engines: {node: '>=12'} 364 | dev: false 365 | 366 | /ms@2.1.2: 367 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 368 | dev: false 369 | 370 | /node-fetch@2.6.7: 371 | resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} 372 | engines: {node: 4.x || >=6.0.0} 373 | peerDependencies: 374 | encoding: ^0.1.0 375 | peerDependenciesMeta: 376 | encoding: 377 | optional: true 378 | dependencies: 379 | whatwg-url: 5.0.0 380 | dev: false 381 | 382 | /node-getopt@0.3.2: 383 | resolution: {integrity: sha512-yqkmYrMbK1wPrfz7mgeYvA4tBperLg9FQ4S3Sau3nSAkpOA0x0zC8nQ1siBwozy1f4SE8vq2n1WKv99r+PCa1Q==} 384 | engines: {node: '>= 0.6.0'} 385 | dev: false 386 | 387 | /object-hash@3.0.0: 388 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 389 | engines: {node: '>= 6'} 390 | dev: false 391 | 392 | /openai@3.2.1: 393 | resolution: {integrity: sha512-762C9BNlJPbjjlWZi4WYK9iM2tAVAv0uUp1UmI34vb0CN5T2mjB/qM6RYBmNKMh/dN9fC+bxqPwWJZUTWW052A==} 394 | dependencies: 395 | axios: 0.26.1 396 | form-data: 4.0.0 397 | transitivePeerDependencies: 398 | - debug 399 | dev: false 400 | 401 | /p-queue@7.3.4: 402 | resolution: {integrity: sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==} 403 | engines: {node: '>=12'} 404 | dependencies: 405 | eventemitter3: 4.0.7 406 | p-timeout: 5.1.0 407 | dev: false 408 | 409 | /p-timeout@5.1.0: 410 | resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} 411 | engines: {node: '>=12'} 412 | dev: false 413 | 414 | /proxy-from-env@1.1.0: 415 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} 416 | dev: false 417 | 418 | /punycode@2.3.0: 419 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 420 | engines: {node: '>=6'} 421 | dev: false 422 | 423 | /require-from-string@2.0.2: 424 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 425 | engines: {node: '>=0.10.0'} 426 | dev: false 427 | 428 | /sanitize-filename@1.6.3: 429 | resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} 430 | dependencies: 431 | truncate-utf8-bytes: 1.0.2 432 | dev: false 433 | 434 | /sax@1.2.4: 435 | resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} 436 | dev: false 437 | 438 | /streamspeed@2.0.1: 439 | resolution: {integrity: sha512-j6pFynhO0nZ+1zhyTDqLLlIxM0IyCdLKMj1EUJznDA87xLE/JWSwEg3FlJWERDB72KYt5OD29ZUWxxVkMTnqWg==} 440 | engines: {node: '>=10'} 441 | dev: false 442 | 443 | /string-width@4.2.3: 444 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 445 | engines: {node: '>=8'} 446 | dependencies: 447 | emoji-regex: 8.0.0 448 | is-fullwidth-code-point: 3.0.0 449 | strip-ansi: 6.0.1 450 | dev: false 451 | 452 | /strip-ansi@6.0.1: 453 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 454 | engines: {node: '>=8'} 455 | dependencies: 456 | ansi-regex: 5.0.1 457 | dev: false 458 | 459 | /supports-color@7.2.0: 460 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 461 | engines: {node: '>=8'} 462 | dependencies: 463 | has-flag: 4.0.0 464 | dev: false 465 | 466 | /tr46@0.0.3: 467 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 468 | dev: false 469 | 470 | /truncate-utf8-bytes@1.0.2: 471 | resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} 472 | dependencies: 473 | utf8-byte-length: 1.0.4 474 | dev: false 475 | 476 | /uri-js@4.4.1: 477 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 478 | dependencies: 479 | punycode: 2.3.0 480 | dev: false 481 | 482 | /utf8-byte-length@1.0.4: 483 | resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==} 484 | dev: false 485 | 486 | /uuid@9.0.0: 487 | resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} 488 | hasBin: true 489 | dev: false 490 | 491 | /webidl-conversions@3.0.1: 492 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 493 | dev: false 494 | 495 | /whatwg-url@5.0.0: 496 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 497 | dependencies: 498 | tr46: 0.0.3 499 | webidl-conversions: 3.0.1 500 | dev: false 501 | 502 | /yaml@2.2.1: 503 | resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==} 504 | engines: {node: '>= 14'} 505 | dev: false 506 | 507 | /ytdl-core@4.11.3: 508 | resolution: {integrity: sha512-0KerQw+R7Nnhcebxq6WPopO92VLNnsoRVjJuhGhRzgfK1YdrnG1aqaq4zycolMBY+K8TZHXPV7ZNIjcawD/BPA==} 509 | engines: {node: '>=12'} 510 | dependencies: 511 | m3u8stream: 0.8.6 512 | miniget: 4.2.2 513 | sax: 1.2.4 514 | dev: false 515 | 516 | /ytdl@1.4.1: 517 | resolution: {integrity: sha512-YJS9zRRS7Goq3yBx4jt6pk1w0CPjAaTzYX49/BEDtP4aSsF92cQTkDdA6893AjS0adEvpH79gvXUOx6K959sBw==} 518 | engines: {node: '>=10'} 519 | hasBin: true 520 | dependencies: 521 | chalk: 4.1.2 522 | cli-progress: 3.12.0 523 | commander: 6.2.1 524 | homedir: 0.6.0 525 | list-it: 1.3.10 526 | lodash.throttle: 4.1.1 527 | sanitize-filename: 1.6.3 528 | streamspeed: 2.0.1 529 | ytdl-core: 4.11.3 530 | transitivePeerDependencies: 531 | - supports-color 532 | dev: false 533 | 534 | /zod@3.21.4: 535 | resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} 536 | dev: false 537 | -------------------------------------------------------------------------------- /tools/DownloadYoutubeVideo.js: -------------------------------------------------------------------------------- 1 | import { Tool } from 'langchain/agents'; 2 | import Ajv from 'ajv'; 3 | 4 | import ytdl from 'ytdl-core'; 5 | import fs from 'fs'; 6 | 7 | async function call({ url, filename }) { 8 | 9 | const video = ytdl(url); 10 | const fileStream = fs.createWriteStream(filename); 11 | let downloadedBytes = 0; 12 | let totalBytes = 0; 13 | 14 | video.on('progress', (chunkLength, downloaded, total) => { 15 | downloadedBytes = downloaded; 16 | totalBytes = total; 17 | const percentage = (downloaded / total * 100).toFixed(2); 18 | console.log(`Downloading: ${percentage}% (${downloaded}/${total} bytes)`); 19 | }); 20 | 21 | video.pipe(fileStream); 22 | await new Promise((resolve, reject) => { 23 | fileStream.on('finish', resolve); 24 | fileStream.on('error', reject); 25 | }); 26 | console.log(`Download completed. File saved as ${filename}.`); 27 | return { fileAddress: filename }; 28 | } 29 | 30 | class DownloadYoutubeVideoToFile extends Tool { 31 | name = 'download-youtube-video-to-file'; 32 | 33 | description = `Download a youtube video from a URL to a given file on your filesystem (relative to the current path), and returns the file's address where it was saved. The action input should adhere to this JSON schema: 34 | {{"type":"object","properties":{{"url":{{"type":"string"}},"filename":{{"type":"string"}}}},"required":["url","filename"]}}`; 35 | 36 | ajv = new Ajv(); 37 | 38 | inputSchema = {"type":"object","properties":{"url":{"type":"string"},"filename":{"type":"string"}},"required":["url","filename"]}; 39 | 40 | outputSchema = {"type":"object","properties":{"fileAddress":{"type":"string"}},"required":["fileAddress"]}; 41 | 42 | validate(data, schema) { 43 | if (schema) { 44 | const validateSchema = this.ajv.compile(schema); 45 | if (!validateSchema(data)) { 46 | throw new Error(this.ajv.errorsText(validateSchema.errors)); 47 | } 48 | } 49 | } 50 | 51 | async _call(arg) { 52 | const input = JSON.parse(arg); 53 | this.validate(input, this.inputSchema); 54 | const output = await call(input); 55 | this.validate(output, this.outputSchema); 56 | return JSON.stringify(output); 57 | } 58 | } 59 | 60 | export default DownloadYoutubeVideoToFile; -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@anthropic-ai/sdk@^0.4.2": 6 | version "0.4.3" 7 | resolved "https://registry.yarnpkg.com/@anthropic-ai/sdk/-/sdk-0.4.3.tgz#372878ad2b86b7e10e047eafd781e3aea69f8a80" 8 | integrity sha512-SZrlXvjUUYT9rPmSzlTtmVk1OjVNpkCzILRluhiYwNcxXfQyvPJDi0CI6PyymygcgtqEF5EVqhKmC/PtPsNEIw== 9 | dependencies: 10 | "@fortaine/fetch-event-source" "^3.0.6" 11 | cross-fetch "^3.1.5" 12 | 13 | "@fortaine/fetch-event-source@^3.0.6": 14 | version "3.0.6" 15 | resolved "https://registry.yarnpkg.com/@fortaine/fetch-event-source/-/fetch-event-source-3.0.6.tgz#b8552a2ca2c5202f5699b93a92be0188d422b06e" 16 | integrity sha512-621GAuLMvKtyZQ3IA6nlDWhV1V/7PGOTNIGLUifxt0KzM+dZIweJ6F3XvQF3QnqeNfS1N7WQ0Kil1Di/lhChEw== 17 | 18 | "@heypal/toolkit-ai@^0.1.2": 19 | version "0.1.2" 20 | resolved "https://registry.yarnpkg.com/@heypal/toolkit-ai/-/toolkit-ai-0.1.2.tgz#41215b20a3cfe3605c0f44c4373006f3c47ad16f" 21 | integrity sha512-P46j20s6F9UR/unSpS9eU9MEQpqBEH54hP+puffcHsPgYx0FqW1gVvNVWbaZkk12RDCwznTNAB5++AQBnWE0EA== 22 | dependencies: 23 | "@sindresorhus/slugify" "^2.2.0" 24 | camelcase "^7.0.1" 25 | handlebars "^4.7.7" 26 | langchain "^0.0.49" 27 | prettier "^2.8.7" 28 | zod "^3.21.4" 29 | 30 | "@sindresorhus/slugify@^2.2.0": 31 | version "2.2.0" 32 | resolved "https://registry.yarnpkg.com/@sindresorhus/slugify/-/slugify-2.2.0.tgz#42738974ff19a9a306d3523a8595152998cc758e" 33 | integrity sha512-9Vybc/qX8Kj6pxJaapjkFbiUJPk7MAkCh/GFCxIBnnsuYCFPIXKvnLidG8xlepht3i24L5XemUmGtrJ3UWrl6w== 34 | dependencies: 35 | "@sindresorhus/transliterate" "^1.0.0" 36 | escape-string-regexp "^5.0.0" 37 | 38 | "@sindresorhus/transliterate@^1.0.0": 39 | version "1.6.0" 40 | resolved "https://registry.yarnpkg.com/@sindresorhus/transliterate/-/transliterate-1.6.0.tgz#2309fff65a868047e6d2dd70dec747c5b36a8327" 41 | integrity sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ== 42 | dependencies: 43 | escape-string-regexp "^5.0.0" 44 | 45 | ajv@^8.12.0: 46 | version "8.12.0" 47 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" 48 | integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== 49 | dependencies: 50 | fast-deep-equal "^3.1.1" 51 | json-schema-traverse "^1.0.0" 52 | require-from-string "^2.0.2" 53 | uri-js "^4.2.2" 54 | 55 | ansi-escape-sequences@^6.2.1: 56 | version "6.2.1" 57 | resolved "https://registry.yarnpkg.com/ansi-escape-sequences/-/ansi-escape-sequences-6.2.1.tgz#6127d70b55f6f49af8b6f8968921ce9a39f1f2ad" 58 | integrity sha512-0gK95MrLXv+Vy5h4eKGvSX1yXopBqSYBi3/w4hekUxs/hHakF6asH9Gg7UXbb7IH9weAlVIrUzVOITNBr8Imag== 59 | dependencies: 60 | array-back "^6.2.2" 61 | 62 | ansi-regex@^5.0.1: 63 | version "5.0.1" 64 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 65 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 66 | 67 | ansi-styles@^4.1.0: 68 | version "4.3.0" 69 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 70 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 71 | dependencies: 72 | color-convert "^2.0.1" 73 | 74 | array-back@^6.2.2: 75 | version "6.2.2" 76 | resolved "https://registry.yarnpkg.com/array-back/-/array-back-6.2.2.tgz#f567d99e9af88a6d3d2f9dfcc21db6f9ba9fd157" 77 | integrity sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw== 78 | 79 | asynckit@^0.4.0: 80 | version "0.4.0" 81 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 82 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 83 | 84 | axios@^0.26.0: 85 | version "0.26.1" 86 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" 87 | integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== 88 | dependencies: 89 | follow-redirects "^1.14.8" 90 | 91 | axios@^1.3.4: 92 | version "1.3.5" 93 | resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.5.tgz#e07209b39a0d11848e3e341fa087acd71dadc542" 94 | integrity sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw== 95 | dependencies: 96 | follow-redirects "^1.15.0" 97 | form-data "^4.0.0" 98 | proxy-from-env "^1.1.0" 99 | 100 | binary-extensions@^2.0.0: 101 | version "2.2.0" 102 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 103 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 104 | 105 | browser-or-node@^2.1.1: 106 | version "2.1.1" 107 | resolved "https://registry.yarnpkg.com/browser-or-node/-/browser-or-node-2.1.1.tgz#738790b3a86a8fc020193fa581273fbe65eaea0f" 108 | integrity sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg== 109 | 110 | camelcase@^7.0.1: 111 | version "7.0.1" 112 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048" 113 | integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== 114 | 115 | chalk@^4.0.0: 116 | version "4.1.2" 117 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 118 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 119 | dependencies: 120 | ansi-styles "^4.1.0" 121 | supports-color "^7.1.0" 122 | 123 | cli-progress@^3.8.2: 124 | version "3.12.0" 125 | resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.12.0.tgz#807ee14b66bcc086258e444ad0f19e7d42577942" 126 | integrity sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A== 127 | dependencies: 128 | string-width "^4.2.3" 129 | 130 | color-convert@^2.0.1: 131 | version "2.0.1" 132 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 133 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 134 | dependencies: 135 | color-name "~1.1.4" 136 | 137 | color-name@~1.1.4: 138 | version "1.1.4" 139 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 140 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 141 | 142 | combined-stream@^1.0.8: 143 | version "1.0.8" 144 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 145 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 146 | dependencies: 147 | delayed-stream "~1.0.0" 148 | 149 | commander@^6.1.0: 150 | version "6.2.1" 151 | resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" 152 | integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== 153 | 154 | cross-fetch@^3.1.5: 155 | version "3.1.5" 156 | resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" 157 | integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== 158 | dependencies: 159 | node-fetch "2.6.7" 160 | 161 | debug@^4.3.4: 162 | version "4.3.4" 163 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 164 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 165 | dependencies: 166 | ms "2.1.2" 167 | 168 | delayed-stream@~1.0.0: 169 | version "1.0.0" 170 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 171 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 172 | 173 | dotenv@^16.0.3: 174 | version "16.0.3" 175 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" 176 | integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== 177 | 178 | eastasianwidth@^0.2.0: 179 | version "0.2.0" 180 | resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" 181 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 182 | 183 | emoji-regex@^8.0.0: 184 | version "8.0.0" 185 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 186 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 187 | 188 | escape-string-regexp@^5.0.0: 189 | version "5.0.0" 190 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" 191 | integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== 192 | 193 | eventemitter3@^4.0.4, eventemitter3@^4.0.7: 194 | version "4.0.7" 195 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" 196 | integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== 197 | 198 | exponential-backoff@^3.1.0: 199 | version "3.1.1" 200 | resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" 201 | integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== 202 | 203 | expr-eval@^2.0.2: 204 | version "2.0.2" 205 | resolved "https://registry.yarnpkg.com/expr-eval/-/expr-eval-2.0.2.tgz#fa6f044a7b0c93fde830954eb9c5b0f7fbc7e201" 206 | integrity sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg== 207 | 208 | fast-deep-equal@^3.1.1: 209 | version "3.1.3" 210 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 211 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 212 | 213 | flat@^5.0.2: 214 | version "5.0.2" 215 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 216 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 217 | 218 | follow-redirects@^1.14.8, follow-redirects@^1.15.0: 219 | version "1.15.2" 220 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" 221 | integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== 222 | 223 | form-data@^4.0.0: 224 | version "4.0.0" 225 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 226 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== 227 | dependencies: 228 | asynckit "^0.4.0" 229 | combined-stream "^1.0.8" 230 | mime-types "^2.1.12" 231 | 232 | handlebars@^4.7.7: 233 | version "4.7.7" 234 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" 235 | integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== 236 | dependencies: 237 | minimist "^1.2.5" 238 | neo-async "^2.6.0" 239 | source-map "^0.6.1" 240 | wordwrap "^1.0.0" 241 | optionalDependencies: 242 | uglify-js "^3.1.4" 243 | 244 | has-flag@^4.0.0: 245 | version "4.0.0" 246 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 247 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 248 | 249 | hash-arg@^1.0.5: 250 | version "1.0.5" 251 | resolved "https://registry.yarnpkg.com/hash-arg/-/hash-arg-1.0.5.tgz#c9a00a51cdba3f07f4b00e9bb7fa34c8b7c3b3d0" 252 | integrity sha512-RRLtO4ffau3NHOHgufXXk26OBL8bG7iZ1sPZiiBbL7Ri5kdl/ONaUqy2fCTzYeWamEYNMRB9mD0n1ThXsLhmhA== 253 | 254 | homedir@^0.6.0: 255 | version "0.6.0" 256 | resolved "https://registry.yarnpkg.com/homedir/-/homedir-0.6.0.tgz#2b21db66bf08a6db38249a3eff52d7d18706af1e" 257 | integrity sha512-KZFBHenkVuyyG4uaqRSXqWJr3HTxcaPguM7rU1BlH/mtbDlzaXNSXTa9AhV+fXEjrNemHu9vtLRIaM8/8OW0xA== 258 | 259 | is-binary-path@^2.1.0: 260 | version "2.1.0" 261 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 262 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 263 | dependencies: 264 | binary-extensions "^2.0.0" 265 | 266 | is-fullwidth-code-point@^3.0.0: 267 | version "3.0.0" 268 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 269 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 270 | 271 | json-schema-traverse@^1.0.0: 272 | version "1.0.0" 273 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 274 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 275 | 276 | jsonpointer@^5.0.1: 277 | version "5.0.1" 278 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" 279 | integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== 280 | 281 | langchain@^0.0.47: 282 | version "0.0.47" 283 | resolved "https://registry.yarnpkg.com/langchain/-/langchain-0.0.47.tgz#d26467f0e2e114afe1f0805fa1537c6ecfbb11e5" 284 | integrity sha512-jfQTIs4P1Bwa1Ip7xJ8BgbK0Ms0ggyFidEmYKtuyx6IEQu1envSVbUJtBg526LhAPnPzwaN3128zjSHY2h4adw== 285 | dependencies: 286 | "@anthropic-ai/sdk" "^0.4.2" 287 | "@fortaine/fetch-event-source" "^3.0.6" 288 | browser-or-node "^2.1.1" 289 | exponential-backoff "^3.1.0" 290 | expr-eval "^2.0.2" 291 | flat "^5.0.2" 292 | is-binary-path "^2.1.0" 293 | jsonpointer "^5.0.1" 294 | object-hash "^3.0.0" 295 | openai "^3.2.0" 296 | p-queue "^7.3.4" 297 | uuid "^9.0.0" 298 | yaml "^2.2.1" 299 | zod "^3.21.4" 300 | 301 | langchain@^0.0.49: 302 | version "0.0.49" 303 | resolved "https://registry.yarnpkg.com/langchain/-/langchain-0.0.49.tgz#04c4d717de8d8a4e2d3a5828773bfe5411d4789f" 304 | integrity sha512-7aNfcD1WFIMqQnQ5rdDGYahrGMkfGcqMCbsajBLHnO3JeXYmGgsjVp5BSeBm7eqp9Rsxlto6f5Z8Grr5RRe49g== 305 | dependencies: 306 | "@anthropic-ai/sdk" "^0.4.2" 307 | "@fortaine/fetch-event-source" "^3.0.6" 308 | browser-or-node "^2.1.1" 309 | exponential-backoff "^3.1.0" 310 | expr-eval "^2.0.2" 311 | flat "^5.0.2" 312 | is-binary-path "^2.1.0" 313 | jsonpointer "^5.0.1" 314 | object-hash "^3.0.0" 315 | openai "^3.2.0" 316 | p-queue "^6.6.2" 317 | uuid "^9.0.0" 318 | yaml "^2.2.1" 319 | zod "^3.21.4" 320 | 321 | list-it@^1.3.3: 322 | version "1.3.10" 323 | resolved "https://registry.yarnpkg.com/list-it/-/list-it-1.3.10.tgz#4d2d63cce5dc6bea2ddaec2d9134ed075b650e71" 324 | integrity sha512-eXBVYLe8Qgb3LX/bX5ApLJ9TASQjT20ECex7lmCFx30p/iQJFWKyFK7BA0j0GXdEEKwKaS0WAoVkLbvthMHZoA== 325 | dependencies: 326 | ansi-escape-sequences "^6.2.1" 327 | debug "^4.3.4" 328 | eastasianwidth "^0.2.0" 329 | hash-arg "^1.0.5" 330 | node-getopt "^0.3.2" 331 | 332 | lodash.throttle@^4.1.1: 333 | version "4.1.1" 334 | resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" 335 | integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== 336 | 337 | m3u8stream@^0.8.6: 338 | version "0.8.6" 339 | resolved "https://registry.yarnpkg.com/m3u8stream/-/m3u8stream-0.8.6.tgz#0d6de4ce8ee69731734e6b616e7b05dd9d9a55b1" 340 | integrity sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA== 341 | dependencies: 342 | miniget "^4.2.2" 343 | sax "^1.2.4" 344 | 345 | mime-db@1.52.0: 346 | version "1.52.0" 347 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 348 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 349 | 350 | mime-types@^2.1.12: 351 | version "2.1.35" 352 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 353 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 354 | dependencies: 355 | mime-db "1.52.0" 356 | 357 | miniget@^4.2.2: 358 | version "4.2.2" 359 | resolved "https://registry.yarnpkg.com/miniget/-/miniget-4.2.2.tgz#db20320f265efdc4c1826a0be431d56753074475" 360 | integrity sha512-a7voNL1N5lDMxvTMExOkg+Fq89jM2vY8pAi9ZEWzZtfNmdfP6RXkvUtFnCAXoCv2T9k1v/fUJVaAEuepGcvLYA== 361 | 362 | minimist@^1.2.5: 363 | version "1.2.8" 364 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 365 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 366 | 367 | ms@2.1.2: 368 | version "2.1.2" 369 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 370 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 371 | 372 | neo-async@^2.6.0: 373 | version "2.6.2" 374 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 375 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 376 | 377 | node-fetch@2.6.7: 378 | version "2.6.7" 379 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" 380 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== 381 | dependencies: 382 | whatwg-url "^5.0.0" 383 | 384 | node-getopt@^0.3.2: 385 | version "0.3.2" 386 | resolved "https://registry.yarnpkg.com/node-getopt/-/node-getopt-0.3.2.tgz#57507cd22f6f69650aa99252304a842f1224e44c" 387 | integrity sha512-yqkmYrMbK1wPrfz7mgeYvA4tBperLg9FQ4S3Sau3nSAkpOA0x0zC8nQ1siBwozy1f4SE8vq2n1WKv99r+PCa1Q== 388 | 389 | object-hash@^3.0.0: 390 | version "3.0.0" 391 | resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" 392 | integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== 393 | 394 | openai@^3.2.0: 395 | version "3.2.1" 396 | resolved "https://registry.yarnpkg.com/openai/-/openai-3.2.1.tgz#1fa35bdf979cbde8453b43f2dd3a7d401ee40866" 397 | integrity sha512-762C9BNlJPbjjlWZi4WYK9iM2tAVAv0uUp1UmI34vb0CN5T2mjB/qM6RYBmNKMh/dN9fC+bxqPwWJZUTWW052A== 398 | dependencies: 399 | axios "^0.26.0" 400 | form-data "^4.0.0" 401 | 402 | p-finally@^1.0.0: 403 | version "1.0.0" 404 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 405 | integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== 406 | 407 | p-queue@^6.6.2: 408 | version "6.6.2" 409 | resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" 410 | integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== 411 | dependencies: 412 | eventemitter3 "^4.0.4" 413 | p-timeout "^3.2.0" 414 | 415 | p-queue@^7.3.4: 416 | version "7.3.4" 417 | resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-7.3.4.tgz#7ef7d89b6c1a0563596d98adbc9dc404e9ed4a84" 418 | integrity sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg== 419 | dependencies: 420 | eventemitter3 "^4.0.7" 421 | p-timeout "^5.0.2" 422 | 423 | p-timeout@^3.2.0: 424 | version "3.2.0" 425 | resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" 426 | integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== 427 | dependencies: 428 | p-finally "^1.0.0" 429 | 430 | p-timeout@^5.0.2: 431 | version "5.1.0" 432 | resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-5.1.0.tgz#b3c691cf4415138ce2d9cfe071dba11f0fee085b" 433 | integrity sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew== 434 | 435 | prettier@^2.8.7: 436 | version "2.8.7" 437 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" 438 | integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== 439 | 440 | proxy-from-env@^1.1.0: 441 | version "1.1.0" 442 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" 443 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== 444 | 445 | punycode@^2.1.0: 446 | version "2.3.0" 447 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" 448 | integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== 449 | 450 | require-from-string@^2.0.2: 451 | version "2.0.2" 452 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 453 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 454 | 455 | sanitize-filename@^1.6.3: 456 | version "1.6.3" 457 | resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" 458 | integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== 459 | dependencies: 460 | truncate-utf8-bytes "^1.0.0" 461 | 462 | sax@^1.1.3, sax@^1.2.4: 463 | version "1.2.4" 464 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 465 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 466 | 467 | source-map@^0.6.1: 468 | version "0.6.1" 469 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 470 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 471 | 472 | streamspeed@^2.0.1: 473 | version "2.0.1" 474 | resolved "https://registry.yarnpkg.com/streamspeed/-/streamspeed-2.0.1.tgz#7721c438d19cd9f9eb7e1ba3efa14f0222215bff" 475 | integrity sha512-j6pFynhO0nZ+1zhyTDqLLlIxM0IyCdLKMj1EUJznDA87xLE/JWSwEg3FlJWERDB72KYt5OD29ZUWxxVkMTnqWg== 476 | 477 | string-width@^4.2.3: 478 | version "4.2.3" 479 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 480 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 481 | dependencies: 482 | emoji-regex "^8.0.0" 483 | is-fullwidth-code-point "^3.0.0" 484 | strip-ansi "^6.0.1" 485 | 486 | strip-ansi@^6.0.1: 487 | version "6.0.1" 488 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 489 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 490 | dependencies: 491 | ansi-regex "^5.0.1" 492 | 493 | supports-color@^7.1.0: 494 | version "7.2.0" 495 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 496 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 497 | dependencies: 498 | has-flag "^4.0.0" 499 | 500 | tr46@~0.0.3: 501 | version "0.0.3" 502 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 503 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 504 | 505 | truncate-utf8-bytes@^1.0.0: 506 | version "1.0.2" 507 | resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" 508 | integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== 509 | dependencies: 510 | utf8-byte-length "^1.0.1" 511 | 512 | uglify-js@^3.1.4: 513 | version "3.17.4" 514 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" 515 | integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== 516 | 517 | uri-js@^4.2.2: 518 | version "4.4.1" 519 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 520 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 521 | dependencies: 522 | punycode "^2.1.0" 523 | 524 | utf8-byte-length@^1.0.1: 525 | version "1.0.4" 526 | resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" 527 | integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== 528 | 529 | uuid@^9.0.0: 530 | version "9.0.0" 531 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" 532 | integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== 533 | 534 | webidl-conversions@^3.0.0: 535 | version "3.0.1" 536 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 537 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 538 | 539 | whatwg-url@^5.0.0: 540 | version "5.0.0" 541 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 542 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 543 | dependencies: 544 | tr46 "~0.0.3" 545 | webidl-conversions "^3.0.0" 546 | 547 | wordwrap@^1.0.0: 548 | version "1.0.0" 549 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 550 | integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== 551 | 552 | yaml@^2.2.1: 553 | version "2.2.1" 554 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.2.1.tgz#3014bf0482dcd15147aa8e56109ce8632cd60ce4" 555 | integrity sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw== 556 | 557 | ytdl-core@^4.1.0, ytdl-core@^4.11.3: 558 | version "4.11.3" 559 | resolved "https://registry.yarnpkg.com/ytdl-core/-/ytdl-core-4.11.3.tgz#0c95cc52b5bef87e9ef18818d75b1e2499fce729" 560 | integrity sha512-0KerQw+R7Nnhcebxq6WPopO92VLNnsoRVjJuhGhRzgfK1YdrnG1aqaq4zycolMBY+K8TZHXPV7ZNIjcawD/BPA== 561 | dependencies: 562 | m3u8stream "^0.8.6" 563 | miniget "^4.2.2" 564 | sax "^1.1.3" 565 | 566 | ytdl@^1.4.1: 567 | version "1.4.1" 568 | resolved "https://registry.yarnpkg.com/ytdl/-/ytdl-1.4.1.tgz#6832dba26017499c008972fd54f99e746dec8dd8" 569 | integrity sha512-YJS9zRRS7Goq3yBx4jt6pk1w0CPjAaTzYX49/BEDtP4aSsF92cQTkDdA6893AjS0adEvpH79gvXUOx6K959sBw== 570 | dependencies: 571 | chalk "^4.0.0" 572 | cli-progress "^3.8.2" 573 | commander "^6.1.0" 574 | homedir "^0.6.0" 575 | list-it "^1.3.3" 576 | lodash.throttle "^4.1.1" 577 | sanitize-filename "^1.6.3" 578 | streamspeed "^2.0.1" 579 | ytdl-core "^4.1.0" 580 | 581 | zod@^3.21.4: 582 | version "3.21.4" 583 | resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" 584 | integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== 585 | --------------------------------------------------------------------------------