From 18ddd247c3edbe73fc23f7b20bf31b011e740261 Mon Sep 17 00:00:00 2001 From: shivaji43 Date: Thu, 26 Dec 2024 12:33:55 +0530 Subject: [PATCH 01/23] feat: created tiplink for Sol and spl tokens --- package.json | 11 +- pnpm-lock.yaml | 213 ++++++++++++++++++++++++++++++++++- src/agent/index.ts | 4 + src/langchain/index.ts | 40 +++++++ src/tools/create_tiplinks.ts | 106 +++++++++++++++++ src/tools/index.ts | 1 + 6 files changed, 368 insertions(+), 7 deletions(-) create mode 100644 src/tools/create_tiplinks.ts diff --git a/package.json b/package.json index abd3301..5cf223d 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", "@solana/spl-token": "^0.4.9", "@solana/web3.js": "^1.95.4", + "@tiplink/api": "^0.3.1", "bn.js": "^5.2.1", "bs58": "^6.0.0", "chai": "^5.1.2", @@ -56,13 +57,13 @@ "@types/bn.js": "^5.1.5", "@types/chai": "^5.0.1", "@types/node": "^22.9.0", - "ts-node": "^10.9.2", - "typescript": "^5.7.2", + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", - "@typescript-eslint/eslint-plugin": "^7.0.0", - "@typescript-eslint/parser": "^7.0.0", - "prettier": "^3.2.5" + "prettier": "^3.2.5", + "ts-node": "^10.9.2", + "typescript": "^5.7.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddfc583..06a97f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,6 +71,9 @@ importers: '@solana/web3.js': specifier: ^1.95.4 version: 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@tiplink/api': + specifier: ^0.3.1 + version: 0.3.1(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10) bn.js: specifier: ^5.2.1 version: 5.2.1 @@ -578,6 +581,12 @@ packages: peerDependencies: '@solana/web3.js': ^1.95.3 + '@solana/spl-token@0.3.11': + resolution: {integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.88.0 + '@solana/spl-token@0.4.6': resolution: {integrity: sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA==} engines: {node: '>=16'} @@ -609,6 +618,9 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@tiplink/api@0.3.1': + resolution: {integrity: sha512-HjnXethjKOHTYT0IP1BewlMS7wZJ+hsoDgRa6jA1cNvxvwQjE1WHOyvOUPpAi+DJDw4P4/omFtyHr7dwLfnB/g==} + '@tsconfig/node10@1.0.11': resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -822,6 +834,10 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + big.js@6.2.2: resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} @@ -870,6 +886,9 @@ packages: resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} engines: {node: '>=4.5'} + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -1352,6 +1371,9 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -1464,6 +1486,18 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + libsodium-sumo@0.7.15: + resolution: {integrity: sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==} + + libsodium-wrappers-sumo@0.7.15: + resolution: {integrity: sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==} + + libsodium-wrappers@0.7.15: + resolution: {integrity: sha512-E4anqJQwcfiC6+Yrl01C1m8p99wEhLmJSs0VQqST66SbQXXBoaJY0pF4BNjRYa/sOQAxx6lXAaAFIlx+15tXJQ==} + + libsodium@0.7.15: + resolution: {integrity: sha512-sZwRknt/tUpE2AwzHq3jEyUU5uvIZHtSssktXq7owd++3CSgn8RGrv6UZJJBpP7+iBghBqe7Z06/2M31rI2NKw==} + linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} @@ -1554,6 +1588,11 @@ packages: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -1669,6 +1708,9 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + poly1305-js@0.4.4: + resolution: {integrity: sha512-5B6/S+vg5AOr66wJDkh5LOpU/F3EKANDy4VXKsNZLXea1uCy6CiOWOZ3VhcC0nYdhE7vJUMcLxqcVlrv2g/+Rg==} + possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} @@ -1768,6 +1810,14 @@ packages: snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + sodium-native@3.4.1: + resolution: {integrity: sha512-PaNN/roiFWzVVTL6OqjzYct38NSXewdl2wz8SRB51Br/MLIJPrbM3XexhVWkq7D3UWMysfrhKVf1v1phZq6MeQ==} + + sodium-plus@0.9.0: + resolution: {integrity: sha512-WWKxrd81qDL7C1A10yxNmZ135yovEZuIRnZ/BIf/FcajYBupbKbPdgzwlusPHLVxkMDDamcarq9PxxRBUSqpCw==} + peerDependencies: + sodium-native: ^3.2.0 + space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -1862,6 +1912,9 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + tweetnacl@1.0.3: resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} @@ -1873,6 +1926,9 @@ packages: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typedoc@0.26.11: resolution: {integrity: sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==} engines: {node: '>= 18'} @@ -1880,6 +1936,11 @@ packages: peerDependencies: typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + typescript@5.7.2: resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} engines: {node: '>=14.17'} @@ -2001,6 +2062,9 @@ packages: utf-8-validate: optional: true + xsalsa20@1.2.0: + resolution: {integrity: sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w==} + yaml@2.6.1: resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} engines: {node: '>= 14'} @@ -2514,6 +2578,11 @@ snapshots: '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) typescript: 5.7.2 + '@solana/codecs-core@2.0.0-rc.1(typescript@4.9.5)': + dependencies: + '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) + typescript: 4.9.5 + '@solana/codecs-core@2.0.0-rc.1(typescript@5.7.2)': dependencies: '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) @@ -2532,6 +2601,13 @@ snapshots: '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) typescript: 5.7.2 + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@4.9.5)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) + '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) + typescript: 4.9.5 + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) @@ -2550,6 +2626,12 @@ snapshots: '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) typescript: 5.7.2 + '@solana/codecs-numbers@2.0.0-rc.1(typescript@4.9.5)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) + '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) + typescript: 4.9.5 + '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) @@ -2571,6 +2653,14 @@ snapshots: fastestsmallesttextencoderdecoder: 1.0.22 typescript: 5.7.2 + '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) + '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 4.9.5 + '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) @@ -2600,6 +2690,17 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) @@ -2622,6 +2723,12 @@ snapshots: commander: 12.1.0 typescript: 5.7.2 + '@solana/errors@2.0.0-rc.1(typescript@4.9.5)': + dependencies: + chalk: 5.4.0 + commander: 12.1.0 + typescript: 4.9.5 + '@solana/errors@2.0.0-rc.1(typescript@5.7.2)': dependencies: chalk: 5.4.0 @@ -2644,6 +2751,17 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) @@ -2688,6 +2806,14 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) @@ -2696,6 +2822,20 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript + '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 @@ -2793,6 +2933,26 @@ snapshots: dependencies: tslib: 2.8.1 + '@tiplink/api@0.3.1(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bs58: 5.0.0 + libsodium: 0.7.15 + libsodium-wrappers-sumo: 0.7.15 + nanoid: 3.3.8 + sodium-plus: 0.9.0(sodium-native@3.4.1) + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + typescript: 4.9.5 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - sodium-native + - utf-8-validate + '@tsconfig/node10@1.0.11': {} '@tsconfig/node12@1.0.11': {} @@ -3026,6 +3186,8 @@ snapshots: base64-js@1.5.1: {} + big-integer@1.6.52: {} + big.js@6.2.2: {} bigint-buffer@1.1.5: @@ -3077,6 +3239,11 @@ snapshots: buffer-layout@1.2.2: {} + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + buffer@6.0.3: dependencies: base64-js: 1.5.1 @@ -3572,6 +3739,8 @@ snapshots: dependencies: which-typed-array: 1.1.18 + is-typedarray@1.0.0: {} + isexe@2.0.0: {} isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): @@ -3672,6 +3841,18 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + libsodium-sumo@0.7.15: {} + + libsodium-wrappers-sumo@0.7.15: + dependencies: + libsodium-sumo: 0.7.15 + + libsodium-wrappers@0.7.15: + dependencies: + libsodium: 0.7.15 + + libsodium@0.7.15: {} + linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 @@ -3765,6 +3946,8 @@ snapshots: mustache@4.2.0: {} + nanoid@3.3.8: {} + natural-compare@1.4.0: {} no-case@3.0.4: @@ -3778,8 +3961,7 @@ snapshots: dependencies: whatwg-url: 5.0.0 - node-gyp-build@4.8.4: - optional: true + node-gyp-build@4.8.4: {} object-is@1.1.6: dependencies: @@ -3876,6 +4058,10 @@ snapshots: picomatch@2.3.1: {} + poly1305-js@0.4.4: + dependencies: + big-integer: 1.6.52 + possible-typed-array-names@1.0.0: {} prelude-ls@1.2.1: {} @@ -3970,6 +4156,19 @@ snapshots: dot-case: 3.0.4 tslib: 2.8.1 + sodium-native@3.4.1: + dependencies: + node-gyp-build: 4.8.4 + + sodium-plus@0.9.0(sodium-native@3.4.1): + dependencies: + buffer: 5.7.1 + libsodium-wrappers: 0.7.15 + poly1305-js: 0.4.4 + sodium-native: 3.4.1 + typedarray-to-buffer: 3.1.5 + xsalsa20: 1.2.0 + space-separated-tokens@2.0.2: {} stringify-entities@4.0.4: @@ -4052,6 +4251,8 @@ snapshots: tslib@2.8.1: {} + tweetnacl-util@0.15.1: {} + tweetnacl@1.0.3: {} type-check@0.4.0: @@ -4060,6 +4261,10 @@ snapshots: type-fest@0.20.2: {} + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + typedoc@0.26.11(typescript@5.7.2): dependencies: lunr: 2.3.9 @@ -4069,6 +4274,8 @@ snapshots: typescript: 5.7.2 yaml: 2.6.1 + typescript@4.9.5: {} + typescript@5.7.2: {} uc.micro@2.1.0: {} @@ -4180,6 +4387,8 @@ snapshots: bufferutil: 4.0.8 utf-8-validate: 5.0.10 + xsalsa20@1.2.0: {} + yaml@2.6.1: {} yn@3.1.1: {} diff --git a/src/agent/index.ts b/src/agent/index.ts index 56f66f4..99e002f 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -35,6 +35,7 @@ import { getOwnedAllDomains, resolveAllDomains, create_gibwork_task, + create_TipLink, } from "../tools"; import { CollectionDeployment, @@ -337,4 +338,7 @@ export class SolanaAgentKit { payer ? new PublicKey(payer) : undefined, ); } + async createTiplink(amount: number , splmintAddress?:PublicKey){ + return create_TipLink(this,amount,splmintAddress) + } } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index f28b000..d8aaf4c 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1229,6 +1229,45 @@ export class SolanaCreateGibworkTask extends Tool { } } +export class SolanaTipLinkTool extends Tool { + name = "solana_tiplink"; + description = `Create a TipLink for transferring SOL. + + Provide the amount of SOL you want to transfer. The tool will generate a TipLink URL for the recipient to claim the funds. + + Inputs: + amountSol: number, e.g., 1 (Amount of SOL to transfer)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const amountSol : number = parseFloat(input); + + if (isNaN(amountSol) || amountSol <= 0) { + throw new Error("Invalid amount. Please provide a valid amount of SOL."); + } + + const { url, signature } = await this.solanaKit.createTiplink(amountSol); + + return JSON.stringify({ + status: "success", + url, + signature, + message: "TipLink created successfully.", + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + export function createSolanaTools(solanaKit: SolanaAgentKit) { return [ new SolanaBalanceTool(solanaKit), @@ -1263,5 +1302,6 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaGetMainDomain(solanaKit), new SolanaResolveAllDomainsTool(solanaKit), new SolanaCreateGibworkTask(solanaKit), + new SolanaTipLinkTool(solanaKit), ]; } diff --git a/src/tools/create_tiplinks.ts b/src/tools/create_tiplinks.ts new file mode 100644 index 0000000..0b213b5 --- /dev/null +++ b/src/tools/create_tiplinks.ts @@ -0,0 +1,106 @@ +import { TipLink } from "@tiplink/api"; +import { + Transaction, + SystemProgram, + LAMPORTS_PER_SOL, + sendAndConfirmTransaction, + PublicKey, + ComputeBudgetProgram, +} from "@solana/web3.js"; +import { + getAssociatedTokenAddress, + createTransferInstruction, + getMint, + createAssociatedTokenAccountInstruction, +} from "@solana/spl-token"; +import { SolanaAgentKit } from "../index"; + +const MINIMUM_SOL_BALANCE = 0.003 * LAMPORTS_PER_SOL; + +export async function create_TipLink( + agent: SolanaAgentKit, + amount: number, + splmintAddress?: PublicKey, +): Promise<{ url: string, signature: string }> { + try { + const tiplink = await TipLink.create(); + + if (!splmintAddress) { + const transaction = new Transaction(); + transaction.add( + SystemProgram.transfer({ + fromPubkey: agent.wallet_address, + toPubkey: tiplink.keypair.publicKey, + lamports: amount * LAMPORTS_PER_SOL, + }), + ); + + const signature = await sendAndConfirmTransaction( + agent.connection, + transaction, + [agent.wallet], + { commitment: "confirmed" } + ); + + return { + url: tiplink.url.toString(), + signature, + }; + } else { + const fromAta = await getAssociatedTokenAddress(splmintAddress, agent.wallet_address); + const toAta = await getAssociatedTokenAddress(splmintAddress, tiplink.keypair.publicKey); + + const mintInfo = await getMint(agent.connection, splmintAddress); + const adjustedAmount = amount * Math.pow(10, mintInfo.decimals); + + const transaction = new Transaction(); + + transaction.add( + ComputeBudgetProgram.setComputeUnitPrice({ + microLamports: 5000 + }) + ); + + transaction.add( + SystemProgram.transfer({ + fromPubkey: agent.wallet_address, + toPubkey: tiplink.keypair.publicKey, + lamports: MINIMUM_SOL_BALANCE, + }) + ); + + transaction.add( + createAssociatedTokenAccountInstruction( + agent.wallet_address, + toAta, + tiplink.keypair.publicKey, + splmintAddress + ) + ); + + transaction.add( + createTransferInstruction( + fromAta, + toAta, + agent.wallet_address, + adjustedAmount + ) + ); + + const signature = await sendAndConfirmTransaction( + agent.connection, + transaction, + [agent.wallet], + { commitment: "confirmed" } + ); + + return { + url: tiplink.url.toString(), + signature, + }; + } + } catch (error: any) { + console.error("Error creating TipLink or sending funds:", error.message); + throw new Error(`Failed to create TipLink: ${error.message}`); + } +} \ No newline at end of file diff --git a/src/tools/index.ts b/src/tools/index.ts index 9a18cf4..df47e6e 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -37,3 +37,4 @@ export * from "./openbook_create_market"; export * from "./pyth_fetch_price"; export * from "./create_gibwork_task"; +export * from "./create_tiplinks" From 3f0b6e13e5d1e2cd5eeba84a4e4a05e94a39cdfc Mon Sep 17 00:00:00 2001 From: shivaji43 Date: Thu, 26 Dec 2024 12:46:35 +0530 Subject: [PATCH 02/23] fix:handled spl token address --- src/langchain/index.ts | 49 +++++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index d8aaf4c..90f63eb 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1231,12 +1231,13 @@ export class SolanaCreateGibworkTask extends Tool { export class SolanaTipLinkTool extends Tool { name = "solana_tiplink"; - description = `Create a TipLink for transferring SOL. + description = `Create a TipLink for transferring SOL or SPL tokens. - Provide the amount of SOL you want to transfer. The tool will generate a TipLink URL for the recipient to claim the funds. - - Inputs: - amountSol: number, e.g., 1 (Amount of SOL to transfer)`; + Input should be a JSON string with the following format: + { + "amountSol": string, // Amount to transfer as string (e.g., "1") + "splmintAddress": string // (Optional) SPL token mint address + }`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -1244,25 +1245,49 @@ export class SolanaTipLinkTool extends Tool { protected async _call(input: string): Promise { try { - const amountSol : number = parseFloat(input); - - if (isNaN(amountSol) || amountSol <= 0) { - throw new Error("Invalid amount. Please provide a valid amount of SOL."); + let parsedInput: { amountSol: string; splmintAddress?: string }; + try { + parsedInput = JSON.parse(input); + } catch (e) { + throw new Error("Invalid input format. Please provide a valid JSON string."); + } + const amount = parseFloat(parsedInput.amountSol); + if (isNaN(amount) || amount <= 0) { + throw new Error("Invalid amount. Please provide a valid positive number as a string."); } - const { url, signature } = await this.solanaKit.createTiplink(amountSol); + // Handle optional SPL mint address + let splmintPublicKey: PublicKey | undefined; + if (parsedInput.splmintAddress) { + try { + splmintPublicKey = new PublicKey(parsedInput.splmintAddress); + } catch (e) { + throw new Error("Invalid SPL mint address. Please provide a valid Solana public key."); + } + } + // Create TipLink using the imported create_TipLink function + const { url, signature } = await this.solanaKit.createTiplink( + amount, + splmintPublicKey + ); + + // Return success response return JSON.stringify({ status: "success", url, signature, - message: "TipLink created successfully.", + tokenType: splmintPublicKey ? "SPL" : "SOL", + amount, + message: `TipLink created successfully for ${amount} ${splmintPublicKey ? "tokens" : "SOL"}.` }); + } catch (error: any) { + // Return error response return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR", + code: error.code || "UNKNOWN_ERROR" }); } } From 54abea76ca0816aaec9f14ba39a5d67b288d9b88 Mon Sep 17 00:00:00 2001 From: shivaji43 Date: Thu, 26 Dec 2024 12:58:03 +0530 Subject: [PATCH 03/23] fix: fixed string input issue --- src/langchain/index.ts | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 90f63eb..3dd1e53 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1233,11 +1233,11 @@ export class SolanaTipLinkTool extends Tool { name = "solana_tiplink"; description = `Create a TipLink for transferring SOL or SPL tokens. - Input should be a JSON string with the following format: - { - "amountSol": string, // Amount to transfer as string (e.g., "1") - "splmintAddress": string // (Optional) SPL token mint address - }`; + Input format: Provide the amount of SOL as a number, and optionally an SPL mint address separated by a space. + Examples: + - "1" (for 1 SOL) + - "0.5" (for 0.5 SOL) + - "1 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" (for SPL token transfer)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -1245,22 +1245,19 @@ export class SolanaTipLinkTool extends Tool { protected async _call(input: string): Promise { try { - let parsedInput: { amountSol: string; splmintAddress?: string }; - try { - parsedInput = JSON.parse(input); - } catch (e) { - throw new Error("Invalid input format. Please provide a valid JSON string."); - } - const amount = parseFloat(parsedInput.amountSol); + const parts = input.trim().split(/\s+/); + + // Parse amount from the first part + const amount = parseFloat(parts[0]); if (isNaN(amount) || amount <= 0) { - throw new Error("Invalid amount. Please provide a valid positive number as a string."); + throw new Error("Invalid amount. Please provide a valid positive number."); } - // Handle optional SPL mint address + // Check for optional SPL mint address in the second part let splmintPublicKey: PublicKey | undefined; - if (parsedInput.splmintAddress) { + if (parts.length > 1) { try { - splmintPublicKey = new PublicKey(parsedInput.splmintAddress); + splmintPublicKey = new PublicKey(parts[1]); } catch (e) { throw new Error("Invalid SPL mint address. Please provide a valid Solana public key."); } From 18e81998a1460e6a982df8eb48990abdd0f39338 Mon Sep 17 00:00:00 2001 From: shivaji43 Date: Thu, 26 Dec 2024 13:09:25 +0530 Subject: [PATCH 04/23] fix: changed the SolanaTipLinkTool description --- src/langchain/index.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 3dd1e53..6b2013c 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1232,12 +1232,10 @@ export class SolanaCreateGibworkTask extends Tool { export class SolanaTipLinkTool extends Tool { name = "solana_tiplink"; description = `Create a TipLink for transferring SOL or SPL tokens. - - Input format: Provide the amount of SOL as a number, and optionally an SPL mint address separated by a space. - Examples: - - "1" (for 1 SOL) - - "0.5" (for 0.5 SOL) - - "1 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" (for SPL token transfer)`; + + Inputs (input is a string): + amount: number, eg 1 (required) + mint?: string, eg "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" (optional)`; constructor(private solanaKit: SolanaAgentKit) { super(); From a80fb0f1e0fe1bc380f30c89ca80cb8d9f1e45b4 Mon Sep 17 00:00:00 2001 From: Arpit Singh Bhatia <84636859+The-x-35@users.noreply.github.com> Date: Thu, 26 Dec 2024 14:05:40 +0530 Subject: [PATCH 05/23] rebase final --- src/agent/index.ts | 5 ++ src/langchain/index.ts | 47 ++++++++++++ src/tools/index.ts | 2 + src/tools/rock_paper_scissor.ts | 126 ++++++++++++++++++++++++++++++++ 4 files changed, 180 insertions(+) create mode 100644 src/tools/rock_paper_scissor.ts diff --git a/src/agent/index.ts b/src/agent/index.ts index 56f66f4..6cfbfb2 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -35,6 +35,7 @@ import { getOwnedAllDomains, resolveAllDomains, create_gibwork_task, + rock_paper_scissor, } from "../tools"; import { CollectionDeployment, @@ -337,4 +338,8 @@ export class SolanaAgentKit { payer ? new PublicKey(payer) : undefined, ); } + + async rockPaperScissors(amount: number, choice: "rock" | "paper" | "scissors") { + return rock_paper_scissor(this, amount, choice); + } } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index f28b000..11413a4 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1229,6 +1229,52 @@ export class SolanaCreateGibworkTask extends Tool { } } +export class SolanaRockPaperScissorsTool extends Tool { + name = "rock_paper_scissors_blink"; + description = `Play rock paper scissors to win the SEND coin. + Inputs(convert the input to a json string): + choice: string, either "rock", "paper", or "scissors" (required) + amount: number, amount of SOL to play the game with, either 0.1, 0.01, or 0.005 SOL (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + private validateInput(input: any): void { + if (input.choice !== undefined) { + throw new Error('choice is required.'); + } + if ( + input.amount !== undefined && + (typeof input.spaceKB !== "number" || input.spaceKB <= 0) + ) { + throw new Error("amount must be a positive number when provided"); + } + } + + protected async _call(input: string): Promise { + try { + const parsedInput = toJSON(input); + this.validateInput(parsedInput); + const result = await this.solanaKit.rockPaperScissors( + Number(parsedInput['"amount"']), + parsedInput['"choice"'].replace(/^"|"$/g, '') as "rock" | "paper" | "scissors" + ); + + return JSON.stringify({ + status: "success", + message: result, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + export function createSolanaTools(solanaKit: SolanaAgentKit) { return [ new SolanaBalanceTool(solanaKit), @@ -1263,5 +1309,6 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaGetMainDomain(solanaKit), new SolanaResolveAllDomainsTool(solanaKit), new SolanaCreateGibworkTask(solanaKit), + new SolanaRockPaperScissorsTool(solanaKit), ]; } diff --git a/src/tools/index.ts b/src/tools/index.ts index 9a18cf4..10e9ff7 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -37,3 +37,5 @@ export * from "./openbook_create_market"; export * from "./pyth_fetch_price"; export * from "./create_gibwork_task"; + +export * from "./rock_paper_scissor"; \ No newline at end of file diff --git a/src/tools/rock_paper_scissor.ts b/src/tools/rock_paper_scissor.ts new file mode 100644 index 0000000..b5f1c0a --- /dev/null +++ b/src/tools/rock_paper_scissor.ts @@ -0,0 +1,126 @@ +import { sendAndConfirmTransaction, Transaction } from "@solana/web3.js"; +import { SolanaAgentKit } from "../agent"; + +export async function rock_paper_scissor( + agent: SolanaAgentKit, + amount: number, + choice: "rock" | "paper" | "scissors", +) { + try { + const res = await fetch( + `https://rps.sendarcade.fun/api/actions/bot?amount=${amount}&choice=${choice}`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + }), + }, + ); + + const data = await res.json(); + if (data.transaction) { + const txn = Transaction.from(Buffer.from(data.transaction, "base64")); + txn.sign(agent.wallet); + txn.recentBlockhash = ( + await agent.connection.getLatestBlockhash() + ).blockhash; + const sig = await sendAndConfirmTransaction( + agent.connection, + txn, + [agent.wallet], + { commitment: 'confirmed' } + ); + let href = data.links?.next?.href; + return await outcome(agent, sig, href); + } else { + return "failed"; + } + } catch (error: any) { + console.error(error); + throw new Error(`RPS game failed: ${error.message}`); + } +} +async function outcome(agent: SolanaAgentKit, sig: string, href: string): Promise { + try { + const res = await fetch( + "https://rps.sendarcade.fun" + href, // href = /api/actions/outcome?id=... + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + signature: sig, + }), + }, + ); + + const data: any = await res.json(); + const title = data.title; + if (title.startsWith("You lost")) { + return title; + } + let next_href = data.links?.actions?.[0]?.href; + return title + "\n" + await won(agent, next_href) + } catch (error: any) { + console.error(error); + throw new Error(`RPS outcome failed: ${error.message}`); + } +} +async function won(agent: SolanaAgentKit, href: string): Promise { + try { + const res = await fetch( + "https://rps.sendarcade.fun" + href, // href = /api/actions/won?id=... + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + }), + }, + ); + + const data: any = await res.json(); + if (data.transaction) { + const txn = Transaction.from(Buffer.from(data.transaction, "base64")); + txn.partialSign(agent.wallet); + await agent.connection.sendRawTransaction(txn.serialize(),{ preflightCommitment: 'confirmed' }); } + else { + return "Failed to claim prize."; + } + let next_href = data.links?.next?.href; + return await postWin(agent, next_href); + } catch (error: any) { + console.error(error); + throw new Error(`RPS outcome failed: ${error.message}`); + } +} +async function postWin(agent: SolanaAgentKit, href: string): Promise { + try { + const res = await fetch( + "https://rps.sendarcade.fun" + href, // href = /api/actions/postwin?id=... + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + }), + }, + ); + + const data: any = await res.json(); + const title = data.title; + return "Prize claimed Successfully" + "\n" + title; + } catch (error: any) { + console.error(error); + throw new Error(`RPS outcome failed: ${error.message}`); + } +} \ No newline at end of file From b50563dd7b15239fbcaa143dc6b7bad4e3992972 Mon Sep 17 00:00:00 2001 From: shivaji43 Date: Thu, 26 Dec 2024 21:45:02 +0530 Subject: [PATCH 06/23] fix : input for mint address in json --- src/langchain/index.ts | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 6b2013c..28e66de 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1229,6 +1229,7 @@ export class SolanaCreateGibworkTask extends Tool { } } + export class SolanaTipLinkTool extends Tool { name = "solana_tiplink"; description = `Create a TipLink for transferring SOL or SPL tokens. @@ -1243,19 +1244,25 @@ export class SolanaTipLinkTool extends Tool { protected async _call(input: string): Promise { try { - const parts = input.trim().split(/\s+/); - - // Parse amount from the first part - const amount = parseFloat(parts[0]); + // Parse the input JSON string + let parsedInput: { amountSol: string; splmintAddress?: string }; + try { + parsedInput = JSON.parse(input); + } catch (e) { + throw new Error("Invalid input format. Please provide a valid JSON string."); + } + + // Validate amount + const amount = parseFloat(parsedInput.amountSol); if (isNaN(amount) || amount <= 0) { throw new Error("Invalid amount. Please provide a valid positive number."); } - // Check for optional SPL mint address in the second part + // Handle optional SPL mint address let splmintPublicKey: PublicKey | undefined; - if (parts.length > 1) { + if (parsedInput.splmintAddress) { try { - splmintPublicKey = new PublicKey(parts[1]); + splmintPublicKey = new PublicKey(parsedInput.splmintAddress); } catch (e) { throw new Error("Invalid SPL mint address. Please provide a valid Solana public key."); } From a8448f65939a78d76f9578aafb7a5a4457a8ec85 Mon Sep 17 00:00:00 2001 From: shivaji43 Date: Thu, 26 Dec 2024 22:01:32 +0530 Subject: [PATCH 07/23] fix : changed the input format --- src/langchain/index.ts | 44 ++++++++++++------------------------------ 1 file changed, 12 insertions(+), 32 deletions(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 28e66de..92ffec0 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1229,14 +1229,12 @@ export class SolanaCreateGibworkTask extends Tool { } } - export class SolanaTipLinkTool extends Tool { name = "solana_tiplink"; description = `Create a TipLink for transferring SOL or SPL tokens. - - Inputs (input is a string): - amount: number, eg 1 (required) - mint?: string, eg "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" (optional)`; + Input is a JSON string with: + - amount: number (required) - Amount to transfer + - splmintAddress: string (optional) - SPL token mint address`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -1244,48 +1242,30 @@ export class SolanaTipLinkTool extends Tool { protected async _call(input: string): Promise { try { - // Parse the input JSON string - let parsedInput: { amountSol: string; splmintAddress?: string }; - try { - parsedInput = JSON.parse(input); - } catch (e) { - throw new Error("Invalid input format. Please provide a valid JSON string."); + const parsedInput = JSON.parse(input); + + if (!parsedInput.amount) { + throw new Error("Amount is required"); } - // Validate amount - const amount = parseFloat(parsedInput.amountSol); - if (isNaN(amount) || amount <= 0) { - throw new Error("Invalid amount. Please provide a valid positive number."); - } + const amount = parseFloat(parsedInput.amount); + const splmintAddress = parsedInput.splmintAddress ? new PublicKey(parsedInput.splmintAddress) : undefined; - // Handle optional SPL mint address - let splmintPublicKey: PublicKey | undefined; - if (parsedInput.splmintAddress) { - try { - splmintPublicKey = new PublicKey(parsedInput.splmintAddress); - } catch (e) { - throw new Error("Invalid SPL mint address. Please provide a valid Solana public key."); - } - } - - // Create TipLink using the imported create_TipLink function const { url, signature } = await this.solanaKit.createTiplink( amount, - splmintPublicKey + splmintAddress ); - // Return success response return JSON.stringify({ status: "success", url, signature, - tokenType: splmintPublicKey ? "SPL" : "SOL", amount, - message: `TipLink created successfully for ${amount} ${splmintPublicKey ? "tokens" : "SOL"}.` + tokenType: splmintAddress ? "SPL" : "SOL", + message: `TipLink created successfully` }); } catch (error: any) { - // Return error response return JSON.stringify({ status: "error", message: error.message, From 45d5ad21a7ebb2d3f04298fd635f849ce7283b1d Mon Sep 17 00:00:00 2001 From: Deepak Date: Fri, 27 Dec 2024 14:14:17 +0530 Subject: [PATCH 08/23] init --- examples/agent-kit-langgraph/README.json | 0 examples/agent-kit-langgraph/index.ts | 6 +++++ examples/agent-kit-langgraph/langgraph.json | 7 ++++++ examples/agent-kit-langgraph/utils/model.ts | 12 +++++++++ examples/agent-kit-langgraph/utils/route.ts | 0 .../agent-kit-langgraph/utils/solanaAgent.ts | 7 ++++++ examples/agent-kit-langgraph/utils/state.ts | 25 +++++++++++++++++++ package.json | 14 +++++------ pnpm-lock.yaml | 4 +-- 9 files changed, 66 insertions(+), 9 deletions(-) create mode 100644 examples/agent-kit-langgraph/README.json create mode 100644 examples/agent-kit-langgraph/index.ts create mode 100644 examples/agent-kit-langgraph/langgraph.json create mode 100644 examples/agent-kit-langgraph/utils/model.ts create mode 100644 examples/agent-kit-langgraph/utils/route.ts create mode 100644 examples/agent-kit-langgraph/utils/solanaAgent.ts create mode 100644 examples/agent-kit-langgraph/utils/state.ts diff --git a/examples/agent-kit-langgraph/README.json b/examples/agent-kit-langgraph/README.json new file mode 100644 index 0000000..e69de29 diff --git a/examples/agent-kit-langgraph/index.ts b/examples/agent-kit-langgraph/index.ts new file mode 100644 index 0000000..8327600 --- /dev/null +++ b/examples/agent-kit-langgraph/index.ts @@ -0,0 +1,6 @@ +import { StateGraph } from "@langchain/langgraph"; +import { solanaAgentState } from "./utils/state"; + +const workflow = new StateGraph(solanaAgentState); + +export const graph = workflow.compile(); diff --git a/examples/agent-kit-langgraph/langgraph.json b/examples/agent-kit-langgraph/langgraph.json new file mode 100644 index 0000000..1e630f6 --- /dev/null +++ b/examples/agent-kit-langgraph/langgraph.json @@ -0,0 +1,7 @@ +{ + "graphs": { + "solana-agent": "./index.ts:graph" + }, + "env": ".env", + "node_version": "20" +} \ No newline at end of file diff --git a/examples/agent-kit-langgraph/utils/model.ts b/examples/agent-kit-langgraph/utils/model.ts new file mode 100644 index 0000000..7ab8d15 --- /dev/null +++ b/examples/agent-kit-langgraph/utils/model.ts @@ -0,0 +1,12 @@ +import { ChatOpenAI } from "@langchain/openai"; +import "dotenv/config"; + +export const gpt4o = new ChatOpenAI({ + modelName: "gpt-4o", + apiKey: process.env.OPENAI_API_KEY!, +}); + +export const gpt4oMini = new ChatOpenAI({ + modelName: "gpt-4o-mini", + apiKey: process.env.OPENAI_API_KEY!, +}); diff --git a/examples/agent-kit-langgraph/utils/route.ts b/examples/agent-kit-langgraph/utils/route.ts new file mode 100644 index 0000000..e69de29 diff --git a/examples/agent-kit-langgraph/utils/solanaAgent.ts b/examples/agent-kit-langgraph/utils/solanaAgent.ts new file mode 100644 index 0000000..eccdd76 --- /dev/null +++ b/examples/agent-kit-langgraph/utils/solanaAgent.ts @@ -0,0 +1,7 @@ +import { SolanaAgentKit } from "../../../src/agent"; + +export const agentKit = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + process.env.OPENAI_API_KEY!, +); diff --git a/examples/agent-kit-langgraph/utils/state.ts b/examples/agent-kit-langgraph/utils/state.ts new file mode 100644 index 0000000..ed4a1be --- /dev/null +++ b/examples/agent-kit-langgraph/utils/state.ts @@ -0,0 +1,25 @@ +import { Annotation } from "@langchain/langgraph"; +import { BaseMessage } from "@langchain/core/messages"; +import { messagesStateReducer } from "@langchain/langgraph"; + +export const solanaAgentState = Annotation.Root({ + messages: Annotation({ + reducer: messagesStateReducer, + default: () => [], + }), + + isSolanaReadQuery: Annotation({ + reducer: (x, y) => y ?? x ?? false, + default: () => false, + }), + + isSolanaWriteQuery: Annotation({ + reducer: (x, y) => y ?? x ?? false, + default: () => false, + }), + + isGeneralQuery: Annotation({ + reducer: (x, y) => y ?? x ?? false, + default: () => false, + }), +}); diff --git a/package.json b/package.json index abd3301..63597c1 100644 --- a/package.json +++ b/package.json @@ -23,9 +23,9 @@ "dependencies": { "@bonfida/spl-name-service": "^3.0.7", "@coral-xyz/anchor": "0.29", - "@langchain/core": "^0.3.18", + "@langchain/core": "^0.3.26", "@langchain/groq": "^0.1.2", - "@langchain/langgraph": "^0.2.27", + "@langchain/langgraph": "^0.2.34", "@langchain/openai": "^0.3.13", "@lightprotocol/compressed-token": "^0.17.1", "@lightprotocol/stateless.js": "^0.17.1", @@ -56,13 +56,13 @@ "@types/bn.js": "^5.1.5", "@types/chai": "^5.0.1", "@types/node": "^22.9.0", - "ts-node": "^10.9.2", - "typescript": "^5.7.2", + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", - "@typescript-eslint/eslint-plugin": "^7.0.0", - "@typescript-eslint/parser": "^7.0.0", - "prettier": "^3.2.5" + "prettier": "^3.2.5", + "ts-node": "^10.9.2", + "typescript": "^5.7.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddfc583..8df6c67 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,13 +15,13 @@ importers: specifier: '0.29' version: 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@langchain/core': - specifier: ^0.3.18 + specifier: ^0.3.26 version: 0.3.26(openai@4.77.0(zod@3.24.1)) '@langchain/groq': specifier: ^0.1.2 version: 0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) '@langchain/langgraph': - specifier: ^0.2.27 + specifier: ^0.2.34 version: 0.2.34(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) '@langchain/openai': specifier: ^0.3.13 From 954e49e08e536025e8e79da1414e4c88f64e044d Mon Sep 17 00:00:00 2001 From: Deepak Date: Fri, 27 Dec 2024 14:44:21 +0530 Subject: [PATCH 09/23] seperated the dependencies from the main project --- examples/agent-kit-langgraph/package.json | 19 + examples/agent-kit-langgraph/pnpm-lock.yaml | 4043 +++++++++++++++++ .../agent-kit-langgraph/utils/solanaAgent.ts | 2 +- 3 files changed, 4063 insertions(+), 1 deletion(-) create mode 100644 examples/agent-kit-langgraph/package.json create mode 100644 examples/agent-kit-langgraph/pnpm-lock.yaml diff --git a/examples/agent-kit-langgraph/package.json b/examples/agent-kit-langgraph/package.json new file mode 100644 index 0000000..6e9d770 --- /dev/null +++ b/examples/agent-kit-langgraph/package.json @@ -0,0 +1,19 @@ +{ + "name": "agent-kit-langgraph", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@langchain/community": "^0.3.20", + "@langchain/core": "^0.3.26", + "@langchain/langgraph": "^0.2.36", + "dotenv": "^16.4.7", + "solana-agent-kit": "^1.3.0" + } +} diff --git a/examples/agent-kit-langgraph/pnpm-lock.yaml b/examples/agent-kit-langgraph/pnpm-lock.yaml new file mode 100644 index 0000000..3618a84 --- /dev/null +++ b/examples/agent-kit-langgraph/pnpm-lock.yaml @@ -0,0 +1,4043 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@langchain/community': + specifier: ^0.3.20 + version: 0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@langchain/core': + specifier: ^0.3.26 + version: 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/langgraph': + specifier: ^0.2.36 + version: 0.2.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + dotenv: + specifier: ^16.4.7 + version: 16.4.7 + solana-agent-kit: + specifier: ^1.3.0 + version: 1.3.0(@noble/hashes@1.6.1)(axios@1.7.4)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.24.1) + +packages: + + '@anthropic-ai/sdk@0.27.3': + resolution: {integrity: sha512-IjLt0gd3L4jlOfilxVXTifn42FnVffMgDC04RJK1KDZpmkBWLv0XC92MVVmkxrFZNS/7l3xWgP/I3nqtX1sQHw==} + + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + + '@bonfida/sns-records@0.0.1': + resolution: {integrity: sha512-i28w9+BMFufhhpmLQCNx1CKKXTsEn+5RT18VFpPqdGO3sqaYlnUWC1m3wDpOvlzGk498dljgRpRo5wmcsnuEMg==} + peerDependencies: + '@solana/web3.js': ^1.87.3 + + '@bonfida/spl-name-service@3.0.7': + resolution: {integrity: sha512-okOLXhy+fQoyQ/sZgMleO5RrIZfTkWEoHMxWgUqg6RP/MTBlrKxlhKC6ymKn4UUe0C5s3Nb8A+3Ams7vX0nMDg==} + peerDependencies: + '@solana/web3.js': ^1.87.3 + + '@browserbasehq/sdk@2.0.0': + resolution: {integrity: sha512-BdPlZyn0dpXlL70gNK4acpqWIRB+edo2z0/GalQdWghRq8iQjySd9fVIF3evKH1p2wCYekZJRK6tm29YfXB67g==} + + '@browserbasehq/stagehand@1.8.0': + resolution: {integrity: sha512-ozwE2imQzWhi1pir6+L7bwIWKXQQ+tX7oVRbQkcmHkj+xdDJJDMYxNMBJyt8mnAvXHvsadUowAWSIEfcTrNEqA==} + peerDependencies: + '@playwright/test': ^1.42.1 + deepmerge: ^4.3.1 + dotenv: ^16.4.5 + openai: ^4.62.1 + zod: ^3.23.8 + + '@cfworker/json-schema@4.0.3': + resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} + + '@coral-xyz/anchor@0.29.0': + resolution: {integrity: sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==} + engines: {node: '>=11'} + + '@coral-xyz/borsh@0.29.0': + resolution: {integrity: sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==} + engines: {node: '>=10'} + peerDependencies: + '@solana/web3.js': ^1.68.0 + + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + + '@ethersproject/bytes@5.7.0': + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + + '@ethersproject/logger@5.7.0': + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + + '@ethersproject/sha2@5.7.0': + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + + '@ibm-cloud/watsonx-ai@1.3.0': + resolution: {integrity: sha512-V4PorMPhxwYiayWxycryun4Bjxn3PJrQqJGca+maQd61Q7s+/PUJAHWjwzVSVHxiher17zFHf4NwqB8J6bWj4w==} + engines: {node: '>=18.0.0'} + + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@langchain/community@0.3.20': + resolution: {integrity: sha512-5XmguFWVrfYJ8s9kHPAmC1bTGfdVOKqzWVCoTolSXMVMDaVn+LVvCJxEedO01kU1y2AS4pUl5MDI9wssKS1Ehg==} + engines: {node: '>=18'} + peerDependencies: + '@arcjet/redact': ^v1.0.0-alpha.23 + '@aws-crypto/sha256-js': ^5.0.0 + '@aws-sdk/client-bedrock-agent-runtime': ^3.583.0 + '@aws-sdk/client-bedrock-runtime': ^3.422.0 + '@aws-sdk/client-dynamodb': ^3.310.0 + '@aws-sdk/client-kendra': ^3.352.0 + '@aws-sdk/client-lambda': ^3.310.0 + '@aws-sdk/client-s3': ^3.310.0 + '@aws-sdk/client-sagemaker-runtime': ^3.310.0 + '@aws-sdk/client-sfn': ^3.310.0 + '@aws-sdk/credential-provider-node': ^3.388.0 + '@azure/search-documents': ^12.0.0 + '@azure/storage-blob': ^12.15.0 + '@browserbasehq/sdk': '*' + '@browserbasehq/stagehand': ^1.0.0 + '@clickhouse/client': ^0.2.5 + '@cloudflare/ai': '*' + '@datastax/astra-db-ts': ^1.0.0 + '@elastic/elasticsearch': ^8.4.0 + '@getmetal/metal-sdk': '*' + '@getzep/zep-cloud': ^1.0.6 + '@getzep/zep-js': ^0.9.0 + '@gomomento/sdk': ^1.51.1 + '@gomomento/sdk-core': ^1.51.1 + '@google-ai/generativelanguage': '*' + '@google-cloud/storage': ^6.10.1 || ^7.7.0 + '@gradientai/nodejs-sdk': ^1.2.0 + '@huggingface/inference': ^2.6.4 + '@ibm-cloud/watsonx-ai': '*' + '@lancedb/lancedb': ^0.12.0 + '@langchain/core': '>=0.2.21 <0.4.0' + '@layerup/layerup-security': ^1.5.12 + '@libsql/client': ^0.14.0 + '@mendable/firecrawl-js': ^1.4.3 + '@mlc-ai/web-llm': '*' + '@mozilla/readability': '*' + '@neondatabase/serverless': '*' + '@notionhq/client': ^2.2.10 + '@opensearch-project/opensearch': '*' + '@pinecone-database/pinecone': '*' + '@planetscale/database': ^1.8.0 + '@premai/prem-sdk': ^0.3.25 + '@qdrant/js-client-rest': ^1.8.2 + '@raycast/api': ^1.55.2 + '@rockset/client': ^0.9.1 + '@smithy/eventstream-codec': ^2.0.5 + '@smithy/protocol-http': ^3.0.6 + '@smithy/signature-v4': ^2.0.10 + '@smithy/util-utf8': ^2.0.0 + '@spider-cloud/spider-client': ^0.0.21 + '@supabase/supabase-js': ^2.45.0 + '@tensorflow-models/universal-sentence-encoder': '*' + '@tensorflow/tfjs-converter': '*' + '@tensorflow/tfjs-core': '*' + '@upstash/ratelimit': ^1.1.3 || ^2.0.3 + '@upstash/redis': ^1.20.6 + '@upstash/vector': ^1.1.1 + '@vercel/kv': ^0.2.3 + '@vercel/postgres': ^0.5.0 + '@writerai/writer-sdk': ^0.40.2 + '@xata.io/client': ^0.28.0 + '@xenova/transformers': ^2.17.2 + '@zilliz/milvus2-sdk-node': '>=2.3.5' + apify-client: ^2.7.1 + assemblyai: ^4.6.0 + better-sqlite3: '>=9.4.0 <12.0.0' + cassandra-driver: ^4.7.2 + cborg: ^4.1.1 + cheerio: ^1.0.0-rc.12 + chromadb: '*' + closevector-common: 0.1.3 + closevector-node: 0.1.6 + closevector-web: 0.1.6 + cohere-ai: '*' + convex: ^1.3.1 + crypto-js: ^4.2.0 + d3-dsv: ^2.0.0 + discord.js: ^14.14.1 + dria: ^0.0.3 + duck-duck-scrape: ^2.2.5 + epub2: ^3.0.1 + faiss-node: ^0.5.1 + fast-xml-parser: '*' + firebase-admin: ^11.9.0 || ^12.0.0 + google-auth-library: '*' + googleapis: '*' + hnswlib-node: ^3.0.0 + html-to-text: ^9.0.5 + ibm-cloud-sdk-core: '*' + ignore: ^5.2.0 + interface-datastore: ^8.2.11 + ioredis: ^5.3.2 + it-all: ^3.0.4 + jsdom: '*' + jsonwebtoken: ^9.0.2 + llmonitor: ^0.5.9 + lodash: ^4.17.21 + lunary: ^0.7.10 + mammoth: ^1.6.0 + mongodb: '>=5.2.0' + mysql2: ^3.9.8 + neo4j-driver: '*' + notion-to-md: ^3.1.0 + officeparser: ^4.0.4 + openai: '*' + pdf-parse: 1.1.1 + pg: ^8.11.0 + pg-copy-streams: ^6.0.5 + pickleparser: ^0.2.1 + playwright: ^1.32.1 + portkey-ai: ^0.1.11 + puppeteer: '*' + pyodide: '>=0.24.1 <0.27.0' + redis: '*' + replicate: ^0.29.4 + sonix-speech-recognition: ^2.1.1 + srt-parser-2: ^1.2.3 + typeorm: ^0.3.20 + typesense: ^1.5.3 + usearch: ^1.1.1 + voy-search: 0.6.2 + weaviate-ts-client: '*' + web-auth-library: ^1.0.3 + ws: ^8.14.2 + youtube-transcript: ^1.0.6 + youtubei.js: ^9.1.0 + peerDependenciesMeta: + '@arcjet/redact': + optional: true + '@aws-crypto/sha256-js': + optional: true + '@aws-sdk/client-bedrock-agent-runtime': + optional: true + '@aws-sdk/client-bedrock-runtime': + optional: true + '@aws-sdk/client-dynamodb': + optional: true + '@aws-sdk/client-kendra': + optional: true + '@aws-sdk/client-lambda': + optional: true + '@aws-sdk/client-s3': + optional: true + '@aws-sdk/client-sagemaker-runtime': + optional: true + '@aws-sdk/client-sfn': + optional: true + '@aws-sdk/credential-provider-node': + optional: true + '@azure/search-documents': + optional: true + '@azure/storage-blob': + optional: true + '@browserbasehq/sdk': + optional: true + '@clickhouse/client': + optional: true + '@cloudflare/ai': + optional: true + '@datastax/astra-db-ts': + optional: true + '@elastic/elasticsearch': + optional: true + '@getmetal/metal-sdk': + optional: true + '@getzep/zep-cloud': + optional: true + '@getzep/zep-js': + optional: true + '@gomomento/sdk': + optional: true + '@gomomento/sdk-core': + optional: true + '@google-ai/generativelanguage': + optional: true + '@google-cloud/storage': + optional: true + '@gradientai/nodejs-sdk': + optional: true + '@huggingface/inference': + optional: true + '@lancedb/lancedb': + optional: true + '@layerup/layerup-security': + optional: true + '@libsql/client': + optional: true + '@mendable/firecrawl-js': + optional: true + '@mlc-ai/web-llm': + optional: true + '@mozilla/readability': + optional: true + '@neondatabase/serverless': + optional: true + '@notionhq/client': + optional: true + '@opensearch-project/opensearch': + optional: true + '@pinecone-database/pinecone': + optional: true + '@planetscale/database': + optional: true + '@premai/prem-sdk': + optional: true + '@qdrant/js-client-rest': + optional: true + '@raycast/api': + optional: true + '@rockset/client': + optional: true + '@smithy/eventstream-codec': + optional: true + '@smithy/protocol-http': + optional: true + '@smithy/signature-v4': + optional: true + '@smithy/util-utf8': + optional: true + '@spider-cloud/spider-client': + optional: true + '@supabase/supabase-js': + optional: true + '@tensorflow-models/universal-sentence-encoder': + optional: true + '@tensorflow/tfjs-converter': + optional: true + '@tensorflow/tfjs-core': + optional: true + '@upstash/ratelimit': + optional: true + '@upstash/redis': + optional: true + '@upstash/vector': + optional: true + '@vercel/kv': + optional: true + '@vercel/postgres': + optional: true + '@writerai/writer-sdk': + optional: true + '@xata.io/client': + optional: true + '@xenova/transformers': + optional: true + '@zilliz/milvus2-sdk-node': + optional: true + apify-client: + optional: true + assemblyai: + optional: true + better-sqlite3: + optional: true + cassandra-driver: + optional: true + cborg: + optional: true + cheerio: + optional: true + chromadb: + optional: true + closevector-common: + optional: true + closevector-node: + optional: true + closevector-web: + optional: true + cohere-ai: + optional: true + convex: + optional: true + crypto-js: + optional: true + d3-dsv: + optional: true + discord.js: + optional: true + dria: + optional: true + duck-duck-scrape: + optional: true + epub2: + optional: true + faiss-node: + optional: true + fast-xml-parser: + optional: true + firebase-admin: + optional: true + google-auth-library: + optional: true + googleapis: + optional: true + hnswlib-node: + optional: true + html-to-text: + optional: true + ignore: + optional: true + interface-datastore: + optional: true + ioredis: + optional: true + it-all: + optional: true + jsdom: + optional: true + jsonwebtoken: + optional: true + llmonitor: + optional: true + lodash: + optional: true + lunary: + optional: true + mammoth: + optional: true + mongodb: + optional: true + mysql2: + optional: true + neo4j-driver: + optional: true + notion-to-md: + optional: true + officeparser: + optional: true + pdf-parse: + optional: true + pg: + optional: true + pg-copy-streams: + optional: true + pickleparser: + optional: true + playwright: + optional: true + portkey-ai: + optional: true + puppeteer: + optional: true + pyodide: + optional: true + redis: + optional: true + replicate: + optional: true + sonix-speech-recognition: + optional: true + srt-parser-2: + optional: true + typeorm: + optional: true + typesense: + optional: true + usearch: + optional: true + voy-search: + optional: true + weaviate-ts-client: + optional: true + web-auth-library: + optional: true + ws: + optional: true + youtube-transcript: + optional: true + youtubei.js: + optional: true + + '@langchain/core@0.3.26': + resolution: {integrity: sha512-6RUQHEp8wv+JwtYIIEBYBzbLlcAQZFc7EDOgAM0ukExjh9HiXoJzoWpgMRRCrr/koIbtwXPJUqBprZK1I1CXHQ==} + engines: {node: '>=18'} + + '@langchain/groq@0.1.2': + resolution: {integrity: sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + + '@langchain/langgraph-checkpoint@0.0.13': + resolution: {integrity: sha512-amdmBcNT8a9xP2VwcEWxqArng4gtRDcnVyVI4DsQIo1Aaz8e8+hH17zSwrUF3pt1pIYztngIfYnBOim31mtKMg==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.31 <0.4.0' + + '@langchain/langgraph-sdk@0.0.32': + resolution: {integrity: sha512-KQyM9kLO7T6AxwNrceajH7JOybP3pYpvUPnhiI2rrVndI1WyZUJ1eVC1e722BVRAPi6o+WcoTT4uMSZVinPOtA==} + + '@langchain/langgraph@0.2.36': + resolution: {integrity: sha512-zxk7ZCVxP0/Ut9785EiXCS7BE7sXd8cu943mcZUF2aNFUaQRTBbbiKpNdR3nb1+xO/B+HVktrJT2VFdkAywnng==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.36 <0.3.0 || >=0.3.9 < 0.4.0' + + '@langchain/openai@0.3.16': + resolution: {integrity: sha512-Om9HRlTeI0Ou6D4pfxbWHop4WGfkCdV/7v1W/+Jr7NSf0BNoA9jk5GqGms8ZtOYSGgPvizDu3i0TrM3B4cN4NA==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.26 <0.4.0' + + '@langchain/textsplitters@0.1.0': + resolution: {integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + + '@lightprotocol/compressed-token@0.17.1': + resolution: {integrity: sha512-493KCmZGw1BcHVRJaeRm8EEs+L7gX8dwY7JG13w2pfgOMtZXZ7Wxt261jFJxQJzRLTrUSlrbRJOmfW1+S1Y8SQ==} + peerDependencies: + '@lightprotocol/stateless.js': 0.17.1 + + '@lightprotocol/stateless.js@0.17.1': + resolution: {integrity: sha512-EjId1n33A6dBwpce33Wsa/fs/CDKtMtRrkxbApH0alXrnEXmbW6QhIViXOrKYXjZ4uJQM1xsBtsKe0vqJ4nbtQ==} + + '@metaplex-foundation/beet-solana@0.4.1': + resolution: {integrity: sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==} + + '@metaplex-foundation/beet@0.7.2': + resolution: {integrity: sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==} + + '@metaplex-foundation/mpl-core@1.1.1': + resolution: {integrity: sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA==} + peerDependencies: + '@metaplex-foundation/umi': '>=0.8.2 < 1' + '@noble/hashes': ^1.3.1 + + '@metaplex-foundation/mpl-token-metadata@3.3.0': + resolution: {integrity: sha512-t5vO8Wr3ZZZPGrVrGNcosX5FMkwQSgBiVMQMRNDG2De7voYFJmIibD5jdG05EoQ4Y5kZVEiwhYaO+wJB3aO5AA==} + peerDependencies: + '@metaplex-foundation/umi': '>= 0.8.2 < 1' + + '@metaplex-foundation/mpl-toolbox@0.9.4': + resolution: {integrity: sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ==} + peerDependencies: + '@metaplex-foundation/umi': '>= 0.8.2 < 1' + + '@metaplex-foundation/umi-bundle-defaults@0.9.2': + resolution: {integrity: sha512-kV3tfvgvRjVP1p9OFOtH+ibOtN9omVJSwKr0We4/9r45e5LTj+32su0V/rixZUkG1EZzzOYBsxhtIE0kIw/Hrw==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-downloader-http@0.9.2': + resolution: {integrity: sha512-tzPT9hBwenzTzAQg07rmsrqZfgguAXELbcJrsYMoASp5VqWFXYIP00g94KET6XLjWUXH4P1J2zoa6hGennPXHA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-eddsa-web3js@0.9.2': + resolution: {integrity: sha512-hhPCxXbYIp4BC4z9gK78sXpWLkNSrfv4ndhF5ruAkdIp7GcRVYKj0QnOUO6lGYGiIkNlw20yoTwOe1CT//OfTQ==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-http-fetch@0.9.2': + resolution: {integrity: sha512-YCZuBu24T9ZzEDe4+w12LEZm/fO9pkyViZufGgASC5NX93814Lvf6Ssjn/hZzjfA7CvZbvLFbmujc6CV3Q/m9Q==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-options@0.8.9': + resolution: {integrity: sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A==} + + '@metaplex-foundation/umi-program-repository@0.9.2': + resolution: {integrity: sha512-g3+FPqXEmYsBa8eETtUE2gb2Oe3mqac0z3/Ur1TvAg5TtIy3mzRzOy/nza+sgzejnfcxcVg835rmpBaxpBnjDA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-public-keys@0.8.9': + resolution: {integrity: sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q==} + + '@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2': + resolution: {integrity: sha512-YRwVf6xH0jPBAUgMhEPi+UbjioAeqTXmjsN2TnmQCPAmHbrHrMRj0rlWYwFLWAgkmoxazYrXP9lqOFRrfOGAEA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-rpc-web3js@0.9.2': + resolution: {integrity: sha512-MqcsBz8B4wGl6jxsf2Jo/rAEpYReU9VCSR15QSjhvADHMmdFxCIZCCAgE+gDE2Vuanfl437VhOcP3g5Uw8C16Q==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-serializer-data-view@0.9.2': + resolution: {integrity: sha512-5vGptadJxUxvUcyrwFZxXlEc6Q7AYySBesizCtrBFUY8w8PnF2vzmS45CP1MLySEATNH6T9mD4Rs0tLb87iQyA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-serializers-core@0.8.9': + resolution: {integrity: sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w==} + + '@metaplex-foundation/umi-serializers-encodings@0.8.9': + resolution: {integrity: sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q==} + + '@metaplex-foundation/umi-serializers-numbers@0.8.9': + resolution: {integrity: sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg==} + + '@metaplex-foundation/umi-serializers@0.9.0': + resolution: {integrity: sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg==} + + '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2': + resolution: {integrity: sha512-fR1Kf21uylMFd1Smkltmj4jTNxhqSWf416owsJ+T+cvJi2VCOcOwq/3UFzOrpz78fA0RhsajKYKj0HYsRnQI1g==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-web3js-adapters@0.9.2': + resolution: {integrity: sha512-RQqUTtHYY9fmEMnq7s3Hiv/81flGaoI0ZVVoafnFVaQLnxU6QBKxtboRZHk43XtD9CiFh5f9izrMJX7iK7KlOA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi@0.9.2': + resolution: {integrity: sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw==} + + '@msgpack/msgpack@3.0.0-beta2': + resolution: {integrity: sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==} + engines: {node: '>= 14'} + + '@noble/curves@1.7.0': + resolution: {integrity: sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.6.0': + resolution: {integrity: sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.6.1': + resolution: {integrity: sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==} + engines: {node: ^14.21.3 || >=16} + + '@onsol/tldparser@0.6.7': + resolution: {integrity: sha512-QwkRDLyC514pxeplCCXZ2kTiRcJSeUrpp+9o2XqLbePy/qzZGGG8I0UbXUKuWVD/bUL1zAm21+D+Eu30OKwcQg==} + engines: {node: '>=14'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + bn.js: ^5.2.1 + borsh: ^0.7.0 + buffer: 6.0.1 + + '@orca-so/common-sdk@0.6.4': + resolution: {integrity: sha512-iOiC6exTA9t2CEOaUPoWlNP3soN/1yZFjoz1mSf7NvOqo/PJZeIdWpB7BRXwU0mGGatjxU4SFgMGQ8NrSx+ONw==} + peerDependencies: + '@solana/spl-token': ^0.4.1 + '@solana/web3.js': ^1.90.0 + decimal.js: ^10.4.3 + + '@orca-so/whirlpools-sdk@0.13.12': + resolution: {integrity: sha512-+LOqGTe0DYUsYwemltOU4WQIviqoICQlIcAmmEX/WnBh6wntpcLDcXkPV6dBHW7NA2/J8WEVAZ50biLJb4subg==} + peerDependencies: + '@coral-xyz/anchor': ~0.29.0 + '@orca-so/common-sdk': 0.6.4 + '@solana/spl-token': ^0.4.8 + '@solana/web3.js': ^1.90.0 + decimal.js: ^10.4.3 + + '@playwright/test@1.49.1': + resolution: {integrity: sha512-Ky+BVzPz8pL6PQxHqNRW1k3mIyv933LML7HktS8uik0bUXNCdPhoS/kLihiO1tMf/egaJb4IutXd7UywvXEW+g==} + engines: {node: '>=18'} + hasBin: true + + '@pythnetwork/price-service-client@1.9.0': + resolution: {integrity: sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==} + deprecated: This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead. + + '@pythnetwork/price-service-sdk@1.8.0': + resolution: {integrity: sha512-tFZ1thj3Zja06DzPIX2dEWSi7kIfIyqreoywvw5NQ3Z1pl5OJHQGMEhxt6Li3UCGSp2ooYZS9wl8/8XfrfrNSA==} + + '@raydium-io/raydium-sdk-v2@0.1.95-alpha': + resolution: {integrity: sha512-+u7yxo/R1JDysTCzOuAlh90ioBe2DlM2Hbcz/tFsxP/YzmnYQzShvNjcmc0361a4zJhmlrEJfpFXW0J3kkX5vA==} + + '@scure/base@1.2.1': + resolution: {integrity: sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==} + + '@shikijs/core@1.24.4': + resolution: {integrity: sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==} + + '@shikijs/engine-javascript@1.24.4': + resolution: {integrity: sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==} + + '@shikijs/engine-oniguruma@1.24.4': + resolution: {integrity: sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==} + + '@shikijs/types@1.24.4': + resolution: {integrity: sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==} + + '@shikijs/vscode-textmate@9.3.1': + resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} + + '@solana/buffer-layout-utils@0.2.0': + resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==} + engines: {node: '>= 10'} + + '@solana/buffer-layout@4.0.1': + resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} + engines: {node: '>=5.10'} + + '@solana/codecs-core@2.0.0-preview.2': + resolution: {integrity: sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg==} + + '@solana/codecs-core@2.0.0-preview.4': + resolution: {integrity: sha512-A0VVuDDA5kNKZUinOqHxJQK32aKTucaVbvn31YenGzHX1gPqq+SOnFwgaEY6pq4XEopSmaK16w938ZQS8IvCnw==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-core@2.0.0-rc.1': + resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-data-structures@2.0.0-preview.2': + resolution: {integrity: sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg==} + + '@solana/codecs-data-structures@2.0.0-preview.4': + resolution: {integrity: sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-data-structures@2.0.0-rc.1': + resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-numbers@2.0.0-preview.2': + resolution: {integrity: sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw==} + + '@solana/codecs-numbers@2.0.0-preview.4': + resolution: {integrity: sha512-Q061rLtMadsO7uxpguT+Z7G4UHnjQ6moVIxAQxR58nLxDPCC7MB1Pk106/Z7NDhDLHTcd18uO6DZ7ajHZEn2XQ==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-numbers@2.0.0-rc.1': + resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-strings@2.0.0-preview.2': + resolution: {integrity: sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g==} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + + '@solana/codecs-strings@2.0.0-preview.4': + resolution: {integrity: sha512-YDbsQePRWm+xnrfS64losSGRg8Wb76cjK1K6qfR8LPmdwIC3787x9uW5/E4icl/k+9nwgbIRXZ65lpF+ucZUnw==} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5' + + '@solana/codecs-strings@2.0.0-rc.1': + resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5' + + '@solana/codecs@2.0.0-preview.2': + resolution: {integrity: sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA==} + + '@solana/codecs@2.0.0-preview.4': + resolution: {integrity: sha512-gLMupqI4i+G4uPi2SGF/Tc1aXcviZF2ybC81x7Q/fARamNSgNOCUUoSCg9nWu1Gid6+UhA7LH80sWI8XjKaRog==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs@2.0.0-rc.1': + resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==} + peerDependencies: + typescript: '>=5' + + '@solana/errors@2.0.0-preview.2': + resolution: {integrity: sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA==} + hasBin: true + + '@solana/errors@2.0.0-preview.4': + resolution: {integrity: sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA==} + hasBin: true + peerDependencies: + typescript: '>=5' + + '@solana/errors@2.0.0-rc.1': + resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==} + hasBin: true + peerDependencies: + typescript: '>=5' + + '@solana/options@2.0.0-preview.2': + resolution: {integrity: sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w==} + + '@solana/options@2.0.0-preview.4': + resolution: {integrity: sha512-tv2O/Frxql/wSe3jbzi5nVicIWIus/BftH+5ZR+r9r3FO0/htEllZS5Q9XdbmSboHu+St87584JXeDx3xm4jaA==} + peerDependencies: + typescript: '>=5' + + '@solana/options@2.0.0-rc.1': + resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==} + peerDependencies: + typescript: '>=5' + + '@solana/spl-token-group@0.0.4': + resolution: {integrity: sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.91.6 + + '@solana/spl-token-group@0.0.5': + resolution: {integrity: sha512-CLJnWEcdoUBpQJfx9WEbX3h6nTdNiUzswfFdkABUik7HVwSNA98u5AYvBVK2H93d9PGMOHAak2lHW9xr+zAJGQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.94.0 + + '@solana/spl-token-group@0.0.7': + resolution: {integrity: sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + + '@solana/spl-token-metadata@0.1.6': + resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + + '@solana/spl-token@0.4.6': + resolution: {integrity: sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.91.6 + + '@solana/spl-token@0.4.8': + resolution: {integrity: sha512-RO0JD9vPRi4LsAbMUdNbDJ5/cv2z11MGhtAvFeRzT4+hAGE/FUzRi0tkkWtuCfSIU3twC6CtmAihRp/+XXjWsA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.94.0 + + '@solana/spl-token@0.4.9': + resolution: {integrity: sha512-g3wbj4F4gq82YQlwqhPB0gHFXfgsC6UmyGMxtSLf/BozT/oKd59465DbnlUK8L8EcimKMavxsVAMoLcEdeCicg==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + + '@solana/spl-type-length-value@0.1.0': + resolution: {integrity: sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA==} + engines: {node: '>=16'} + + '@solana/web3.js@1.95.3': + resolution: {integrity: sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==} + + '@solana/web3.js@1.98.0': + resolution: {integrity: sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA==} + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@tokenizer/token@0.3.0': + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + + '@types/node-fetch@2.6.12': + resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} + + '@types/node@10.14.22': + resolution: {integrity: sha512-9taxKC944BqoTVjE+UT3pQH0nHZlTvITwfsOZqyc+R3sfJuxaTtxWjfn1K2UlxyPcKHf0rnaXcVFrS9F9vf0bw==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@18.19.68': + resolution: {integrity: sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==} + + '@types/retry@0.12.0': + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + + '@types/uuid@8.3.4': + resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} + + '@types/ws@7.4.7': + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + + '@types/ws@8.5.13': + resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} + + '@ungap/structured-clone@1.2.1': + resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansicolors@0.3.2: + resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axios-retry@3.9.1: + resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} + + axios@1.7.4: + resolution: {integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@3.0.10: + resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} + + base-x@4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + + base-x@5.0.0: + resolution: {integrity: sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + big.js@6.2.2: + resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} + + bigint-buffer@1.1.5: + resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} + engines: {node: '>= 10.0.0'} + + bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + borsh@0.7.0: + resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} + + borsh@1.0.0: + resolution: {integrity: sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==} + + borsh@2.0.0: + resolution: {integrity: sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + + bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + + bs58@6.0.0: + resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-layout@1.2.2: + resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} + engines: {node: '>=4.5'} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bufferutil@4.0.8: + resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + engines: {node: '>=6.14.2'} + + call-bind-apply-helpers@1.0.1: + resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.3: + resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + engines: {node: '>= 0.4'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} + engines: {node: '>=12'} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + cross-fetch@3.2.0: + resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + + crypto-hash@1.3.0: + resolution: {integrity: sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==} + engines: {node: '>=8'} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + + decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delay@5.0.0: + resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} + engines: {node: '>=10'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + + es6-promisify@5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + expr-eval@2.0.2: + resolution: {integrity: sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg==} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + eyes@0.1.8: + resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} + engines: {node: '> 0.1.90'} + + fast-stable-stringify@1.0.0: + resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} + + fastestsmallesttextencoderdecoder@1.0.22: + resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} + + file-type@16.5.4: + resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} + engines: {node: '>=10'} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + form-data-encoder@1.7.2: + resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + + formdata-node@4.4.1: + resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} + engines: {node: '>= 12.20'} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-intrinsic@1.2.6: + resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} + engines: {node: '>= 0.4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemesplit@2.4.4: + resolution: {integrity: sha512-lKrpp1mk1NH26USxC/Asw4OHbhSQf5XfrWZ+CDv/dFVvd1j17kFgMotdJvOesmHkbFX9P9sBfpH8VogxOWLg8w==} + + groq-sdk@0.5.0: + resolution: {integrity: sha512-RVmhW7qZ+XZoy5fIuSdx/LGQJONpL8MHgZEW7dFwTdgkzStub2XQx6OKv28CHogijdwH41J+Npj/z2jBPu3vmw==} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-to-html@9.0.4: + resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + ibm-cloud-sdk-core@5.1.0: + resolution: {integrity: sha512-KJCbPz3tiXB1NGAD7cL4JtwpWV8yd/C7jsaHsxvedMo2ZblNG8emMyvSpGhiKAQVZmi3c0ujz6eJdy22NHuUWQ==} + engines: {node: '>=18'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + + is-retry-allowed@2.2.0: + resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} + engines: {node: '>=10'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + jayson@4.1.3: + resolution: {integrity: sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ==} + engines: {node: '>=8'} + hasBin: true + + js-base64@3.7.7: + resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + + js-tiktoken@1.0.16: + resolution: {integrity: sha512-nUVdO5k/M9llWpiaZlBBDdtmr6qWXwSD6fgaDu2zM8UP+OXxx9V37lFkI6w0/1IuaDx7WffZ37oYd9KvcWKElg==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + + jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} + + jwa@1.4.1: + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + + jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + + langchain@0.3.8: + resolution: {integrity: sha512-EiAHFgBdThuXFmIx9j81wjdPItpRsw0Ck4r5dyhB74gyhehRGna/UK2CTqeKVnIUM/f4g4JbxUgAU4voXljDMw==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/anthropic': '*' + '@langchain/aws': '*' + '@langchain/cohere': '*' + '@langchain/core': '>=0.2.21 <0.4.0' + '@langchain/google-genai': '*' + '@langchain/google-vertexai': '*' + '@langchain/groq': '*' + '@langchain/mistralai': '*' + '@langchain/ollama': '*' + axios: '*' + cheerio: '*' + handlebars: ^4.7.8 + peggy: ^3.0.2 + typeorm: '*' + peerDependenciesMeta: + '@langchain/anthropic': + optional: true + '@langchain/aws': + optional: true + '@langchain/cohere': + optional: true + '@langchain/google-genai': + optional: true + '@langchain/google-vertexai': + optional: true + '@langchain/groq': + optional: true + '@langchain/mistralai': + optional: true + '@langchain/ollama': + optional: true + axios: + optional: true + cheerio: + optional: true + handlebars: + optional: true + peggy: + optional: true + typeorm: + optional: true + + langsmith@0.2.14: + resolution: {integrity: sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig==} + peerDependencies: + openai: '*' + peerDependenciesMeta: + openai: + optional: true + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.1: + resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-gyp-build@4.8.4: + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} + hasBin: true + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + oniguruma-to-es@0.8.1: + resolution: {integrity: sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==} + + openai@4.77.0: + resolution: {integrity: sha512-WWacavtns/7pCUkOWvQIjyOfcdr9X+9n9Vvb0zFeKVDAqwCMDHB+iSr24SVaBAhplvSG6JrRXFpcNM9gWhOGIw==} + hasBin: true + peerDependencies: + zod: ^3.23.8 + peerDependenciesMeta: + zod: + optional: true + + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + + p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + + pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + + pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + + peek-readable@4.1.0: + resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} + engines: {node: '>=8'} + + playwright-core@1.49.1: + resolution: {integrity: sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.49.1: + resolution: {integrity: sha512-VYL8zLoNTBxVOrJBbDuRgDWa3i+mfQgDTrL8Ah9QXZ7ax4Dsj0MSq5bYgytRnDVVe+njoKnfsYkH3HzqVj5UZA==} + engines: {node: '>=18'} + hasBin: true + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readable-web-to-node-stream@3.0.2: + resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} + engines: {node: '>=8'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regex-recursion@5.1.1: + resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@5.1.1: + resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + retry-axios@2.6.0: + resolution: {integrity: sha512-pOLi+Gdll3JekwuFjXO3fTq+L9lzMQGcSq7M5gIjExcl3Gu1hd4XXuf5o3+LuSBsaULQH7DiNbsqPd1chVpQGQ==} + engines: {node: '>=10.7.0'} + peerDependencies: + axios: '*' + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + rpc-websockets@9.0.4: + resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shiki@1.24.4: + resolution: {integrity: sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + + solana-agent-kit@1.3.0: + resolution: {integrity: sha512-QEg37BgkjyL+8XoPoHizvCfUchxCXZYorm3IC2wGXsWnIi4XJkdNaMSwisuUFS0WzIHrvK3ublhYGxfRNvTGpg==} + engines: {node: '>=23.1.0', pnpm: '>=8.0.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strtok3@6.3.0: + resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} + engines: {node: '>=10'} + + superstruct@0.15.5: + resolution: {integrity: sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==} + + superstruct@2.0.2: + resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} + engines: {node: '>=14.0.0'} + + text-encoding-utf-8@1.0.2: + resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tiny-inflate@1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + toformat@2.0.0: + resolution: {integrity: sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==} + + token-types@4.2.1: + resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} + engines: {node: '>=10'} + + toml@3.0.0: + resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + ts-log@2.2.7: + resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + typedoc@0.26.11: + resolution: {integrity: sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==} + engines: {node: '>= 18'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + unicode-trie@2.0.0: + resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + web-streams-polyfill@4.0.0-beta.3: + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} + engines: {node: '>= 14'} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-typed-array@1.1.18: + resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} + engines: {node: '>= 0.4'} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + yaml@2.6.1: + resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} + engines: {node: '>= 14'} + hasBin: true + + zod-to-json-schema@3.24.1: + resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} + peerDependencies: + zod: ^3.24.1 + + zod@3.24.1: + resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@anthropic-ai/sdk@0.27.3': + dependencies: + '@types/node': 18.19.68 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@bonfida/sns-records@0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + borsh: 1.0.0 + bs58: 5.0.0 + buffer: 6.0.3 + + '@bonfida/spl-name-service@3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + dependencies: + '@bonfida/sns-records': 0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@noble/curves': 1.7.0 + '@scure/base': 1.2.1 + '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + borsh: 2.0.0 + buffer: 6.0.3 + graphemesplit: 2.4.4 + ipaddr.js: 2.2.0 + punycode: 2.3.1 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@browserbasehq/sdk@2.0.0': + dependencies: + '@types/node': 18.19.68 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + '@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1)': + dependencies: + '@anthropic-ai/sdk': 0.27.3 + '@browserbasehq/sdk': 2.0.0 + '@playwright/test': 1.49.1 + deepmerge: 4.3.1 + dotenv: 16.4.7 + openai: 4.77.0(zod@3.24.1) + sharp: 0.33.5 + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@cfworker/json-schema@4.0.3': {} + + '@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@noble/hashes': 1.6.1 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + bs58: 4.0.1 + buffer-layout: 1.2.2 + camelcase: 6.3.0 + cross-fetch: 3.2.0 + crypto-hash: 1.3.0 + eventemitter3: 4.0.7 + pako: 2.1.0 + snake-case: 3.0.4 + superstruct: 0.15.5 + toml: 3.0.0 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@coral-xyz/borsh@0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + buffer-layout: 1.2.2 + + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@ethersproject/bytes@5.7.0': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/logger@5.7.0': {} + + '@ethersproject/sha2@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 + + '@ibm-cloud/watsonx-ai@1.3.0': + dependencies: + '@types/node': 18.19.68 + extend: 3.0.2 + ibm-cloud-sdk-core: 5.1.0 + transitivePeerDependencies: + - supports-color + + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.3.1 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + + '@langchain/community@0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@browserbasehq/stagehand': 1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1) + '@ibm-cloud/watsonx-ai': 1.3.0 + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + binary-extensions: 2.3.0 + expr-eval: 2.0.2 + flat: 5.0.2 + ibm-cloud-sdk-core: 5.1.0 + js-yaml: 4.1.0 + langchain: 0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(openai@4.77.0(zod@3.24.1)) + langsmith: 0.2.14(openai@4.77.0(zod@3.24.1)) + openai: 4.77.0(zod@3.24.1) + uuid: 10.0.0 + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + optionalDependencies: + '@browserbasehq/sdk': 2.0.0 + jsonwebtoken: 9.0.2 + lodash: 4.17.21 + playwright: 1.49.1 + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - '@langchain/anthropic' + - '@langchain/aws' + - '@langchain/cohere' + - '@langchain/google-genai' + - '@langchain/google-vertexai' + - '@langchain/groq' + - '@langchain/mistralai' + - '@langchain/ollama' + - axios + - encoding + - handlebars + - peggy + + '@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))': + dependencies: + '@cfworker/json-schema': 4.0.3 + ansi-styles: 5.2.0 + camelcase: 6.3.0 + decamelize: 1.2.0 + js-tiktoken: 1.0.16 + langsmith: 0.2.14(openai@4.77.0(zod@3.24.1)) + mustache: 4.2.0 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 10.0.0 + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + transitivePeerDependencies: + - openai + + '@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + groq-sdk: 0.5.0 + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + transitivePeerDependencies: + - encoding + + '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + uuid: 10.0.0 + + '@langchain/langgraph-sdk@0.0.32': + dependencies: + '@types/json-schema': 7.0.15 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 9.0.1 + + '@langchain/langgraph@0.2.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@langchain/langgraph-sdk': 0.0.32 + uuid: 10.0.0 + zod: 3.24.1 + + '@langchain/openai@0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + js-tiktoken: 1.0.16 + openai: 4.77.0(zod@3.24.1) + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + transitivePeerDependencies: + - encoding + + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + js-tiktoken: 1.0.16 + + '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@noble/hashes': 1.5.0 + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + superstruct: 2.0.2 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@metaplex-foundation/beet': 0.7.2 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bs58: 5.0.0 + debug: 4.4.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@metaplex-foundation/beet@0.7.2': + dependencies: + ansicolors: 0.3.2 + assert: 2.1.0 + bn.js: 5.2.1 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + '@metaplex-foundation/mpl-core@1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.1)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@msgpack/msgpack': 3.0.0-beta2 + '@noble/hashes': 1.6.1 + + '@metaplex-foundation/mpl-token-metadata@3.3.0(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/mpl-toolbox@0.9.4(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-bundle-defaults@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-downloader-http': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-eddsa-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-http-fetch': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-program-repository': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-rpc-chunk-get-accounts': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-rpc-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-serializer-data-view': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-transaction-factory-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - encoding + + '@metaplex-foundation/umi-downloader-http@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-eddsa-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@noble/curves': 1.7.0 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + '@metaplex-foundation/umi-http-fetch@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + '@metaplex-foundation/umi-options@0.8.9': {} + + '@metaplex-foundation/umi-program-repository@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-public-keys@0.8.9': + dependencies: + '@metaplex-foundation/umi-serializers-encodings': 0.8.9 + + '@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-rpc-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + '@metaplex-foundation/umi-serializer-data-view@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-serializers-core@0.8.9': {} + + '@metaplex-foundation/umi-serializers-encodings@0.8.9': + dependencies: + '@metaplex-foundation/umi-serializers-core': 0.8.9 + + '@metaplex-foundation/umi-serializers-numbers@0.8.9': + dependencies: + '@metaplex-foundation/umi-serializers-core': 0.8.9 + + '@metaplex-foundation/umi-serializers@0.9.0': + dependencies: + '@metaplex-foundation/umi-options': 0.8.9 + '@metaplex-foundation/umi-public-keys': 0.8.9 + '@metaplex-foundation/umi-serializers-core': 0.8.9 + '@metaplex-foundation/umi-serializers-encodings': 0.8.9 + '@metaplex-foundation/umi-serializers-numbers': 0.8.9 + + '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + '@metaplex-foundation/umi-web3js-adapters@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + + '@metaplex-foundation/umi@0.9.2': + dependencies: + '@metaplex-foundation/umi-options': 0.8.9 + '@metaplex-foundation/umi-public-keys': 0.8.9 + '@metaplex-foundation/umi-serializers': 0.9.0 + + '@msgpack/msgpack@3.0.0-beta2': {} + + '@noble/curves@1.7.0': + dependencies: + '@noble/hashes': 1.6.0 + + '@noble/hashes@1.5.0': {} + + '@noble/hashes@1.6.0': {} + + '@noble/hashes@1.6.1': {} + + '@onsol/tldparser@0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/sha2': 5.7.0 + '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + borsh: 2.0.0 + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': + dependencies: + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + decimal.js: 10.4.3 + tiny-invariant: 1.3.3 + + '@orca-so/whirlpools-sdk@0.13.12(@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': + dependencies: + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + decimal.js: 10.4.3 + tiny-invariant: 1.3.3 + + '@playwright/test@1.49.1': + dependencies: + playwright: 1.49.1 + + '@pythnetwork/price-service-client@1.9.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@pythnetwork/price-service-sdk': 1.8.0 + '@types/ws': 8.5.13 + axios: 1.7.4(debug@4.4.0) + axios-retry: 3.9.1 + isomorphic-ws: 4.0.1(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + ts-log: 2.2.7 + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + '@pythnetwork/price-service-sdk@1.8.0': + dependencies: + bn.js: 5.2.1 + + '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + axios: 1.7.4(debug@4.4.0) + big.js: 6.2.2 + bn.js: 5.2.1 + dayjs: 1.11.13 + decimal.js-light: 2.5.1 + jsonfile: 6.1.0 + lodash: 4.17.21 + toformat: 2.0.0 + tsconfig-paths: 4.2.0 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@scure/base@1.2.1': {} + + '@shikijs/core@1.24.4': + dependencies: + '@shikijs/engine-javascript': 1.24.4 + '@shikijs/engine-oniguruma': 1.24.4 + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.4 + + '@shikijs/engine-javascript@1.24.4': + dependencies: + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + oniguruma-to-es: 0.8.1 + + '@shikijs/engine-oniguruma@1.24.4': + dependencies: + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + + '@shikijs/types@1.24.4': + dependencies: + '@shikijs/vscode-textmate': 9.3.1 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@9.3.1': {} + + '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bigint-buffer: 1.1.5 + bignumber.js: 9.1.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@solana/buffer-layout@4.0.1': + dependencies: + buffer: 6.0.3 + + '@solana/codecs-core@2.0.0-preview.2': + dependencies: + '@solana/errors': 2.0.0-preview.2 + + '@solana/codecs-core@2.0.0-preview.4(typescript@5.6.3)': + dependencies: + '@solana/errors': 2.0.0-preview.4(typescript@5.6.3) + typescript: 5.6.3 + + '@solana/codecs-core@2.0.0-rc.1(typescript@5.6.3)': + dependencies: + '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) + typescript: 5.6.3 + + '@solana/codecs-data-structures@2.0.0-preview.2': + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/codecs-numbers': 2.0.0-preview.2 + '@solana/errors': 2.0.0-preview.2 + + '@solana/codecs-data-structures@2.0.0-preview.4(typescript@5.6.3)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.6.3) + '@solana/errors': 2.0.0-preview.4(typescript@5.6.3) + typescript: 5.6.3 + + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.6.3)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) + typescript: 5.6.3 + + '@solana/codecs-numbers@2.0.0-preview.2': + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/errors': 2.0.0-preview.2 + + '@solana/codecs-numbers@2.0.0-preview.4(typescript@5.6.3)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.6.3) + '@solana/errors': 2.0.0-preview.4(typescript@5.6.3) + typescript: 5.6.3 + + '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.6.3)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) + typescript: 5.6.3 + + '@solana/codecs-strings@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/codecs-numbers': 2.0.0-preview.2 + '@solana/errors': 2.0.0-preview.2 + fastestsmallesttextencoderdecoder: 1.0.22 + + '@solana/codecs-strings@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.6.3) + '@solana/errors': 2.0.0-preview.4(typescript@5.6.3) + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 5.6.3 + + '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 5.6.3 + + '@solana/codecs@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/codecs-data-structures': 2.0.0-preview.2 + '@solana/codecs-numbers': 2.0.0-preview.2 + '@solana/codecs-strings': 2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/options': 2.0.0-preview.2 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/options': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/errors@2.0.0-preview.2': + dependencies: + chalk: 5.4.1 + commander: 12.1.0 + + '@solana/errors@2.0.0-preview.4(typescript@5.6.3)': + dependencies: + chalk: 5.4.1 + commander: 12.1.0 + typescript: 5.6.3 + + '@solana/errors@2.0.0-rc.1(typescript@5.6.3)': + dependencies: + chalk: 5.4.1 + commander: 12.1.0 + typescript: 5.6.3 + + '@solana/options@2.0.0-preview.2': + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/codecs-numbers': 2.0.0-preview.2 + + '@solana/options@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/errors': 2.0.0-preview.4(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/spl-token-group@0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)': + dependencies: + '@solana/codecs': 2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/spl-type-length-value': 0.1.0 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + dependencies: + '@solana/codecs': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/spl-type-length-value': 0.1.0 + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@solana/spl-type-length-value@0.1.0': + dependencies: + buffer: 6.0.3 + + '@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@babel/runtime': 7.26.0 + '@noble/curves': 1.7.0 + '@noble/hashes': 1.6.1 + '@solana/buffer-layout': 4.0.1 + agentkeepalive: 4.5.0 + bigint-buffer: 1.1.5 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.1.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + node-fetch: 2.7.0 + rpc-websockets: 9.0.4 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@babel/runtime': 7.26.0 + '@noble/curves': 1.7.0 + '@noble/hashes': 1.6.1 + '@solana/buffer-layout': 4.0.1 + agentkeepalive: 4.5.0 + bigint-buffer: 1.1.5 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.1.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + node-fetch: 2.7.0 + rpc-websockets: 9.0.4 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@tokenizer/token@0.3.0': {} + + '@types/connect@3.4.38': + dependencies: + '@types/node': 18.19.68 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 0.7.34 + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/ms@0.7.34': {} + + '@types/node-fetch@2.6.12': + dependencies: + '@types/node': 18.19.68 + form-data: 4.0.1 + + '@types/node@10.14.22': {} + + '@types/node@12.20.55': {} + + '@types/node@18.19.68': + dependencies: + undici-types: 5.26.5 + + '@types/retry@0.12.0': {} + + '@types/tough-cookie@4.0.5': {} + + '@types/unist@3.0.3': {} + + '@types/uuid@10.0.0': {} + + '@types/uuid@8.3.4': {} + + '@types/ws@7.4.7': + dependencies: + '@types/node': 18.19.68 + + '@types/ws@8.5.13': + dependencies: + '@types/node': 18.19.68 + + '@ungap/structured-clone@1.2.1': {} + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + agentkeepalive@4.5.0: + dependencies: + humanize-ms: 1.2.1 + + ansi-styles@5.2.0: {} + + ansicolors@0.3.2: {} + + argparse@2.0.1: {} + + assert@2.1.0: + dependencies: + call-bind: 1.0.8 + is-nan: 1.3.2 + object-is: 1.1.6 + object.assign: 4.1.7 + util: 0.12.5 + + assertion-error@2.0.1: {} + + asynckit@0.4.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + axios-retry@3.9.1: + dependencies: + '@babel/runtime': 7.26.0 + is-retry-allowed: 2.2.0 + + axios@1.7.4(debug@4.4.0): + dependencies: + follow-redirects: 1.15.9(debug@4.4.0) + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + base-x@3.0.10: + dependencies: + safe-buffer: 5.2.1 + + base-x@4.0.0: {} + + base-x@5.0.0: {} + + base64-js@1.5.1: {} + + big.js@6.2.2: {} + + bigint-buffer@1.1.5: + dependencies: + bindings: 1.5.0 + + bignumber.js@9.1.2: {} + + binary-extensions@2.3.0: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + bn.js@5.2.1: {} + + borsh@0.7.0: + dependencies: + bn.js: 5.2.1 + bs58: 4.0.1 + text-encoding-utf-8: 1.0.2 + + borsh@1.0.0: {} + + borsh@2.0.0: {} + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + bs58@4.0.1: + dependencies: + base-x: 3.0.10 + + bs58@5.0.0: + dependencies: + base-x: 4.0.0 + + bs58@6.0.0: + dependencies: + base-x: 5.0.0 + + buffer-equal-constant-time@1.0.1: {} + + buffer-layout@1.2.2: {} + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bufferutil@4.0.8: + dependencies: + node-gyp-build: 4.8.4 + optional: true + + call-bind-apply-helpers@1.0.1: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-define-property: 1.0.1 + get-intrinsic: 1.2.6 + set-function-length: 1.2.2 + + call-bound@1.0.3: + dependencies: + call-bind-apply-helpers: 1.0.1 + get-intrinsic: 1.2.6 + + camelcase@6.3.0: {} + + ccount@2.0.1: {} + + chai@5.1.2: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.2 + pathval: 2.0.0 + + chalk@5.4.1: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + check-error@2.1.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + comma-separated-tokens@2.0.3: {} + + commander@10.0.1: {} + + commander@12.1.0: {} + + commander@2.20.3: {} + + cross-fetch@3.2.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + crypto-hash@1.3.0: {} + + dayjs@1.11.13: {} + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decamelize@1.2.0: {} + + decimal.js-light@2.5.1: {} + + decimal.js@10.4.3: {} + + deep-eql@5.0.2: {} + + deepmerge@4.3.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + delay@5.0.0: {} + + delayed-stream@1.0.0: {} + + dequal@2.0.3: {} + + detect-libc@2.0.3: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + dotenv@16.4.7: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + emoji-regex-xs@1.0.0: {} + + entities@4.5.0: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + + es6-promise@4.2.8: {} + + es6-promisify@5.0.0: + dependencies: + es6-promise: 4.2.8 + + event-target-shim@5.0.1: {} + + eventemitter3@4.0.7: {} + + eventemitter3@5.0.1: {} + + expr-eval@2.0.2: {} + + extend@3.0.2: {} + + eyes@0.1.8: {} + + fast-stable-stringify@1.0.0: {} + + fastestsmallesttextencoderdecoder@1.0.22: {} + + file-type@16.5.4: + dependencies: + readable-web-to-node-stream: 3.0.2 + strtok3: 6.3.0 + token-types: 4.2.1 + + file-uri-to-path@1.0.0: {} + + flat@5.0.2: {} + + follow-redirects@1.15.9(debug@4.4.0): + optionalDependencies: + debug: 4.4.0 + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + form-data-encoder@1.7.2: {} + + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + formdata-node@4.4.1: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 4.0.0-beta.3 + + fsevents@2.3.2: + optional: true + + function-bind@1.1.2: {} + + get-intrinsic@1.2.6: + dependencies: + call-bind-apply-helpers: 1.0.1 + dunder-proto: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + function-bind: 1.1.2 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: + optional: true + + graphemesplit@2.4.4: + dependencies: + js-base64: 3.7.7 + unicode-trie: 2.0.0 + + groq-sdk@0.5.0: + dependencies: + '@types/node': 18.19.68 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + web-streams-polyfill: 3.3.3 + transitivePeerDependencies: + - encoding + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-to-html@9.0.4: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + html-void-elements@3.0.0: {} + + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + + ibm-cloud-sdk-core@5.1.0: + dependencies: + '@types/debug': 4.1.12 + '@types/node': 10.14.22 + '@types/tough-cookie': 4.0.5 + axios: 1.7.4(debug@4.4.0) + camelcase: 6.3.0 + debug: 4.4.0 + dotenv: 16.4.7 + extend: 3.0.2 + file-type: 16.5.4 + form-data: 4.0.0 + isstream: 0.1.2 + jsonwebtoken: 9.0.2 + mime-types: 2.1.35 + retry-axios: 2.6.0(axios@1.7.4) + tough-cookie: 4.1.4 + transitivePeerDependencies: + - supports-color + + ieee754@1.2.1: {} + + inherits@2.0.4: {} + + ipaddr.js@2.2.0: {} + + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-arrayish@0.3.2: {} + + is-callable@1.2.7: {} + + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 + + is-nan@1.3.2: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + + is-retry-allowed@2.2.0: {} + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.18 + + isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): + dependencies: + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + isomorphic-ws@4.0.1(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)): + dependencies: + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + isstream@0.1.2: {} + + jayson@4.1.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + '@types/connect': 3.4.38 + '@types/node': 12.20.55 + '@types/ws': 7.4.7 + JSONStream: 1.3.5 + commander: 2.20.3 + delay: 5.0.0 + es6-promisify: 5.0.0 + eyes: 0.1.8 + isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + json-stringify-safe: 5.0.1 + uuid: 8.3.2 + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + js-base64@3.7.7: {} + + js-tiktoken@1.0.16: + dependencies: + base64-js: 1.5.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-stringify-safe@5.0.1: {} + + json5@2.2.3: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + jsonpointer@5.0.1: {} + + jsonwebtoken@9.0.2: + dependencies: + jws: 3.2.2 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 7.6.3 + + jwa@1.4.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@3.2.2: + dependencies: + jwa: 1.4.1 + safe-buffer: 5.2.1 + + langchain@0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(openai@4.77.0(zod@3.24.1)): + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + js-tiktoken: 1.0.16 + js-yaml: 4.1.0 + jsonpointer: 5.0.1 + langsmith: 0.2.14(openai@4.77.0(zod@3.24.1)) + openapi-types: 12.1.3 + p-retry: 4.6.2 + uuid: 10.0.0 + yaml: 2.6.1 + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + optionalDependencies: + '@langchain/groq': 0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + axios: 1.7.4(debug@4.4.0) + transitivePeerDependencies: + - encoding + - openai + + langsmith@0.2.14(openai@4.77.0(zod@3.24.1)): + dependencies: + '@types/uuid': 10.0.0 + commander: 10.0.1 + p-queue: 6.6.2 + p-retry: 4.6.2 + semver: 7.6.3 + uuid: 10.0.0 + optionalDependencies: + openai: 4.77.0(zod@3.24.1) + + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + + lodash.includes@4.3.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isinteger@4.0.4: {} + + lodash.isnumber@3.0.3: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + + lodash.once@4.1.1: {} + + lodash@4.17.21: {} + + loupe@3.1.2: {} + + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + + lunr@2.3.9: {} + + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + math-intrinsics@1.1.0: {} + + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.1 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + mdurl@2.0.0: {} + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.1: {} + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + minimalistic-assert@1.0.1: {} + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + ms@2.1.3: {} + + mustache@4.2.0: {} + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + + node-domexception@1.0.0: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-gyp-build@4.8.4: + optional: true + + object-is@1.1.6: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + oniguruma-to-es@0.8.1: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 + + openai@4.77.0(zod@3.24.1): + dependencies: + '@types/node': 18.19.68 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + optionalDependencies: + zod: 3.24.1 + transitivePeerDependencies: + - encoding + + openapi-types@12.1.3: {} + + p-finally@1.0.0: {} + + p-queue@6.6.2: + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + + p-retry@4.6.2: + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + + pako@0.2.9: {} + + pako@2.1.0: {} + + pathval@2.0.0: {} + + peek-readable@4.1.0: {} + + playwright-core@1.49.1: {} + + playwright@1.49.1: + dependencies: + playwright-core: 1.49.1 + optionalDependencies: + fsevents: 2.3.2 + + possible-typed-array-names@1.0.0: {} + + property-information@6.5.0: {} + + proxy-from-env@1.1.0: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + punycode.js@2.3.1: {} + + punycode@2.3.1: {} + + querystringify@2.2.0: {} + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readable-web-to-node-stream@3.0.2: + dependencies: + readable-stream: 3.6.2 + + regenerator-runtime@0.14.1: {} + + regex-recursion@5.1.1: + dependencies: + regex: 5.1.1 + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@5.1.1: + dependencies: + regex-utilities: 2.3.0 + + requires-port@1.0.0: {} + + retry-axios@2.6.0(axios@1.7.4): + dependencies: + axios: 1.7.4(debug@4.4.0) + + retry@0.13.1: {} + + rpc-websockets@9.0.4: + dependencies: + '@swc/helpers': 0.5.15 + '@types/uuid': 8.3.4 + '@types/ws': 8.5.13 + buffer: 6.0.3 + eventemitter3: 5.0.1 + uuid: 8.3.2 + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + safe-buffer@5.2.1: {} + + semver@7.6.3: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.6 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + + shiki@1.24.4: + dependencies: + '@shikijs/core': 1.24.4 + '@shikijs/engine-javascript': 1.24.4 + '@shikijs/engine-oniguruma': 1.24.4 + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + '@types/hast': 3.0.4 + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + solana-agent-kit@1.3.0(@noble/hashes@1.6.1)(axios@1.7.4)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.24.1): + dependencies: + '@bonfida/spl-name-service': 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/groq': 0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@langchain/langgraph': 0.2.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@lightprotocol/compressed-token': 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-core': 1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.1) + '@metaplex-foundation/mpl-token-metadata': 3.3.0(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-bundle-defaults': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@onsol/tldparser': 0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@orca-so/whirlpools-sdk': 0.13.12(@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@pythnetwork/price-service-client': 1.9.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@raydium-io/raydium-sdk-v2': 0.1.95-alpha(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + bs58: 6.0.0 + chai: 5.1.2 + decimal.js: 10.4.3 + dotenv: 16.4.7 + form-data: 4.0.1 + langchain: 0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(openai@4.77.0(zod@3.24.1)) + openai: 4.77.0(zod@3.24.1) + typedoc: 0.26.11(typescript@5.6.3) + transitivePeerDependencies: + - '@langchain/anthropic' + - '@langchain/aws' + - '@langchain/cohere' + - '@langchain/google-genai' + - '@langchain/google-vertexai' + - '@langchain/mistralai' + - '@langchain/ollama' + - '@noble/hashes' + - axios + - borsh + - buffer + - bufferutil + - cheerio + - debug + - encoding + - fastestsmallesttextencoderdecoder + - handlebars + - peggy + - supports-color + - typeorm + - typescript + - utf-8-validate + - zod + + space-separated-tokens@2.0.2: {} + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-bom@3.0.0: {} + + strtok3@6.3.0: + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 4.1.0 + + superstruct@0.15.5: {} + + superstruct@2.0.2: {} + + text-encoding-utf-8@1.0.2: {} + + through@2.3.8: {} + + tiny-inflate@1.0.3: {} + + tiny-invariant@1.3.3: {} + + toformat@2.0.0: {} + + token-types@4.2.1: + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + + toml@3.0.0: {} + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@0.0.3: {} + + trim-lines@3.0.1: {} + + ts-log@2.2.7: {} + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + tweetnacl@1.0.3: {} + + typedoc@0.26.11(typescript@5.6.3): + dependencies: + lunr: 2.3.9 + markdown-it: 14.1.0 + minimatch: 9.0.5 + shiki: 1.24.4 + typescript: 5.6.3 + yaml: 2.6.1 + + typescript@5.6.3: {} + + uc.micro@2.1.0: {} + + undici-types@5.26.5: {} + + unicode-trie@2.0.0: + dependencies: + pako: 0.2.9 + tiny-inflate: 1.0.3 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + universalify@0.2.0: {} + + universalify@2.0.1: {} + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + utf-8-validate@5.0.10: + dependencies: + node-gyp-build: 4.8.4 + optional: true + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.0.10 + is-typed-array: 1.1.15 + which-typed-array: 1.1.18 + + uuid@10.0.0: {} + + uuid@8.3.2: {} + + uuid@9.0.1: {} + + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + + web-streams-polyfill@3.3.3: {} + + web-streams-polyfill@4.0.0-beta.3: {} + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-typed-array@1.1.18: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 + for-each: 0.3.3 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + yaml@2.6.1: {} + + zod-to-json-schema@3.24.1(zod@3.24.1): + dependencies: + zod: 3.24.1 + + zod@3.24.1: {} + + zwitch@2.0.4: {} diff --git a/examples/agent-kit-langgraph/utils/solanaAgent.ts b/examples/agent-kit-langgraph/utils/solanaAgent.ts index eccdd76..f4c1c8c 100644 --- a/examples/agent-kit-langgraph/utils/solanaAgent.ts +++ b/examples/agent-kit-langgraph/utils/solanaAgent.ts @@ -1,4 +1,4 @@ -import { SolanaAgentKit } from "../../../src/agent"; +import { SolanaAgentKit } from "solana-agent-kit"; export const agentKit = new SolanaAgentKit( process.env.SOLANA_PRIVATE_KEY!, From ab9259d4e20c969b022b42b8e6c7e029ba3a04f5 Mon Sep 17 00:00:00 2001 From: Deepak Date: Fri, 27 Dec 2024 15:12:27 +0530 Subject: [PATCH 10/23] added pnpm --- examples/agent-kit-langgraph/.env.example | 4 + examples/agent-kit-langgraph/.gitignore | 11 ++ examples/agent-kit-langgraph/package.json | 12 +- examples/agent-kit-langgraph/pnpm-lock.yaml | 139 +++++++++++++++++- .../src/agents/generalAgent.ts | 32 ++++ .../agent-kit-langgraph/{ => src}/index.ts | 0 .../{ => src}/utils/model.ts | 0 .../{ => src}/utils/route.ts | 0 .../{ => src}/utils/solanaAgent.ts | 0 .../{ => src}/utils/state.ts | 0 examples/agent-kit-langgraph/tsconfig.json | 12 ++ 11 files changed, 206 insertions(+), 4 deletions(-) create mode 100644 examples/agent-kit-langgraph/.env.example create mode 100644 examples/agent-kit-langgraph/.gitignore create mode 100644 examples/agent-kit-langgraph/src/agents/generalAgent.ts rename examples/agent-kit-langgraph/{ => src}/index.ts (100%) rename examples/agent-kit-langgraph/{ => src}/utils/model.ts (100%) rename examples/agent-kit-langgraph/{ => src}/utils/route.ts (100%) rename examples/agent-kit-langgraph/{ => src}/utils/solanaAgent.ts (100%) rename examples/agent-kit-langgraph/{ => src}/utils/state.ts (100%) create mode 100644 examples/agent-kit-langgraph/tsconfig.json diff --git a/examples/agent-kit-langgraph/.env.example b/examples/agent-kit-langgraph/.env.example new file mode 100644 index 0000000..42663ec --- /dev/null +++ b/examples/agent-kit-langgraph/.env.example @@ -0,0 +1,4 @@ +OPENAI_API_KEY= +RPC_URL= +SOLANA_PRIVATE_KEY= +TAVILY_API_KEY= #Optional: for search functionality diff --git a/examples/agent-kit-langgraph/.gitignore b/examples/agent-kit-langgraph/.gitignore new file mode 100644 index 0000000..fc14cf2 --- /dev/null +++ b/examples/agent-kit-langgraph/.gitignore @@ -0,0 +1,11 @@ +# Dependencies +node_modules/ +package-lock.json + +# Environment variables +.env +.env.local + +# Build output +dist/ +build/ \ No newline at end of file diff --git a/examples/agent-kit-langgraph/package.json b/examples/agent-kit-langgraph/package.json index 6e9d770..b88b54b 100644 --- a/examples/agent-kit-langgraph/package.json +++ b/examples/agent-kit-langgraph/package.json @@ -3,8 +3,10 @@ "version": "1.0.0", "description": "", "main": "index.js", + "type": "module", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "dev": "node --loader ts-node/esm" }, "keywords": [], "author": "", @@ -15,5 +17,13 @@ "@langchain/langgraph": "^0.2.36", "dotenv": "^16.4.7", "solana-agent-kit": "^1.3.0" + }, + "devDependencies": { + "ts-node": "^10.9.2", + "typescript": "^5.0.0" + }, + "ts-node": { + "esm": true, + "experimentalSpecifierResolution": "node" } } diff --git a/examples/agent-kit-langgraph/pnpm-lock.yaml b/examples/agent-kit-langgraph/pnpm-lock.yaml index 3618a84..65fa0b7 100644 --- a/examples/agent-kit-langgraph/pnpm-lock.yaml +++ b/examples/agent-kit-langgraph/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@langchain/community': specifier: ^0.3.20 - version: 0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + version: 0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@langchain/core': specifier: ^0.3.26 version: 0.3.26(openai@4.77.0(zod@3.24.1)) @@ -23,6 +23,13 @@ importers: solana-agent-kit: specifier: ^1.3.0 version: 1.3.0(@noble/hashes@1.6.1)(axios@1.7.4)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.24.1) + devDependencies: + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@18.19.68)(typescript@5.6.3) + typescript: + specifier: ^5.0.0 + version: 5.6.3 packages: @@ -68,6 +75,10 @@ packages: peerDependencies: '@solana/web3.js': ^1.68.0 + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + '@emnapi/runtime@1.3.1': resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} @@ -189,6 +200,16 @@ packages: cpu: [x64] os: [win32] + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@langchain/community@0.3.20': resolution: {integrity: sha512-5XmguFWVrfYJ8s9kHPAmC1bTGfdVOKqzWVCoTolSXMVMDaVn+LVvCJxEedO01kU1y2AS4pUl5MDI9wssKS1Ehg==} engines: {node: '>=18'} @@ -948,6 +969,18 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -1010,6 +1043,15 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + agentkeepalive@4.5.0: resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} engines: {node: '>= 8.0.0'} @@ -1021,6 +1063,9 @@ packages: ansicolors@0.3.2: resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1183,6 +1228,9 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + cross-fetch@3.2.0: resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} @@ -1247,6 +1295,10 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -1588,6 +1640,9 @@ packages: lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + markdown-it@14.1.0: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true @@ -1877,6 +1932,20 @@ packages: ts-log@2.2.7: resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + tsconfig-paths@4.2.0: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} @@ -1956,6 +2025,9 @@ packages: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} @@ -2009,6 +2081,10 @@ packages: engines: {node: '>= 14'} hasBin: true + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + zod-to-json-schema@3.24.1: resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} peerDependencies: @@ -2122,6 +2198,10 @@ snapshots: bn.js: 5.2.1 buffer-layout: 1.2.2 + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + '@emnapi/runtime@1.3.1': dependencies: tslib: 2.8.1 @@ -2222,7 +2302,16 @@ snapshots: '@img/sharp-win32-x64@0.33.5': optional: true - '@langchain/community@0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@langchain/community@0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: '@browserbasehq/stagehand': 1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1) '@ibm-cloud/watsonx-ai': 1.3.0 @@ -2244,7 +2333,7 @@ snapshots: jsonwebtoken: 9.0.2 lodash: 4.17.21 playwright: 1.49.1 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - '@langchain/anthropic' - '@langchain/aws' @@ -2898,6 +2987,14 @@ snapshots: '@tokenizer/token@0.3.0': {} + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + '@types/connect@3.4.38': dependencies: '@types/node': 18.19.68 @@ -2960,6 +3057,12 @@ snapshots: dependencies: event-target-shim: 5.0.1 + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.0 + + acorn@8.14.0: {} + agentkeepalive@4.5.0: dependencies: humanize-ms: 1.2.1 @@ -2968,6 +3071,8 @@ snapshots: ansicolors@0.3.2: {} + arg@4.1.3: {} + argparse@2.0.1: {} assert@2.1.0: @@ -3132,6 +3237,8 @@ snapshots: commander@2.20.3: {} + create-require@1.1.1: {} + cross-fetch@3.2.0: dependencies: node-fetch: 2.7.0 @@ -3180,6 +3287,8 @@ snapshots: dependencies: dequal: 2.0.3 + diff@4.0.2: {} + dot-case@3.0.4: dependencies: no-case: 3.0.4 @@ -3539,6 +3648,8 @@ snapshots: lunr@2.3.9: {} + make-error@1.3.6: {} + markdown-it@14.1.0: dependencies: argparse: 2.0.1 @@ -3909,6 +4020,24 @@ snapshots: ts-log@2.2.7: {} + ts-node@10.9.2(@types/node@18.19.68)(typescript@5.6.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.19.68 + acorn: 8.14.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.6.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + tsconfig-paths@4.2.0: dependencies: json5: 2.2.3 @@ -3992,6 +4121,8 @@ snapshots: uuid@9.0.1: {} + v8-compile-cache-lib@3.0.1: {} + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.3 @@ -4034,6 +4165,8 @@ snapshots: yaml@2.6.1: {} + yn@3.1.1: {} + zod-to-json-schema@3.24.1(zod@3.24.1): dependencies: zod: 3.24.1 diff --git a/examples/agent-kit-langgraph/src/agents/generalAgent.ts b/examples/agent-kit-langgraph/src/agents/generalAgent.ts new file mode 100644 index 0000000..da9e1fa --- /dev/null +++ b/examples/agent-kit-langgraph/src/agents/generalAgent.ts @@ -0,0 +1,32 @@ +import { createReactAgent } from "@langchain/langgraph/prebuilt"; +import { gpt4o } from "../utils/model.js"; +import { solanaAgentState } from "../utils/state.js"; +import { TavilySearchResults } from "@langchain/community/tools/tavily_search"; +import { HumanMessage } from "@langchain/core/messages"; + +// Initialize tools array +const searchTools = []; + +// Only add Tavily search if API key is available +if (process.env.TAVILY_API_KEY) { + searchTools.push(new TavilySearchResults()); +} + +export const generalAgent = createReactAgent({ + llm: gpt4o, + tools: searchTools, +}); + +export const generalistNode = async (state: typeof solanaAgentState.State) => { + const { messages } = state; + + const result = await generalAgent.invoke({ messages }); + + return { messages: [...result.messages] }; +}; + +const messages = [new HumanMessage("What is the best way to buy SOL?")]; + +const result = await generalAgent.invoke({ messages }); + +console.log(result.messages); diff --git a/examples/agent-kit-langgraph/index.ts b/examples/agent-kit-langgraph/src/index.ts similarity index 100% rename from examples/agent-kit-langgraph/index.ts rename to examples/agent-kit-langgraph/src/index.ts diff --git a/examples/agent-kit-langgraph/utils/model.ts b/examples/agent-kit-langgraph/src/utils/model.ts similarity index 100% rename from examples/agent-kit-langgraph/utils/model.ts rename to examples/agent-kit-langgraph/src/utils/model.ts diff --git a/examples/agent-kit-langgraph/utils/route.ts b/examples/agent-kit-langgraph/src/utils/route.ts similarity index 100% rename from examples/agent-kit-langgraph/utils/route.ts rename to examples/agent-kit-langgraph/src/utils/route.ts diff --git a/examples/agent-kit-langgraph/utils/solanaAgent.ts b/examples/agent-kit-langgraph/src/utils/solanaAgent.ts similarity index 100% rename from examples/agent-kit-langgraph/utils/solanaAgent.ts rename to examples/agent-kit-langgraph/src/utils/solanaAgent.ts diff --git a/examples/agent-kit-langgraph/utils/state.ts b/examples/agent-kit-langgraph/src/utils/state.ts similarity index 100% rename from examples/agent-kit-langgraph/utils/state.ts rename to examples/agent-kit-langgraph/src/utils/state.ts diff --git a/examples/agent-kit-langgraph/tsconfig.json b/examples/agent-kit-langgraph/tsconfig.json new file mode 100644 index 0000000..da29480 --- /dev/null +++ b/examples/agent-kit-langgraph/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "es2022", + "module": "es2022", + "moduleResolution": "node", + "esModuleInterop": true, + "strict": true, + "outDir": "./dist" + }, + "include": ["src/**/*"], + "exclude": ["node_modules"] + } \ No newline at end of file From bf28aa3f66b5cf573ac941768acb5ea0a44a9e1f Mon Sep 17 00:00:00 2001 From: Arpit Singh Bhatia <84636859+The-x-35@users.noreply.github.com> Date: Fri, 27 Dec 2024 15:32:31 +0530 Subject: [PATCH 11/23] implemented a simple next js repo to run agent kit --- examples/nextjs-starter-repo/.env.example | 3 + examples/nextjs-starter-repo/.gitignore | 41 + examples/nextjs-starter-repo/README.md | 36 + examples/nextjs-starter-repo/next.config.ts | 7 + examples/nextjs-starter-repo/package.json | 27 + examples/nextjs-starter-repo/pnpm-lock.yaml | 5466 +++++++++++++++++ .../nextjs-starter-repo/postcss.config.mjs | 8 + examples/nextjs-starter-repo/public/file.svg | 1 + examples/nextjs-starter-repo/public/globe.svg | 1 + examples/nextjs-starter-repo/public/next.svg | 1 + .../nextjs-starter-repo/public/vercel.svg | 1 + .../nextjs-starter-repo/public/window.svg | 1 + .../src/app/api/bot/route.ts | 116 + .../nextjs-starter-repo/src/app/favicon.ico | Bin 0 -> 25931 bytes .../nextjs-starter-repo/src/app/globals.css | 21 + .../nextjs-starter-repo/src/app/layout.tsx | 34 + examples/nextjs-starter-repo/src/app/page.tsx | 100 + .../nextjs-starter-repo/tailwind.config.ts | 18 + examples/nextjs-starter-repo/tsconfig.json | 27 + 19 files changed, 5909 insertions(+) create mode 100644 examples/nextjs-starter-repo/.env.example create mode 100644 examples/nextjs-starter-repo/.gitignore create mode 100644 examples/nextjs-starter-repo/README.md create mode 100644 examples/nextjs-starter-repo/next.config.ts create mode 100644 examples/nextjs-starter-repo/package.json create mode 100644 examples/nextjs-starter-repo/pnpm-lock.yaml create mode 100644 examples/nextjs-starter-repo/postcss.config.mjs create mode 100644 examples/nextjs-starter-repo/public/file.svg create mode 100644 examples/nextjs-starter-repo/public/globe.svg create mode 100644 examples/nextjs-starter-repo/public/next.svg create mode 100644 examples/nextjs-starter-repo/public/vercel.svg create mode 100644 examples/nextjs-starter-repo/public/window.svg create mode 100644 examples/nextjs-starter-repo/src/app/api/bot/route.ts create mode 100644 examples/nextjs-starter-repo/src/app/favicon.ico create mode 100644 examples/nextjs-starter-repo/src/app/globals.css create mode 100644 examples/nextjs-starter-repo/src/app/layout.tsx create mode 100644 examples/nextjs-starter-repo/src/app/page.tsx create mode 100644 examples/nextjs-starter-repo/tailwind.config.ts create mode 100644 examples/nextjs-starter-repo/tsconfig.json diff --git a/examples/nextjs-starter-repo/.env.example b/examples/nextjs-starter-repo/.env.example new file mode 100644 index 0000000..1f3564b --- /dev/null +++ b/examples/nextjs-starter-repo/.env.example @@ -0,0 +1,3 @@ +OPENAI_API_KEY= +RPC_URL= +SOLANA_PRIVATE_KEY= diff --git a/examples/nextjs-starter-repo/.gitignore b/examples/nextjs-starter-repo/.gitignore new file mode 100644 index 0000000..e72b4d6 --- /dev/null +++ b/examples/nextjs-starter-repo/.gitignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/nextjs-starter-repo/README.md b/examples/nextjs-starter-repo/README.md new file mode 100644 index 0000000..e215bc4 --- /dev/null +++ b/examples/nextjs-starter-repo/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/examples/nextjs-starter-repo/next.config.ts b/examples/nextjs-starter-repo/next.config.ts new file mode 100644 index 0000000..e9ffa30 --- /dev/null +++ b/examples/nextjs-starter-repo/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + /* config options here */ +}; + +export default nextConfig; diff --git a/examples/nextjs-starter-repo/package.json b/examples/nextjs-starter-repo/package.json new file mode 100644 index 0000000..fb38a54 --- /dev/null +++ b/examples/nextjs-starter-repo/package.json @@ -0,0 +1,27 @@ +{ + "name": "nextjs-starter-repo", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "next": "15.1.3", + "node-polyfill-webpack-plugin": "^4.1.0", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "solana-agent-kit": "^1.3.0" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "typescript": "^5", + "webpack": "^5.97.1" + } +} diff --git a/examples/nextjs-starter-repo/pnpm-lock.yaml b/examples/nextjs-starter-repo/pnpm-lock.yaml new file mode 100644 index 0000000..95af2a8 --- /dev/null +++ b/examples/nextjs-starter-repo/pnpm-lock.yaml @@ -0,0 +1,5466 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + next: + specifier: 15.1.3 + version: 15.1.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + node-polyfill-webpack-plugin: + specifier: ^4.1.0 + version: 4.1.0(webpack@5.97.1) + react: + specifier: ^19.0.0 + version: 19.0.0 + react-dom: + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) + solana-agent-kit: + specifier: ^1.3.0 + version: 1.3.0(@noble/hashes@1.6.1)(axios@1.7.9)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)(zod@3.24.1) + devDependencies: + '@types/node': + specifier: ^20 + version: 20.17.10 + '@types/react': + specifier: ^19 + version: 19.0.2 + '@types/react-dom': + specifier: ^19 + version: 19.0.2(@types/react@19.0.2) + postcss: + specifier: ^8 + version: 8.4.49 + tailwindcss: + specifier: ^3.4.1 + version: 3.4.17 + typescript: + specifier: ^5 + version: 5.7.2 + webpack: + specifier: ^5.97.1 + version: 5.97.1 + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + + '@bonfida/sns-records@0.0.1': + resolution: {integrity: sha512-i28w9+BMFufhhpmLQCNx1CKKXTsEn+5RT18VFpPqdGO3sqaYlnUWC1m3wDpOvlzGk498dljgRpRo5wmcsnuEMg==} + peerDependencies: + '@solana/web3.js': ^1.87.3 + + '@bonfida/spl-name-service@3.0.7': + resolution: {integrity: sha512-okOLXhy+fQoyQ/sZgMleO5RrIZfTkWEoHMxWgUqg6RP/MTBlrKxlhKC6ymKn4UUe0C5s3Nb8A+3Ams7vX0nMDg==} + peerDependencies: + '@solana/web3.js': ^1.87.3 + + '@cfworker/json-schema@4.0.3': + resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} + + '@coral-xyz/anchor@0.29.0': + resolution: {integrity: sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==} + engines: {node: '>=11'} + + '@coral-xyz/borsh@0.29.0': + resolution: {integrity: sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==} + engines: {node: '>=10'} + peerDependencies: + '@solana/web3.js': ^1.68.0 + + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + + '@ethersproject/bytes@5.7.0': + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + + '@ethersproject/logger@5.7.0': + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + + '@ethersproject/sha2@5.7.0': + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@langchain/core@0.3.26': + resolution: {integrity: sha512-6RUQHEp8wv+JwtYIIEBYBzbLlcAQZFc7EDOgAM0ukExjh9HiXoJzoWpgMRRCrr/koIbtwXPJUqBprZK1I1CXHQ==} + engines: {node: '>=18'} + + '@langchain/groq@0.1.2': + resolution: {integrity: sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + + '@langchain/langgraph-checkpoint@0.0.13': + resolution: {integrity: sha512-amdmBcNT8a9xP2VwcEWxqArng4gtRDcnVyVI4DsQIo1Aaz8e8+hH17zSwrUF3pt1pIYztngIfYnBOim31mtKMg==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.31 <0.4.0' + + '@langchain/langgraph-sdk@0.0.32': + resolution: {integrity: sha512-KQyM9kLO7T6AxwNrceajH7JOybP3pYpvUPnhiI2rrVndI1WyZUJ1eVC1e722BVRAPi6o+WcoTT4uMSZVinPOtA==} + + '@langchain/langgraph@0.2.36': + resolution: {integrity: sha512-zxk7ZCVxP0/Ut9785EiXCS7BE7sXd8cu943mcZUF2aNFUaQRTBbbiKpNdR3nb1+xO/B+HVktrJT2VFdkAywnng==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.36 <0.3.0 || >=0.3.9 < 0.4.0' + + '@langchain/openai@0.3.16': + resolution: {integrity: sha512-Om9HRlTeI0Ou6D4pfxbWHop4WGfkCdV/7v1W/+Jr7NSf0BNoA9jk5GqGms8ZtOYSGgPvizDu3i0TrM3B4cN4NA==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.26 <0.4.0' + + '@langchain/textsplitters@0.1.0': + resolution: {integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + + '@lightprotocol/compressed-token@0.17.1': + resolution: {integrity: sha512-493KCmZGw1BcHVRJaeRm8EEs+L7gX8dwY7JG13w2pfgOMtZXZ7Wxt261jFJxQJzRLTrUSlrbRJOmfW1+S1Y8SQ==} + peerDependencies: + '@lightprotocol/stateless.js': 0.17.1 + + '@lightprotocol/stateless.js@0.17.1': + resolution: {integrity: sha512-EjId1n33A6dBwpce33Wsa/fs/CDKtMtRrkxbApH0alXrnEXmbW6QhIViXOrKYXjZ4uJQM1xsBtsKe0vqJ4nbtQ==} + + '@metaplex-foundation/beet-solana@0.4.1': + resolution: {integrity: sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==} + + '@metaplex-foundation/beet@0.7.2': + resolution: {integrity: sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==} + + '@metaplex-foundation/mpl-core@1.1.1': + resolution: {integrity: sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA==} + peerDependencies: + '@metaplex-foundation/umi': '>=0.8.2 < 1' + '@noble/hashes': ^1.3.1 + + '@metaplex-foundation/mpl-token-metadata@3.3.0': + resolution: {integrity: sha512-t5vO8Wr3ZZZPGrVrGNcosX5FMkwQSgBiVMQMRNDG2De7voYFJmIibD5jdG05EoQ4Y5kZVEiwhYaO+wJB3aO5AA==} + peerDependencies: + '@metaplex-foundation/umi': '>= 0.8.2 < 1' + + '@metaplex-foundation/mpl-toolbox@0.9.4': + resolution: {integrity: sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ==} + peerDependencies: + '@metaplex-foundation/umi': '>= 0.8.2 < 1' + + '@metaplex-foundation/umi-bundle-defaults@0.9.2': + resolution: {integrity: sha512-kV3tfvgvRjVP1p9OFOtH+ibOtN9omVJSwKr0We4/9r45e5LTj+32su0V/rixZUkG1EZzzOYBsxhtIE0kIw/Hrw==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-downloader-http@0.9.2': + resolution: {integrity: sha512-tzPT9hBwenzTzAQg07rmsrqZfgguAXELbcJrsYMoASp5VqWFXYIP00g94KET6XLjWUXH4P1J2zoa6hGennPXHA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-eddsa-web3js@0.9.2': + resolution: {integrity: sha512-hhPCxXbYIp4BC4z9gK78sXpWLkNSrfv4ndhF5ruAkdIp7GcRVYKj0QnOUO6lGYGiIkNlw20yoTwOe1CT//OfTQ==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-http-fetch@0.9.2': + resolution: {integrity: sha512-YCZuBu24T9ZzEDe4+w12LEZm/fO9pkyViZufGgASC5NX93814Lvf6Ssjn/hZzjfA7CvZbvLFbmujc6CV3Q/m9Q==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-options@0.8.9': + resolution: {integrity: sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A==} + + '@metaplex-foundation/umi-program-repository@0.9.2': + resolution: {integrity: sha512-g3+FPqXEmYsBa8eETtUE2gb2Oe3mqac0z3/Ur1TvAg5TtIy3mzRzOy/nza+sgzejnfcxcVg835rmpBaxpBnjDA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-public-keys@0.8.9': + resolution: {integrity: sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q==} + + '@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2': + resolution: {integrity: sha512-YRwVf6xH0jPBAUgMhEPi+UbjioAeqTXmjsN2TnmQCPAmHbrHrMRj0rlWYwFLWAgkmoxazYrXP9lqOFRrfOGAEA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-rpc-web3js@0.9.2': + resolution: {integrity: sha512-MqcsBz8B4wGl6jxsf2Jo/rAEpYReU9VCSR15QSjhvADHMmdFxCIZCCAgE+gDE2Vuanfl437VhOcP3g5Uw8C16Q==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-serializer-data-view@0.9.2': + resolution: {integrity: sha512-5vGptadJxUxvUcyrwFZxXlEc6Q7AYySBesizCtrBFUY8w8PnF2vzmS45CP1MLySEATNH6T9mD4Rs0tLb87iQyA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-serializers-core@0.8.9': + resolution: {integrity: sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w==} + + '@metaplex-foundation/umi-serializers-encodings@0.8.9': + resolution: {integrity: sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q==} + + '@metaplex-foundation/umi-serializers-numbers@0.8.9': + resolution: {integrity: sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg==} + + '@metaplex-foundation/umi-serializers@0.9.0': + resolution: {integrity: sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg==} + + '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2': + resolution: {integrity: sha512-fR1Kf21uylMFd1Smkltmj4jTNxhqSWf416owsJ+T+cvJi2VCOcOwq/3UFzOrpz78fA0RhsajKYKj0HYsRnQI1g==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-web3js-adapters@0.9.2': + resolution: {integrity: sha512-RQqUTtHYY9fmEMnq7s3Hiv/81flGaoI0ZVVoafnFVaQLnxU6QBKxtboRZHk43XtD9CiFh5f9izrMJX7iK7KlOA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi@0.9.2': + resolution: {integrity: sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw==} + + '@msgpack/msgpack@3.0.0-beta2': + resolution: {integrity: sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==} + engines: {node: '>= 14'} + + '@next/env@15.1.3': + resolution: {integrity: sha512-Q1tXwQCGWyA3ehMph3VO+E6xFPHDKdHFYosadt0F78EObYxPio0S09H9UGYznDe6Wc8eLKLG89GqcFJJDiK5xw==} + + '@next/swc-darwin-arm64@15.1.3': + resolution: {integrity: sha512-aZtmIh8jU89DZahXQt1La0f2EMPt/i7W+rG1sLtYJERsP7GRnNFghsciFpQcKHcGh4dUiyTB5C1X3Dde/Gw8gg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@15.1.3': + resolution: {integrity: sha512-aw8901rjkVBK5mbq5oV32IqkJg+CQa6aULNlN8zyCWSsePzEG3kpDkAFkkTOh3eJ0p95KbkLyWBzslQKamXsLA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@15.1.3': + resolution: {integrity: sha512-YbdaYjyHa4fPK4GR4k2XgXV0p8vbU1SZh7vv6El4bl9N+ZSiMfbmqCuCuNU1Z4ebJMumafaz6UCC2zaJCsdzjw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@15.1.3': + resolution: {integrity: sha512-qgH/aRj2xcr4BouwKG3XdqNu33SDadqbkqB6KaZZkozar857upxKakbRllpqZgWl/NDeSCBYPmUAZPBHZpbA0w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@15.1.3': + resolution: {integrity: sha512-uzafnTFwZCPN499fNVnS2xFME8WLC9y7PLRs/yqz5lz1X/ySoxfaK2Hbz74zYUdEg+iDZPd8KlsWaw9HKkLEVw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@15.1.3': + resolution: {integrity: sha512-el6GUFi4SiDYnMTTlJJFMU+GHvw0UIFnffP1qhurrN1qJV3BqaSRUjkDUgVV44T6zpw1Lc6u+yn0puDKHs+Sbw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@15.1.3': + resolution: {integrity: sha512-6RxKjvnvVMM89giYGI1qye9ODsBQpHSHVo8vqA8xGhmRPZHDQUE4jcDbhBwK0GnFMqBnu+XMg3nYukNkmLOLWw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@15.1.3': + resolution: {integrity: sha512-VId/f5blObG7IodwC5Grf+aYP0O8Saz1/aeU3YcWqNdIUAmFQY3VEPKPaIzfv32F/clvanOb2K2BR5DtDs6XyQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@noble/curves@1.7.0': + resolution: {integrity: sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.6.0': + resolution: {integrity: sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.6.1': + resolution: {integrity: sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@onsol/tldparser@0.6.7': + resolution: {integrity: sha512-QwkRDLyC514pxeplCCXZ2kTiRcJSeUrpp+9o2XqLbePy/qzZGGG8I0UbXUKuWVD/bUL1zAm21+D+Eu30OKwcQg==} + engines: {node: '>=14'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + bn.js: ^5.2.1 + borsh: ^0.7.0 + buffer: 6.0.1 + + '@orca-so/common-sdk@0.6.4': + resolution: {integrity: sha512-iOiC6exTA9t2CEOaUPoWlNP3soN/1yZFjoz1mSf7NvOqo/PJZeIdWpB7BRXwU0mGGatjxU4SFgMGQ8NrSx+ONw==} + peerDependencies: + '@solana/spl-token': ^0.4.1 + '@solana/web3.js': ^1.90.0 + decimal.js: ^10.4.3 + + '@orca-so/whirlpools-sdk@0.13.12': + resolution: {integrity: sha512-+LOqGTe0DYUsYwemltOU4WQIviqoICQlIcAmmEX/WnBh6wntpcLDcXkPV6dBHW7NA2/J8WEVAZ50biLJb4subg==} + peerDependencies: + '@coral-xyz/anchor': ~0.29.0 + '@orca-so/common-sdk': 0.6.4 + '@solana/spl-token': ^0.4.8 + '@solana/web3.js': ^1.90.0 + decimal.js: ^10.4.3 + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pythnetwork/price-service-client@1.9.0': + resolution: {integrity: sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==} + deprecated: This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead. + + '@pythnetwork/price-service-sdk@1.8.0': + resolution: {integrity: sha512-tFZ1thj3Zja06DzPIX2dEWSi7kIfIyqreoywvw5NQ3Z1pl5OJHQGMEhxt6Li3UCGSp2ooYZS9wl8/8XfrfrNSA==} + + '@raydium-io/raydium-sdk-v2@0.1.95-alpha': + resolution: {integrity: sha512-+u7yxo/R1JDysTCzOuAlh90ioBe2DlM2Hbcz/tFsxP/YzmnYQzShvNjcmc0361a4zJhmlrEJfpFXW0J3kkX5vA==} + + '@scure/base@1.2.1': + resolution: {integrity: sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==} + + '@shikijs/core@1.24.4': + resolution: {integrity: sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==} + + '@shikijs/engine-javascript@1.24.4': + resolution: {integrity: sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==} + + '@shikijs/engine-oniguruma@1.24.4': + resolution: {integrity: sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==} + + '@shikijs/types@1.24.4': + resolution: {integrity: sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==} + + '@shikijs/vscode-textmate@9.3.1': + resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} + + '@solana/buffer-layout-utils@0.2.0': + resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==} + engines: {node: '>= 10'} + + '@solana/buffer-layout@4.0.1': + resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} + engines: {node: '>=5.10'} + + '@solana/codecs-core@2.0.0-preview.2': + resolution: {integrity: sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg==} + + '@solana/codecs-core@2.0.0-preview.4': + resolution: {integrity: sha512-A0VVuDDA5kNKZUinOqHxJQK32aKTucaVbvn31YenGzHX1gPqq+SOnFwgaEY6pq4XEopSmaK16w938ZQS8IvCnw==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-core@2.0.0-rc.1': + resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-data-structures@2.0.0-preview.2': + resolution: {integrity: sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg==} + + '@solana/codecs-data-structures@2.0.0-preview.4': + resolution: {integrity: sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-data-structures@2.0.0-rc.1': + resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-numbers@2.0.0-preview.2': + resolution: {integrity: sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw==} + + '@solana/codecs-numbers@2.0.0-preview.4': + resolution: {integrity: sha512-Q061rLtMadsO7uxpguT+Z7G4UHnjQ6moVIxAQxR58nLxDPCC7MB1Pk106/Z7NDhDLHTcd18uO6DZ7ajHZEn2XQ==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-numbers@2.0.0-rc.1': + resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-strings@2.0.0-preview.2': + resolution: {integrity: sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g==} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + + '@solana/codecs-strings@2.0.0-preview.4': + resolution: {integrity: sha512-YDbsQePRWm+xnrfS64losSGRg8Wb76cjK1K6qfR8LPmdwIC3787x9uW5/E4icl/k+9nwgbIRXZ65lpF+ucZUnw==} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5' + + '@solana/codecs-strings@2.0.0-rc.1': + resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5' + + '@solana/codecs@2.0.0-preview.2': + resolution: {integrity: sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA==} + + '@solana/codecs@2.0.0-preview.4': + resolution: {integrity: sha512-gLMupqI4i+G4uPi2SGF/Tc1aXcviZF2ybC81x7Q/fARamNSgNOCUUoSCg9nWu1Gid6+UhA7LH80sWI8XjKaRog==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs@2.0.0-rc.1': + resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==} + peerDependencies: + typescript: '>=5' + + '@solana/errors@2.0.0-preview.2': + resolution: {integrity: sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA==} + hasBin: true + + '@solana/errors@2.0.0-preview.4': + resolution: {integrity: sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA==} + hasBin: true + peerDependencies: + typescript: '>=5' + + '@solana/errors@2.0.0-rc.1': + resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==} + hasBin: true + peerDependencies: + typescript: '>=5' + + '@solana/options@2.0.0-preview.2': + resolution: {integrity: sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w==} + + '@solana/options@2.0.0-preview.4': + resolution: {integrity: sha512-tv2O/Frxql/wSe3jbzi5nVicIWIus/BftH+5ZR+r9r3FO0/htEllZS5Q9XdbmSboHu+St87584JXeDx3xm4jaA==} + peerDependencies: + typescript: '>=5' + + '@solana/options@2.0.0-rc.1': + resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==} + peerDependencies: + typescript: '>=5' + + '@solana/spl-token-group@0.0.4': + resolution: {integrity: sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.91.6 + + '@solana/spl-token-group@0.0.5': + resolution: {integrity: sha512-CLJnWEcdoUBpQJfx9WEbX3h6nTdNiUzswfFdkABUik7HVwSNA98u5AYvBVK2H93d9PGMOHAak2lHW9xr+zAJGQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.94.0 + + '@solana/spl-token-group@0.0.7': + resolution: {integrity: sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + + '@solana/spl-token-metadata@0.1.6': + resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + + '@solana/spl-token@0.4.6': + resolution: {integrity: sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.91.6 + + '@solana/spl-token@0.4.8': + resolution: {integrity: sha512-RO0JD9vPRi4LsAbMUdNbDJ5/cv2z11MGhtAvFeRzT4+hAGE/FUzRi0tkkWtuCfSIU3twC6CtmAihRp/+XXjWsA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.94.0 + + '@solana/spl-token@0.4.9': + resolution: {integrity: sha512-g3wbj4F4gq82YQlwqhPB0gHFXfgsC6UmyGMxtSLf/BozT/oKd59465DbnlUK8L8EcimKMavxsVAMoLcEdeCicg==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + + '@solana/spl-type-length-value@0.1.0': + resolution: {integrity: sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA==} + engines: {node: '>=16'} + + '@solana/web3.js@1.95.3': + resolution: {integrity: sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==} + + '@solana/web3.js@1.98.0': + resolution: {integrity: sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA==} + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/node-fetch@2.6.12': + resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@18.19.68': + resolution: {integrity: sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==} + + '@types/node@20.17.10': + resolution: {integrity: sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==} + + '@types/react-dom@19.0.2': + resolution: {integrity: sha512-c1s+7TKFaDRRxr1TxccIX2u7sfCnc3RxkVyBIUA2lCpyqCF+QoAwQ/CBg7bsMdVwP120HEH143VQezKtef5nCg==} + peerDependencies: + '@types/react': ^19.0.0 + + '@types/react@19.0.2': + resolution: {integrity: sha512-USU8ZI/xyKJwFTpjSVIrSeHBVAGagkHQKPNbxeWwql/vDmnTIBgx+TJnhFnj1NXgz8XfprU0egV2dROLGpsBEg==} + + '@types/retry@0.12.0': + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + + '@types/uuid@8.3.4': + resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} + + '@types/ws@7.4.7': + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + + '@types/ws@8.5.13': + resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} + + '@ungap/structured-clone@1.2.1': + resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} + + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + ansicolors@0.3.2: + resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + asn1.js@4.10.1: + resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} + + assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axios-retry@3.9.1: + resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} + + axios@1.7.9: + resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@3.0.10: + resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} + + base-x@4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + + base-x@5.0.0: + resolution: {integrity: sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + big.js@6.2.2: + resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} + + bigint-buffer@1.1.5: + resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} + engines: {node: '>= 10.0.0'} + + bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bn.js@4.12.1: + resolution: {integrity: sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + borsh@0.7.0: + resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} + + borsh@1.0.0: + resolution: {integrity: sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==} + + borsh@2.0.0: + resolution: {integrity: sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browser-resolve@2.0.0: + resolution: {integrity: sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==} + + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + + browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + + browserify-rsa@4.1.1: + resolution: {integrity: sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==} + engines: {node: '>= 0.10'} + + browserify-sign@4.2.3: + resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} + engines: {node: '>= 0.12'} + + browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + + browserslist@4.24.3: + resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + + bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + + bs58@6.0.0: + resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer-layout@1.2.2: + resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} + engines: {node: '>=4.5'} + + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bufferutil@4.0.8: + resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + engines: {node: '>=6.14.2'} + + builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + call-bind-apply-helpers@1.0.1: + resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.3: + resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + engines: {node: '>= 0.4'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001690: + resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} + engines: {node: '>=12'} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + cipher-base@1.0.6: + resolution: {integrity: sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==} + engines: {node: '>= 0.10'} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + + constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-fetch@3.2.0: + resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crypto-browserify@3.12.1: + resolution: {integrity: sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==} + engines: {node: '>= 0.10'} + + crypto-hash@1.3.0: + resolution: {integrity: sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==} + engines: {node: '>=8'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + + decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delay@5.0.0: + resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} + engines: {node: '>=10'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + domain-browser@4.22.0: + resolution: {integrity: sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==} + engines: {node: '>=10'} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + electron-to-chromium@1.5.76: + resolution: {integrity: sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==} + + elliptic@6.6.1: + resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} + + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + enhanced-resolve@5.18.0: + resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} + engines: {node: '>=10.13.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + + es6-promisify@5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + + eyes@0.1.8: + resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} + engines: {node: '> 0.1.90'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-stable-stringify@1.0.0: + resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} + + fast-uri@3.0.3: + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + + fastestsmallesttextencoderdecoder@1.0.22: + resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} + + fastq@1.18.0: + resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + form-data-encoder@1.7.2: + resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + + formdata-node@4.4.1: + resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} + engines: {node: '>= 12.20'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-intrinsic@1.2.6: + resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} + engines: {node: '>= 0.4'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemesplit@2.4.4: + resolution: {integrity: sha512-lKrpp1mk1NH26USxC/Asw4OHbhSQf5XfrWZ+CDv/dFVvd1j17kFgMotdJvOesmHkbFX9P9sBfpH8VogxOWLg8w==} + + groq-sdk@0.5.0: + resolution: {integrity: sha512-RVmhW7qZ+XZoy5fIuSdx/LGQJONpL8MHgZEW7dFwTdgkzStub2XQx6OKv28CHogijdwH41J+Npj/z2jBPu3vmw==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash-base@3.0.5: + resolution: {integrity: sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==} + engines: {node: '>= 0.10'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-to-html@9.0.4: + resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-retry-allowed@2.2.0: + resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} + engines: {node: '>=10'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isomorphic-timers-promises@1.0.1: + resolution: {integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==} + engines: {node: '>=10'} + + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jayson@4.1.3: + resolution: {integrity: sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ==} + engines: {node: '>=8'} + hasBin: true + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + js-base64@3.7.7: + resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + + js-tiktoken@1.0.16: + resolution: {integrity: sha512-nUVdO5k/M9llWpiaZlBBDdtmr6qWXwSD6fgaDu2zM8UP+OXxx9V37lFkI6w0/1IuaDx7WffZ37oYd9KvcWKElg==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + + langchain@0.3.8: + resolution: {integrity: sha512-EiAHFgBdThuXFmIx9j81wjdPItpRsw0Ck4r5dyhB74gyhehRGna/UK2CTqeKVnIUM/f4g4JbxUgAU4voXljDMw==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/anthropic': '*' + '@langchain/aws': '*' + '@langchain/cohere': '*' + '@langchain/core': '>=0.2.21 <0.4.0' + '@langchain/google-genai': '*' + '@langchain/google-vertexai': '*' + '@langchain/groq': '*' + '@langchain/mistralai': '*' + '@langchain/ollama': '*' + axios: '*' + cheerio: '*' + handlebars: ^4.7.8 + peggy: ^3.0.2 + typeorm: '*' + peerDependenciesMeta: + '@langchain/anthropic': + optional: true + '@langchain/aws': + optional: true + '@langchain/cohere': + optional: true + '@langchain/google-genai': + optional: true + '@langchain/google-vertexai': + optional: true + '@langchain/groq': + optional: true + '@langchain/mistralai': + optional: true + '@langchain/ollama': + optional: true + axios: + optional: true + cheerio: + optional: true + handlebars: + optional: true + peggy: + optional: true + typeorm: + optional: true + + langsmith@0.2.14: + resolution: {integrity: sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig==} + peerDependencies: + openai: '*' + peerDependenciesMeta: + openai: + optional: true + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.1: + resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next@15.1.3: + resolution: {integrity: sha512-5igmb8N8AEhWDYzogcJvtcRDU6n4cMGtBklxKD4biYv4LXN8+awc/bbQ2IM2NQHdVPgJ6XumYXfo3hBtErg1DA==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-gyp-build@4.8.4: + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} + hasBin: true + + node-polyfill-webpack-plugin@4.1.0: + resolution: {integrity: sha512-b4ei444EKkOagG/yFqojrD3QTYM5IOU1f8tn9o6uwrG4qL+brI7oVhjPVd0ZL2xy+Z6CP5bu9w8XTvlWgiXHcw==} + engines: {node: '>=14'} + peerDependencies: + webpack: '>=5' + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + node-stdlib-browser@1.3.0: + resolution: {integrity: sha512-g/koYzOr9Fb1Jc+tHUHlFd5gODjGn48tHexUK8q6iqOVriEgSnd3/1T7myBYc+0KBVze/7F7n65ec9rW6OD7xw==} + engines: {node: '>=10'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.3: + resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} + engines: {node: '>= 0.4'} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + oniguruma-to-es@0.8.1: + resolution: {integrity: sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==} + + openai@4.77.0: + resolution: {integrity: sha512-WWacavtns/7pCUkOWvQIjyOfcdr9X+9n9Vvb0zFeKVDAqwCMDHB+iSr24SVaBAhplvSG6JrRXFpcNM9gWhOGIw==} + hasBin: true + peerDependencies: + zod: ^3.23.8 + peerDependenciesMeta: + zod: + optional: true + + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + + os-browserify@0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + + p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + + parse-asn1@5.1.7: + resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} + engines: {node: '>= 0.10'} + + 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'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + + pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@5.0.0: + resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + engines: {node: '>=10'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs@6.13.1: + resolution: {integrity: sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==} + engines: {node: '>=0.6'} + + querystring-es3@0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + + react-dom@19.0.0: + resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} + peerDependencies: + react: ^19.0.0 + + react@19.0.0: + resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regex-recursion@5.1.1: + resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@5.1.1: + resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + + rpc-websockets@9.0.4: + resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.3.0: + resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} + engines: {node: '>= 10.13.0'} + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@1.24.4: + resolution: {integrity: sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + + solana-agent-kit@1.3.0: + resolution: {integrity: sha512-QEg37BgkjyL+8XoPoHizvCfUchxCXZYorm3IC2wGXsWnIi4XJkdNaMSwisuUFS0WzIHrvK3ublhYGxfRNvTGpg==} + engines: {node: '>=23.1.0', pnpm: '>=8.0.0'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + stream-http@3.2.0: + resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + superstruct@0.15.5: + resolution: {integrity: sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==} + + superstruct@2.0.2: + resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} + engines: {node: '>=14.0.0'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tailwindcss@3.4.17: + resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} + engines: {node: '>=14.0.0'} + hasBin: true + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + terser-webpack-plugin@5.3.11: + resolution: {integrity: sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.37.0: + resolution: {integrity: sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==} + engines: {node: '>=10'} + hasBin: true + + text-encoding-utf-8@1.0.2: + resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + timers-browserify@2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + + tiny-inflate@1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toformat@2.0.0: + resolution: {integrity: sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==} + + toml@3.0.0: + resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-log@2.2.7: + resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tty-browserify@0.0.1: + resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + type-fest@4.31.0: + resolution: {integrity: sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==} + engines: {node: '>=16'} + + typedoc@0.26.11: + resolution: {integrity: sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==} + engines: {node: '>= 18'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x + + typescript@5.7.2: + resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + unicode-trie@2.0.0: + resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} + engines: {node: '>= 0.4'} + + utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + + watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + engines: {node: '>=10.13.0'} + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + web-streams-polyfill@4.0.0-beta.3: + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} + engines: {node: '>= 14'} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack@5.97.1: + resolution: {integrity: sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-typed-array@1.1.18: + resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + yaml@2.6.1: + resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} + engines: {node: '>= 14'} + hasBin: true + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zod-to-json-schema@3.24.1: + resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} + peerDependencies: + zod: ^3.24.1 + + zod@3.24.1: + resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@bonfida/sns-records@0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + borsh: 1.0.0 + bs58: 5.0.0 + buffer: 6.0.3 + + '@bonfida/spl-name-service@3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + dependencies: + '@bonfida/sns-records': 0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@noble/curves': 1.7.0 + '@scure/base': 1.2.1 + '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + borsh: 2.0.0 + buffer: 6.0.3 + graphemesplit: 2.4.4 + ipaddr.js: 2.2.0 + punycode: 2.3.1 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@cfworker/json-schema@4.0.3': {} + + '@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@noble/hashes': 1.6.1 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + bs58: 4.0.1 + buffer-layout: 1.2.2 + camelcase: 6.3.0 + cross-fetch: 3.2.0 + crypto-hash: 1.3.0 + eventemitter3: 4.0.7 + pako: 2.1.0 + snake-case: 3.0.4 + superstruct: 0.15.5 + toml: 3.0.0 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@coral-xyz/borsh@0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + buffer-layout: 1.2.2 + + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@ethersproject/bytes@5.7.0': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/logger@5.7.0': {} + + '@ethersproject/sha2@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 + + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.3.1 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))': + dependencies: + '@cfworker/json-schema': 4.0.3 + ansi-styles: 5.2.0 + camelcase: 6.3.0 + decamelize: 1.2.0 + js-tiktoken: 1.0.16 + langsmith: 0.2.14(openai@4.77.0(zod@3.24.1)) + mustache: 4.2.0 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 10.0.0 + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + transitivePeerDependencies: + - openai + + '@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + groq-sdk: 0.5.0 + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + transitivePeerDependencies: + - encoding + + '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + uuid: 10.0.0 + + '@langchain/langgraph-sdk@0.0.32': + dependencies: + '@types/json-schema': 7.0.15 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 9.0.1 + + '@langchain/langgraph@0.2.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@langchain/langgraph-sdk': 0.0.32 + uuid: 10.0.0 + zod: 3.24.1 + + '@langchain/openai@0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + js-tiktoken: 1.0.16 + openai: 4.77.0(zod@3.24.1) + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + transitivePeerDependencies: + - encoding + + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + js-tiktoken: 1.0.16 + + '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@noble/hashes': 1.5.0 + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + superstruct: 2.0.2 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@metaplex-foundation/beet': 0.7.2 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bs58: 5.0.0 + debug: 4.4.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@metaplex-foundation/beet@0.7.2': + dependencies: + ansicolors: 0.3.2 + assert: 2.1.0 + bn.js: 5.2.1 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + '@metaplex-foundation/mpl-core@1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.1)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@msgpack/msgpack': 3.0.0-beta2 + '@noble/hashes': 1.6.1 + + '@metaplex-foundation/mpl-token-metadata@3.3.0(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/mpl-toolbox@0.9.4(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-bundle-defaults@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-downloader-http': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-eddsa-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-http-fetch': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-program-repository': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-rpc-chunk-get-accounts': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-rpc-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-serializer-data-view': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-transaction-factory-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - encoding + + '@metaplex-foundation/umi-downloader-http@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-eddsa-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@noble/curves': 1.7.0 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + '@metaplex-foundation/umi-http-fetch@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + '@metaplex-foundation/umi-options@0.8.9': {} + + '@metaplex-foundation/umi-program-repository@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-public-keys@0.8.9': + dependencies: + '@metaplex-foundation/umi-serializers-encodings': 0.8.9 + + '@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-rpc-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + '@metaplex-foundation/umi-serializer-data-view@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-serializers-core@0.8.9': {} + + '@metaplex-foundation/umi-serializers-encodings@0.8.9': + dependencies: + '@metaplex-foundation/umi-serializers-core': 0.8.9 + + '@metaplex-foundation/umi-serializers-numbers@0.8.9': + dependencies: + '@metaplex-foundation/umi-serializers-core': 0.8.9 + + '@metaplex-foundation/umi-serializers@0.9.0': + dependencies: + '@metaplex-foundation/umi-options': 0.8.9 + '@metaplex-foundation/umi-public-keys': 0.8.9 + '@metaplex-foundation/umi-serializers-core': 0.8.9 + '@metaplex-foundation/umi-serializers-encodings': 0.8.9 + '@metaplex-foundation/umi-serializers-numbers': 0.8.9 + + '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + '@metaplex-foundation/umi-web3js-adapters@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + + '@metaplex-foundation/umi@0.9.2': + dependencies: + '@metaplex-foundation/umi-options': 0.8.9 + '@metaplex-foundation/umi-public-keys': 0.8.9 + '@metaplex-foundation/umi-serializers': 0.9.0 + + '@msgpack/msgpack@3.0.0-beta2': {} + + '@next/env@15.1.3': {} + + '@next/swc-darwin-arm64@15.1.3': + optional: true + + '@next/swc-darwin-x64@15.1.3': + optional: true + + '@next/swc-linux-arm64-gnu@15.1.3': + optional: true + + '@next/swc-linux-arm64-musl@15.1.3': + optional: true + + '@next/swc-linux-x64-gnu@15.1.3': + optional: true + + '@next/swc-linux-x64-musl@15.1.3': + optional: true + + '@next/swc-win32-arm64-msvc@15.1.3': + optional: true + + '@next/swc-win32-x64-msvc@15.1.3': + optional: true + + '@noble/curves@1.7.0': + dependencies: + '@noble/hashes': 1.6.0 + + '@noble/hashes@1.5.0': {} + + '@noble/hashes@1.6.0': {} + + '@noble/hashes@1.6.1': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.18.0 + + '@onsol/tldparser@0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/sha2': 5.7.0 + '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + borsh: 2.0.0 + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': + dependencies: + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + decimal.js: 10.4.3 + tiny-invariant: 1.3.3 + + '@orca-so/whirlpools-sdk@0.13.12(@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': + dependencies: + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + decimal.js: 10.4.3 + tiny-invariant: 1.3.3 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pythnetwork/price-service-client@1.9.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@pythnetwork/price-service-sdk': 1.8.0 + '@types/ws': 8.5.13 + axios: 1.7.9 + axios-retry: 3.9.1 + isomorphic-ws: 4.0.1(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + ts-log: 2.2.7 + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + '@pythnetwork/price-service-sdk@1.8.0': + dependencies: + bn.js: 5.2.1 + + '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + axios: 1.7.9 + big.js: 6.2.2 + bn.js: 5.2.1 + dayjs: 1.11.13 + decimal.js-light: 2.5.1 + jsonfile: 6.1.0 + lodash: 4.17.21 + toformat: 2.0.0 + tsconfig-paths: 4.2.0 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@scure/base@1.2.1': {} + + '@shikijs/core@1.24.4': + dependencies: + '@shikijs/engine-javascript': 1.24.4 + '@shikijs/engine-oniguruma': 1.24.4 + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.4 + + '@shikijs/engine-javascript@1.24.4': + dependencies: + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + oniguruma-to-es: 0.8.1 + + '@shikijs/engine-oniguruma@1.24.4': + dependencies: + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + + '@shikijs/types@1.24.4': + dependencies: + '@shikijs/vscode-textmate': 9.3.1 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@9.3.1': {} + + '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bigint-buffer: 1.1.5 + bignumber.js: 9.1.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@solana/buffer-layout@4.0.1': + dependencies: + buffer: 6.0.3 + + '@solana/codecs-core@2.0.0-preview.2': + dependencies: + '@solana/errors': 2.0.0-preview.2 + + '@solana/codecs-core@2.0.0-preview.4(typescript@5.7.2)': + dependencies: + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + typescript: 5.7.2 + + '@solana/codecs-core@2.0.0-rc.1(typescript@5.7.2)': + dependencies: + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + typescript: 5.7.2 + + '@solana/codecs-data-structures@2.0.0-preview.2': + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/codecs-numbers': 2.0.0-preview.2 + '@solana/errors': 2.0.0-preview.2 + + '@solana/codecs-data-structures@2.0.0-preview.4(typescript@5.7.2)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + typescript: 5.7.2 + + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.7.2)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + typescript: 5.7.2 + + '@solana/codecs-numbers@2.0.0-preview.2': + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/errors': 2.0.0-preview.2 + + '@solana/codecs-numbers@2.0.0-preview.4(typescript@5.7.2)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + typescript: 5.7.2 + + '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.2)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + typescript: 5.7.2 + + '@solana/codecs-strings@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/codecs-numbers': 2.0.0-preview.2 + '@solana/errors': 2.0.0-preview.2 + fastestsmallesttextencoderdecoder: 1.0.22 + + '@solana/codecs-strings@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 5.7.2 + + '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 5.7.2 + + '@solana/codecs@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/codecs-data-structures': 2.0.0-preview.2 + '@solana/codecs-numbers': 2.0.0-preview.2 + '@solana/codecs-strings': 2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/options': 2.0.0-preview.2 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/options': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/errors@2.0.0-preview.2': + dependencies: + chalk: 5.4.1 + commander: 12.1.0 + + '@solana/errors@2.0.0-preview.4(typescript@5.7.2)': + dependencies: + chalk: 5.4.1 + commander: 12.1.0 + typescript: 5.7.2 + + '@solana/errors@2.0.0-rc.1(typescript@5.7.2)': + dependencies: + chalk: 5.4.1 + commander: 12.1.0 + typescript: 5.7.2 + + '@solana/options@2.0.0-preview.2': + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/codecs-numbers': 2.0.0-preview.2 + + '@solana/options@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/spl-token-group@0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)': + dependencies: + '@solana/codecs': 2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/spl-type-length-value': 0.1.0 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + dependencies: + '@solana/codecs': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-type-length-value': 0.1.0 + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@solana/spl-type-length-value@0.1.0': + dependencies: + buffer: 6.0.3 + + '@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@babel/runtime': 7.26.0 + '@noble/curves': 1.7.0 + '@noble/hashes': 1.6.1 + '@solana/buffer-layout': 4.0.1 + agentkeepalive: 4.5.0 + bigint-buffer: 1.1.5 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.1.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + node-fetch: 2.7.0 + rpc-websockets: 9.0.4 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@babel/runtime': 7.26.0 + '@noble/curves': 1.7.0 + '@noble/hashes': 1.6.1 + '@solana/buffer-layout': 4.0.1 + agentkeepalive: 4.5.0 + bigint-buffer: 1.1.5 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.1.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + node-fetch: 2.7.0 + rpc-websockets: 9.0.4 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 20.17.10 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.6 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.6': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/node-fetch@2.6.12': + dependencies: + '@types/node': 20.17.10 + form-data: 4.0.1 + + '@types/node@12.20.55': {} + + '@types/node@18.19.68': + dependencies: + undici-types: 5.26.5 + + '@types/node@20.17.10': + dependencies: + undici-types: 6.19.8 + + '@types/react-dom@19.0.2(@types/react@19.0.2)': + dependencies: + '@types/react': 19.0.2 + + '@types/react@19.0.2': + dependencies: + csstype: 3.1.3 + + '@types/retry@0.12.0': {} + + '@types/unist@3.0.3': {} + + '@types/uuid@10.0.0': {} + + '@types/uuid@8.3.4': {} + + '@types/ws@7.4.7': + dependencies: + '@types/node': 20.17.10 + + '@types/ws@8.5.13': + dependencies: + '@types/node': 20.17.10 + + '@ungap/structured-clone@1.2.1': {} + + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + + '@webassemblyjs/helper-api-error@1.13.2': {} + + '@webassemblyjs/helper-buffer@1.14.1': {} + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.13.2': {} + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + acorn@8.14.0: {} + + agentkeepalive@4.5.0: + dependencies: + humanize-ms: 1.2.1 + + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + ansicolors@0.3.2: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@5.0.2: {} + + argparse@2.0.1: {} + + asn1.js@4.10.1: + dependencies: + bn.js: 4.12.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + assert@2.1.0: + dependencies: + call-bind: 1.0.8 + is-nan: 1.3.2 + object-is: 1.1.6 + object.assign: 4.1.7 + util: 0.12.5 + + assertion-error@2.0.1: {} + + asynckit@0.4.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + axios-retry@3.9.1: + dependencies: + '@babel/runtime': 7.26.0 + is-retry-allowed: 2.2.0 + + axios@1.7.9: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + base-x@3.0.10: + dependencies: + safe-buffer: 5.2.1 + + base-x@4.0.0: {} + + base-x@5.0.0: {} + + base64-js@1.5.1: {} + + big.js@6.2.2: {} + + bigint-buffer@1.1.5: + dependencies: + bindings: 1.5.0 + + bignumber.js@9.1.2: {} + + binary-extensions@2.3.0: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + bn.js@4.12.1: {} + + bn.js@5.2.1: {} + + borsh@0.7.0: + dependencies: + bn.js: 5.2.1 + bs58: 4.0.1 + text-encoding-utf-8: 1.0.2 + + borsh@1.0.0: {} + + borsh@2.0.0: {} + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + brorand@1.1.0: {} + + browser-resolve@2.0.0: + dependencies: + resolve: 1.22.10 + + browserify-aes@1.2.0: + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.6 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-cipher@1.0.1: + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + + browserify-des@1.0.2: + dependencies: + cipher-base: 1.0.6 + des.js: 1.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-rsa@4.1.1: + dependencies: + bn.js: 5.2.1 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + browserify-sign@4.2.3: + dependencies: + bn.js: 5.2.1 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.6.1 + hash-base: 3.0.5 + inherits: 2.0.4 + parse-asn1: 5.1.7 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + + browserify-zlib@0.2.0: + dependencies: + pako: 1.0.11 + + browserslist@4.24.3: + dependencies: + caniuse-lite: 1.0.30001690 + electron-to-chromium: 1.5.76 + node-releases: 2.0.19 + update-browserslist-db: 1.1.1(browserslist@4.24.3) + + bs58@4.0.1: + dependencies: + base-x: 3.0.10 + + bs58@5.0.0: + dependencies: + base-x: 4.0.0 + + bs58@6.0.0: + dependencies: + base-x: 5.0.0 + + buffer-from@1.1.2: {} + + buffer-layout@1.2.2: {} + + buffer-xor@1.0.3: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bufferutil@4.0.8: + dependencies: + node-gyp-build: 4.8.4 + optional: true + + builtin-status-codes@3.0.0: {} + + busboy@1.6.0: + dependencies: + streamsearch: 1.1.0 + + call-bind-apply-helpers@1.0.1: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-define-property: 1.0.1 + get-intrinsic: 1.2.6 + set-function-length: 1.2.2 + + call-bound@1.0.3: + dependencies: + call-bind-apply-helpers: 1.0.1 + get-intrinsic: 1.2.6 + + camelcase-css@2.0.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001690: {} + + ccount@2.0.1: {} + + chai@5.1.2: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.2 + pathval: 2.0.0 + + chalk@5.4.1: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + check-error@2.1.1: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chrome-trace-event@1.0.4: {} + + cipher-base@1.0.6: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + client-only@0.0.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + optional: true + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + optional: true + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + comma-separated-tokens@2.0.3: {} + + commander@10.0.1: {} + + commander@12.1.0: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + console-browserify@1.2.0: {} + + constants-browserify@1.0.0: {} + + core-util-is@1.0.3: {} + + create-ecdh@4.0.4: + dependencies: + bn.js: 4.12.1 + elliptic: 6.6.1 + + create-hash@1.2.0: + dependencies: + cipher-base: 1.0.6 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.6 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + create-require@1.1.1: {} + + cross-fetch@3.2.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-browserify@3.12.1: + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.3 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + hash-base: 3.0.5 + inherits: 2.0.4 + pbkdf2: 3.1.2 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + + crypto-hash@1.3.0: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + dayjs@1.11.13: {} + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decamelize@1.2.0: {} + + decimal.js-light@2.5.1: {} + + decimal.js@10.4.3: {} + + deep-eql@5.0.2: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + delay@5.0.0: {} + + delayed-stream@1.0.0: {} + + dequal@2.0.3: {} + + des.js@1.1.0: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + detect-libc@2.0.3: + optional: true + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + didyoumean@1.2.2: {} + + diffie-hellman@5.0.3: + dependencies: + bn.js: 4.12.1 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + + dlv@1.1.3: {} + + domain-browser@4.22.0: {} + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + dotenv@16.4.7: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + eastasianwidth@0.2.0: {} + + electron-to-chromium@1.5.76: {} + + elliptic@6.6.1: + dependencies: + bn.js: 4.12.1 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + emoji-regex-xs@1.0.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + enhanced-resolve@5.18.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + entities@4.5.0: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.6.0: {} + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + + es6-promise@4.2.8: {} + + es6-promisify@5.0.0: + dependencies: + es6-promise: 4.2.8 + + escalade@3.2.0: {} + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + event-target-shim@5.0.1: {} + + eventemitter3@4.0.7: {} + + eventemitter3@5.0.1: {} + + events@3.3.0: {} + + evp_bytestokey@1.0.3: + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + + eyes@0.1.8: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-stable-stringify@1.0.0: {} + + fast-uri@3.0.3: {} + + fastestsmallesttextencoderdecoder@1.0.22: {} + + fastq@1.18.0: + dependencies: + reusify: 1.0.4 + + file-uri-to-path@1.0.0: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + follow-redirects@1.15.9: {} + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data-encoder@1.7.2: {} + + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + formdata-node@4.4.1: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 4.0.0-beta.3 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + get-intrinsic@1.2.6: + dependencies: + call-bind-apply-helpers: 1.0.1 + dunder-proto: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + function-bind: 1.1.2 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemesplit@2.4.4: + dependencies: + js-base64: 3.7.7 + unicode-trie: 2.0.0 + + groq-sdk@0.5.0: + dependencies: + '@types/node': 18.19.68 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + web-streams-polyfill: 3.3.3 + transitivePeerDependencies: + - encoding + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash-base@3.0.5: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-to-html@9.0.4: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hmac-drbg@1.0.1: + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + html-void-elements@3.0.0: {} + + https-browserify@1.0.0: {} + + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + + ieee754@1.2.1: {} + + inherits@2.0.4: {} + + ipaddr.js@2.2.0: {} + + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-arrayish@0.3.2: + optional: true + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-nan@1.3.2: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + + is-number@7.0.0: {} + + is-retry-allowed@2.2.0: {} + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.18 + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + isomorphic-timers-promises@1.0.1: {} + + isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): + dependencies: + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + isomorphic-ws@4.0.1(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)): + dependencies: + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jayson@4.1.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + '@types/connect': 3.4.38 + '@types/node': 12.20.55 + '@types/ws': 7.4.7 + JSONStream: 1.3.5 + commander: 2.20.3 + delay: 5.0.0 + es6-promisify: 5.0.0 + eyes: 0.1.8 + isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + json-stringify-safe: 5.0.1 + uuid: 8.3.2 + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + jest-worker@27.5.1: + dependencies: + '@types/node': 20.17.10 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jiti@1.21.7: {} + + js-base64@3.7.7: {} + + js-tiktoken@1.0.16: + dependencies: + base64-js: 1.5.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stringify-safe@5.0.1: {} + + json5@2.2.3: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + jsonpointer@5.0.1: {} + + langchain@0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.9)(openai@4.77.0(zod@3.24.1)): + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + js-tiktoken: 1.0.16 + js-yaml: 4.1.0 + jsonpointer: 5.0.1 + langsmith: 0.2.14(openai@4.77.0(zod@3.24.1)) + openapi-types: 12.1.3 + p-retry: 4.6.2 + uuid: 10.0.0 + yaml: 2.6.1 + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + optionalDependencies: + '@langchain/groq': 0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + axios: 1.7.9 + transitivePeerDependencies: + - encoding + - openai + + langsmith@0.2.14(openai@4.77.0(zod@3.24.1)): + dependencies: + '@types/uuid': 10.0.0 + commander: 10.0.1 + p-queue: 6.6.2 + p-retry: 4.6.2 + semver: 7.6.3 + uuid: 10.0.0 + optionalDependencies: + openai: 4.77.0(zod@3.24.1) + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + + loader-runner@4.3.0: {} + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash@4.17.21: {} + + loupe@3.1.2: {} + + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + + lru-cache@10.4.3: {} + + lunr@2.3.9: {} + + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + math-intrinsics@1.1.0: {} + + md5.js@1.3.5: + dependencies: + hash-base: 3.0.5 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.1 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + mdurl@2.0.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + miller-rabin@4.0.1: + dependencies: + bn.js: 4.12.1 + brorand: 1.1.0 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + ms@2.1.3: {} + + mustache@4.2.0: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.8: {} + + neo-async@2.6.2: {} + + next@15.1.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@next/env': 15.1.3 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.15 + busboy: 1.6.0 + caniuse-lite: 1.0.30001690 + postcss: 8.4.31 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + styled-jsx: 5.1.6(react@19.0.0) + optionalDependencies: + '@next/swc-darwin-arm64': 15.1.3 + '@next/swc-darwin-x64': 15.1.3 + '@next/swc-linux-arm64-gnu': 15.1.3 + '@next/swc-linux-arm64-musl': 15.1.3 + '@next/swc-linux-x64-gnu': 15.1.3 + '@next/swc-linux-x64-musl': 15.1.3 + '@next/swc-win32-arm64-msvc': 15.1.3 + '@next/swc-win32-x64-msvc': 15.1.3 + sharp: 0.33.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + + node-domexception@1.0.0: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-gyp-build@4.8.4: + optional: true + + node-polyfill-webpack-plugin@4.1.0(webpack@5.97.1): + dependencies: + node-stdlib-browser: 1.3.0 + type-fest: 4.31.0 + webpack: 5.97.1 + + node-releases@2.0.19: {} + + node-stdlib-browser@1.3.0: + dependencies: + assert: 2.1.0 + browser-resolve: 2.0.0 + browserify-zlib: 0.2.0 + buffer: 5.7.1 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + create-require: 1.1.1 + crypto-browserify: 3.12.1 + domain-browser: 4.22.0 + events: 3.3.0 + https-browserify: 1.0.0 + isomorphic-timers-promises: 1.0.1 + os-browserify: 0.3.0 + path-browserify: 1.0.1 + pkg-dir: 5.0.0 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 3.6.2 + stream-browserify: 3.0.0 + stream-http: 3.2.0 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.1 + url: 0.11.4 + util: 0.12.5 + vm-browserify: 1.1.2 + + normalize-path@3.0.0: {} + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + object-inspect@1.13.3: {} + + object-is@1.1.6: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + oniguruma-to-es@0.8.1: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 + + openai@4.77.0(zod@3.24.1): + dependencies: + '@types/node': 18.19.68 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + optionalDependencies: + zod: 3.24.1 + transitivePeerDependencies: + - encoding + + openapi-types@12.1.3: {} + + os-browserify@0.3.0: {} + + p-finally@1.0.0: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-queue@6.6.2: + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + + p-retry@4.6.2: + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + + package-json-from-dist@1.0.1: {} + + pako@0.2.9: {} + + pako@1.0.11: {} + + pako@2.1.0: {} + + parse-asn1@5.1.7: + dependencies: + asn1.js: 4.10.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + hash-base: 3.0.5 + pbkdf2: 3.1.2 + safe-buffer: 5.2.1 + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + pathval@2.0.0: {} + + pbkdf2@3.1.2: + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pify@2.3.0: {} + + pirates@4.0.6: {} + + pkg-dir@5.0.0: + dependencies: + find-up: 5.0.0 + + possible-typed-array-names@1.0.0: {} + + postcss-import@15.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-js@4.0.1(postcss@8.4.49): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.49 + + postcss-load-config@4.0.2(postcss@8.4.49): + dependencies: + lilconfig: 3.1.3 + yaml: 2.6.1 + optionalDependencies: + postcss: 8.4.49 + + postcss-nested@6.2.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.31: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.4.49: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + process-nextick-args@2.0.1: {} + + process@0.11.10: {} + + property-information@6.5.0: {} + + proxy-from-env@1.1.0: {} + + public-encrypt@4.0.3: + dependencies: + bn.js: 4.12.1 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + parse-asn1: 5.1.7 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + punycode.js@2.3.1: {} + + punycode@1.4.1: {} + + punycode@2.3.1: {} + + qs@6.13.1: + dependencies: + side-channel: 1.1.0 + + querystring-es3@0.2.1: {} + + queue-microtask@1.2.3: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + randomfill@1.0.4: + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + react-dom@19.0.0(react@19.0.0): + dependencies: + react: 19.0.0 + scheduler: 0.25.0 + + react@19.0.0: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + regenerator-runtime@0.14.1: {} + + regex-recursion@5.1.1: + dependencies: + regex: 5.1.1 + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@5.1.1: + dependencies: + regex-utilities: 2.3.0 + + require-from-string@2.0.2: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + retry@0.13.1: {} + + reusify@1.0.4: {} + + ripemd160@2.0.2: + dependencies: + hash-base: 3.0.5 + inherits: 2.0.4 + + rpc-websockets@9.0.4: + dependencies: + '@swc/helpers': 0.5.15 + '@types/uuid': 8.3.4 + '@types/ws': 8.5.13 + buffer: 6.0.3 + eventemitter3: 5.0.1 + uuid: 8.3.2 + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + scheduler@0.25.0: {} + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@4.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + + semver@7.6.3: {} + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.6 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + setimmediate@1.0.5: {} + + sha.js@2.4.11: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + optional: true + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@1.24.4: + dependencies: + '@shikijs/core': 1.24.4 + '@shikijs/engine-javascript': 1.24.4 + '@shikijs/engine-oniguruma': 1.24.4 + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + '@types/hast': 3.0.4 + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.3 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + object-inspect: 1.13.3 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + object-inspect: 1.13.3 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.3 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@4.1.0: {} + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + optional: true + + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + solana-agent-kit@1.3.0(@noble/hashes@1.6.1)(axios@1.7.9)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)(zod@3.24.1): + dependencies: + '@bonfida/spl-name-service': 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/groq': 0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@langchain/langgraph': 0.2.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@lightprotocol/compressed-token': 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-core': 1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.1) + '@metaplex-foundation/mpl-token-metadata': 3.3.0(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-bundle-defaults': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@onsol/tldparser': 0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@orca-so/whirlpools-sdk': 0.13.12(@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@pythnetwork/price-service-client': 1.9.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@raydium-io/raydium-sdk-v2': 0.1.95-alpha(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + bs58: 6.0.0 + chai: 5.1.2 + decimal.js: 10.4.3 + dotenv: 16.4.7 + form-data: 4.0.1 + langchain: 0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.9)(openai@4.77.0(zod@3.24.1)) + openai: 4.77.0(zod@3.24.1) + typedoc: 0.26.11(typescript@5.7.2) + transitivePeerDependencies: + - '@langchain/anthropic' + - '@langchain/aws' + - '@langchain/cohere' + - '@langchain/google-genai' + - '@langchain/google-vertexai' + - '@langchain/mistralai' + - '@langchain/ollama' + - '@noble/hashes' + - axios + - borsh + - buffer + - bufferutil + - cheerio + - debug + - encoding + - fastestsmallesttextencoderdecoder + - handlebars + - peggy + - supports-color + - typeorm + - typescript + - utf-8-validate + - zod + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + space-separated-tokens@2.0.2: {} + + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + + stream-http@3.2.0: + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + xtend: 4.0.2 + + streamsearch@1.1.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@3.0.0: {} + + styled-jsx@5.1.6(react@19.0.0): + dependencies: + client-only: 0.0.1 + react: 19.0.0 + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + superstruct@0.15.5: {} + + superstruct@2.0.2: {} + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tailwindcss@3.4.17: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.4.49 + postcss-import: 15.1.0(postcss@8.4.49) + postcss-js: 4.0.1(postcss@8.4.49) + postcss-load-config: 4.0.2(postcss@8.4.49) + postcss-nested: 6.2.0(postcss@8.4.49) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tapable@2.2.1: {} + + terser-webpack-plugin@5.3.11(webpack@5.97.1): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 4.3.0 + serialize-javascript: 6.0.2 + terser: 5.37.0 + webpack: 5.97.1 + + terser@5.37.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-encoding-utf-8@1.0.2: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + through@2.3.8: {} + + timers-browserify@2.0.12: + dependencies: + setimmediate: 1.0.5 + + tiny-inflate@1.0.3: {} + + tiny-invariant@1.3.3: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toformat@2.0.0: {} + + toml@3.0.0: {} + + tr46@0.0.3: {} + + trim-lines@3.0.1: {} + + ts-interface-checker@0.1.13: {} + + ts-log@2.2.7: {} + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + tty-browserify@0.0.1: {} + + tweetnacl@1.0.3: {} + + type-fest@4.31.0: {} + + typedoc@0.26.11(typescript@5.7.2): + dependencies: + lunr: 2.3.9 + markdown-it: 14.1.0 + minimatch: 9.0.5 + shiki: 1.24.4 + typescript: 5.7.2 + yaml: 2.6.1 + + typescript@5.7.2: {} + + uc.micro@2.1.0: {} + + undici-types@5.26.5: {} + + undici-types@6.19.8: {} + + unicode-trie@2.0.0: + dependencies: + pako: 0.2.9 + tiny-inflate: 1.0.3 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + universalify@2.0.1: {} + + update-browserslist-db@1.1.1(browserslist@4.24.3): + dependencies: + browserslist: 4.24.3 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url@0.11.4: + dependencies: + punycode: 1.4.1 + qs: 6.13.1 + + utf-8-validate@5.0.10: + dependencies: + node-gyp-build: 4.8.4 + optional: true + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.0.10 + is-typed-array: 1.1.15 + which-typed-array: 1.1.18 + + uuid@10.0.0: {} + + uuid@8.3.2: {} + + uuid@9.0.1: {} + + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + + vm-browserify@1.1.2: {} + + watchpack@2.4.2: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + web-streams-polyfill@3.3.3: {} + + web-streams-polyfill@4.0.0-beta.3: {} + + webidl-conversions@3.0.1: {} + + webpack-sources@3.2.3: {} + + webpack@5.97.1: + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.6 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.14.0 + browserslist: 4.24.3 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.0 + es-module-lexer: 1.6.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.11(webpack@5.97.1) + watchpack: 2.4.2 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-typed-array@1.1.18: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 + for-each: 0.3.3 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + xtend@4.0.2: {} + + yaml@2.6.1: {} + + yocto-queue@0.1.0: {} + + zod-to-json-schema@3.24.1(zod@3.24.1): + dependencies: + zod: 3.24.1 + + zod@3.24.1: {} + + zwitch@2.0.4: {} diff --git a/examples/nextjs-starter-repo/postcss.config.mjs b/examples/nextjs-starter-repo/postcss.config.mjs new file mode 100644 index 0000000..1a69fd2 --- /dev/null +++ b/examples/nextjs-starter-repo/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/examples/nextjs-starter-repo/public/file.svg b/examples/nextjs-starter-repo/public/file.svg new file mode 100644 index 0000000..004145c --- /dev/null +++ b/examples/nextjs-starter-repo/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/nextjs-starter-repo/public/globe.svg b/examples/nextjs-starter-repo/public/globe.svg new file mode 100644 index 0000000..567f17b --- /dev/null +++ b/examples/nextjs-starter-repo/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/nextjs-starter-repo/public/next.svg b/examples/nextjs-starter-repo/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/examples/nextjs-starter-repo/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/nextjs-starter-repo/public/vercel.svg b/examples/nextjs-starter-repo/public/vercel.svg new file mode 100644 index 0000000..7705396 --- /dev/null +++ b/examples/nextjs-starter-repo/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/nextjs-starter-repo/public/window.svg b/examples/nextjs-starter-repo/public/window.svg new file mode 100644 index 0000000..b2b2a44 --- /dev/null +++ b/examples/nextjs-starter-repo/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/nextjs-starter-repo/src/app/api/bot/route.ts b/examples/nextjs-starter-repo/src/app/api/bot/route.ts new file mode 100644 index 0000000..19e459b --- /dev/null +++ b/examples/nextjs-starter-repo/src/app/api/bot/route.ts @@ -0,0 +1,116 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; +import { HumanMessage } from "@langchain/core/messages"; +import { MemorySaver } from "@langchain/langgraph"; +import { createReactAgent } from "@langchain/langgraph/prebuilt"; +import { ChatOpenAI } from "@langchain/openai"; +import * as dotenv from "dotenv"; +import * as fs from "fs"; + +dotenv.config(); + +const WALLET_DATA_FILE = "wallet_data.txt"; + +function validateEnvironment(): void { + const missingVars: string[] = []; + const requiredVars = ["OPENAI_API_KEY", "RPC_URL", "SOLANA_PRIVATE_KEY"]; + + requiredVars.forEach((varName) => { + if (!process.env[varName]) { + missingVars.push(varName); + } + }); + + if (missingVars.length > 0) { + console.error("Error: Required environment variables are not set"); + missingVars.forEach((varName) => { + console.error(`${varName}=your_${varName.toLowerCase()}_here`); + }); + throw new Error("Missing required environment variables."); + } +} + +async function initializeAgent() { + try { + const llm = new ChatOpenAI({ + modelName: "gpt-4o-mini", + temperature: 0.7, + }); + + let walletDataStr: string | null = null; + + if (fs.existsSync(WALLET_DATA_FILE)) { + try { + walletDataStr = fs.readFileSync(WALLET_DATA_FILE, "utf8"); + } catch (error) { + console.error("Error reading wallet data:", error); + } + } + + const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + process.env.OPENAI_API_KEY!, + ); + + const tools = createSolanaTools(solanaAgent); + const memory = new MemorySaver(); + const config = { configurable: { thread_id: "Solana Agent Kit!" } }; + + const agent = createReactAgent({ + llm, + tools, + checkpointSaver: memory, + messageModifier: ` + You are a helpful agent that can interact onchain using the Solana Agent Kit. You are + empowered to interact onchain using your tools. If you ever need funds, you can request them from the + faucet. If not, you can provide your wallet details and request funds from the user. If there is a 5XX + (internal) HTTP error code, ask the user to try again later. If someone asks you to do something you + can't do with your currently available tools, you must say so, and encourage them to implement it + themselves using the Solana Agent Kit, recommend they go to https://www.solanaagentkit.xyz for more information. Be + concise and helpful with your responses. Refrain from restating your tools' descriptions unless it is explicitly requested. + `, + }); + + if (walletDataStr) { + fs.writeFileSync(WALLET_DATA_FILE, walletDataStr); + } + + return { agent, config }; + } catch (error) { + console.error("Failed to initialize agent:", error); + throw error; + } +} + +export async function POST(req: NextRequest) { + try { + validateEnvironment(); + + const { message } = await req.json(); + const { agent, config } = await initializeAgent(); + + const stream = await agent.stream( + { messages: [new HumanMessage(message)] }, + config + ); + + let responseContent = ""; + + for await (const chunk of stream) { + if ("agent" in chunk) { + responseContent += chunk.agent.messages[0].content; + } else if ("tools" in chunk) { + responseContent += chunk.tools.messages[0].content; + } + } + + return NextResponse.json({ reply: responseContent }, { status: 200 }); + } catch (error) { + console.error("Error:", error); + return NextResponse.json( + { error: "Failed to process the request." }, + { status: 500 } + ); + } +} diff --git a/examples/nextjs-starter-repo/src/app/favicon.ico b/examples/nextjs-starter-repo/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/examples/nextjs-starter-repo/src/app/globals.css b/examples/nextjs-starter-repo/src/app/globals.css new file mode 100644 index 0000000..6b717ad --- /dev/null +++ b/examples/nextjs-starter-repo/src/app/globals.css @@ -0,0 +1,21 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --background: #ffffff; + --foreground: #171717; +} + +@media (prefers-color-scheme: dark) { + :root { + --background: #0a0a0a; + --foreground: #ededed; + } +} + +body { + color: var(--foreground); + background: var(--background); + font-family: Arial, Helvetica, sans-serif; +} diff --git a/examples/nextjs-starter-repo/src/app/layout.tsx b/examples/nextjs-starter-repo/src/app/layout.tsx new file mode 100644 index 0000000..f7fa87e --- /dev/null +++ b/examples/nextjs-starter-repo/src/app/layout.tsx @@ -0,0 +1,34 @@ +import type { Metadata } from "next"; +import { Geist, Geist_Mono } from "next/font/google"; +import "./globals.css"; + +const geistSans = Geist({ + variable: "--font-geist-sans", + subsets: ["latin"], +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export const metadata: Metadata = { + title: "Create Next App", + description: "Generated by create next app", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + {children} + + + ); +} diff --git a/examples/nextjs-starter-repo/src/app/page.tsx b/examples/nextjs-starter-repo/src/app/page.tsx new file mode 100644 index 0000000..62f6cee --- /dev/null +++ b/examples/nextjs-starter-repo/src/app/page.tsx @@ -0,0 +1,100 @@ +"use client"; + +import { useState } from "react"; +import Image from "next/image"; + +export default function Home() { + const [messages, setMessages] = useState<{ text: string; isUser: boolean }[]>([]); + const [input, setInput] = useState(""); + + const fetchBotReply = async (message: string) => { + try { + const response = await fetch("/api/bot", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ message }), + }); + + if (response.ok) { + const data = await response.json(); + return data.reply; + } else { + console.error("Failed to fetch bot reply"); + return "Sorry, something went wrong."; + } + } catch (error) { + console.error("Error fetching bot reply:", error); + return "Sorry, something went wrong."; + } + }; + + const handleSendMessage = async () => { + if (input.trim()) { + const userMessage = input.trim(); + setMessages((prevMessages) => [ + ...prevMessages, + { text: userMessage, isUser: true }, + ]); + setInput(""); + + const botReply = await fetchBotReply(userMessage); + + setMessages((prevMessages) => [ + ...prevMessages, + { text: botReply, isUser: false }, + ]); + } + }; + + return ( +
+
+
+ Simple Chat Bot with + Next.js logo +
+
+
+ {messages.map((message, index) => ( +
+ {message.text} +
+ ))} +
+
+ setInput(e.target.value)} + onKeyDown={(e) => e.key === "Enter" && handleSendMessage()} + placeholder="Type your message..." + /> + +
+
+
+
+ ); +} diff --git a/examples/nextjs-starter-repo/tailwind.config.ts b/examples/nextjs-starter-repo/tailwind.config.ts new file mode 100644 index 0000000..109807b --- /dev/null +++ b/examples/nextjs-starter-repo/tailwind.config.ts @@ -0,0 +1,18 @@ +import type { Config } from "tailwindcss"; + +export default { + content: [ + "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", + "./src/components/**/*.{js,ts,jsx,tsx,mdx}", + "./src/app/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: { + colors: { + background: "var(--background)", + foreground: "var(--foreground)", + }, + }, + }, + plugins: [], +} satisfies Config; diff --git a/examples/nextjs-starter-repo/tsconfig.json b/examples/nextjs-starter-repo/tsconfig.json new file mode 100644 index 0000000..c133409 --- /dev/null +++ b/examples/nextjs-starter-repo/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} From 86e96023b7f0701703e4601d42a2106b91ce751b Mon Sep 17 00:00:00 2001 From: Arpit Singh Bhatia <84636859+The-x-35@users.noreply.github.com> Date: Fri, 27 Dec 2024 16:03:56 +0530 Subject: [PATCH 12/23] persistance agent: --- examples/nextjs-starter-repo/.gitignore | 41 - examples/nextjs-starter-repo/README.md | 36 - examples/nextjs-starter-repo/next.config.ts | 7 - examples/nextjs-starter-repo/package.json | 27 - .../nextjs-starter-repo/postcss.config.mjs | 8 - examples/nextjs-starter-repo/public/file.svg | 1 - examples/nextjs-starter-repo/public/globe.svg | 1 - examples/nextjs-starter-repo/public/next.svg | 1 - .../nextjs-starter-repo/public/vercel.svg | 1 - .../nextjs-starter-repo/public/window.svg | 1 - .../src/app/api/bot/route.ts | 116 - .../nextjs-starter-repo/src/app/favicon.ico | Bin 25931 -> 0 bytes .../nextjs-starter-repo/src/app/globals.css | 21 - .../nextjs-starter-repo/src/app/layout.tsx | 34 - examples/nextjs-starter-repo/src/app/page.tsx | 100 - .../nextjs-starter-repo/tailwind.config.ts | 18 - examples/nextjs-starter-repo/tsconfig.json | 27 - .../.env.example | 0 examples/persistance-agent/index.ts | 220 ++ examples/persistance-agent/package.json | 16 + .../pnpm-lock.yaml | 2809 ++--------------- 21 files changed, 455 insertions(+), 3030 deletions(-) delete mode 100644 examples/nextjs-starter-repo/.gitignore delete mode 100644 examples/nextjs-starter-repo/README.md delete mode 100644 examples/nextjs-starter-repo/next.config.ts delete mode 100644 examples/nextjs-starter-repo/package.json delete mode 100644 examples/nextjs-starter-repo/postcss.config.mjs delete mode 100644 examples/nextjs-starter-repo/public/file.svg delete mode 100644 examples/nextjs-starter-repo/public/globe.svg delete mode 100644 examples/nextjs-starter-repo/public/next.svg delete mode 100644 examples/nextjs-starter-repo/public/vercel.svg delete mode 100644 examples/nextjs-starter-repo/public/window.svg delete mode 100644 examples/nextjs-starter-repo/src/app/api/bot/route.ts delete mode 100644 examples/nextjs-starter-repo/src/app/favicon.ico delete mode 100644 examples/nextjs-starter-repo/src/app/globals.css delete mode 100644 examples/nextjs-starter-repo/src/app/layout.tsx delete mode 100644 examples/nextjs-starter-repo/src/app/page.tsx delete mode 100644 examples/nextjs-starter-repo/tailwind.config.ts delete mode 100644 examples/nextjs-starter-repo/tsconfig.json rename examples/{nextjs-starter-repo => persistance-agent}/.env.example (100%) create mode 100644 examples/persistance-agent/index.ts create mode 100644 examples/persistance-agent/package.json rename examples/{nextjs-starter-repo => persistance-agent}/pnpm-lock.yaml (55%) diff --git a/examples/nextjs-starter-repo/.gitignore b/examples/nextjs-starter-repo/.gitignore deleted file mode 100644 index e72b4d6..0000000 --- a/examples/nextjs-starter-repo/.gitignore +++ /dev/null @@ -1,41 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.* -.yarn/* -!.yarn/patches -!.yarn/plugins -!.yarn/releases -!.yarn/versions - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.pnpm-debug.log* - -# env files (can opt-in for committing if needed) -.env - -# vercel -.vercel - -# typescript -*.tsbuildinfo -next-env.d.ts diff --git a/examples/nextjs-starter-repo/README.md b/examples/nextjs-starter-repo/README.md deleted file mode 100644 index e215bc4..0000000 --- a/examples/nextjs-starter-repo/README.md +++ /dev/null @@ -1,36 +0,0 @@ -This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). - -## Getting Started - -First, run the development server: - -```bash -npm run dev -# or -yarn dev -# or -pnpm dev -# or -bun dev -``` - -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. - -This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. - -Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/examples/nextjs-starter-repo/next.config.ts b/examples/nextjs-starter-repo/next.config.ts deleted file mode 100644 index e9ffa30..0000000 --- a/examples/nextjs-starter-repo/next.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { NextConfig } from "next"; - -const nextConfig: NextConfig = { - /* config options here */ -}; - -export default nextConfig; diff --git a/examples/nextjs-starter-repo/package.json b/examples/nextjs-starter-repo/package.json deleted file mode 100644 index fb38a54..0000000 --- a/examples/nextjs-starter-repo/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "nextjs-starter-repo", - "version": "0.1.0", - "private": true, - "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "lint": "next lint" - }, - "dependencies": { - "next": "15.1.3", - "node-polyfill-webpack-plugin": "^4.1.0", - "react": "^19.0.0", - "react-dom": "^19.0.0", - "solana-agent-kit": "^1.3.0" - }, - "devDependencies": { - "@types/node": "^20", - "@types/react": "^19", - "@types/react-dom": "^19", - "postcss": "^8", - "tailwindcss": "^3.4.1", - "typescript": "^5", - "webpack": "^5.97.1" - } -} diff --git a/examples/nextjs-starter-repo/postcss.config.mjs b/examples/nextjs-starter-repo/postcss.config.mjs deleted file mode 100644 index 1a69fd2..0000000 --- a/examples/nextjs-starter-repo/postcss.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -/** @type {import('postcss-load-config').Config} */ -const config = { - plugins: { - tailwindcss: {}, - }, -}; - -export default config; diff --git a/examples/nextjs-starter-repo/public/file.svg b/examples/nextjs-starter-repo/public/file.svg deleted file mode 100644 index 004145c..0000000 --- a/examples/nextjs-starter-repo/public/file.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/nextjs-starter-repo/public/globe.svg b/examples/nextjs-starter-repo/public/globe.svg deleted file mode 100644 index 567f17b..0000000 --- a/examples/nextjs-starter-repo/public/globe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/nextjs-starter-repo/public/next.svg b/examples/nextjs-starter-repo/public/next.svg deleted file mode 100644 index 5174b28..0000000 --- a/examples/nextjs-starter-repo/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/nextjs-starter-repo/public/vercel.svg b/examples/nextjs-starter-repo/public/vercel.svg deleted file mode 100644 index 7705396..0000000 --- a/examples/nextjs-starter-repo/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/nextjs-starter-repo/public/window.svg b/examples/nextjs-starter-repo/public/window.svg deleted file mode 100644 index b2b2a44..0000000 --- a/examples/nextjs-starter-repo/public/window.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/nextjs-starter-repo/src/app/api/bot/route.ts b/examples/nextjs-starter-repo/src/app/api/bot/route.ts deleted file mode 100644 index 19e459b..0000000 --- a/examples/nextjs-starter-repo/src/app/api/bot/route.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server'; -import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; -import { HumanMessage } from "@langchain/core/messages"; -import { MemorySaver } from "@langchain/langgraph"; -import { createReactAgent } from "@langchain/langgraph/prebuilt"; -import { ChatOpenAI } from "@langchain/openai"; -import * as dotenv from "dotenv"; -import * as fs from "fs"; - -dotenv.config(); - -const WALLET_DATA_FILE = "wallet_data.txt"; - -function validateEnvironment(): void { - const missingVars: string[] = []; - const requiredVars = ["OPENAI_API_KEY", "RPC_URL", "SOLANA_PRIVATE_KEY"]; - - requiredVars.forEach((varName) => { - if (!process.env[varName]) { - missingVars.push(varName); - } - }); - - if (missingVars.length > 0) { - console.error("Error: Required environment variables are not set"); - missingVars.forEach((varName) => { - console.error(`${varName}=your_${varName.toLowerCase()}_here`); - }); - throw new Error("Missing required environment variables."); - } -} - -async function initializeAgent() { - try { - const llm = new ChatOpenAI({ - modelName: "gpt-4o-mini", - temperature: 0.7, - }); - - let walletDataStr: string | null = null; - - if (fs.existsSync(WALLET_DATA_FILE)) { - try { - walletDataStr = fs.readFileSync(WALLET_DATA_FILE, "utf8"); - } catch (error) { - console.error("Error reading wallet data:", error); - } - } - - const solanaAgent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - process.env.OPENAI_API_KEY!, - ); - - const tools = createSolanaTools(solanaAgent); - const memory = new MemorySaver(); - const config = { configurable: { thread_id: "Solana Agent Kit!" } }; - - const agent = createReactAgent({ - llm, - tools, - checkpointSaver: memory, - messageModifier: ` - You are a helpful agent that can interact onchain using the Solana Agent Kit. You are - empowered to interact onchain using your tools. If you ever need funds, you can request them from the - faucet. If not, you can provide your wallet details and request funds from the user. If there is a 5XX - (internal) HTTP error code, ask the user to try again later. If someone asks you to do something you - can't do with your currently available tools, you must say so, and encourage them to implement it - themselves using the Solana Agent Kit, recommend they go to https://www.solanaagentkit.xyz for more information. Be - concise and helpful with your responses. Refrain from restating your tools' descriptions unless it is explicitly requested. - `, - }); - - if (walletDataStr) { - fs.writeFileSync(WALLET_DATA_FILE, walletDataStr); - } - - return { agent, config }; - } catch (error) { - console.error("Failed to initialize agent:", error); - throw error; - } -} - -export async function POST(req: NextRequest) { - try { - validateEnvironment(); - - const { message } = await req.json(); - const { agent, config } = await initializeAgent(); - - const stream = await agent.stream( - { messages: [new HumanMessage(message)] }, - config - ); - - let responseContent = ""; - - for await (const chunk of stream) { - if ("agent" in chunk) { - responseContent += chunk.agent.messages[0].content; - } else if ("tools" in chunk) { - responseContent += chunk.tools.messages[0].content; - } - } - - return NextResponse.json({ reply: responseContent }, { status: 200 }); - } catch (error) { - console.error("Error:", error); - return NextResponse.json( - { error: "Failed to process the request." }, - { status: 500 } - ); - } -} diff --git a/examples/nextjs-starter-repo/src/app/favicon.ico b/examples/nextjs-starter-repo/src/app/favicon.ico deleted file mode 100644 index 718d6fea4835ec2d246af9800eddb7ffb276240c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25931 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 LrJugUA?W`A8`#=m diff --git a/examples/nextjs-starter-repo/src/app/globals.css b/examples/nextjs-starter-repo/src/app/globals.css deleted file mode 100644 index 6b717ad..0000000 --- a/examples/nextjs-starter-repo/src/app/globals.css +++ /dev/null @@ -1,21 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -:root { - --background: #ffffff; - --foreground: #171717; -} - -@media (prefers-color-scheme: dark) { - :root { - --background: #0a0a0a; - --foreground: #ededed; - } -} - -body { - color: var(--foreground); - background: var(--background); - font-family: Arial, Helvetica, sans-serif; -} diff --git a/examples/nextjs-starter-repo/src/app/layout.tsx b/examples/nextjs-starter-repo/src/app/layout.tsx deleted file mode 100644 index f7fa87e..0000000 --- a/examples/nextjs-starter-repo/src/app/layout.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import type { Metadata } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; -import "./globals.css"; - -const geistSans = Geist({ - variable: "--font-geist-sans", - subsets: ["latin"], -}); - -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", - subsets: ["latin"], -}); - -export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", -}; - -export default function RootLayout({ - children, -}: Readonly<{ - children: React.ReactNode; -}>) { - return ( - - - {children} - - - ); -} diff --git a/examples/nextjs-starter-repo/src/app/page.tsx b/examples/nextjs-starter-repo/src/app/page.tsx deleted file mode 100644 index 62f6cee..0000000 --- a/examples/nextjs-starter-repo/src/app/page.tsx +++ /dev/null @@ -1,100 +0,0 @@ -"use client"; - -import { useState } from "react"; -import Image from "next/image"; - -export default function Home() { - const [messages, setMessages] = useState<{ text: string; isUser: boolean }[]>([]); - const [input, setInput] = useState(""); - - const fetchBotReply = async (message: string) => { - try { - const response = await fetch("/api/bot", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ message }), - }); - - if (response.ok) { - const data = await response.json(); - return data.reply; - } else { - console.error("Failed to fetch bot reply"); - return "Sorry, something went wrong."; - } - } catch (error) { - console.error("Error fetching bot reply:", error); - return "Sorry, something went wrong."; - } - }; - - const handleSendMessage = async () => { - if (input.trim()) { - const userMessage = input.trim(); - setMessages((prevMessages) => [ - ...prevMessages, - { text: userMessage, isUser: true }, - ]); - setInput(""); - - const botReply = await fetchBotReply(userMessage); - - setMessages((prevMessages) => [ - ...prevMessages, - { text: botReply, isUser: false }, - ]); - } - }; - - return ( -
-
-
- Simple Chat Bot with - Next.js logo -
-
-
- {messages.map((message, index) => ( -
- {message.text} -
- ))} -
-
- setInput(e.target.value)} - onKeyDown={(e) => e.key === "Enter" && handleSendMessage()} - placeholder="Type your message..." - /> - -
-
-
-
- ); -} diff --git a/examples/nextjs-starter-repo/tailwind.config.ts b/examples/nextjs-starter-repo/tailwind.config.ts deleted file mode 100644 index 109807b..0000000 --- a/examples/nextjs-starter-repo/tailwind.config.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { Config } from "tailwindcss"; - -export default { - content: [ - "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", - "./src/components/**/*.{js,ts,jsx,tsx,mdx}", - "./src/app/**/*.{js,ts,jsx,tsx,mdx}", - ], - theme: { - extend: { - colors: { - background: "var(--background)", - foreground: "var(--foreground)", - }, - }, - }, - plugins: [], -} satisfies Config; diff --git a/examples/nextjs-starter-repo/tsconfig.json b/examples/nextjs-starter-repo/tsconfig.json deleted file mode 100644 index c133409..0000000 --- a/examples/nextjs-starter-repo/tsconfig.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2017", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": ["./src/*"] - } - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] -} diff --git a/examples/nextjs-starter-repo/.env.example b/examples/persistance-agent/.env.example similarity index 100% rename from examples/nextjs-starter-repo/.env.example rename to examples/persistance-agent/.env.example diff --git a/examples/persistance-agent/index.ts b/examples/persistance-agent/index.ts new file mode 100644 index 0000000..451bef7 --- /dev/null +++ b/examples/persistance-agent/index.ts @@ -0,0 +1,220 @@ +import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; +import { HumanMessage } from "@langchain/core/messages"; +import { createReactAgent } from "@langchain/langgraph/prebuilt"; +import { ChatOpenAI } from "@langchain/openai"; +import * as dotenv from "dotenv"; +import * as fs from "fs"; +import * as readline from "readline"; +import { PostgresSaver } from "@langchain/langgraph-checkpoint-postgres"; +dotenv.config(); + +const checkpointer = PostgresSaver.fromConnString( + "postgresql://user:password@localhost:5432/db" +); + +function validateEnvironment(): void { + const missingVars: string[] = []; + const requiredVars = ["OPENAI_API_KEY", "RPC_URL", "SOLANA_PRIVATE_KEY"]; + + requiredVars.forEach((varName) => { + if (!process.env[varName]) { + missingVars.push(varName); + } + }); + + if (missingVars.length > 0) { + console.error("Error: Required environment variables are not set"); + missingVars.forEach((varName) => { + console.error(`${varName}=your_${varName.toLowerCase()}_here`); + }); + process.exit(1); + } +} + +validateEnvironment(); + +const WALLET_DATA_FILE = "wallet_data.txt"; + +async function initializeAgent() { + try { + const llm = new ChatOpenAI({ + modelName: "gpt-4o-mini", + temperature: 0.7, + }); + + let walletDataStr: string | null = null; + + if (fs.existsSync(WALLET_DATA_FILE)) { + try { + walletDataStr = fs.readFileSync(WALLET_DATA_FILE, "utf8"); + } catch (error) { + console.error("Error reading wallet data:", error); + } + } + + const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL, + process.env.OPENAI_API_KEY!, + ); + + const tools = createSolanaTools(solanaAgent); + await checkpointer.setup(); + const config = { configurable: { thread_id: "Solana Agent Kit!" } }; + + const agent = createReactAgent({ + llm, + tools, + checkpointSaver: checkpointer, + messageModifier: ` + You are a helpful agent that can interact onchain using the Solana Agent Kit. You are + empowered to interact onchain using your tools. If you ever need funds, you can request them from the + faucet. If not, you can provide your wallet details and request funds from the user. If there is a 5XX + (internal) HTTP error code, ask the user to try again later. If someone asks you to do something you + can't do with your currently available tools, you must say so, and encourage them to implement it + themselves using the Solana Agent Kit, recommend they go to https://www.solanaagentkit.xyz for more information. Be + concise and helpful with your responses. Refrain from restating your tools' descriptions unless it is explicitly requested. + `, + }); + + if (walletDataStr) { + fs.writeFileSync(WALLET_DATA_FILE, walletDataStr); + } + + return { agent, config }; + } catch (error) { + console.error("Failed to initialize agent:", error); + throw error; + } +} + +async function runAutonomousMode(agent: any, config: any, interval = 10) { + console.log("Starting autonomous mode..."); + + while (true) { + try { + const thought = + "Be creative and do something interesting on the blockchain. " + + "Choose an action or set of actions and execute it that highlights your abilities."; + + const stream = await agent.stream( + { messages: [new HumanMessage(thought)] }, + config, + ); + + for await (const chunk of stream) { + if ("agent" in chunk) { + console.log(chunk.agent.messages[0].content); + } else if ("tools" in chunk) { + console.log(chunk.tools.messages[0].content); + } + console.log("-------------------"); + } + + await new Promise((resolve) => setTimeout(resolve, interval * 1000)); + } catch (error) { + if (error instanceof Error) { + console.error("Error:", error.message); + } + process.exit(1); + } + } +} + +async function runChatMode(agent: any, config: any) { + console.log("Starting chat mode... Type 'exit' to end."); + + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); + + const question = (prompt: string): Promise => + new Promise((resolve) => rl.question(prompt, resolve)); + + try { + while (true) { + const userInput = await question("\nPrompt: "); + + if (userInput.toLowerCase() === "exit") { + break; + } + + const stream = await agent.stream( + { messages: [new HumanMessage(userInput)] }, + config, + ); + + for await (const chunk of stream) { + if ("agent" in chunk) { + console.log(chunk.agent.messages[0].content); + } else if ("tools" in chunk) { + console.log(chunk.tools.messages[0].content); + } + console.log("-------------------"); + } + } + } catch (error) { + if (error instanceof Error) { + console.error("Error:", error.message); + } + process.exit(1); + } finally { + rl.close(); + } +} + +async function chooseMode(): Promise<"chat" | "auto"> { + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); + + const question = (prompt: string): Promise => + new Promise((resolve) => rl.question(prompt, resolve)); + + while (true) { + console.log("\nAvailable modes:"); + console.log("1. chat - Interactive chat mode"); + console.log("2. auto - Autonomous action mode"); + + const choice = (await question("\nChoose a mode (enter number or name): ")) + .toLowerCase() + .trim(); + + rl.close(); + + if (choice === "1" || choice === "chat") { + return "chat"; + } else if (choice === "2" || choice === "auto") { + return "auto"; + } + console.log("Invalid choice. Please try again."); + } +} + +async function main() { + try { + console.log("Starting Agent..."); + const { agent, config } = await initializeAgent(); + const mode = await chooseMode(); + + if (mode === "chat") { + await runChatMode(agent, config); + } else { + await runAutonomousMode(agent, config); + } + } catch (error) { + if (error instanceof Error) { + console.error("Error:", error.message); + } + process.exit(1); + } +} + +if (require.main === module) { + main().catch((error) => { + console.error("Fatal error:", error); + process.exit(1); + }); +} diff --git a/examples/persistance-agent/package.json b/examples/persistance-agent/package.json new file mode 100644 index 0000000..484591c --- /dev/null +++ b/examples/persistance-agent/package.json @@ -0,0 +1,16 @@ +{ + "name": "persistance-agent", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@langchain/langgraph-checkpoint-postgres": "^0.0.2", + "solana-agent-kit": "^1.3.0" + } +} diff --git a/examples/nextjs-starter-repo/pnpm-lock.yaml b/examples/persistance-agent/pnpm-lock.yaml similarity index 55% rename from examples/nextjs-starter-repo/pnpm-lock.yaml rename to examples/persistance-agent/pnpm-lock.yaml index 95af2a8..b0bff9f 100644 --- a/examples/nextjs-starter-repo/pnpm-lock.yaml +++ b/examples/persistance-agent/pnpm-lock.yaml @@ -8,50 +8,15 @@ importers: .: dependencies: - next: - specifier: 15.1.3 - version: 15.1.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - node-polyfill-webpack-plugin: - specifier: ^4.1.0 - version: 4.1.0(webpack@5.97.1) - react: - specifier: ^19.0.0 - version: 19.0.0 - react-dom: - specifier: ^19.0.0 - version: 19.0.0(react@19.0.0) + '@langchain/langgraph-checkpoint-postgres': + specifier: ^0.0.2 + version: 0.0.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))) solana-agent-kit: specifier: ^1.3.0 - version: 1.3.0(@noble/hashes@1.6.1)(axios@1.7.9)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)(zod@3.24.1) - devDependencies: - '@types/node': - specifier: ^20 - version: 20.17.10 - '@types/react': - specifier: ^19 - version: 19.0.2 - '@types/react-dom': - specifier: ^19 - version: 19.0.2(@types/react@19.0.2) - postcss: - specifier: ^8 - version: 8.4.49 - tailwindcss: - specifier: ^3.4.1 - version: 3.4.17 - typescript: - specifier: ^5 - version: 5.7.2 - webpack: - specifier: ^5.97.1 - version: 5.97.1 + version: 1.3.0(@noble/hashes@1.6.1)(axios@1.7.9)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.24.1) packages: - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - '@babel/runtime@7.26.0': resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} engines: {node: '>=6.9.0'} @@ -79,9 +44,6 @@ packages: peerDependencies: '@solana/web3.js': ^1.68.0 - '@emnapi/runtime@1.3.1': - resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} - '@ethersproject/bytes@5.7.0': resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} @@ -91,136 +53,6 @@ packages: '@ethersproject/sha2@5.7.0': resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} - '@img/sharp-darwin-arm64@0.33.5': - resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - - '@img/sharp-darwin-x64@0.33.5': - resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-darwin-arm64@1.0.4': - resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} - cpu: [arm64] - os: [darwin] - - '@img/sharp-libvips-darwin-x64@1.0.4': - resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-linux-arm64@1.0.4': - resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linux-arm@1.0.5': - resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} - cpu: [arm] - os: [linux] - - '@img/sharp-libvips-linux-s390x@1.0.4': - resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} - cpu: [s390x] - os: [linux] - - '@img/sharp-libvips-linux-x64@1.0.4': - resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} - cpu: [x64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': - resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-x64@1.0.4': - resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} - cpu: [x64] - os: [linux] - - '@img/sharp-linux-arm64@0.33.5': - resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - - '@img/sharp-linux-arm@0.33.5': - resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - - '@img/sharp-linux-s390x@0.33.5': - resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - - '@img/sharp-linux-x64@0.33.5': - resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - - '@img/sharp-linuxmusl-arm64@0.33.5': - resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - - '@img/sharp-linuxmusl-x64@0.33.5': - resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - - '@img/sharp-wasm32@0.33.5': - resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - - '@img/sharp-win32-ia32@0.33.5': - resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - - '@img/sharp-win32-x64@0.33.5': - resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@langchain/core@0.3.26': resolution: {integrity: sha512-6RUQHEp8wv+JwtYIIEBYBzbLlcAQZFc7EDOgAM0ukExjh9HiXoJzoWpgMRRCrr/koIbtwXPJUqBprZK1I1CXHQ==} engines: {node: '>=18'} @@ -231,6 +63,13 @@ packages: peerDependencies: '@langchain/core': '>=0.2.21 <0.4.0' + '@langchain/langgraph-checkpoint-postgres@0.0.2': + resolution: {integrity: sha512-st4qH1DZkYU6WGymG+TP2DEgxy8HH2EMq5Re51Z1sj11Ac4Q0VGJNlHjvGXR/QJjfmWpgBztvLYaMnUlNAybkg==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.31 <0.4.0' + '@langchain/langgraph-checkpoint': ~0.0.6 + '@langchain/langgraph-checkpoint@0.0.13': resolution: {integrity: sha512-amdmBcNT8a9xP2VwcEWxqArng4gtRDcnVyVI4DsQIo1Aaz8e8+hH17zSwrUF3pt1pIYztngIfYnBOim31mtKMg==} engines: {node: '>=18'} @@ -368,57 +207,6 @@ packages: resolution: {integrity: sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==} engines: {node: '>= 14'} - '@next/env@15.1.3': - resolution: {integrity: sha512-Q1tXwQCGWyA3ehMph3VO+E6xFPHDKdHFYosadt0F78EObYxPio0S09H9UGYznDe6Wc8eLKLG89GqcFJJDiK5xw==} - - '@next/swc-darwin-arm64@15.1.3': - resolution: {integrity: sha512-aZtmIh8jU89DZahXQt1La0f2EMPt/i7W+rG1sLtYJERsP7GRnNFghsciFpQcKHcGh4dUiyTB5C1X3Dde/Gw8gg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@next/swc-darwin-x64@15.1.3': - resolution: {integrity: sha512-aw8901rjkVBK5mbq5oV32IqkJg+CQa6aULNlN8zyCWSsePzEG3kpDkAFkkTOh3eJ0p95KbkLyWBzslQKamXsLA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@next/swc-linux-arm64-gnu@15.1.3': - resolution: {integrity: sha512-YbdaYjyHa4fPK4GR4k2XgXV0p8vbU1SZh7vv6El4bl9N+ZSiMfbmqCuCuNU1Z4ebJMumafaz6UCC2zaJCsdzjw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@next/swc-linux-arm64-musl@15.1.3': - resolution: {integrity: sha512-qgH/aRj2xcr4BouwKG3XdqNu33SDadqbkqB6KaZZkozar857upxKakbRllpqZgWl/NDeSCBYPmUAZPBHZpbA0w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@next/swc-linux-x64-gnu@15.1.3': - resolution: {integrity: sha512-uzafnTFwZCPN499fNVnS2xFME8WLC9y7PLRs/yqz5lz1X/ySoxfaK2Hbz74zYUdEg+iDZPd8KlsWaw9HKkLEVw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@next/swc-linux-x64-musl@15.1.3': - resolution: {integrity: sha512-el6GUFi4SiDYnMTTlJJFMU+GHvw0UIFnffP1qhurrN1qJV3BqaSRUjkDUgVV44T6zpw1Lc6u+yn0puDKHs+Sbw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@next/swc-win32-arm64-msvc@15.1.3': - resolution: {integrity: sha512-6RxKjvnvVMM89giYGI1qye9ODsBQpHSHVo8vqA8xGhmRPZHDQUE4jcDbhBwK0GnFMqBnu+XMg3nYukNkmLOLWw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@next/swc-win32-x64-msvc@15.1.3': - resolution: {integrity: sha512-VId/f5blObG7IodwC5Grf+aYP0O8Saz1/aeU3YcWqNdIUAmFQY3VEPKPaIzfv32F/clvanOb2K2BR5DtDs6XyQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - '@noble/curves@1.7.0': resolution: {integrity: sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==} engines: {node: ^14.21.3 || >=16} @@ -435,18 +223,6 @@ packages: resolution: {integrity: sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==} engines: {node: ^14.21.3 || >=16} - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - '@onsol/tldparser@0.6.7': resolution: {integrity: sha512-QwkRDLyC514pxeplCCXZ2kTiRcJSeUrpp+9o2XqLbePy/qzZGGG8I0UbXUKuWVD/bUL1zAm21+D+Eu30OKwcQg==} engines: {node: '>=14'} @@ -472,10 +248,6 @@ packages: '@solana/web3.js': ^1.90.0 decimal.js: ^10.4.3 - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - '@pythnetwork/price-service-client@1.9.0': resolution: {integrity: sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==} deprecated: This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead. @@ -662,24 +434,12 @@ packages: '@solana/web3.js@1.98.0': resolution: {integrity: sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA==} - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -698,16 +458,8 @@ packages: '@types/node@18.19.68': resolution: {integrity: sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==} - '@types/node@20.17.10': - resolution: {integrity: sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==} - - '@types/react-dom@19.0.2': - resolution: {integrity: sha512-c1s+7TKFaDRRxr1TxccIX2u7sfCnc3RxkVyBIUA2lCpyqCF+QoAwQ/CBg7bsMdVwP120HEH143VQezKtef5nCg==} - peerDependencies: - '@types/react': ^19.0.0 - - '@types/react@19.0.2': - resolution: {integrity: sha512-USU8ZI/xyKJwFTpjSVIrSeHBVAGagkHQKPNbxeWwql/vDmnTIBgx+TJnhFnj1NXgz8XfprU0egV2dROLGpsBEg==} + '@types/node@22.10.2': + resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} '@types/retry@0.12.0': resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} @@ -730,57 +482,6 @@ packages: '@ungap/structured-clone@1.2.1': resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} - '@webassemblyjs/ast@1.14.1': - resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} - - '@webassemblyjs/floating-point-hex-parser@1.13.2': - resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - - '@webassemblyjs/helper-api-error@1.13.2': - resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - - '@webassemblyjs/helper-buffer@1.14.1': - resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - - '@webassemblyjs/helper-numbers@1.13.2': - resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': - resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - - '@webassemblyjs/helper-wasm-section@1.14.1': - resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - - '@webassemblyjs/ieee754@1.13.2': - resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} - - '@webassemblyjs/leb128@1.13.2': - resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} - - '@webassemblyjs/utf8@1.13.2': - resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} - - '@webassemblyjs/wasm-edit@1.14.1': - resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} - - '@webassemblyjs/wasm-gen@1.14.1': - resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} - - '@webassemblyjs/wasm-opt@1.14.1': - resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - - '@webassemblyjs/wasm-parser@1.14.1': - resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - - '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -789,78 +490,20 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - agentkeepalive@4.5.0: resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} engines: {node: '>= 8.0.0'} - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - ansicolors@0.3.2: resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - asn1.js@4.10.1: - resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} - assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} @@ -906,16 +549,9 @@ packages: bignumber.js@9.1.2: resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - bn.js@4.12.1: - resolution: {integrity: sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==} - bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} @@ -931,41 +567,6 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - - browser-resolve@2.0.0: - resolution: {integrity: sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==} - - browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - - browserify-cipher@1.0.1: - resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} - - browserify-des@1.0.2: - resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} - - browserify-rsa@4.1.1: - resolution: {integrity: sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==} - engines: {node: '>= 0.10'} - - browserify-sign@4.2.3: - resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} - engines: {node: '>= 0.12'} - - browserify-zlib@0.2.0: - resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} - - browserslist@4.24.3: - resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - bs58@4.0.1: resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} @@ -975,19 +576,10 @@ packages: bs58@6.0.0: resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer-layout@1.2.2: resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} engines: {node: '>=4.5'} - buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -995,13 +587,6 @@ packages: resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} engines: {node: '>=6.14.2'} - builtin-status-codes@3.0.0: - resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} - - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - call-bind-apply-helpers@1.0.1: resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} engines: {node: '>= 0.4'} @@ -1014,17 +599,10 @@ packages: resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} engines: {node: '>= 0.4'} - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001690: - resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} - ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1046,35 +624,6 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - - cipher-base@1.0.6: - resolution: {integrity: sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==} - engines: {node: '>= 0.10'} - - client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -1093,54 +642,13 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - console-browserify@1.2.0: - resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} - - constants-browserify@1.0.0: - resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - create-ecdh@4.0.4: - resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} - - create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - - create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - cross-fetch@3.2.0: resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - crypto-browserify@3.12.1: - resolution: {integrity: sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==} - engines: {node: '>= 0.10'} - crypto-hash@1.3.0: resolution: {integrity: sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==} engines: {node: '>=8'} - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} @@ -1187,29 +695,9 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - des.js@1.1.0: - resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} - - detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - diffie-hellman@5.0.3: - resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - domain-browser@4.22.0: - resolution: {integrity: sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==} - engines: {node: '>=10'} - dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -1221,28 +709,9 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - electron-to-chromium@1.5.76: - resolution: {integrity: sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==} - - elliptic@6.6.1: - resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} - emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - enhanced-resolve@5.18.0: - resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} - engines: {node: '>=10.13.0'} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -1255,9 +724,6 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.6.0: - resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} - es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} @@ -1268,26 +734,6 @@ packages: es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -1298,50 +744,19 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - eyes@0.1.8: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} engines: {node: '> 0.1.90'} - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-stable-stringify@1.0.0: resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - fast-uri@3.0.3: - resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} - fastestsmallesttextencoderdecoder@1.0.22: resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} - fastq@1.18.0: - resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} - file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - follow-redirects@1.15.9: resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} @@ -1354,10 +769,6 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} - form-data-encoder@1.7.2: resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} @@ -1369,11 +780,6 @@ packages: resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} engines: {node: '>= 12.20'} - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} @@ -1381,21 +787,6 @@ packages: resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} engines: {node: '>= 0.4'} - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -1409,10 +800,6 @@ packages: groq-sdk@0.5.0: resolution: {integrity: sha512-RVmhW7qZ+XZoy5fIuSdx/LGQJONpL8MHgZEW7dFwTdgkzStub2XQx6OKv28CHogijdwH41J+Npj/z2jBPu3vmw==} - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -1424,10 +811,6 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - hash-base@3.0.5: - resolution: {integrity: sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==} - engines: {node: '>= 0.10'} - hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} @@ -1441,15 +824,9 @@ packages: hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - https-browserify@1.0.0: - resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} - humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} @@ -1467,45 +844,18 @@ packages: resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} engines: {node: '>= 0.4'} - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - is-retry-allowed@2.2.0: resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} engines: {node: '>=10'} @@ -1514,37 +864,16 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isomorphic-timers-promises@1.0.1: - resolution: {integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==} - engines: {node: '>=10'} - isomorphic-ws@4.0.1: resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} peerDependencies: ws: '*' - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jayson@4.1.3: resolution: {integrity: sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ==} engines: {node: '>=8'} hasBin: true - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - - jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} - hasBin: true - js-base64@3.7.7: resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} @@ -1555,15 +884,6 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} @@ -1637,24 +957,9 @@ packages: openai: optional: true - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -1664,9 +969,6 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} @@ -1678,22 +980,12 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - mdast-util-to-hast@13.2.0: resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - micromark-util-character@2.1.1: resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} @@ -1709,14 +1001,6 @@ packages: micromark-util-types@2.0.1: resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - miller-rabin@4.0.1: - resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} - hasBin: true - mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -1728,9 +1012,6 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -1738,10 +1019,6 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1749,38 +1026,6 @@ packages: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - next@15.1.3: - resolution: {integrity: sha512-5igmb8N8AEhWDYzogcJvtcRDU6n4cMGtBklxKD4biYv4LXN8+awc/bbQ2IM2NQHdVPgJ6XumYXfo3hBtErg1DA==} - engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - babel-plugin-react-compiler: '*' - react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 - react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - babel-plugin-react-compiler: - optional: true - sass: - optional: true - no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -1801,35 +1046,6 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true - node-polyfill-webpack-plugin@4.1.0: - resolution: {integrity: sha512-b4ei444EKkOagG/yFqojrD3QTYM5IOU1f8tn9o6uwrG4qL+brI7oVhjPVd0ZL2xy+Z6CP5bu9w8XTvlWgiXHcw==} - engines: {node: '>=14'} - peerDependencies: - webpack: '>=5' - - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - - node-stdlib-browser@1.3.0: - resolution: {integrity: sha512-g/koYzOr9Fb1Jc+tHUHlFd5gODjGn48tHexUK8q6iqOVriEgSnd3/1T7myBYc+0KBVze/7F7n65ec9rW6OD7xw==} - engines: {node: '>=10'} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - object-inspect@1.13.3: - resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} - engines: {node: '>= 0.4'} - object-is@1.1.6: resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} engines: {node: '>= 0.4'} @@ -1857,21 +1073,10 @@ packages: openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} - os-browserify@0.3.0: - resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} - p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - p-queue@6.6.2: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} @@ -1884,122 +1089,69 @@ packages: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} - pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - pako@2.1.0: resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} - parse-asn1@5.1.7: - resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} - engines: {node: '>= 0.10'} - - 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'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} - pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} + pg-cloudflare@1.1.1: + resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + pg-connection-string@2.7.0: + resolution: {integrity: sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} + pg-pool@3.7.0: + resolution: {integrity: sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==} + peerDependencies: + pg: '>=8.0' - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + pg-protocol@1.7.0: + resolution: {integrity: sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==} - pkg-dir@5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + + pg@8.13.1: + resolution: {integrity: sha512-OUir1A0rPNZlX//c7ksiu7crsGZTKSOXJPgtNiHGIlC9H0lO+NC6ZDYksSgBYY/thSWhnSRBv8w1lieNNGATNQ==} + engines: {node: '>= 8.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} - engines: {node: ^10 || ^12 || >=14} - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} @@ -2007,60 +1159,14 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - public-encrypt@4.0.3: - resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} - punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.13.1: - resolution: {integrity: sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==} - engines: {node: '>=0.6'} - - querystring-es3@0.2.1: - resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} - engines: {node: '>=0.4.x'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - randomfill@1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} - - react-dom@19.0.0: - resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} - peerDependencies: - react: ^19.0.0 - - react@19.0.0: - resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} - engines: {node: '>=0.10.0'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -2073,106 +1179,28 @@ packages: regex@5.1.1: resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - rpc-websockets@9.0.4: resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - scheduler@0.25.0: - resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} - - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - - schema-utils@4.3.0: - resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} - engines: {node: '>= 10.13.0'} - semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - - sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - - sharp@0.33.5: - resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - shiki@1.24.4: resolution: {integrity: sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==} - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} - engines: {node: '>= 0.4'} - - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - - side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} @@ -2180,77 +1208,20 @@ packages: resolution: {integrity: sha512-QEg37BgkjyL+8XoPoHizvCfUchxCXZYorm3IC2wGXsWnIi4XJkdNaMSwisuUFS0WzIHrvK3ublhYGxfRNvTGpg==} engines: {node: '>=23.1.0', pnpm: '>=8.0.0'} - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - stream-browserify@3.0.0: - resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} - - stream-http@3.2.0: - resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} - - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - styled-jsx@5.1.6: - resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - superstruct@0.15.5: resolution: {integrity: sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==} @@ -2258,71 +1229,18 @@ packages: resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} engines: {node: '>=14.0.0'} - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - tailwindcss@3.4.17: - resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} - engines: {node: '>=14.0.0'} - hasBin: true - - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - - terser-webpack-plugin@5.3.11: - resolution: {integrity: sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - - terser@5.37.0: - resolution: {integrity: sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==} - engines: {node: '>=10'} - hasBin: true - text-encoding-utf-8@1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - timers-browserify@2.0.12: - resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} - engines: {node: '>=0.6.0'} - tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - toformat@2.0.0: resolution: {integrity: sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==} @@ -2335,9 +1253,6 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-log@2.2.7: resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} @@ -2348,16 +1263,9 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tty-browserify@0.0.1: - resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} - tweetnacl@1.0.3: resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} - type-fest@4.31.0: - resolution: {integrity: sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==} - engines: {node: '>=16'} - typedoc@0.26.11: resolution: {integrity: sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==} engines: {node: '>= 18'} @@ -2365,8 +1273,8 @@ packages: peerDependencies: typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x - typescript@5.7.2: - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} hasBin: true @@ -2376,8 +1284,8 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} unicode-trie@2.0.0: resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} @@ -2401,26 +1309,10 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - update-browserslist-db@1.1.1: - resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - url@0.11.4: - resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} - engines: {node: '>= 0.4'} - utf-8-validate@5.0.10: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} @@ -2442,13 +1334,6 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vm-browserify@1.1.2: - resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} - - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} - engines: {node: '>=10.13.0'} - web-streams-polyfill@3.3.3: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} @@ -2460,20 +1345,6 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - - webpack@5.97.1: - resolution: {integrity: sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -2481,19 +1352,6 @@ packages: resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} engines: {node: '>= 0.4'} - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -2527,10 +1385,6 @@ packages: engines: {node: '>= 14'} hasBin: true - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - zod-to-json-schema@3.24.1: resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} peerDependencies: @@ -2544,8 +1398,6 @@ packages: snapshots: - '@alloc/quick-lru@5.2.0': {} - '@babel/runtime@7.26.0': dependencies: regenerator-runtime: 0.14.1 @@ -2557,12 +1409,12 @@ snapshots: bs58: 5.0.0 buffer: 6.0.3 - '@bonfida/spl-name-service@3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@bonfida/spl-name-service@3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@bonfida/sns-records': 0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@noble/curves': 1.7.0 '@scure/base': 1.2.1 - '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) borsh: 2.0.0 buffer: 6.0.3 @@ -2605,11 +1457,6 @@ snapshots: bn.js: 5.2.1 buffer-layout: 1.2.2 - '@emnapi/runtime@1.3.1': - dependencies: - tslib: 2.8.1 - optional: true - '@ethersproject/bytes@5.7.0': dependencies: '@ethersproject/logger': 5.7.0 @@ -2622,112 +1469,6 @@ snapshots: '@ethersproject/logger': 5.7.0 hash.js: 1.1.7 - '@img/sharp-darwin-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.4 - optional: true - - '@img/sharp-darwin-x64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.4 - optional: true - - '@img/sharp-libvips-darwin-arm64@1.0.4': - optional: true - - '@img/sharp-libvips-darwin-x64@1.0.4': - optional: true - - '@img/sharp-libvips-linux-arm64@1.0.4': - optional: true - - '@img/sharp-libvips-linux-arm@1.0.5': - optional: true - - '@img/sharp-libvips-linux-s390x@1.0.4': - optional: true - - '@img/sharp-libvips-linux-x64@1.0.4': - optional: true - - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': - optional: true - - '@img/sharp-libvips-linuxmusl-x64@1.0.4': - optional: true - - '@img/sharp-linux-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.4 - optional: true - - '@img/sharp-linux-arm@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.5 - optional: true - - '@img/sharp-linux-s390x@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.4 - optional: true - - '@img/sharp-linux-x64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.4 - optional: true - - '@img/sharp-linuxmusl-arm64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 - optional: true - - '@img/sharp-linuxmusl-x64@0.33.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 - optional: true - - '@img/sharp-wasm32@0.33.5': - dependencies: - '@emnapi/runtime': 1.3.1 - optional: true - - '@img/sharp-win32-ia32@0.33.5': - optional: true - - '@img/sharp-win32-x64@0.33.5': - optional: true - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jridgewell/gen-mapping@0.3.8': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.6': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - '@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))': dependencies: '@cfworker/json-schema': 4.0.3 @@ -2755,6 +1496,14 @@ snapshots: transitivePeerDependencies: - encoding + '@langchain/langgraph-checkpoint-postgres@0.0.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + pg: 8.13.1 + transitivePeerDependencies: + - pg-native + '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': dependencies: '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) @@ -2790,11 +1539,11 @@ snapshots: '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) js-tiktoken: 1.0.16 - '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) buffer: 6.0.3 tweetnacl: 1.0.3 @@ -2949,32 +1698,6 @@ snapshots: '@msgpack/msgpack@3.0.0-beta2': {} - '@next/env@15.1.3': {} - - '@next/swc-darwin-arm64@15.1.3': - optional: true - - '@next/swc-darwin-x64@15.1.3': - optional: true - - '@next/swc-linux-arm64-gnu@15.1.3': - optional: true - - '@next/swc-linux-arm64-musl@15.1.3': - optional: true - - '@next/swc-linux-x64-gnu@15.1.3': - optional: true - - '@next/swc-linux-x64-musl@15.1.3': - optional: true - - '@next/swc-win32-arm64-msvc@15.1.3': - optional: true - - '@next/swc-win32-x64-msvc@15.1.3': - optional: true - '@noble/curves@1.7.0': dependencies: '@noble/hashes': 1.6.0 @@ -2985,18 +1708,6 @@ snapshots: '@noble/hashes@1.6.1': {} - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.18.0 - '@onsol/tldparser@0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@ethersproject/sha2': 5.7.0 @@ -3011,25 +1722,22 @@ snapshots: - supports-color - utf-8-validate - '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': + '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': dependencies: - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) decimal.js: 10.4.3 tiny-invariant: 1.3.3 - '@orca-so/whirlpools-sdk@0.13.12(@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': + '@orca-so/whirlpools-sdk@0.13.12(@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': dependencies: '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) decimal.js: 10.4.3 tiny-invariant: 1.3.3 - '@pkgjs/parseargs@0.11.0': - optional: true - '@pythnetwork/price-service-client@1.9.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@pythnetwork/price-service-sdk': 1.8.0 @@ -3048,10 +1756,10 @@ snapshots: dependencies: bn.js: 5.2.1 - '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) axios: 1.7.9 big.js: 6.2.2 @@ -3118,15 +1826,15 @@ snapshots: dependencies: '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-core@2.0.0-preview.4(typescript@5.7.2)': + '@solana/codecs-core@2.0.0-preview.4(typescript@5.6.3)': dependencies: - '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) - typescript: 5.7.2 + '@solana/errors': 2.0.0-preview.4(typescript@5.6.3) + typescript: 5.6.3 - '@solana/codecs-core@2.0.0-rc.1(typescript@5.7.2)': + '@solana/codecs-core@2.0.0-rc.1(typescript@5.6.3)': dependencies: - '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) - typescript: 5.7.2 + '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) + typescript: 5.6.3 '@solana/codecs-data-structures@2.0.0-preview.2': dependencies: @@ -3134,36 +1842,36 @@ snapshots: '@solana/codecs-numbers': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-data-structures@2.0.0-preview.4(typescript@5.7.2)': + '@solana/codecs-data-structures@2.0.0-preview.4(typescript@5.6.3)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.6.3) + '@solana/errors': 2.0.0-preview.4(typescript@5.6.3) + typescript: 5.6.3 - '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.7.2)': + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.6.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) + typescript: 5.6.3 '@solana/codecs-numbers@2.0.0-preview.2': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-numbers@2.0.0-preview.4(typescript@5.7.2)': + '@solana/codecs-numbers@2.0.0-preview.4(typescript@5.6.3)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.6.3) + '@solana/errors': 2.0.0-preview.4(typescript@5.6.3) + typescript: 5.6.3 - '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.2)': + '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.6.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) + typescript: 5.6.3 '@solana/codecs-strings@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: @@ -3172,21 +1880,21 @@ snapshots: '@solana/errors': 2.0.0-preview.2 fastestsmallesttextencoderdecoder: 1.0.22 - '@solana/codecs-strings@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/codecs-strings@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.6.3) + '@solana/errors': 2.0.0-preview.4(typescript@5.6.3) fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 5.7.2 + typescript: 5.6.3 - '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 5.7.2 + typescript: 5.6.3 '@solana/codecs@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: @@ -3198,25 +1906,25 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/options': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/options': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + typescript: 5.6.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + typescript: 5.6.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -3225,42 +1933,42 @@ snapshots: chalk: 5.4.1 commander: 12.1.0 - '@solana/errors@2.0.0-preview.4(typescript@5.7.2)': + '@solana/errors@2.0.0-preview.4(typescript@5.6.3)': dependencies: chalk: 5.4.1 commander: 12.1.0 - typescript: 5.7.2 + typescript: 5.6.3 - '@solana/errors@2.0.0-rc.1(typescript@5.7.2)': + '@solana/errors@2.0.0-rc.1(typescript@5.6.3)': dependencies: chalk: 5.4.1 commander: 12.1.0 - typescript: 5.7.2 + typescript: 5.6.3 '@solana/options@2.0.0-preview.2': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/codecs-numbers': 2.0.0-preview.2 - '@solana/options@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/options@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.6.3) + '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/errors': 2.0.0-preview.4(typescript@5.6.3) + typescript: 5.6.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) + typescript: 5.6.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -3272,45 +1980,45 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: - '@solana/codecs': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/codecs': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) '@solana/spl-type-length-value': 0.1.0 '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: @@ -3320,12 +2028,12 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: @@ -3335,12 +2043,12 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: @@ -3398,27 +2106,13 @@ snapshots: - encoding - utf-8-validate - '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.15': dependencies: tslib: 2.8.1 '@types/connect@3.4.38': dependencies: - '@types/node': 20.17.10 - - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 9.6.1 - '@types/estree': 1.0.6 - - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - - '@types/estree@1.0.6': {} + '@types/node': 12.20.55 '@types/hast@3.0.4': dependencies: @@ -3432,7 +2126,7 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 20.17.10 + '@types/node': 18.19.68 form-data: 4.0.1 '@types/node@12.20.55': {} @@ -3441,17 +2135,9 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@20.17.10': + '@types/node@22.10.2': dependencies: - undici-types: 6.19.8 - - '@types/react-dom@19.0.2(@types/react@19.0.2)': - dependencies: - '@types/react': 19.0.2 - - '@types/react@19.0.2': - dependencies: - csstype: 3.1.3 + undici-types: 6.20.0 '@types/retry@0.12.0': {} @@ -3463,94 +2149,14 @@ snapshots: '@types/ws@7.4.7': dependencies: - '@types/node': 20.17.10 + '@types/node': 12.20.55 '@types/ws@8.5.13': dependencies: - '@types/node': 20.17.10 + '@types/node': 22.10.2 '@ungap/structured-clone@1.2.1': {} - '@webassemblyjs/ast@1.14.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - - '@webassemblyjs/floating-point-hex-parser@1.13.2': {} - - '@webassemblyjs/helper-api-error@1.13.2': {} - - '@webassemblyjs/helper-buffer@1.14.1': {} - - '@webassemblyjs/helper-numbers@1.13.2': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.13.2 - '@webassemblyjs/helper-api-error': 1.13.2 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} - - '@webassemblyjs/helper-wasm-section@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/wasm-gen': 1.14.1 - - '@webassemblyjs/ieee754@1.13.2': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.13.2': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.13.2': {} - - '@webassemblyjs/wasm-edit@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/helper-wasm-section': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-opt': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wast-printer': 1.14.1 - - '@webassemblyjs/wasm-gen@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wasm-opt@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - - '@webassemblyjs/wasm-parser@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-api-error': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wast-printer@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@xtuc/long': 4.2.2 - - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 @@ -3560,70 +2166,16 @@ snapshots: dependencies: event-target-shim: 5.0.1 - acorn@8.14.0: {} - agentkeepalive@4.5.0: dependencies: humanize-ms: 1.2.1 - ajv-formats@2.1.1(ajv@8.17.1): - optionalDependencies: - ajv: 8.17.1 - - ajv-keywords@3.5.2(ajv@6.12.6): - dependencies: - ajv: 6.12.6 - - ajv-keywords@5.1.0(ajv@8.17.1): - dependencies: - ajv: 8.17.1 - fast-deep-equal: 3.1.3 - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ajv@8.17.1: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - - ansi-regex@5.0.1: {} - - ansi-regex@6.1.0: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} - ansicolors@0.3.2: {} - any-promise@1.3.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - arg@5.0.2: {} - argparse@2.0.1: {} - asn1.js@4.10.1: - dependencies: - bn.js: 4.12.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - assert@2.1.0: dependencies: call-bind: 1.0.8 @@ -3673,14 +2225,10 @@ snapshots: bignumber.js@9.1.2: {} - binary-extensions@2.3.0: {} - bindings@1.5.0: dependencies: file-uri-to-path: 1.0.0 - bn.js@4.12.1: {} - bn.js@5.2.1: {} borsh@0.7.0: @@ -3697,68 +2245,6 @@ snapshots: dependencies: balanced-match: 1.0.2 - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - brorand@1.1.0: {} - - browser-resolve@2.0.0: - dependencies: - resolve: 1.22.10 - - browserify-aes@1.2.0: - dependencies: - buffer-xor: 1.0.3 - cipher-base: 1.0.6 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - browserify-cipher@1.0.1: - dependencies: - browserify-aes: 1.2.0 - browserify-des: 1.0.2 - evp_bytestokey: 1.0.3 - - browserify-des@1.0.2: - dependencies: - cipher-base: 1.0.6 - des.js: 1.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - browserify-rsa@4.1.1: - dependencies: - bn.js: 5.2.1 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - - browserify-sign@4.2.3: - dependencies: - bn.js: 5.2.1 - browserify-rsa: 4.1.1 - create-hash: 1.2.0 - create-hmac: 1.1.7 - elliptic: 6.6.1 - hash-base: 3.0.5 - inherits: 2.0.4 - parse-asn1: 5.1.7 - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - - browserify-zlib@0.2.0: - dependencies: - pako: 1.0.11 - - browserslist@4.24.3: - dependencies: - caniuse-lite: 1.0.30001690 - electron-to-chromium: 1.5.76 - node-releases: 2.0.19 - update-browserslist-db: 1.1.1(browserslist@4.24.3) - bs58@4.0.1: dependencies: base-x: 3.0.10 @@ -3771,17 +2257,8 @@ snapshots: dependencies: base-x: 5.0.0 - buffer-from@1.1.2: {} - buffer-layout@1.2.2: {} - buffer-xor@1.0.3: {} - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - buffer@6.0.3: dependencies: base64-js: 1.5.1 @@ -3792,12 +2269,6 @@ snapshots: node-gyp-build: 4.8.4 optional: true - builtin-status-codes@3.0.0: {} - - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - call-bind-apply-helpers@1.0.1: dependencies: es-errors: 1.3.0 @@ -3815,12 +2286,8 @@ snapshots: call-bind-apply-helpers: 1.0.1 get-intrinsic: 1.2.6 - camelcase-css@2.0.1: {} - camelcase@6.3.0: {} - caniuse-lite@1.0.30001690: {} - ccount@2.0.1: {} chai@5.1.2: @@ -3839,45 +2306,6 @@ snapshots: check-error@2.1.1: {} - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chrome-trace-event@1.0.4: {} - - cipher-base@1.0.6: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - client-only@0.0.1: {} - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - optional: true - - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - optional: true - combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -3890,71 +2318,14 @@ snapshots: commander@2.20.3: {} - commander@4.1.1: {} - - console-browserify@1.2.0: {} - - constants-browserify@1.0.0: {} - - core-util-is@1.0.3: {} - - create-ecdh@4.0.4: - dependencies: - bn.js: 4.12.1 - elliptic: 6.6.1 - - create-hash@1.2.0: - dependencies: - cipher-base: 1.0.6 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.2 - sha.js: 2.4.11 - - create-hmac@1.1.7: - dependencies: - cipher-base: 1.0.6 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - - create-require@1.1.1: {} - cross-fetch@3.2.0: dependencies: node-fetch: 2.7.0 transitivePeerDependencies: - encoding - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - crypto-browserify@3.12.1: - dependencies: - browserify-cipher: 1.0.1 - browserify-sign: 4.2.3 - create-ecdh: 4.0.4 - create-hash: 1.2.0 - create-hmac: 1.1.7 - diffie-hellman: 5.0.3 - hash-base: 3.0.5 - inherits: 2.0.4 - pbkdf2: 3.1.2 - public-encrypt: 4.0.3 - randombytes: 2.1.0 - randomfill: 1.0.4 - crypto-hash@1.3.0: {} - cssesc@3.0.0: {} - - csstype@3.1.3: {} - dayjs@1.11.13: {} debug@4.4.0: @@ -3987,30 +2358,10 @@ snapshots: dequal@2.0.3: {} - des.js@1.1.0: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - detect-libc@2.0.3: - optional: true - devlop@1.1.0: dependencies: dequal: 2.0.3 - didyoumean@1.2.2: {} - - diffie-hellman@5.0.3: - dependencies: - bn.js: 4.12.1 - miller-rabin: 4.0.1 - randombytes: 2.1.0 - - dlv@1.1.3: {} - - domain-browser@4.22.0: {} - dot-case@3.0.4: dependencies: no-case: 3.0.4 @@ -4024,39 +2375,14 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - eastasianwidth@0.2.0: {} - - electron-to-chromium@1.5.76: {} - - elliptic@6.6.1: - dependencies: - bn.js: 4.12.1 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - emoji-regex-xs@1.0.0: {} - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - enhanced-resolve@5.18.0: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - entities@4.5.0: {} es-define-property@1.0.1: {} es-errors@1.3.0: {} - es-module-lexer@1.6.0: {} - es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 @@ -4067,80 +2393,26 @@ snapshots: dependencies: es6-promise: 4.2.8 - escalade@3.2.0: {} - - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@4.3.0: {} - - estraverse@5.3.0: {} - event-target-shim@5.0.1: {} eventemitter3@4.0.7: {} eventemitter3@5.0.1: {} - events@3.3.0: {} - - evp_bytestokey@1.0.3: - dependencies: - md5.js: 1.3.5 - safe-buffer: 5.2.1 - eyes@0.1.8: {} - fast-deep-equal@3.1.3: {} - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-json-stable-stringify@2.1.0: {} - fast-stable-stringify@1.0.0: {} - fast-uri@3.0.3: {} - fastestsmallesttextencoderdecoder@1.0.22: {} - fastq@1.18.0: - dependencies: - reusify: 1.0.4 - file-uri-to-path@1.0.0: {} - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - follow-redirects@1.15.9: {} for-each@0.3.3: dependencies: is-callable: 1.2.7 - foreground-child@3.3.0: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - form-data-encoder@1.7.2: {} form-data@4.0.1: @@ -4154,9 +2426,6 @@ snapshots: node-domexception: 1.0.0 web-streams-polyfill: 4.0.0-beta.3 - fsevents@2.3.3: - optional: true - function-bind@1.1.2: {} get-intrinsic@1.2.6: @@ -4172,28 +2441,10 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob-to-regexp@0.4.1: {} - - glob@10.4.5: - dependencies: - foreground-child: 3.3.0 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - gopd@1.2.0: {} - graceful-fs@4.2.11: {} + graceful-fs@4.2.11: + optional: true graphemesplit@2.4.4: dependencies: @@ -4213,8 +2464,6 @@ snapshots: transitivePeerDependencies: - encoding - has-flag@4.0.0: {} - has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 @@ -4225,11 +2474,6 @@ snapshots: dependencies: has-symbols: 1.1.0 - hash-base@3.0.5: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - hash.js@1.1.7: dependencies: inherits: 2.0.4 @@ -4257,16 +2501,8 @@ snapshots: dependencies: '@types/hast': 3.0.4 - hmac-drbg@1.0.1: - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - html-void-elements@3.0.0: {} - https-browserify@1.0.0: {} - humanize-ms@1.2.1: dependencies: ms: 2.1.3 @@ -4282,50 +2518,23 @@ snapshots: call-bound: 1.0.3 has-tostringtag: 1.0.2 - is-arrayish@0.3.2: - optional: true - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - is-callable@1.2.7: {} - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.2 - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - is-nan@1.3.2: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - is-number@7.0.0: {} - is-retry-allowed@2.2.0: {} is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.18 - isarray@1.0.0: {} - - isexe@2.0.0: {} - - isomorphic-timers-promises@1.0.1: {} - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): dependencies: ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -4334,12 +2543,6 @@ snapshots: dependencies: ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - jayson@4.1.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@types/connect': 3.4.38 @@ -4358,14 +2561,6 @@ snapshots: - bufferutil - utf-8-validate - jest-worker@27.5.1: - dependencies: - '@types/node': 20.17.10 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jiti@1.21.7: {} - js-base64@3.7.7: {} js-tiktoken@1.0.16: @@ -4376,12 +2571,6 @@ snapshots: dependencies: argparse: 2.0.1 - json-parse-even-better-errors@2.3.1: {} - - json-schema-traverse@0.4.1: {} - - json-schema-traverse@1.0.0: {} - json-stringify-safe@5.0.1: {} json5@2.2.3: {} @@ -4429,20 +2618,10 @@ snapshots: optionalDependencies: openai: 4.77.0(zod@3.24.1) - lilconfig@3.1.3: {} - - lines-and-columns@1.2.4: {} - linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 - loader-runner@4.3.0: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - lodash@4.17.21: {} loupe@3.1.2: {} @@ -4451,8 +2630,6 @@ snapshots: dependencies: tslib: 2.8.1 - lru-cache@10.4.3: {} - lunr@2.3.9: {} markdown-it@14.1.0: @@ -4466,12 +2643,6 @@ snapshots: math-intrinsics@1.1.0: {} - md5.js@1.3.5: - dependencies: - hash-base: 3.0.5 - inherits: 2.0.4 - safe-buffer: 5.2.1 - mdast-util-to-hast@13.2.0: dependencies: '@types/hast': 3.0.4 @@ -4486,10 +2657,6 @@ snapshots: mdurl@2.0.0: {} - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - micromark-util-character@2.1.1: dependencies: micromark-util-symbol: 2.0.1 @@ -4507,16 +2674,6 @@ snapshots: micromark-util-types@2.0.1: {} - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - miller-rabin@4.0.1: - dependencies: - bn.js: 4.12.1 - brorand: 1.1.0 - mime-db@1.52.0: {} mime-types@2.1.35: @@ -4525,55 +2682,16 @@ snapshots: minimalistic-assert@1.0.1: {} - minimalistic-crypto-utils@1.0.1: {} - minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 minimist@1.2.8: {} - minipass@7.1.2: {} - ms@2.1.3: {} mustache@4.2.0: {} - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - - nanoid@3.3.8: {} - - neo-async@2.6.2: {} - - next@15.1.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0): - dependencies: - '@next/env': 15.1.3 - '@swc/counter': 0.1.3 - '@swc/helpers': 0.5.15 - busboy: 1.6.0 - caniuse-lite: 1.0.30001690 - postcss: 8.4.31 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - styled-jsx: 5.1.6(react@19.0.0) - optionalDependencies: - '@next/swc-darwin-arm64': 15.1.3 - '@next/swc-darwin-x64': 15.1.3 - '@next/swc-linux-arm64-gnu': 15.1.3 - '@next/swc-linux-arm64-musl': 15.1.3 - '@next/swc-linux-x64-gnu': 15.1.3 - '@next/swc-linux-x64-musl': 15.1.3 - '@next/swc-win32-arm64-msvc': 15.1.3 - '@next/swc-win32-x64-msvc': 15.1.3 - sharp: 0.33.5 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -4588,52 +2706,6 @@ snapshots: node-gyp-build@4.8.4: optional: true - node-polyfill-webpack-plugin@4.1.0(webpack@5.97.1): - dependencies: - node-stdlib-browser: 1.3.0 - type-fest: 4.31.0 - webpack: 5.97.1 - - node-releases@2.0.19: {} - - node-stdlib-browser@1.3.0: - dependencies: - assert: 2.1.0 - browser-resolve: 2.0.0 - browserify-zlib: 0.2.0 - buffer: 5.7.1 - console-browserify: 1.2.0 - constants-browserify: 1.0.0 - create-require: 1.1.1 - crypto-browserify: 3.12.1 - domain-browser: 4.22.0 - events: 3.3.0 - https-browserify: 1.0.0 - isomorphic-timers-promises: 1.0.1 - os-browserify: 0.3.0 - path-browserify: 1.0.1 - pkg-dir: 5.0.0 - process: 0.11.10 - punycode: 1.4.1 - querystring-es3: 0.2.1 - readable-stream: 3.6.2 - stream-browserify: 3.0.0 - stream-http: 3.2.0 - string_decoder: 1.3.0 - timers-browserify: 2.0.12 - tty-browserify: 0.0.1 - url: 0.11.4 - util: 0.12.5 - vm-browserify: 1.1.2 - - normalize-path@3.0.0: {} - - object-assign@4.1.1: {} - - object-hash@3.0.0: {} - - object-inspect@1.13.3: {} - object-is@1.1.6: dependencies: call-bind: 1.0.8 @@ -4672,18 +2744,8 @@ snapshots: openapi-types@12.1.3: {} - os-browserify@0.3.0: {} - p-finally@1.0.0: {} - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - p-queue@6.6.2: dependencies: eventemitter3: 4.0.7 @@ -4698,174 +2760,67 @@ snapshots: dependencies: p-finally: 1.0.0 - package-json-from-dist@1.0.1: {} - pako@0.2.9: {} - pako@1.0.11: {} - pako@2.1.0: {} - parse-asn1@5.1.7: - dependencies: - asn1.js: 4.10.1 - browserify-aes: 1.2.0 - evp_bytestokey: 1.0.3 - hash-base: 3.0.5 - pbkdf2: 3.1.2 - safe-buffer: 5.2.1 - - path-browserify@1.0.1: {} - - path-exists@4.0.0: {} - - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - pathval@2.0.0: {} - pbkdf2@3.1.2: + pg-cloudflare@1.1.1: + optional: true + + pg-connection-string@2.7.0: {} + + pg-int8@1.0.1: {} + + pg-pool@3.7.0(pg@8.13.1): dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 + pg: 8.13.1 - picocolors@1.1.1: {} + pg-protocol@1.7.0: {} - picomatch@2.3.1: {} - - pify@2.3.0: {} - - pirates@4.0.6: {} - - pkg-dir@5.0.0: + pg-types@2.2.0: dependencies: - find-up: 5.0.0 + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + + pg@8.13.1: + dependencies: + pg-connection-string: 2.7.0 + pg-pool: 3.7.0(pg@8.13.1) + pg-protocol: 1.7.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.1.1 + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 possible-typed-array-names@1.0.0: {} - postcss-import@15.1.0(postcss@8.4.49): + postgres-array@2.0.0: {} + + postgres-bytea@1.0.0: {} + + postgres-date@1.0.7: {} + + postgres-interval@1.2.0: dependencies: - postcss: 8.4.49 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.10 - - postcss-js@4.0.1(postcss@8.4.49): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.49 - - postcss-load-config@4.0.2(postcss@8.4.49): - dependencies: - lilconfig: 3.1.3 - yaml: 2.6.1 - optionalDependencies: - postcss: 8.4.49 - - postcss-nested@6.2.0(postcss@8.4.49): - dependencies: - postcss: 8.4.49 - postcss-selector-parser: 6.1.2 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.4.31: - dependencies: - nanoid: 3.3.8 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - postcss@8.4.49: - dependencies: - nanoid: 3.3.8 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - process-nextick-args@2.0.1: {} - - process@0.11.10: {} + xtend: 4.0.2 property-information@6.5.0: {} proxy-from-env@1.1.0: {} - public-encrypt@4.0.3: - dependencies: - bn.js: 4.12.1 - browserify-rsa: 4.1.1 - create-hash: 1.2.0 - parse-asn1: 5.1.7 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - punycode.js@2.3.1: {} - punycode@1.4.1: {} - punycode@2.3.1: {} - qs@6.13.1: - dependencies: - side-channel: 1.1.0 - - querystring-es3@0.2.1: {} - - queue-microtask@1.2.3: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - randomfill@1.0.4: - dependencies: - randombytes: 2.1.0 - safe-buffer: 5.2.1 - - react-dom@19.0.0(react@19.0.0): - dependencies: - react: 19.0.0 - scheduler: 0.25.0 - - react@19.0.0: {} - - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - regenerator-runtime@0.14.1: {} regex-recursion@5.1.1: @@ -4879,23 +2834,8 @@ snapshots: dependencies: regex-utilities: 2.3.0 - require-from-string@2.0.2: {} - - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - retry@0.13.1: {} - reusify@1.0.4: {} - - ripemd160@2.0.2: - dependencies: - hash-base: 3.0.5 - inherits: 2.0.4 - rpc-websockets@9.0.4: dependencies: '@swc/helpers': 0.5.15 @@ -4909,35 +2849,10 @@ snapshots: bufferutil: 4.0.8 utf-8-validate: 5.0.10 - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safe-buffer@5.1.2: {} - safe-buffer@5.2.1: {} - scheduler@0.25.0: {} - - schema-utils@3.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - schema-utils@4.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) - semver@7.6.3: {} - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -4947,46 +2862,6 @@ snapshots: gopd: 1.2.0 has-property-descriptors: 1.0.2 - setimmediate@1.0.5: {} - - sha.js@2.4.11: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - sharp@0.33.5: - dependencies: - color: 4.2.3 - detect-libc: 2.0.3 - semver: 7.6.3 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.5 - '@img/sharp-darwin-x64': 0.33.5 - '@img/sharp-libvips-darwin-arm64': 1.0.4 - '@img/sharp-libvips-darwin-x64': 1.0.4 - '@img/sharp-libvips-linux-arm': 1.0.5 - '@img/sharp-libvips-linux-arm64': 1.0.4 - '@img/sharp-libvips-linux-s390x': 1.0.4 - '@img/sharp-libvips-linux-x64': 1.0.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 - '@img/sharp-linux-arm': 0.33.5 - '@img/sharp-linux-arm64': 0.33.5 - '@img/sharp-linux-s390x': 0.33.5 - '@img/sharp-linux-x64': 0.33.5 - '@img/sharp-linuxmusl-arm64': 0.33.5 - '@img/sharp-linuxmusl-x64': 0.33.5 - '@img/sharp-wasm32': 0.33.5 - '@img/sharp-win32-ia32': 0.33.5 - '@img/sharp-win32-x64': 0.33.5 - optional: true - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - shiki@1.24.4: dependencies: '@shikijs/core': 1.24.4 @@ -4996,55 +2871,20 @@ snapshots: '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 - side-channel-list@1.0.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.3 - - side-channel-map@1.0.1: - dependencies: - call-bound: 1.0.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.6 - object-inspect: 1.13.3 - - side-channel-weakmap@1.0.2: - dependencies: - call-bound: 1.0.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.6 - object-inspect: 1.13.3 - side-channel-map: 1.0.1 - - side-channel@1.1.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.3 - side-channel-list: 1.0.0 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - - signal-exit@4.1.0: {} - - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - optional: true - snake-case@3.0.4: dependencies: dot-case: 3.0.4 tslib: 2.8.1 - solana-agent-kit@1.3.0(@noble/hashes@1.6.1)(axios@1.7.9)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)(zod@3.24.1): + solana-agent-kit@1.3.0(@noble/hashes@1.6.1)(axios@1.7.9)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.24.1): dependencies: - '@bonfida/spl-name-service': 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@bonfida/spl-name-service': 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) '@langchain/groq': 0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) '@langchain/langgraph': 0.2.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) - '@lightprotocol/compressed-token': 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@lightprotocol/compressed-token': 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@metaplex-foundation/mpl-core': 1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.1) '@metaplex-foundation/mpl-token-metadata': 3.3.0(@metaplex-foundation/umi@0.9.2) @@ -5053,11 +2893,11 @@ snapshots: '@metaplex-foundation/umi-bundle-defaults': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@onsol/tldparser': 0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) - '@orca-so/whirlpools-sdk': 0.13.12(@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@orca-so/whirlpools-sdk': 0.13.12(@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) '@pythnetwork/price-service-client': 1.9.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@raydium-io/raydium-sdk-v2': 0.1.95-alpha(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@raydium-io/raydium-sdk-v2': 0.1.95-alpha(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) bn.js: 5.2.1 bs58: 6.0.0 @@ -5067,7 +2907,7 @@ snapshots: form-data: 4.0.1 langchain: 0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.9)(openai@4.77.0(zod@3.24.1)) openai: 4.77.0(zod@3.24.1) - typedoc: 0.26.11(typescript@5.7.2) + typedoc: 0.26.11(typescript@5.6.3) transitivePeerDependencies: - '@langchain/anthropic' - '@langchain/aws' @@ -5093,160 +2933,29 @@ snapshots: - utf-8-validate - zod - source-map-js@1.2.1: {} - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - space-separated-tokens@2.0.2: {} - stream-browserify@3.0.0: - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - - stream-http@3.2.0: - dependencies: - builtin-status-codes: 3.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - xtend: 4.0.2 - - streamsearch@1.1.0: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 + split2@4.2.0: {} stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - strip-bom@3.0.0: {} - styled-jsx@5.1.6(react@19.0.0): - dependencies: - client-only: 0.0.1 - react: 19.0.0 - - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - commander: 4.1.1 - glob: 10.4.5 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - superstruct@0.15.5: {} superstruct@2.0.2: {} - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - tailwindcss@3.4.17: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.7 - lilconfig: 3.1.3 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.1.1 - postcss: 8.4.49 - postcss-import: 15.1.0(postcss@8.4.49) - postcss-js: 4.0.1(postcss@8.4.49) - postcss-load-config: 4.0.2(postcss@8.4.49) - postcss-nested: 6.2.0(postcss@8.4.49) - postcss-selector-parser: 6.1.2 - resolve: 1.22.10 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - tapable@2.2.1: {} - - terser-webpack-plugin@5.3.11(webpack@5.97.1): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 4.3.0 - serialize-javascript: 6.0.2 - terser: 5.37.0 - webpack: 5.97.1 - - terser@5.37.0: - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.14.0 - commander: 2.20.3 - source-map-support: 0.5.21 - text-encoding-utf-8@1.0.2: {} - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - through@2.3.8: {} - timers-browserify@2.0.12: - dependencies: - setimmediate: 1.0.5 - tiny-inflate@1.0.3: {} tiny-invariant@1.3.3: {} - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - toformat@2.0.0: {} toml@3.0.0: {} @@ -5255,8 +2964,6 @@ snapshots: trim-lines@3.0.1: {} - ts-interface-checker@0.1.13: {} - ts-log@2.2.7: {} tsconfig-paths@4.2.0: @@ -5267,28 +2974,24 @@ snapshots: tslib@2.8.1: {} - tty-browserify@0.0.1: {} - tweetnacl@1.0.3: {} - type-fest@4.31.0: {} - - typedoc@0.26.11(typescript@5.7.2): + typedoc@0.26.11(typescript@5.6.3): dependencies: lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 shiki: 1.24.4 - typescript: 5.7.2 + typescript: 5.6.3 yaml: 2.6.1 - typescript@5.7.2: {} + typescript@5.6.3: {} uc.micro@2.1.0: {} undici-types@5.26.5: {} - undici-types@6.19.8: {} + undici-types@6.20.0: {} unicode-trie@2.0.0: dependencies: @@ -5320,28 +3023,11 @@ snapshots: universalify@2.0.1: {} - update-browserslist-db@1.1.1(browserslist@4.24.3): - dependencies: - browserslist: 4.24.3 - escalade: 3.2.0 - picocolors: 1.1.1 - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - url@0.11.4: - dependencies: - punycode: 1.4.1 - qs: 6.13.1 - utf-8-validate@5.0.10: dependencies: node-gyp-build: 4.8.4 optional: true - util-deprecate@1.0.2: {} - util@0.12.5: dependencies: inherits: 2.0.4 @@ -5366,51 +3052,12 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vm-browserify@1.1.2: {} - - watchpack@2.4.2: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - web-streams-polyfill@3.3.3: {} web-streams-polyfill@4.0.0-beta.3: {} webidl-conversions@3.0.1: {} - webpack-sources@3.2.3: {} - - webpack@5.97.1: - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.6 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.14.0 - browserslist: 4.24.3 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.0 - es-module-lexer: 1.6.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.11(webpack@5.97.1) - watchpack: 2.4.2 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -5425,22 +3072,6 @@ snapshots: gopd: 1.2.0 has-tostringtag: 1.0.2 - which@2.0.2: - dependencies: - isexe: 2.0.0 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.0.8 @@ -5455,8 +3086,6 @@ snapshots: yaml@2.6.1: {} - yocto-queue@0.1.0: {} - zod-to-json-schema@3.24.1(zod@3.24.1): dependencies: zod: 3.24.1 From 3cdd45d62315f74a8b992bb409d5c6e1830bf3e8 Mon Sep 17 00:00:00 2001 From: Deepak Date: Fri, 27 Dec 2024 16:53:12 +0530 Subject: [PATCH 13/23] added write functionalities ie, swap and transfer --- examples/agent-kit-langgraph/package.json | 6 +- examples/agent-kit-langgraph/pnpm-lock.yaml | 292 +++++++++++++++++- .../src/agents/generalAgent.ts | 13 +- .../agent-kit-langgraph/src/agents/manager.ts | 23 ++ .../src/agents/transferOrSwap.ts | 25 ++ .../src/helper/examples.ts | 5 + .../src/helper/tokenList.ts | 50 +++ examples/agent-kit-langgraph/src/index.ts | 21 +- .../src/prompts/manager.ts | 48 +++ .../src/prompts/transferSwap.ts | 43 +++ .../agent-kit-langgraph/src/tools/swap.ts | 45 +++ .../agent-kit-langgraph/src/utils/route.ts | 14 + .../src/utils/solanaAgent.ts | 4 +- 13 files changed, 572 insertions(+), 17 deletions(-) create mode 100644 examples/agent-kit-langgraph/src/agents/manager.ts create mode 100644 examples/agent-kit-langgraph/src/agents/transferOrSwap.ts create mode 100644 examples/agent-kit-langgraph/src/helper/examples.ts create mode 100644 examples/agent-kit-langgraph/src/helper/tokenList.ts create mode 100644 examples/agent-kit-langgraph/src/prompts/manager.ts create mode 100644 examples/agent-kit-langgraph/src/prompts/transferSwap.ts create mode 100644 examples/agent-kit-langgraph/src/tools/swap.ts diff --git a/examples/agent-kit-langgraph/package.json b/examples/agent-kit-langgraph/package.json index b88b54b..10c057d 100644 --- a/examples/agent-kit-langgraph/package.json +++ b/examples/agent-kit-langgraph/package.json @@ -6,7 +6,7 @@ "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "dev": "node --loader ts-node/esm" + "dev": "tsx" }, "keywords": [], "author": "", @@ -16,10 +16,12 @@ "@langchain/core": "^0.3.26", "@langchain/langgraph": "^0.2.36", "dotenv": "^16.4.7", - "solana-agent-kit": "^1.3.0" + "solana-agent-kit": "^1.3.0", + "zod": "^3.24.1" }, "devDependencies": { "ts-node": "^10.9.2", + "tsx": "^4.19.2", "typescript": "^5.0.0" }, "ts-node": { diff --git a/examples/agent-kit-langgraph/pnpm-lock.yaml b/examples/agent-kit-langgraph/pnpm-lock.yaml index 65fa0b7..776093b 100644 --- a/examples/agent-kit-langgraph/pnpm-lock.yaml +++ b/examples/agent-kit-langgraph/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@langchain/community': specifier: ^0.3.20 - version: 0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + version: 0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@langchain/core': specifier: ^0.3.26 version: 0.3.26(openai@4.77.0(zod@3.24.1)) @@ -23,10 +23,16 @@ importers: solana-agent-kit: specifier: ^1.3.0 version: 1.3.0(@noble/hashes@1.6.1)(axios@1.7.4)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.24.1) + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@18.19.68)(typescript@5.6.3) + tsx: + specifier: ^4.19.2 + version: 4.19.2 typescript: specifier: ^5.0.0 version: 5.6.3 @@ -82,6 +88,150 @@ packages: '@emnapi/runtime@1.3.1': resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@ethersproject/bytes@5.7.0': resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} @@ -1338,6 +1488,11 @@ packages: es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -1407,6 +1562,11 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} @@ -1414,6 +1574,9 @@ packages: resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} engines: {node: '>= 0.4'} + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -1831,6 +1994,9 @@ packages: requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + retry-axios@2.6.0: resolution: {integrity: sha512-pOLi+Gdll3JekwuFjXO3fTq+L9lzMQGcSq7M5gIjExcl3Gu1hd4XXuf5o3+LuSBsaULQH7DiNbsqPd1chVpQGQ==} engines: {node: '>=10.7.0'} @@ -1953,6 +2119,11 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsx@4.19.2: + resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} + engines: {node: '>=18.0.0'} + hasBin: true + tweetnacl@1.0.3: resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} @@ -2207,6 +2378,78 @@ snapshots: tslib: 2.8.1 optional: true + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + '@ethersproject/bytes@5.7.0': dependencies: '@ethersproject/logger': 5.7.0 @@ -2311,7 +2554,7 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@langchain/community@0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + '@langchain/community@0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: '@browserbasehq/stagehand': 1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1) '@ibm-cloud/watsonx-ai': 1.3.0 @@ -2333,7 +2576,7 @@ snapshots: jsonwebtoken: 9.0.2 lodash: 4.17.21 playwright: 1.49.1 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - '@langchain/anthropic' - '@langchain/aws' @@ -3324,6 +3567,33 @@ snapshots: dependencies: es6-promise: 4.2.8 + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + event-target-shim@5.0.1: {} eventemitter3@4.0.7: {} @@ -3380,6 +3650,9 @@ snapshots: fsevents@2.3.2: optional: true + fsevents@2.3.3: + optional: true + function-bind@1.1.2: {} get-intrinsic@1.2.6: @@ -3395,6 +3668,10 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 + get-tsconfig@4.8.1: + dependencies: + resolve-pkg-maps: 1.0.0 + gopd@1.2.0: {} graceful-fs@4.2.11: @@ -3835,6 +4112,8 @@ snapshots: requires-port@1.0.0: {} + resolve-pkg-maps@1.0.0: {} + retry-axios@2.6.0(axios@1.7.4): dependencies: axios: 1.7.4(debug@4.4.0) @@ -4046,6 +4325,13 @@ snapshots: tslib@2.8.1: {} + tsx@4.19.2: + dependencies: + esbuild: 0.23.1 + get-tsconfig: 4.8.1 + optionalDependencies: + fsevents: 2.3.3 + tweetnacl@1.0.3: {} typedoc@0.26.11(typescript@5.6.3): diff --git a/examples/agent-kit-langgraph/src/agents/generalAgent.ts b/examples/agent-kit-langgraph/src/agents/generalAgent.ts index da9e1fa..4ea9faf 100644 --- a/examples/agent-kit-langgraph/src/agents/generalAgent.ts +++ b/examples/agent-kit-langgraph/src/agents/generalAgent.ts @@ -1,8 +1,7 @@ import { createReactAgent } from "@langchain/langgraph/prebuilt"; -import { gpt4o } from "../utils/model.js"; -import { solanaAgentState } from "../utils/state.js"; +import { gpt4o } from "../utils/model"; +import { solanaAgentState } from "../utils/state"; import { TavilySearchResults } from "@langchain/community/tools/tavily_search"; -import { HumanMessage } from "@langchain/core/messages"; // Initialize tools array const searchTools = []; @@ -12,7 +11,7 @@ if (process.env.TAVILY_API_KEY) { searchTools.push(new TavilySearchResults()); } -export const generalAgent = createReactAgent({ +const generalAgent = createReactAgent({ llm: gpt4o, tools: searchTools, }); @@ -24,9 +23,3 @@ export const generalistNode = async (state: typeof solanaAgentState.State) => { return { messages: [...result.messages] }; }; - -const messages = [new HumanMessage("What is the best way to buy SOL?")]; - -const result = await generalAgent.invoke({ messages }); - -console.log(result.messages); diff --git a/examples/agent-kit-langgraph/src/agents/manager.ts b/examples/agent-kit-langgraph/src/agents/manager.ts new file mode 100644 index 0000000..70e734b --- /dev/null +++ b/examples/agent-kit-langgraph/src/agents/manager.ts @@ -0,0 +1,23 @@ +import { prompt, parser } from "../prompts/manager"; +import { RunnableSequence } from "@langchain/core/runnables"; +import { solanaAgentState } from "../utils/state"; +import { gpt4o } from "../utils/model"; + +const chain = RunnableSequence.from([prompt, gpt4o, parser]); + +export const managerNode = async (state: typeof solanaAgentState.State) => { + const { messages } = state; + + const result = await chain.invoke({ + formatInstructions: parser.getFormatInstructions(), + messages: messages, + }); + + const { isSolanaReadQuery, isSolanaWriteQuery, isGeneralQuery } = result; + + return { + isSolanaReadQuery, + isSolanaWriteQuery, + isGeneralQuery, + }; +}; diff --git a/examples/agent-kit-langgraph/src/agents/transferOrSwap.ts b/examples/agent-kit-langgraph/src/agents/transferOrSwap.ts new file mode 100644 index 0000000..552d236 --- /dev/null +++ b/examples/agent-kit-langgraph/src/agents/transferOrSwap.ts @@ -0,0 +1,25 @@ +import { gpt4o } from "../utils/model"; +import { agentKit } from "../utils/solanaAgent"; +import { solanaAgentState } from "../utils/state"; +import { createReactAgent } from "@langchain/langgraph/prebuilt"; +import { SolanaTransferTool } from "solana-agent-kit/dist/langchain"; +import { transferSwapPrompt } from "../prompts/transferSwap"; +import { swapTool } from "../tools/swap"; + +const transferOrSwapAgent = createReactAgent({ + stateModifier: transferSwapPrompt, + llm: gpt4o, + tools: [new SolanaTransferTool(agentKit), swapTool], +}); + +export const transferSwapNode = async ( + state: typeof solanaAgentState.State, +) => { + const { messages } = state; + + const result = await transferOrSwapAgent.invoke({ + messages, + }); + + return result; +}; diff --git a/examples/agent-kit-langgraph/src/helper/examples.ts b/examples/agent-kit-langgraph/src/helper/examples.ts new file mode 100644 index 0000000..d88dcd2 --- /dev/null +++ b/examples/agent-kit-langgraph/src/helper/examples.ts @@ -0,0 +1,5 @@ +import { HumanMessage } from "@langchain/core/messages"; + +export const generalQuestion = [ + new HumanMessage("Who is the president of Ecuador?"), +]; diff --git a/examples/agent-kit-langgraph/src/helper/tokenList.ts b/examples/agent-kit-langgraph/src/helper/tokenList.ts new file mode 100644 index 0000000..92a2b67 --- /dev/null +++ b/examples/agent-kit-langgraph/src/helper/tokenList.ts @@ -0,0 +1,50 @@ +export const tokenList = [ + { + name: "USDC", + ticker: "USDC", + decimal: 6, + mintAddress: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + }, + { + name: "USDT", + ticker: "USDT", + decimal: 6, + mintAddress: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", + }, + { + name: "USDS", + ticker: "USDS", + decimal: 6, + mintAddress: "USDSwr9ApdHk5bvJKMjzff41FfuX8bSxdKcR81vTwcA", + }, + { + name: "SOL", + ticker: "SOL", + decimal: 9, + mintAddress: "So11111111111111111111111111111111111111112", + }, + { + name: "jitoSOL", + ticker: "jitoSOL", + decimal: 9, + mintAddress: "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn", + }, + { + name: "bSOL", + ticker: "bSOL", + decimal: 9, + mintAddress: "bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1", + }, + { + name: "mSOL", + ticker: "mSOL", + decimal: 9, + mintAddress: "mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So", + }, + { + name: "BONK", + ticker: "BONK", + decimal: 9, + mintAddress: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", + }, +]; diff --git a/examples/agent-kit-langgraph/src/index.ts b/examples/agent-kit-langgraph/src/index.ts index 8327600..5ac5302 100644 --- a/examples/agent-kit-langgraph/src/index.ts +++ b/examples/agent-kit-langgraph/src/index.ts @@ -1,6 +1,25 @@ import { StateGraph } from "@langchain/langgraph"; import { solanaAgentState } from "./utils/state"; +import { generalistNode } from "./agents/generalAgent"; +import { transferSwapNode } from "./agents/transferOrSwap"; +import { managerNode } from "./agents/manager"; +import { START, END } from "@langchain/langgraph"; +import { managerRouter } from "./utils/route"; +import { HumanMessage } from "@langchain/core/messages"; -const workflow = new StateGraph(solanaAgentState); +const workflow = new StateGraph(solanaAgentState) + .addNode("generalist", generalistNode) + .addNode("manager", managerNode) + .addNode("transferSwap", transferSwapNode) + .addEdge(START, "manager") + .addConditionalEdges("manager", managerRouter) + .addEdge("generalist", END) + .addEdge("transferSwap", END); export const graph = workflow.compile(); + +const result = await graph.invoke({ + messages: [new HumanMessage("swap 0.1 usdc to sol")], +}); + +console.log(result); diff --git a/examples/agent-kit-langgraph/src/prompts/manager.ts b/examples/agent-kit-langgraph/src/prompts/manager.ts new file mode 100644 index 0000000..a70e581 --- /dev/null +++ b/examples/agent-kit-langgraph/src/prompts/manager.ts @@ -0,0 +1,48 @@ +import { StructuredOutputParser } from "@langchain/core/output_parsers"; +import { z } from "zod"; +import { PromptTemplate } from "@langchain/core/prompts"; + +export const parser = StructuredOutputParser.fromZodSchema( + z.object({ + isSolanaReadQuery: z + .boolean() + .describe("Query requires reading data from Solana blockchain"), + isSolanaWriteQuery: z + .boolean() + .describe("Query requires writing/modifying data on Solana blockchain"), + isGeneralQuery: z + .boolean() + .describe("Query is about non-blockchain topics"), + }), +); + +export const prompt = PromptTemplate.fromTemplate( + ` + You are the Chief Routing Officer for a multi-blockchain agent network. Your role is to: + 1. Analyze and classify incoming queries + 2. Determine if the query requires Solana read operations, write operations, or is general + + Format your response according to: + {formatInstructions} + + Classification Guidelines: + - Solana Read Operations include: + * Checking account balances + * Viewing NFT metadata + * Getting program data + * Querying transaction history + * Checking token prices or holdings + - Solana Write Operations include: + * Creating or updating programs + * Sending tokens or SOL + * Minting NFTs + * Creating accounts + * Any transaction that modifies blockchain state + - General queries include: + * Non-blockchain topics + * Internet searches + * General knowledge questions + + \n {messages} \n + `, +); diff --git a/examples/agent-kit-langgraph/src/prompts/transferSwap.ts b/examples/agent-kit-langgraph/src/prompts/transferSwap.ts new file mode 100644 index 0000000..b71d6a9 --- /dev/null +++ b/examples/agent-kit-langgraph/src/prompts/transferSwap.ts @@ -0,0 +1,43 @@ +import { + ChatPromptTemplate, + MessagesPlaceholder, +} from "@langchain/core/prompts"; +import { tokenList } from "../helper/tokenList"; + +// Convert token list to a more readable format for the prompt +const formattedTokenList = tokenList + .map( + (token) => + `- ${token.name} (${token.ticker}) - Decimals: ${token.decimal} - Address: ${token.mintAddress}`, + ) + .join("\n "); + +export const transferSwapPrompt = ChatPromptTemplate.fromMessages([ + [ + "system", + `You are an agent that is an expert in Solana transactions, specialized in token transfers and swaps. You can execute these transactions using the available tools based on user input. + + When processing token amounts: + 1. Use EXACTLY the decimal amount specified by the user without any modifications + 2. Do not round or adjust the numbers + 3. Maintain precise decimal places as provided in the user input + + For transfers: + - User must specify the token, amount, and recipient address + - The same token will be used for input and output + + For swaps: + - User must specify the input token, output token, and amount to swap + - Input and output tokens must be different + - Select tokens from this list of supported tokens: + + ${formattedTokenList} + + Example amounts: + If you say "0.01 SOL", I will use exactly 0.01 (not 0.010 or 0.0100) + If you say "1.234 USDC", I will use exactly 1.234 (not 1.23 or 1.2340) + For swaps, have the slippage be 200 bps + `, + ], + new MessagesPlaceholder("messages"), +]); diff --git a/examples/agent-kit-langgraph/src/tools/swap.ts b/examples/agent-kit-langgraph/src/tools/swap.ts new file mode 100644 index 0000000..3c72bc4 --- /dev/null +++ b/examples/agent-kit-langgraph/src/tools/swap.ts @@ -0,0 +1,45 @@ +import { agentKit } from "../utils/solanaAgent"; +import { tool } from "@langchain/core/tools"; +import { z } from "zod"; +import { PublicKey } from "@solana/web3.js"; + +export const swapTool = tool( + async ({ outputMint, inputAmount, inputMint, inputDecimal }) => { + try { + const inputAmountWithDecimals = inputAmount * 10 ** inputDecimal; + const outputMintAddress = new PublicKey(outputMint); + const inputMintAddress = new PublicKey(inputMint); + + console.log(inputAmountWithDecimals, outputMintAddress, inputMintAddress); + const tx = await agentKit.trade( + outputMintAddress, + inputAmountWithDecimals, + inputMintAddress, + 200, + ); + return tx; + } catch (error) { + console.error(error); + return "error"; + } + }, + { + name: "swap", + description: + "call to swap/trade tokens from one token to the other using Jupiter exchange", + schema: z.object({ + outputMint: z + .string() + .describe("The mint address of destination token to be swapped to"), + inputAmount: z + .number() + .describe( + "the input amount of the token to be swapped without adding any decimals", + ), + inputMint: z.string().describe("The mint address of the origin token "), + inputDecimal: z + .number() + .describe("The decimal of the input token that is being traded"), + }), + }, +); diff --git a/examples/agent-kit-langgraph/src/utils/route.ts b/examples/agent-kit-langgraph/src/utils/route.ts index e69de29..bb45fae 100644 --- a/examples/agent-kit-langgraph/src/utils/route.ts +++ b/examples/agent-kit-langgraph/src/utils/route.ts @@ -0,0 +1,14 @@ +import { solanaAgentState } from "./state"; +import { END } from "@langchain/langgraph"; + +export const managerRouter = (state: typeof solanaAgentState.State) => { + const { isSolanaReadQuery, isSolanaWriteQuery, isGeneralQuery } = state; + + if (isGeneralQuery) { + return "generalist"; + } else if (isSolanaWriteQuery) { + return "transferSwap"; + } else { + return END; + } +}; diff --git a/examples/agent-kit-langgraph/src/utils/solanaAgent.ts b/examples/agent-kit-langgraph/src/utils/solanaAgent.ts index f4c1c8c..ac714e4 100644 --- a/examples/agent-kit-langgraph/src/utils/solanaAgent.ts +++ b/examples/agent-kit-langgraph/src/utils/solanaAgent.ts @@ -1,7 +1,9 @@ -import { SolanaAgentKit } from "solana-agent-kit"; +import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; export const agentKit = new SolanaAgentKit( process.env.SOLANA_PRIVATE_KEY!, process.env.RPC_URL!, process.env.OPENAI_API_KEY!, ); + +export const solanaTools = createSolanaTools(agentKit); From a537716d9973b1604e9bce8498a12ae5b0f066fe Mon Sep 17 00:00:00 2001 From: Deepak Date: Fri, 27 Dec 2024 17:41:12 +0530 Subject: [PATCH 14/23] fin --- examples/agent-kit-langgraph/README.json | 0 examples/agent-kit-langgraph/README.md | 83 +++++++++++++++++++ examples/agent-kit-langgraph/langgraph.json | 10 ++- .../src/agents/readAgent.ts | 22 +++++ .../src/helper/examples.ts | 4 + examples/agent-kit-langgraph/src/index.ts | 7 +- .../agent-kit-langgraph/src/utils/route.ts | 2 + 7 files changed, 122 insertions(+), 6 deletions(-) delete mode 100644 examples/agent-kit-langgraph/README.json create mode 100644 examples/agent-kit-langgraph/README.md create mode 100644 examples/agent-kit-langgraph/src/agents/readAgent.ts diff --git a/examples/agent-kit-langgraph/README.json b/examples/agent-kit-langgraph/README.json deleted file mode 100644 index e69de29..0000000 diff --git a/examples/agent-kit-langgraph/README.md b/examples/agent-kit-langgraph/README.md new file mode 100644 index 0000000..cd4ea37 --- /dev/null +++ b/examples/agent-kit-langgraph/README.md @@ -0,0 +1,83 @@ +# Agent Kit LangGraph Example + +This example demonstrates how to build an advanced Solana agent using LangGraph and the Solana Agent Kit. It showcases a multi-agent system that can handle various Solana-related tasks through a directed workflow. + +## Features + +- Multi-agent architecture using LangGraph's StateGraph +- Specialized agents for different tasks: + - General purpose agent for basic queries + - Transfer/Swap agent for transaction operations + - Read agent for blockchain data queries + - Manager agent for routing and orchestration +- Environment-based configuration +- TypeScript implementation with full type safety + +## Prerequisites + +- Node.js (v16 or higher) +- pnpm package manager +- Solana development environment + +## Installation + +1. Clone the repository and navigate to the example directory: +```bash +cd examples/agent-kit-langgraph +``` + +2. Install dependencies: +```bash +pnpm install +``` + +3. Configure environment variables: +```bash +cp .env.example .env +``` + +Edit the `.env` file with your configuration: +- Add your OpenAI API key +- Configure any other required environment variables + +## Project Structure + +``` +src/ +├── agents/ # Individual agent implementations +├── helper/ # Helper utilities and examples +├── prompts/ # Agent prompts and templates +├── tools/ # Custom tools for agents +└── utils/ # Utility functions and configurations +``` + +## Usage + +To run the example: + +```bash +pnpm dev src/index.ts +``` + +The example demonstrates a workflow where: +1. The manager agent receives the initial query +2. Based on the query type, it routes to the appropriate specialized agent: + - General queries → Generalist Agent + - Transfer/Swap operations → TransferSwap Agent + - Blockchain data queries → Read Agent + +## Dependencies + +- `@langchain/community`: LangChain community tools and utilities +- `@langchain/core`: Core LangChain functionality +- `@langchain/langgraph`: Graph-based agent workflows +- `solana-agent-kit`: Solana Agent Kit for blockchain interactions +- `zod`: Runtime type checking + +## Contributing + +Contributions are welcome! Please feel free to submit a Pull Request. + +## License + +ISC License diff --git a/examples/agent-kit-langgraph/langgraph.json b/examples/agent-kit-langgraph/langgraph.json index 1e630f6..59a83cf 100644 --- a/examples/agent-kit-langgraph/langgraph.json +++ b/examples/agent-kit-langgraph/langgraph.json @@ -1,7 +1,9 @@ { + "node_version": "20", + "dockerfile_lines": [], + "dependencies": ["."], "graphs": { - "solana-agent": "./index.ts:graph" + "solanaAgent": "./src/index.ts:graph" }, - "env": ".env", - "node_version": "20" -} \ No newline at end of file + "env": ".env" + } \ No newline at end of file diff --git a/examples/agent-kit-langgraph/src/agents/readAgent.ts b/examples/agent-kit-langgraph/src/agents/readAgent.ts new file mode 100644 index 0000000..7875c54 --- /dev/null +++ b/examples/agent-kit-langgraph/src/agents/readAgent.ts @@ -0,0 +1,22 @@ +import { createReactAgent } from "@langchain/langgraph/prebuilt"; +import { gpt4o } from "../utils/model"; +import { solanaAgentState } from "../utils/state"; +import { HumanMessage } from "@langchain/core/messages"; +import { agentKit } from "../utils/solanaAgent"; +import { + SolanaBalanceTool, + SolanaFetchPriceTool, +} from "solana-agent-kit/dist/langchain"; + +const readAgent = createReactAgent({ + llm: gpt4o, + tools: [new SolanaBalanceTool(agentKit), new SolanaFetchPriceTool(agentKit)], +}); + +export const readNode = async (state: typeof solanaAgentState.State) => { + const { messages } = state; + + const result = await readAgent.invoke({ messages }); + + return { messages: [...result.messages] }; +}; diff --git a/examples/agent-kit-langgraph/src/helper/examples.ts b/examples/agent-kit-langgraph/src/helper/examples.ts index d88dcd2..5aa86ea 100644 --- a/examples/agent-kit-langgraph/src/helper/examples.ts +++ b/examples/agent-kit-langgraph/src/helper/examples.ts @@ -3,3 +3,7 @@ import { HumanMessage } from "@langchain/core/messages"; export const generalQuestion = [ new HumanMessage("Who is the president of Ecuador?"), ]; + +export const solanaReadQuery = [new HumanMessage("what is the price of SOL")]; + +export const solanaWriteQuery = [new HumanMessage("swap 0.1 usdc to sol")]; diff --git a/examples/agent-kit-langgraph/src/index.ts b/examples/agent-kit-langgraph/src/index.ts index 5ac5302..b57c0c2 100644 --- a/examples/agent-kit-langgraph/src/index.ts +++ b/examples/agent-kit-langgraph/src/index.ts @@ -3,6 +3,7 @@ import { solanaAgentState } from "./utils/state"; import { generalistNode } from "./agents/generalAgent"; import { transferSwapNode } from "./agents/transferOrSwap"; import { managerNode } from "./agents/manager"; +import { readNode } from "./agents/readAgent"; import { START, END } from "@langchain/langgraph"; import { managerRouter } from "./utils/route"; import { HumanMessage } from "@langchain/core/messages"; @@ -11,15 +12,17 @@ const workflow = new StateGraph(solanaAgentState) .addNode("generalist", generalistNode) .addNode("manager", managerNode) .addNode("transferSwap", transferSwapNode) + .addNode("read", readNode) .addEdge(START, "manager") .addConditionalEdges("manager", managerRouter) .addEdge("generalist", END) - .addEdge("transferSwap", END); + .addEdge("transferSwap", END) + .addEdge("read", END); export const graph = workflow.compile(); const result = await graph.invoke({ - messages: [new HumanMessage("swap 0.1 usdc to sol")], + messages: [new HumanMessage("what is the price of SOL")], }); console.log(result); diff --git a/examples/agent-kit-langgraph/src/utils/route.ts b/examples/agent-kit-langgraph/src/utils/route.ts index bb45fae..31aefb0 100644 --- a/examples/agent-kit-langgraph/src/utils/route.ts +++ b/examples/agent-kit-langgraph/src/utils/route.ts @@ -8,6 +8,8 @@ export const managerRouter = (state: typeof solanaAgentState.State) => { return "generalist"; } else if (isSolanaWriteQuery) { return "transferSwap"; + } else if (isSolanaReadQuery) { + return "read"; } else { return END; } From 041953c1d52ff701ffaba483734c26d51d87c411 Mon Sep 17 00:00:00 2001 From: Deepak Date: Fri, 27 Dec 2024 17:45:28 +0530 Subject: [PATCH 15/23] Added documentation --- README.md | 17 +++++++++++++++++ examples/agent-kit-langgraph/README.md | 4 +++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6aa9d99..33685e0 100644 --- a/README.md +++ b/README.md @@ -202,6 +202,23 @@ const price = await agent.pythFetchPrice( console.log("Price in BTC/USD:", price); ``` +## Examples + +### LangGraph Multi-Agent System + +The repository includes an advanced example of building a multi-agent system using LangGraph and Solana Agent Kit. Located in `examples/agent-kit-langgraph`, this example demonstrates: + +- Multi-agent architecture using LangGraph's StateGraph +- Specialized agents for different tasks: + - General purpose agent for basic queries + - Transfer/Swap agent for transaction operations + - Read agent for blockchain data queries + - Manager agent for routing and orchestration +- Fully typed TypeScript implementation +- Environment-based configuration + +Check out the [LangGraph example](examples/agent-kit-langgraph) for a complete implementation of an advanced Solana agent system. + ## Dependencies The toolkit relies on several key Solana and Metaplex libraries: diff --git a/examples/agent-kit-langgraph/README.md b/examples/agent-kit-langgraph/README.md index cd4ea37..6bf7836 100644 --- a/examples/agent-kit-langgraph/README.md +++ b/examples/agent-kit-langgraph/README.md @@ -6,7 +6,7 @@ This example demonstrates how to build an advanced Solana agent using LangGraph - Multi-agent architecture using LangGraph's StateGraph - Specialized agents for different tasks: - - General purpose agent for basic queries + - General purpose agent for basic queries (with optional Tavily search integration) - Transfer/Swap agent for transaction operations - Read agent for blockchain data queries - Manager agent for routing and orchestration @@ -38,6 +38,7 @@ cp .env.example .env Edit the `.env` file with your configuration: - Add your OpenAI API key +- Add your Tavily API key (optional, enables web search capabilities) - Configure any other required environment variables ## Project Structure @@ -69,6 +70,7 @@ The example demonstrates a workflow where: ## Dependencies - `@langchain/community`: LangChain community tools and utilities + - Includes Tavily search integration for enhanced query responses - `@langchain/core`: Core LangChain functionality - `@langchain/langgraph`: Graph-based agent workflows - `solana-agent-kit`: Solana Agent Kit for blockchain interactions From e9c1d3067a16c2f15d7fc02a7c70ba99b9ca6c20 Mon Sep 17 00:00:00 2001 From: Deepak Date: Fri, 27 Dec 2024 18:02:54 +0530 Subject: [PATCH 16/23] added architecture --- examples/agent-kit-langgraph/README.md | 2 ++ .../assets/architecture.png | Bin 0 -> 218001 bytes 2 files changed, 2 insertions(+) create mode 100644 examples/agent-kit-langgraph/assets/architecture.png diff --git a/examples/agent-kit-langgraph/README.md b/examples/agent-kit-langgraph/README.md index 6bf7836..878fdb9 100644 --- a/examples/agent-kit-langgraph/README.md +++ b/examples/agent-kit-langgraph/README.md @@ -2,6 +2,8 @@ This example demonstrates how to build an advanced Solana agent using LangGraph and the Solana Agent Kit. It showcases a multi-agent system that can handle various Solana-related tasks through a directed workflow. +![Solana Agent Kit LangGraph Architecture](./assets/architecture.png) + ## Features - Multi-agent architecture using LangGraph's StateGraph diff --git a/examples/agent-kit-langgraph/assets/architecture.png b/examples/agent-kit-langgraph/assets/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..7259a6bc4a2808128226e99a77dd6318f99bb84c GIT binary patch literal 218001 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
6o^fGyFQWiY`cf}K|B8R@S@W>YSQIsVdR;F69 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%0Agq!y{DL^^Sjr%@YuiUkOk00KotOjBHMu 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 V= Date: Fri, 27 Dec 2024 16:37:51 +0100 Subject: [PATCH 17/23] Fix outdated docs code, add filename hints --- guides/add_your_own_tool.md | 12 ++++++------ guides/test_it_out.md | 16 +++++++++------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/guides/add_your_own_tool.md b/guides/add_your_own_tool.md index 6c41606..67f7772 100644 --- a/guides/add_your_own_tool.md +++ b/guides/add_your_own_tool.md @@ -18,7 +18,7 @@ Extending the **Solana Agent Kit** with custom tools allows you to add specializ Create a new TypeScript file in the `src/tools/` directory for your tool (e.g., `custom_tool.ts`). ### 2. Implement the Tool Class - +> `src/langchain/index.ts` ```typescript:src/langchain/index.ts import { Tool } from "langchain/tools"; import { SolanaAgentKit } from "../agent"; @@ -51,7 +51,7 @@ export class CustomTool extends Tool { ``` ### 3. Add Supporting Functions to SolanaAgentKit - +> `src/agent/index.ts` ```typescript:src/agent/index.ts export class SolanaAgentKit { // ... existing code ... @@ -64,7 +64,7 @@ export class SolanaAgentKit { ``` ### 4. Export the Tool - +> `src/tools/index.ts` ```typescript:src/tools/index.ts export * from "./request_faucet_funds"; export * from "./deploy_token"; @@ -72,7 +72,7 @@ export * from "./custom_tool"; // Add your new tool ``` ### 5. Integrate with Agent - +> `src/langchain/index.ts` ```typescript:src/langchain/index.ts import { CustomTool } from "../tools/custom_tool"; @@ -117,7 +117,7 @@ if (customTool) { ## Example: Token Price Fetching Tool Here's a complete example of implementing a tool to fetch token prices: - +> `src/tools/fetch_token_price.ts` ```typescript:src/tools/fetch_token_price.ts import { Tool } from "langchain/tools"; import { SolanaAgentKit } from "../agent"; @@ -150,7 +150,7 @@ export class FetchTokenPriceTool extends Tool { ``` Add the supporting function to SolanaAgentKit: - +> `src/agent/index.ts` ```typescript:src/agent/index.ts export class SolanaAgentKit { async getTokenPrice(tokenSymbol: string): Promise { diff --git a/guides/test_it_out.md b/guides/test_it_out.md index 02f8151..47504b1 100644 --- a/guides/test_it_out.md +++ b/guides/test_it_out.md @@ -49,12 +49,12 @@ The project includes a test script located at `test/index.ts`. To execute the te ### Token Deployment ```typescript -import { deploy_token } from "solana-agent-kit"; +import { SolanaAgentKit } from "solana-agent-kit"; -const result = await deploy_token( - agent, - 9, // decimals - 1000000 // initial supply +const agent = new SolanaAgentKit("your_private_key"); + +const result = await agent.deployToken( + 9, // decimals ); console.log("Token Mint Address:", result.mint.toString()); @@ -62,9 +62,11 @@ console.log("Token Mint Address:", result.mint.toString()); ### NFT Collection Creation ```typescript -import { deploy_collection } from "solana-agent-kit"; +import { SolanaAgentKit } from "solana-agent-kit"; -const collection = await deploy_collection(agent, { +const agent = new SolanaAgentKit("your_private_key"); + +const collection = await agent.deployCollection({ name: "My NFT Collection", uri: "https://arweave.net/metadata.json", royaltyBasisPoints: 500, // 5% From 5ba8df51d4963faeff93950e159e0f3f5c1d7b98 Mon Sep 17 00:00:00 2001 From: Damjan Date: Fri, 27 Dec 2024 16:41:46 +0100 Subject: [PATCH 18/23] Update code snippets for adding new tools --- guides/add_your_own_tool.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/guides/add_your_own_tool.md b/guides/add_your_own_tool.md index 67f7772..ba7a7c6 100644 --- a/guides/add_your_own_tool.md +++ b/guides/add_your_own_tool.md @@ -104,6 +104,10 @@ if (customTool) { const result = await customTool._call("your-input"); console.log(result); } + +// or alternatively +const result = await agent.customFunction("your-input"); // assuming you have a `customFunction` method in SolanaAgentKit +console.log(result); ``` ## Best Practices @@ -170,6 +174,21 @@ export class SolanaAgentKit { } ``` +Then it can be used as such: + +```typescript +import { SolanaAgentKit } from "solana-agent-kit"; + +const agent = new SolanaAgentKit( + "your-wallet-private-key-as-base58", + "https://api.mainnet-beta.solana.com", + "your-openai-api-key" +); + +const result = await agent.getTokenPrice("SOL"); +console.log(result); +``` + ## Need Help? If you encounter any issues while implementing your custom tool: From 6f687187e6d12771c7c83d003b589071bd56f3ad Mon Sep 17 00:00:00 2001 From: aryan Date: Sat, 28 Dec 2024 00:54:50 +0530 Subject: [PATCH 19/23] fix: lint --- src/agent/index.ts | 5 +- src/langchain/index.ts | 18 ++- src/tools/index.ts | 2 +- src/tools/rock_paper_scissor.ts | 224 ++++++++++++++++---------------- 4 files changed, 131 insertions(+), 118 deletions(-) diff --git a/src/agent/index.ts b/src/agent/index.ts index 6cfbfb2..f930e40 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -339,7 +339,10 @@ export class SolanaAgentKit { ); } - async rockPaperScissors(amount: number, choice: "rock" | "paper" | "scissors") { + async rockPaperScissors( + amount: number, + choice: "rock" | "paper" | "scissors", + ) { return rock_paper_scissor(this, amount, choice); } } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 11413a4..dfefd57 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1230,11 +1230,12 @@ export class SolanaCreateGibworkTask extends Tool { } export class SolanaRockPaperScissorsTool extends Tool { - name = "rock_paper_scissors_blink"; - description = `Play rock paper scissors to win the SEND coin. - Inputs(convert the input to a json string): + name = "rock_paper_scissors"; + description = `Play rock paper scissors to win SEND coins. + + Inputs (input is a JSON string): choice: string, either "rock", "paper", or "scissors" (required) - amount: number, amount of SOL to play the game with, either 0.1, 0.01, or 0.005 SOL (required)`; + amount: number, amount of SOL to play with - must be 0.1, 0.01, or 0.005 SOL (required)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -1242,7 +1243,7 @@ export class SolanaRockPaperScissorsTool extends Tool { private validateInput(input: any): void { if (input.choice !== undefined) { - throw new Error('choice is required.'); + throw new Error("choice is required."); } if ( input.amount !== undefined && @@ -1258,9 +1259,12 @@ export class SolanaRockPaperScissorsTool extends Tool { this.validateInput(parsedInput); const result = await this.solanaKit.rockPaperScissors( Number(parsedInput['"amount"']), - parsedInput['"choice"'].replace(/^"|"$/g, '') as "rock" | "paper" | "scissors" + parsedInput['"choice"'].replace(/^"|"$/g, "") as + | "rock" + | "paper" + | "scissors", ); - + return JSON.stringify({ status: "success", message: result, diff --git a/src/tools/index.ts b/src/tools/index.ts index 10e9ff7..48662af 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -38,4 +38,4 @@ export * from "./pyth_fetch_price"; export * from "./create_gibwork_task"; -export * from "./rock_paper_scissor"; \ No newline at end of file +export * from "./rock_paper_scissor"; diff --git a/src/tools/rock_paper_scissor.ts b/src/tools/rock_paper_scissor.ts index b5f1c0a..8a0603e 100644 --- a/src/tools/rock_paper_scissor.ts +++ b/src/tools/rock_paper_scissor.ts @@ -2,125 +2,131 @@ import { sendAndConfirmTransaction, Transaction } from "@solana/web3.js"; import { SolanaAgentKit } from "../agent"; export async function rock_paper_scissor( - agent: SolanaAgentKit, - amount: number, - choice: "rock" | "paper" | "scissors", + agent: SolanaAgentKit, + amount: number, + choice: "rock" | "paper" | "scissors", ) { - try { - const res = await fetch( - `https://rps.sendarcade.fun/api/actions/bot?amount=${amount}&choice=${choice}`, - { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - account: agent.wallet.publicKey.toBase58(), - }), - }, - ); + try { + const res = await fetch( + `https://rps.sendarcade.fun/api/actions/bot?amount=${amount}&choice=${choice}`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + }), + }, + ); - const data = await res.json(); - if (data.transaction) { - const txn = Transaction.from(Buffer.from(data.transaction, "base64")); - txn.sign(agent.wallet); - txn.recentBlockhash = ( - await agent.connection.getLatestBlockhash() - ).blockhash; - const sig = await sendAndConfirmTransaction( - agent.connection, - txn, - [agent.wallet], - { commitment: 'confirmed' } - ); - let href = data.links?.next?.href; - return await outcome(agent, sig, href); - } else { - return "failed"; - } - } catch (error: any) { - console.error(error); - throw new Error(`RPS game failed: ${error.message}`); + const data = await res.json(); + if (data.transaction) { + const txn = Transaction.from(Buffer.from(data.transaction, "base64")); + txn.sign(agent.wallet); + txn.recentBlockhash = ( + await agent.connection.getLatestBlockhash() + ).blockhash; + const sig = await sendAndConfirmTransaction( + agent.connection, + txn, + [agent.wallet], + { commitment: "confirmed" }, + ); + const href = data.links?.next?.href; + return await outcome(agent, sig, href); + } else { + return "failed"; } + } catch (error: any) { + console.error(error); + throw new Error(`RPS game failed: ${error.message}`); + } } -async function outcome(agent: SolanaAgentKit, sig: string, href: string): Promise { - try { - const res = await fetch( - "https://rps.sendarcade.fun" + href, // href = /api/actions/outcome?id=... - { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - account: agent.wallet.publicKey.toBase58(), - signature: sig, - }), - }, - ); +async function outcome( + agent: SolanaAgentKit, + sig: string, + href: string, +): Promise { + try { + const res = await fetch( + "https://rps.sendarcade.fun" + href, // href = /api/actions/outcome?id=... + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + signature: sig, + }), + }, + ); - const data: any = await res.json(); - const title = data.title; - if (title.startsWith("You lost")) { - return title; - } - let next_href = data.links?.actions?.[0]?.href; - return title + "\n" + await won(agent, next_href) - } catch (error: any) { - console.error(error); - throw new Error(`RPS outcome failed: ${error.message}`); + const data: any = await res.json(); + const title = data.title; + if (title.startsWith("You lost")) { + return title; } + const next_href = data.links?.actions?.[0]?.href; + return title + "\n" + (await won(agent, next_href)); + } catch (error: any) { + console.error(error); + throw new Error(`RPS outcome failed: ${error.message}`); + } } async function won(agent: SolanaAgentKit, href: string): Promise { - try { - const res = await fetch( - "https://rps.sendarcade.fun" + href, // href = /api/actions/won?id=... - { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - account: agent.wallet.publicKey.toBase58(), - }), - }, - ); + try { + const res = await fetch( + "https://rps.sendarcade.fun" + href, // href = /api/actions/won?id=... + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + }), + }, + ); - const data: any = await res.json(); - if (data.transaction) { - const txn = Transaction.from(Buffer.from(data.transaction, "base64")); - txn.partialSign(agent.wallet); - await agent.connection.sendRawTransaction(txn.serialize(),{ preflightCommitment: 'confirmed' }); } - else { - return "Failed to claim prize."; - } - let next_href = data.links?.next?.href; - return await postWin(agent, next_href); - } catch (error: any) { - console.error(error); - throw new Error(`RPS outcome failed: ${error.message}`); + const data: any = await res.json(); + if (data.transaction) { + const txn = Transaction.from(Buffer.from(data.transaction, "base64")); + txn.partialSign(agent.wallet); + await agent.connection.sendRawTransaction(txn.serialize(), { + preflightCommitment: "confirmed", + }); + } else { + return "Failed to claim prize."; } + const next_href = data.links?.next?.href; + return await postWin(agent, next_href); + } catch (error: any) { + console.error(error); + throw new Error(`RPS outcome failed: ${error.message}`); + } } async function postWin(agent: SolanaAgentKit, href: string): Promise { - try { - const res = await fetch( - "https://rps.sendarcade.fun" + href, // href = /api/actions/postwin?id=... - { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - account: agent.wallet.publicKey.toBase58(), - }), - }, - ); + try { + const res = await fetch( + "https://rps.sendarcade.fun" + href, // href = /api/actions/postwin?id=... + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + }), + }, + ); - const data: any = await res.json(); - const title = data.title; - return "Prize claimed Successfully" + "\n" + title; - } catch (error: any) { - console.error(error); - throw new Error(`RPS outcome failed: ${error.message}`); - } -} \ No newline at end of file + const data: any = await res.json(); + const title = data.title; + return "Prize claimed Successfully" + "\n" + title; + } catch (error: any) { + console.error(error); + throw new Error(`RPS outcome failed: ${error.message}`); + } +} From e1f7c530ac0ae13a6cb3d17f5db4f781b9964a00 Mon Sep 17 00:00:00 2001 From: aryan Date: Sat, 28 Dec 2024 01:10:15 +0530 Subject: [PATCH 20/23] chore: docs --- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 14 +++++++------ docs/functions/createSolanaTools.html | 2 +- docs/index.html | 21 ++++++++++++++----- docs/interfaces/CollectionDeployment.html | 4 ++-- docs/interfaces/CollectionOptions.html | 4 ++-- docs/interfaces/Creator.html | 4 ++-- docs/interfaces/FetchPriceResponse.html | 4 ++-- docs/interfaces/GibworkCreateTaskReponse.html | 4 ++++ docs/interfaces/JupiterTokenData.html | 4 ++-- .../LuloAccountDetailsResponse.html | 4 ++-- .../interfaces/MintCollectionNFTResponse.html | 4 ++-- docs/interfaces/PumpFunTokenOptions.html | 4 ++-- docs/interfaces/PumpfunLaunchResponse.html | 4 ++-- docs/interfaces/PythFetchPriceResponse.html | 4 ++-- docs/modules.html | 1 + 17 files changed, 52 insertions(+), 34 deletions(-) create mode 100644 docs/interfaces/GibworkCreateTaskReponse.html diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index bcaae4e..54693ba 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE42TwU7DMAyG3yXniooJJtTbRNUDDJigN8QhCi6JltpR40hMaO+OtiFYWebtkos/f7asP69fiuGTVaVeyGvUsw9AvnesChU0W1Up43WMEMtx/cJy71Whlg7fVXU5uVkXv6Zb8h4MO8IagqdVD7jnc8gwdNpALHPgWDy5nmbFT2HzxhPWH0pUDqCZhrxoV5PaG2BjF4Mz8AwxEEbImg4xSXqXgmMYWloC1pp1VvkfkoTz5GlmDCXkGlg7H8Vtj+PSkAeH/Hf6x6YVZxylpRGL1Icu4VwnNFbUZ8lT6ibh9pxSuDKcqF2xPTMjeVSSm00+YfcvWyK/t3GXcHvYWB5AY+P0av32DUTvPWMEBAAA" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE42TwU7DMAyG3yXniooJJtTbRFUkGDCN3hCHEFwaNXWixBFMaO+O6BCsLPW45OIv3x/ZzuOHIHgnUYgHayTKxSsg3WgSmXCSWlEIZWQIEPJx/aSl3ohMdBpfRHE6u9hmP6ZLawwo0hZLcMZuesA9n0YC30gFIU+BY/HsfJ4U37uvMxyxflOs0oMk69OiXY27XgGpduW1gjUEZzFA0nSIcdIr/fxmfTfEQy1Dt4Zp9RTMBVxHpwl8bTvAUpJMiv9CnHAZjV0oZSNSCSS1CWw7pnEu5FYj/c72rqrZjEmai1jF3jURlzKiall9kjymriIO7eS2N8Gx2g21/1zCNMrJ1bBUu49fW2v2XtxEHBob8gNobJyfbZ8+AWWuiIJlBAAA" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index b0786c5..ca9eed4 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index eccbc8c..ee667a3 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,12 +1,13 @@ SolanaAgentKit | solana-agent-kit

Class SolanaAgentKit

Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, trading and more

SolanaAgentKit

-

Constructors

Constructors

  • Parameters

    • private_key: string
    • rpc_url: string = "https://api.mainnet-beta.solana.com"
    • openai_api_key: string

    Returns SolanaAgentKit

Properties

connection: Connection

Solana RPC connection

-
openai_api_key: string
wallet: Keypair

Wallet keypair for signing transactions

-
wallet_address: PublicKey

Public key of the wallet

-

Methods

  • Parameters

    • depositTokenAmount: BN
    • depositTokenMint: PublicKey
    • otherTokenMint: PublicKey
    • initialPrice: Decimal
    • maxPrice: Decimal
    • feeTier:
          | 0.01
          | 0.02
          | 0.04
          | 0.05
          | 0.16
          | 0.3
          | 0.65
          | 1
          | 2

    Returns Promise<string>

  • Parameters

    • name: string
    • uri: string
    • symbol: string
    • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
    • OptionalinitialSupply: number

    Returns Promise<{
        mint: PublicKey;
    }>

  • Parameters

    • mint: string

    Returns Promise<string>

  • Returns Promise<String[]>

  • Returns Promise<string[]>

  • Parameters

    • Optionaltoken_address: PublicKey

    Returns Promise<number>

  • Parameters

    • owner: PublicKey

    Returns Promise<null | string>

  • Parameters

    • owner: PublicKey

    Returns Promise<string[]>

  • Parameters

    • tld: string

    Returns Promise<string[]>

  • Parameters

    • account: PublicKey

    Returns Promise<string>

  • Parameters

    • amount: number

    Returns Promise<string>

  • Parameters

    • collectionMint: PublicKey
    • metadata: {
          creators?: {
              address: string;
              share: number;
          }[];
          name: string;
          sellerFeeBasisPoints?: number;
          uri: string;
      }
      • Optionalcreators?: {
            address: string;
            share: number;
        }[]
      • name: string
      • OptionalsellerFeeBasisPoints?: number
      • uri: string
    • Optionalrecipient: PublicKey

    Returns Promise<MintCollectionNFTResponse>

  • Parameters

    • baseMint: PublicKey
    • quoteMint: PublicKey
    • lotSize: number = 1
    • tickSize: number = 0.01

    Returns Promise<string[]>

  • Parameters

    • priceFeedID: string

    Returns Promise<string>

  • Parameters

    • marketId: PublicKey
    • baseAmount: BN
    • quoteAmount: BN
    • startTime: BN

    Returns Promise<string>

  • Parameters

    • mint1: PublicKey
    • mint2: PublicKey
    • configId: PublicKey
    • initialPrice: Decimal
    • startTime: BN

    Returns Promise<string>

  • Parameters

    • mint1: PublicKey
    • mint2: PublicKey
    • configId: PublicKey
    • mintAAmount: BN
    • mintBAmount: BN
    • startTime: BN

    Returns Promise<string>

  • Parameters

    • name: string
    • OptionalspaceKB: number

    Returns Promise<string>

  • Returns Promise<string>

  • Parameters

    • domain: string

    Returns Promise<undefined | PublicKey>

  • Parameters

    • domain: string

    Returns Promise<PublicKey>

  • Parameters

    • mintAddress: string
    • amount: number
    • decimals: number
    • recipients: string[]
    • priorityFeeInLamports: number
    • shouldLog: boolean

    Returns Promise<string[]>

  • Parameters

    • amount: number

    Returns Promise<string>

  • Parameters

    • outputMint: PublicKey
    • inputAmount: number
    • OptionalinputMint: PublicKey
    • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

    Returns Promise<string>

  • Parameters

    • to: PublicKey
    • amount: number
    • Optionalmint: PublicKey

    Returns Promise<string>

+

Constructors

  • Parameters

    • private_key: string
    • rpc_url: string = "https://api.mainnet-beta.solana.com"
    • openai_api_key: string

    Returns SolanaAgentKit

Properties

connection: Connection

Solana RPC connection

+
openai_api_key: string
wallet: Keypair

Wallet keypair for signing transactions

+
wallet_address: PublicKey

Public key of the wallet

+

Methods

  • Parameters

    • title: string
    • content: string
    • requirements: string
    • tags: string[]
    • tokenMintAddress: string
    • tokenAmount: number
    • Optionalpayer: string

    Returns Promise<GibworkCreateTaskReponse>

  • Parameters

    • depositTokenAmount: BN
    • depositTokenMint: PublicKey
    • otherTokenMint: PublicKey
    • initialPrice: Decimal
    • maxPrice: Decimal
    • feeTier:
          | 0.01
          | 0.02
          | 0.04
          | 0.05
          | 0.16
          | 0.3
          | 0.65
          | 1
          | 2

    Returns Promise<string>

  • Parameters

    • name: string
    • uri: string
    • symbol: string
    • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
    • OptionalinitialSupply: number

    Returns Promise<{
        mint: PublicKey;
    }>

  • Parameters

    • mint: string

    Returns Promise<string>

  • Returns Promise<String[]>

  • Returns Promise<string[]>

  • Parameters

    • Optionaltoken_address: PublicKey

    Returns Promise<number>

  • Parameters

    • owner: PublicKey

    Returns Promise<null | string>

  • Parameters

    • owner: PublicKey

    Returns Promise<string[]>

  • Parameters

    • tld: string

    Returns Promise<string[]>

  • Parameters

    • account: PublicKey

    Returns Promise<string>

  • Parameters

    • amount: number

    Returns Promise<string>

  • Parameters

    • collectionMint: PublicKey
    • metadata: {
          creators?: {
              address: string;
              share: number;
          }[];
          name: string;
          sellerFeeBasisPoints?: number;
          uri: string;
      }
      • Optionalcreators?: {
            address: string;
            share: number;
        }[]
      • name: string
      • OptionalsellerFeeBasisPoints?: number
      • uri: string
    • Optionalrecipient: PublicKey

    Returns Promise<MintCollectionNFTResponse>

  • Parameters

    • baseMint: PublicKey
    • quoteMint: PublicKey
    • lotSize: number = 1
    • tickSize: number = 0.01

    Returns Promise<string[]>

  • Parameters

    • priceFeedID: string

    Returns Promise<string>

  • Parameters

    • marketId: PublicKey
    • baseAmount: BN
    • quoteAmount: BN
    • startTime: BN

    Returns Promise<string>

  • Parameters

    • mint1: PublicKey
    • mint2: PublicKey
    • configId: PublicKey
    • initialPrice: Decimal
    • startTime: BN

    Returns Promise<string>

  • Parameters

    • mint1: PublicKey
    • mint2: PublicKey
    • configId: PublicKey
    • mintAAmount: BN
    • mintBAmount: BN
    • startTime: BN

    Returns Promise<string>

  • Parameters

    • name: string
    • OptionalspaceKB: number

    Returns Promise<string>

  • Returns Promise<string>

  • Parameters

    • domain: string

    Returns Promise<undefined | PublicKey>

  • Parameters

    • domain: string

    Returns Promise<PublicKey>

  • Parameters

    • amount: number
    • choice: "rock" | "paper" | "scissors"

    Returns Promise<string>

  • Parameters

    • mintAddress: string
    • amount: number
    • decimals: number
    • recipients: string[]
    • priorityFeeInLamports: number
    • shouldLog: boolean

    Returns Promise<string[]>

  • Parameters

    • amount: number

    Returns Promise<string>

  • Parameters

    • outputMint: PublicKey
    • inputAmount: number
    • OptionalinputMint: PublicKey
    • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

    Returns Promise<string>

  • Parameters

    • to: PublicKey
    • amount: number
    • Optionalmint: PublicKey

    Returns Promise<string>

diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index e52f87a..3d232de 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

Function createSolanaTools

  • Parameters

    Returns (
        | SolanaBalanceTool
        | SolanaTransferTool
        | SolanaDeployTokenTool
        | SolanaDeployCollectionTool
        | SolanaMintNFTTool
        | SolanaTradeTool
        | SolanaRequestFundsTool
        | SolanaRegisterDomainTool
        | SolanaResolveDomainTool
        | SolanaGetDomainTool
        | SolanaGetWalletAddressTool
        | SolanaPumpfunTokenLaunchTool
        | SolanaCreateImageTool
        | SolanaLendAssetTool
        | SolanaTPSCalculatorTool
        | SolanaStakeTool
        | SolanaFetchPriceTool
        | SolanaTokenDataTool
        | SolanaTokenDataByTickerTool
        | SolanaCompressedAirdropTool
        | SolanaCreateSingleSidedWhirlpoolTool
        | SolanaRaydiumCreateAmmV4
        | SolanaRaydiumCreateClmm
        | SolanaRaydiumCreateCpmm
        | SolanaOpenbookCreateMarket
        | SolanaPythFetchPrice
        | SolanaResolveAllDomainsTool
        | SolanaGetOwnedDomains
        | SolanaGetOwnedTldDomains
        | SolanaGetAllTlds
        | SolanaGetMainDomain)[]

+createSolanaTools | solana-agent-kit

Function createSolanaTools

  • Parameters

    Returns (
        | SolanaBalanceTool
        | SolanaTransferTool
        | SolanaDeployTokenTool
        | SolanaDeployCollectionTool
        | SolanaMintNFTTool
        | SolanaTradeTool
        | SolanaRequestFundsTool
        | SolanaRegisterDomainTool
        | SolanaResolveDomainTool
        | SolanaGetDomainTool
        | SolanaGetWalletAddressTool
        | SolanaPumpfunTokenLaunchTool
        | SolanaCreateImageTool
        | SolanaLendAssetTool
        | SolanaTPSCalculatorTool
        | SolanaStakeTool
        | SolanaFetchPriceTool
        | SolanaTokenDataTool
        | SolanaTokenDataByTickerTool
        | SolanaCompressedAirdropTool
        | SolanaCreateSingleSidedWhirlpoolTool
        | SolanaRaydiumCreateAmmV4
        | SolanaRaydiumCreateClmm
        | SolanaRaydiumCreateCpmm
        | SolanaOpenbookCreateMarket
        | SolanaPythFetchPrice
        | SolanaResolveAllDomainsTool
        | SolanaGetOwnedDomains
        | SolanaGetOwnedTldDomains
        | SolanaGetAllTlds
        | SolanaGetMainDomain
        | SolanaCreateGibworkTask
        | SolanaRockPaperScissorsTool)[]

diff --git a/docs/index.html b/docs/index.html index 7dd0878..f76a141 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,6 +1,9 @@ solana-agent-kit

solana-agent-kit

-

Solana Agent Kit

-

Solana Agent Kit Cover 1 (3)

+

Solana Agent Kit

Solana Agent Kit Cover 1 (3)

+

NPM Downloads +GitHub forks +GitHub License

+

An open-source toolkit for connecting AI agents to Solana protocols. Now, any agent, using any model can autonomously perform 15+ Solana actions:

  • Trade tokens
  • @@ -38,21 +41,29 @@
  • Jupiter Exchange swaps
  • Launch on Pump via PumpPortal
  • Raydium pool creation (CPMM, CLMM, AMMv4)
  • -
  • Orca whirlpool integration
  • +
  • Orca Whirlpool integration
  • Meteora Dynamic AMM, DLMM Pool, and Alpga Vault
  • Openbook market creation
  • Register and Resolve SNS
  • Jito Bundles
  • +
  • Pyth Price feeds for fetching Asset Prices
  • +
  • Register/resolve Alldomains
  • Solana Blinks

      -
    • Lending by Lulo
    • +
    • Lending by Lulon (Best APR for USDC)
    • Send Arcade Games
    • JupSOL staking
  • +
  • +

    Non-Financial Actions

    +
      +
    • Gib Work for registering bounties
    • +
    +
    • @@ -123,6 +134,6 @@

    Contributions are welcome! Please feel free to submit a Pull Request. Refer to CONTRIBUTING.md for detailed guidelines on how to contribute to this project.

    -

    MIT License

    +

    Apache-2 License

    This toolkit handles private keys and transactions. Always ensure you're using it in a secure environment and never share your private keys.

    diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index c03b39a..29b61fd 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array<ArrayBufferLike>;
    }

    Properties

    collectionAddress +CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array<ArrayBufferLike>;
    }

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array<ArrayBufferLike>
    +

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array<ArrayBufferLike>
    diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index 6790105..cd68d7c 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators? +CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    +

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index 4e33592..1ca2327 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    address +Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    Properties

    address: string
    percentage: number
    +

    Properties

    address: string
    percentage: number
    diff --git a/docs/interfaces/FetchPriceResponse.html b/docs/interfaces/FetchPriceResponse.html index defd401..d8f47aa 100644 --- a/docs/interfaces/FetchPriceResponse.html +++ b/docs/interfaces/FetchPriceResponse.html @@ -1,6 +1,6 @@ -FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code? +FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    +

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    diff --git a/docs/interfaces/GibworkCreateTaskReponse.html b/docs/interfaces/GibworkCreateTaskReponse.html new file mode 100644 index 0000000..21b20a3 --- /dev/null +++ b/docs/interfaces/GibworkCreateTaskReponse.html @@ -0,0 +1,4 @@ +GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    diff --git a/docs/interfaces/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index 2b23375..5fb093f 100644 --- a/docs/interfaces/JupiterTokenData.html +++ b/docs/interfaces/JupiterTokenData.html @@ -1,4 +1,4 @@ -JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: {
            coingeckoId?: string;
        };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address +JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: {
            coingeckoId?: string;
        };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: {
        coingeckoId?: string;
    }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    +

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: {
        coingeckoId?: string;
    }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index fa19d62..c2cb0f3 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ LuloAccountDetailsResponse | solana-agent-kit

    Interface LuloAccountDetailsResponse

    Lulo Account Details response format

    -
    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    +

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index e2e1479..21a824b 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    metadata +MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    Properties

    metadata: PublicKey
    mint: PublicKey
    +

    Properties

    metadata: PublicKey
    mint: PublicKey
    diff --git a/docs/interfaces/PumpFunTokenOptions.html b/docs/interfaces/PumpFunTokenOptions.html index d1c0142..7129d66 100644 --- a/docs/interfaces/PumpFunTokenOptions.html +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -1,7 +1,7 @@ -PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL? +PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    +

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html index f667de7..c57904b 100644 --- a/docs/interfaces/PumpfunLaunchResponse.html +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -1,5 +1,5 @@ -PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error? +PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    +

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    diff --git a/docs/interfaces/PythFetchPriceResponse.html b/docs/interfaces/PythFetchPriceResponse.html index fcfb217..e51038b 100644 --- a/docs/interfaces/PythFetchPriceResponse.html +++ b/docs/interfaces/PythFetchPriceResponse.html @@ -1,6 +1,6 @@ -PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID: string;
        status: "success" | "error";
    }

    Properties

    code? +PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID: string;
        status: "success" | "error";
    }

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID: string
    status: "success" | "error"
    +

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID: string
    status: "success" | "error"
    diff --git a/docs/modules.html b/docs/modules.html index 29440e3..fba41cb 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -3,6 +3,7 @@ CollectionOptions Creator FetchPriceResponse +GibworkCreateTaskReponse JupiterTokenData LuloAccountDetailsResponse MintCollectionNFTResponse From 5ab87242fd39ce51a2fb4b8a399d98d9a14f34f7 Mon Sep 17 00:00:00 2001 From: aryan Date: Sat, 28 Dec 2024 01:13:26 +0530 Subject: [PATCH 21/23] fix: lint --- src/agent/index.ts | 4 ++-- src/langchain/index.ts | 11 +++++---- src/tools/create_tiplinks.ts | 46 ++++++++++++++++++++---------------- src/tools/index.ts | 2 +- 4 files changed, 35 insertions(+), 28 deletions(-) diff --git a/src/agent/index.ts b/src/agent/index.ts index a68f988..bf89861 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -346,7 +346,7 @@ export class SolanaAgentKit { ) { return rock_paper_scissor(this, amount, choice); } - async createTiplink(amount: number , splmintAddress?:PublicKey){ - return create_TipLink(this,amount,splmintAddress) + async createTiplink(amount: number, splmintAddress?: PublicKey) { + return create_TipLink(this, amount, splmintAddress); } } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 761feaf..21888bf 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1299,11 +1299,13 @@ export class SolanaTipLinkTool extends Tool { } const amount = parseFloat(parsedInput.amount); - const splmintAddress = parsedInput.splmintAddress ? new PublicKey(parsedInput.splmintAddress) : undefined; + const splmintAddress = parsedInput.splmintAddress + ? new PublicKey(parsedInput.splmintAddress) + : undefined; const { url, signature } = await this.solanaKit.createTiplink( amount, - splmintAddress + splmintAddress, ); return JSON.stringify({ @@ -1312,14 +1314,13 @@ export class SolanaTipLinkTool extends Tool { signature, amount, tokenType: splmintAddress ? "SPL" : "SOL", - message: `TipLink created successfully` + message: `TipLink created successfully`, }); - } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } diff --git a/src/tools/create_tiplinks.ts b/src/tools/create_tiplinks.ts index 0b213b5..20348ad 100644 --- a/src/tools/create_tiplinks.ts +++ b/src/tools/create_tiplinks.ts @@ -7,21 +7,21 @@ import { PublicKey, ComputeBudgetProgram, } from "@solana/web3.js"; -import { - getAssociatedTokenAddress, +import { + getAssociatedTokenAddress, createTransferInstruction, getMint, createAssociatedTokenAccountInstruction, } from "@solana/spl-token"; import { SolanaAgentKit } from "../index"; -const MINIMUM_SOL_BALANCE = 0.003 * LAMPORTS_PER_SOL; +const MINIMUM_SOL_BALANCE = 0.003 * LAMPORTS_PER_SOL; export async function create_TipLink( agent: SolanaAgentKit, amount: number, splmintAddress?: PublicKey, -): Promise<{ url: string, signature: string }> { +): Promise<{ url: string; signature: string }> { try { const tiplink = await TipLink.create(); @@ -34,12 +34,12 @@ export async function create_TipLink( lamports: amount * LAMPORTS_PER_SOL, }), ); - + const signature = await sendAndConfirmTransaction( agent.connection, transaction, [agent.wallet], - { commitment: "confirmed" } + { commitment: "confirmed" }, ); return { @@ -47,18 +47,24 @@ export async function create_TipLink( signature, }; } else { - const fromAta = await getAssociatedTokenAddress(splmintAddress, agent.wallet_address); - const toAta = await getAssociatedTokenAddress(splmintAddress, tiplink.keypair.publicKey); - + const fromAta = await getAssociatedTokenAddress( + splmintAddress, + agent.wallet_address, + ); + const toAta = await getAssociatedTokenAddress( + splmintAddress, + tiplink.keypair.publicKey, + ); + const mintInfo = await getMint(agent.connection, splmintAddress); const adjustedAmount = amount * Math.pow(10, mintInfo.decimals); - + const transaction = new Transaction(); - + transaction.add( ComputeBudgetProgram.setComputeUnitPrice({ - microLamports: 5000 - }) + microLamports: 5000, + }), ); transaction.add( @@ -66,7 +72,7 @@ export async function create_TipLink( fromPubkey: agent.wallet_address, toPubkey: tiplink.keypair.publicKey, lamports: MINIMUM_SOL_BALANCE, - }) + }), ); transaction.add( @@ -74,8 +80,8 @@ export async function create_TipLink( agent.wallet_address, toAta, tiplink.keypair.publicKey, - splmintAddress - ) + splmintAddress, + ), ); transaction.add( @@ -83,15 +89,15 @@ export async function create_TipLink( fromAta, toAta, agent.wallet_address, - adjustedAmount - ) + adjustedAmount, + ), ); const signature = await sendAndConfirmTransaction( agent.connection, transaction, [agent.wallet], - { commitment: "confirmed" } + { commitment: "confirmed" }, ); return { @@ -103,4 +109,4 @@ export async function create_TipLink( console.error("Error creating TipLink or sending funds:", error.message); throw new Error(`Failed to create TipLink: ${error.message}`); } -} \ No newline at end of file +} diff --git a/src/tools/index.ts b/src/tools/index.ts index 73c3bb8..468648e 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -39,4 +39,4 @@ export * from "./pyth_fetch_price"; export * from "./create_gibwork_task"; export * from "./rock_paper_scissor"; -export * from "./create_tiplinks" +export * from "./create_tiplinks"; From 9de0153b9e411d95db21b19db8da104148626f14 Mon Sep 17 00:00:00 2001 From: Arpit Singh Bhatia <84636859+The-x-35@users.noreply.github.com> Date: Sat, 28 Dec 2024 01:41:17 +0530 Subject: [PATCH 22/23] readme --- examples/persistance-agent/.env.example | 1 + examples/persistance-agent/README.md | 66 +++++++++++++++++++++++++ examples/persistance-agent/index.ts | 2 +- 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 examples/persistance-agent/README.md diff --git a/examples/persistance-agent/.env.example b/examples/persistance-agent/.env.example index 1f3564b..4dc4944 100644 --- a/examples/persistance-agent/.env.example +++ b/examples/persistance-agent/.env.example @@ -1,3 +1,4 @@ OPENAI_API_KEY= RPC_URL= SOLANA_PRIVATE_KEY= +POSTGRES_DB_URL= \ No newline at end of file diff --git a/examples/persistance-agent/README.md b/examples/persistance-agent/README.md new file mode 100644 index 0000000..e451c29 --- /dev/null +++ b/examples/persistance-agent/README.md @@ -0,0 +1,66 @@ +# Persistent Agent with PostgreSQL + +This example showcases a persistent agent that retains memory across sessions using a PostgreSQL database. It ensures that the agent can remember previous conversations even after being restarted, enhancing the user experience in applications requiring long-term context retention. +[Reference](https://langchain-ai.github.io/langgraphjs/reference/classes/checkpoint_postgres.PostgresSaver.html) + +## Key Features + +- **Persistent Memory**: The agent stores chat history in a PostgreSQL database, allowing it to remember past interactions across sessions. +- **Seamless Integration**: Designed to integrate smoothly with existing setups. +- **Scalable Solution**: Ideal for applications requiring long-term memory capabilities. + +## Prerequisites + +To use this feature, ensure you have the following: + +1. **PostgreSQL Database URL**: Create and host ur PostgreSQL databse and enter the URL. It will be of the format "postgresql://user:password@localhost:5432/db" + +## Before applying persistance +``` +Available modes: +1. chat +- Interactive chat mode +2. auto +- Autonomous action mode +Choose a mode (enter number or name: 1 +Starting chat mode... Type 'exit' to end. +Prompt: i am arpit +Hello Arpit! How can I assist you today? +Prompt: ^С +® arpitsingh Mac persistance-agent & ts-node index.ts +Starting Agent... +Available modes: +1. chat +- Interactive chat mode +2. auto +- Autonomous action mode +Choose a mode (enter number or name): 1 +Starting chat mode... Type 'exit' to end. +Prompt: do u know my name +I don't know your name yet. If you'd like, you can share it. +``` +## After applying persistence +``` +Available modes: +1. chat +- Interactive chat mode +2. auto +- Autonomous action mode +Choose a mode (enter number or name: 1 +Starting chat mode... Type 'exit' to end. +Prompt: i am arpit +Hello Arpit! How can I assist you today? +Prompt: ^С +® arpitsingh Mac persistance-agent & ts-node index.ts +Starting Agent... +Available modes: +1. chat +- Interactive chat mode +2. auto +- Autonomous action mode +Choose a mode (enter number or name): 1 +Starting chat mode... Type 'exit' to end. +Prompt: do u know my name +Yes, you mentioned that your name is Arpit. How can I help you today? +``` + diff --git a/examples/persistance-agent/index.ts b/examples/persistance-agent/index.ts index 451bef7..d679829 100644 --- a/examples/persistance-agent/index.ts +++ b/examples/persistance-agent/index.ts @@ -9,7 +9,7 @@ import { PostgresSaver } from "@langchain/langgraph-checkpoint-postgres"; dotenv.config(); const checkpointer = PostgresSaver.fromConnString( - "postgresql://user:password@localhost:5432/db" + process.env.POSTGRES_DB_URL! ); function validateEnvironment(): void { From 592c4987df950bccd44d83f242354d66438a84e4 Mon Sep 17 00:00:00 2001 From: Arpit Singh Bhatia <84636859+The-x-35@users.noreply.github.com> Date: Sat, 28 Dec 2024 02:00:49 +0530 Subject: [PATCH 23/23] fix --- examples/persistance-agent/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/persistance-agent/index.ts b/examples/persistance-agent/index.ts index d679829..21badd0 100644 --- a/examples/persistance-agent/index.ts +++ b/examples/persistance-agent/index.ts @@ -14,7 +14,7 @@ const checkpointer = PostgresSaver.fromConnString( function validateEnvironment(): void { const missingVars: string[] = []; - const requiredVars = ["OPENAI_API_KEY", "RPC_URL", "SOLANA_PRIVATE_KEY"]; + const requiredVars = ["OPENAI_API_KEY", "RPC_URL", "SOLANA_PRIVATE_KEY", "POSTGRES_DB_URL"]; requiredVars.forEach((varName) => { if (!process.env[varName]) {