From e0ff4399dfe164e71a1aea5e89687f44ba91b312 Mon Sep 17 00:00:00 2001 From: Swenschaeferjohann Date: Fri, 20 Dec 2024 05:04:43 +0000 Subject: [PATCH] wip airship --- package.json | 8 +- pnpm-lock.yaml | 1145 +++++++++++++++-- src/agent/index.ts | 26 +- src/langchain/index.ts | 42 +- src/tools/airdrop_compressed_tokens/index.ts | 228 ++++ src/tools/airdrop_compressed_tokens/types.ts | 69 + src/tools/airdrop_compressed_tokens/worker.ts | 128 ++ src/tools/index.ts | 3 +- src/utils/send_tx.ts | 9 +- 9 files changed, 1518 insertions(+), 140 deletions(-) create mode 100644 src/tools/airdrop_compressed_tokens/index.ts create mode 100644 src/tools/airdrop_compressed_tokens/types.ts create mode 100644 src/tools/airdrop_compressed_tokens/worker.ts diff --git a/package.json b/package.json index 20375b8..ccc197d 100644 --- a/package.json +++ b/package.json @@ -26,15 +26,21 @@ "@metaplex-foundation/umi-web3js-adapters": "^0.9.2", "@solana/spl-token": "^0.4.9", "@solana/web3.js": "^1.95.4", + "better-sqlite3": "^11.7.0", "bs58": "^6.0.0", "dotenv": "^16.4.5", + "drizzle-orm": "^0.38.2", "form-data": "^4.0.1", + "helius-airship-core": "file:../airship/packages/core", "langchain": "^0.3.6", "openai": "^4.75.0", + "sqlocal": "^0.13.0", "typedoc": "^0.26.11" }, "devDependencies": { + "@types/better-sqlite3": "^7.6.12", "@types/node": "^22.9.0", - "ts-node": "^10.9.2" + "ts-node": "^10.9.2", + "typescript": "^5.7.2" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3aaf95d..d459533 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,19 +10,19 @@ importers: dependencies: '@bonfida/spl-name-service': specifier: ^3.0.7 - version: 3.0.7(@solana/web3.js@1.95.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + version: 3.0.7(@solana/web3.js@1.95.8(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) '@langchain/core': specifier: ^0.3.18 - version: 0.3.23(openai@4.76.3) + version: 0.3.23(openai@4.76.3(zod@3.24.1)) '@langchain/groq': specifier: ^0.1.2 - version: 0.1.2(@langchain/core@0.3.23) + version: 0.1.2(@langchain/core@0.3.23(openai@4.76.3(zod@3.24.1))) '@langchain/langgraph': specifier: ^0.2.27 - version: 0.2.33(@langchain/core@0.3.23) + version: 0.2.33(@langchain/core@0.3.23(openai@4.76.3(zod@3.24.1))) '@langchain/openai': specifier: ^0.3.13 - version: 0.3.14(@langchain/core@0.3.23) + version: 0.3.14(@langchain/core@0.3.23(openai@4.76.3(zod@3.24.1))) '@metaplex-foundation/mpl-core': specifier: ^1.1.1 version: 1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.1) @@ -34,41 +34,59 @@ importers: version: 0.9.2 '@metaplex-foundation/umi-bundle-defaults': specifier: ^0.9.2 - version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8) + version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@metaplex-foundation/umi-web3js-adapters': specifier: ^0.9.2 - version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8) + version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@solana/spl-token': specifier: ^0.4.9 - version: 0.4.9(@solana/web3.js@1.95.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + version: 0.4.9(@solana/web3.js@1.95.8(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': specifier: ^1.95.4 - version: 1.95.8 + version: 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) + better-sqlite3: + specifier: ^11.7.0 + version: 11.7.0 bs58: specifier: ^6.0.0 version: 6.0.0 dotenv: specifier: ^16.4.5 version: 16.4.7 + drizzle-orm: + specifier: ^0.38.2 + version: 0.38.2(@types/better-sqlite3@7.6.12)(better-sqlite3@11.7.0) form-data: specifier: ^4.0.1 version: 4.0.1 + helius-airship-core: + specifier: file:../airship/packages/core + version: file:../airship/packages/core(@types/better-sqlite3@7.6.12)(better-sqlite3@11.7.0)(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) langchain: specifier: ^0.3.6 - version: 0.3.7(@langchain/core@0.3.23)(@langchain/groq@0.1.2)(openai@4.76.3) + version: 0.3.7(@langchain/core@0.3.23(openai@4.76.3(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.23(openai@4.76.3(zod@3.24.1))))(openai@4.76.3(zod@3.24.1)) openai: specifier: ^4.75.0 version: 4.76.3(zod@3.24.1) + sqlocal: + specifier: ^0.13.0 + version: 0.13.0(bufferutil@4.0.8)(drizzle-orm@0.38.2(@types/better-sqlite3@7.6.12)(better-sqlite3@11.7.0))(utf-8-validate@5.0.10) typedoc: specifier: ^0.26.11 - version: 0.26.11(typescript@5.6.3) + version: 0.26.11(typescript@5.7.2) devDependencies: + '@types/better-sqlite3': + specifier: ^7.6.12 + version: 7.6.12 '@types/node': specifier: ^22.9.0 version: 22.10.2 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@22.10.2)(typescript@5.6.3) + version: 10.9.2(@types/node@22.10.2)(typescript@5.7.2) + typescript: + specifier: ^5.7.2 + version: 5.7.2 packages: @@ -89,10 +107,27 @@ packages: '@cfworker/json-schema@4.0.3': resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} + '@colors/colors@1.6.0': + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + + '@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 + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + '@dabh/diagnostics@2.0.3': + resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -140,6 +175,14 @@ packages: peerDependencies: '@langchain/core': '>=0.2.21 <0.4.0' + '@lightprotocol/compressed-token@0.13.1': + resolution: {integrity: sha512-5vPP2wV0dI1zlPztxi6UD0vBcAHPM+0MiVMkWdfnlhqBhZUQy7aGnD8IcAf2g0M60RvmPiFSUIKmj64nuw5+sQ==} + peerDependencies: + '@lightprotocol/stateless.js': 0.13.1 + + '@lightprotocol/stateless.js@0.13.1': + resolution: {integrity: sha512-3dmsQJwDl/6oQWAvmai8DvYYi0LNi6yLST3WK6XQDSAX4hc8pMd0gjX7feSaX9aMPKrA3xvH6QsljGB5OKCXBw==} + '@metaplex-foundation/mpl-core@1.1.1': resolution: {integrity: sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA==} peerDependencies: @@ -372,6 +415,10 @@ packages: '@solana/web3.js@1.95.8': resolution: {integrity: sha512-sBHzNh7dHMrmNS5xPD1d0Xa2QffW/RXaxu/OysRXBfwTp+LYqGGmMtCYYwrHPrN5rjAmJCsQRNAwv4FM0t3B6g==} + '@sqlite.org/sqlite-wasm@3.47.1-build1': + resolution: {integrity: sha512-3qnVGab3sjJ8ov0ce1rQGZrMkglYEQ/q5fnq1s1BpRWFMYsiJVaLD1zKepcI9E9r3qx7929+2G27Hfsasvrm6Q==} + hasBin: true + '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} @@ -387,6 +434,9 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@types/better-sqlite3@7.6.12': + resolution: {integrity: sha512-fnQmj8lELIj7BSrZQAdBMHEHX8OZLYIHXqAKT1O7tDfLxaINzf00PMjw22r3N/xXh0w/sGHlO6SVaCQ2mj78lg==} + '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -414,6 +464,9 @@ packages: '@types/retry@0.12.0': resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + '@types/triple-beam@1.3.5': + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -432,6 +485,9 @@ packages: '@ungap/structured-clone@1.2.1': resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} + '@ungap/with-resolvers@0.1.0': + resolution: {integrity: sha512-g7f0IkJdPW2xhY7H4iE72DAsIyfuwEFc6JWc2tYFwKDMWWAF699vGjrM348cwQuOXgHpe1gWFe+Eiyjx/ewvvw==} + JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -463,6 +519,9 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -481,6 +540,9 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + better-sqlite3@11.7.0: + resolution: {integrity: sha512-mXpa5jnIKKHeoGzBrUJrc65cXFKcILGZpU3FXR0pradUEm9MA7UZz02qfEejaMcm9iXrSOCenwwYMJ/tZ1y5Ig==} + bigint-buffer@1.1.5: resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} engines: {node: '>= 10.0.0'} @@ -491,6 +553,9 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} @@ -515,6 +580,13 @@ packages: bs58@6.0.0: resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + buffer-layout@1.2.2: + 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==} @@ -539,6 +611,30 @@ packages: character-entities-legacy@3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + coincident@1.2.3: + resolution: {integrity: sha512-Uxz3BMTWIslzeWjuQnizGWVg0j6khbvHUQ8+5BdM7WuJEm4ALXwq3wluYoB+uF68uPBz/oUOeJnYURKyfjexlA==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + 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@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + + colorspace@1.1.4: + resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -560,10 +656,25 @@ packages: create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + + crypto-hash@1.3.0: + resolution: {integrity: sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==} + engines: {node: '>=8'} + decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + delay@5.0.0: resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} engines: {node: '>=10'} @@ -576,6 +687,10 @@ packages: 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==} @@ -583,13 +698,203 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dotenv@16.4.7: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} + drizzle-orm@0.33.0: + resolution: {integrity: sha512-SHy72R2Rdkz0LEq0PSG/IdvnT3nGiWuRk+2tXZQ90GVq/XQhpCzu/EFT3V2rox+w8MlkBQxifF8pCStNYnERfA==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=3' + '@electric-sql/pglite': '>=0.1.1' + '@libsql/client': '*' + '@neondatabase/serverless': '>=0.1' + '@op-engineering/op-sqlite': '>=2' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1' + '@prisma/client': '*' + '@tidbcloud/serverless': '*' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/react': '>=18' + '@types/sql.js': '*' + '@vercel/postgres': '>=0.8.0' + '@xata.io/client': '*' + better-sqlite3: '>=7' + bun-types: '*' + expo-sqlite: '>=13.2.0' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + prisma: '*' + react: '>=18' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@electric-sql/pglite': + optional: true + '@libsql/client': + optional: true + '@neondatabase/serverless': + optional: true + '@op-engineering/op-sqlite': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@prisma/client': + optional: true + '@tidbcloud/serverless': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/react': + optional: true + '@types/sql.js': + optional: true + '@vercel/postgres': + optional: true + '@xata.io/client': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + expo-sqlite: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + prisma: + optional: true + react: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + + drizzle-orm@0.38.2: + resolution: {integrity: sha512-eCE3yPRAskLo1WpM9OHpFaM70tBEDsWhwR/0M3CKyztAXKR9Qs3asZlcJOEliIcUSg8GuwrlY0dmYDgmm6y5GQ==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=4' + '@electric-sql/pglite': '>=0.2.0' + '@libsql/client': '>=0.10.0' + '@libsql/client-wasm': '>=0.10.0' + '@neondatabase/serverless': '>=0.10.0' + '@op-engineering/op-sqlite': '>=2' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1' + '@prisma/client': '*' + '@tidbcloud/serverless': '*' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/react': '>=18' + '@types/sql.js': '*' + '@vercel/postgres': '>=0.8.0' + '@xata.io/client': '*' + better-sqlite3: '>=7' + bun-types: '*' + expo-sqlite: '>=14.0.0' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + prisma: '*' + react: '>=18' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@electric-sql/pglite': + optional: true + '@libsql/client': + optional: true + '@libsql/client-wasm': + optional: true + '@neondatabase/serverless': + optional: true + '@op-engineering/op-sqlite': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@prisma/client': + optional: true + '@tidbcloud/serverless': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/react': + optional: true + '@types/sql.js': + optional: true + '@vercel/postgres': + optional: true + '@xata.io/client': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + expo-sqlite: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + prisma: + optional: true + react: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -610,6 +915,10 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + eyes@0.1.8: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} engines: {node: '> 0.1.90'} @@ -620,9 +929,15 @@ packages: fastestsmallesttextencoderdecoder@1.0.22: resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} + fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + form-data-encoder@1.7.2: resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} @@ -634,6 +949,15 @@ packages: resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} engines: {node: '>= 12.20'} + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + gc-hook@0.3.1: + resolution: {integrity: sha512-E5M+O/h2o7eZzGhzRZGex6hbB3k4NWqO0eA+OzLRLXxhdbYPajZnynPwAtphnh+cRHPwsj5Z80dqZlfI4eK55A==} + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + graphemesplit@2.4.4: resolution: {integrity: sha512-lKrpp1mk1NH26USxC/Asw4OHbhSQf5XfrWZ+CDv/dFVvd1j17kFgMotdJvOesmHkbFX9P9sBfpH8VogxOWLg8w==} @@ -646,6 +970,9 @@ packages: hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + helius-airship-core@file:../airship/packages/core: + resolution: {directory: ../airship/packages/core, type: directory} + html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} @@ -655,10 +982,23 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + ipaddr.js@2.2.0: resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + isomorphic-ws@4.0.1: resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} peerDependencies: @@ -690,6 +1030,9 @@ packages: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} + kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + langchain@0.3.7: resolution: {integrity: sha512-6/Gkk9Zez3HkbsETFxZVo1iKLmaK3OzkDseC5MYFKVmYFDXFAOyJR3srJ9P61xF8heVdsPixqYIsejBn7/9dXg==} engines: {node: '>=18'} @@ -747,6 +1090,13 @@ packages: linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + logform@2.7.0: + resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} + engines: {node: '>= 12.0.0'} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} @@ -786,10 +1136,20 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + 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==} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -797,6 +1157,16 @@ packages: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true + napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-abi@3.71.0: + resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} + engines: {node: '>=10'} + node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -814,6 +1184,12 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + oniguruma-to-es@0.7.0: resolution: {integrity: sha512-HRaRh09cE0gRS3+wi2zxekB+I5L8C/gN60S+vb11eADHUaB/q4u8wGGOX3GvwvitG8ixaeycZfeoyruKQzUgNg==} @@ -848,9 +1224,26 @@ packages: pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + + papaparse@5.4.1: + resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} + + prebuild-install@7.1.2: + resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} + engines: {node: '>=10'} + hasBin: true + property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + proxy-target@3.0.2: + resolution: {integrity: sha512-FFE1XNwXX/FNC3/P8HiKaJSy/Qk68RitG/QEcLy/bVnTAPlgTAWPZKh0pARLAnpfXQPKyalBhk009NRTgsk8vQ==} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} @@ -859,6 +1252,14 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -881,6 +1282,10 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -889,31 +1294,84 @@ packages: shiki@1.24.2: resolution: {integrity: sha512-TR1fi6mkRrzW+SKT5G6uKuc32Dj2EEa7Kj0k8kGqiBINb+C1TiflVOiT9ta6GqOJtC4fraxO5SLUaKBcSY38Fg==} + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + sqlocal@0.13.0: + resolution: {integrity: sha512-C38F42jJ47oyDGvHSUHOad+3otFF/B2oL0/s6VkMuhX615P5SP9aZk7gF7y7Q5550wwROKl0Uk+lKQuFUoEYpA==} + peerDependencies: + drizzle-orm: '*' + kysely: '*' + peerDependenciesMeta: + drizzle-orm: + optional: true + kysely: + optional: true + + stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + + 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-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + 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'} + tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + text-encoding-utf-8@1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + text-hex@1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + 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==} + triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} + ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true @@ -931,6 +1389,12 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + typedoc@0.26.11: resolution: {integrity: sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==} engines: {node: '>= 18'} @@ -938,8 +1402,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.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + typescript@5.7.2: + resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} engines: {node: '>=14.17'} hasBin: true @@ -974,6 +1438,9 @@ packages: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + uuid@10.0.0: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true @@ -1009,6 +1476,17 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + winston-transport@4.9.0: + resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} + engines: {node: '>= 12.0.0'} + + winston@3.17.0: + resolution: {integrity: sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==} + engines: {node: '>= 12.0.0'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -1059,20 +1537,20 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 - '@bonfida/sns-records@0.0.1(@solana/web3.js@1.95.8)': + '@bonfida/sns-records@0.0.1(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.95.8 + '@solana/web3.js': 1.95.8(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.95.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@bonfida/spl-name-service@3.0.7(@solana/web3.js@1.95.8(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.95.8) + '@bonfida/sns-records': 0.0.1(@solana/web3.js@1.95.8(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.95.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.95.8 + '@solana/spl-token': 0.4.6(@solana/web3.js@1.95.8(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.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) borsh: 2.0.0 buffer: 6.0.3 graphemesplit: 2.4.4 @@ -1087,10 +1565,45 @@ snapshots: '@cfworker/json-schema@4.0.3': {} + '@colors/colors@1.6.0': {} + + '@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.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@noble/hashes': 1.6.1 + '@solana/web3.js': 1.95.8(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.1.8 + 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.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + buffer-layout: 1.2.2 + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 + '@dabh/diagnostics@2.0.3': + dependencies: + colorspace: 1.1.4 + enabled: 2.0.0 + kuler: 2.0.0 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.5.0': {} @@ -1100,14 +1613,14 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@langchain/core@0.3.23(openai@4.76.3)': + '@langchain/core@0.3.23(openai@4.76.3(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.15 - langsmith: 0.2.13(openai@4.76.3) + langsmith: 0.2.13(openai@4.76.3(zod@3.24.1)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -1117,19 +1630,19 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/groq@0.1.2(@langchain/core@0.3.23)': + '@langchain/groq@0.1.2(@langchain/core@0.3.23(openai@4.76.3(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.23(openai@4.76.3) - '@langchain/openai': 0.3.14(@langchain/core@0.3.23) + '@langchain/core': 0.3.23(openai@4.76.3(zod@3.24.1)) + '@langchain/openai': 0.3.14(@langchain/core@0.3.23(openai@4.76.3(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.23)': + '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.23(openai@4.76.3(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.23(openai@4.76.3) + '@langchain/core': 0.3.23(openai@4.76.3(zod@3.24.1)) uuid: 10.0.0 '@langchain/langgraph-sdk@0.0.32': @@ -1139,17 +1652,17 @@ snapshots: p-retry: 4.6.2 uuid: 9.0.1 - '@langchain/langgraph@0.2.33(@langchain/core@0.3.23)': + '@langchain/langgraph@0.2.33(@langchain/core@0.3.23(openai@4.76.3(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.23(openai@4.76.3) - '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.23) + '@langchain/core': 0.3.23(openai@4.76.3(zod@3.24.1)) + '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.23(openai@4.76.3(zod@3.24.1))) '@langchain/langgraph-sdk': 0.0.32 uuid: 10.0.0 zod: 3.24.1 - '@langchain/openai@0.3.14(@langchain/core@0.3.23)': + '@langchain/openai@0.3.14(@langchain/core@0.3.23(openai@4.76.3(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.23(openai@4.76.3) + '@langchain/core': 0.3.23(openai@4.76.3(zod@3.24.1)) js-tiktoken: 1.0.15 openai: 4.76.3(zod@3.24.1) zod: 3.24.1 @@ -1157,11 +1670,39 @@ snapshots: transitivePeerDependencies: - encoding - '@langchain/textsplitters@0.1.0(@langchain/core@0.3.23)': + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.23(openai@4.76.3(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.23(openai@4.76.3) + '@langchain/core': 0.3.23(openai@4.76.3(zod@3.24.1)) js-tiktoken: 1.0.15 + '@lightprotocol/compressed-token@0.13.1(@lightprotocol/stateless.js@0.13.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.13.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.95.8(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.8(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.13.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.6.1 + '@solana/web3.js': 1.95.8(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/mpl-core@1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.1)': dependencies: '@metaplex-foundation/umi': 0.9.2 @@ -1177,18 +1718,18 @@ snapshots: 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.95.8)': + '@metaplex-foundation/umi-bundle-defaults@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(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.95.8) + '@metaplex-foundation/umi-eddsa-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(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.95.8) + '@metaplex-foundation/umi-rpc-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(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.95.8) - '@solana/web3.js': 1.95.8 + '@metaplex-foundation/umi-transaction-factory-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - encoding @@ -1196,12 +1737,12 @@ snapshots: 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.95.8)': + '@metaplex-foundation/umi-eddsa-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(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.95.8) + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@noble/curves': 1.7.0 - '@solana/web3.js': 1.95.8 + '@solana/web3.js': 1.95.8(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: @@ -1224,11 +1765,11 @@ snapshots: 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.95.8)': + '@metaplex-foundation/umi-rpc-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(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.95.8) - '@solana/web3.js': 1.95.8 + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.95.8(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: @@ -1252,16 +1793,16 @@ snapshots: '@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.95.8)': + '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(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.95.8) - '@solana/web3.js': 1.95.8 + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.95.8(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.95.8)': + '@metaplex-foundation/umi-web3js-adapters@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: '@metaplex-foundation/umi': 0.9.2 - '@solana/web3.js': 1.95.8 + '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) buffer: 6.0.3 '@metaplex-foundation/umi@0.9.2': @@ -1309,10 +1850,10 @@ snapshots: '@shikijs/vscode-textmate@9.3.1': {} - '@solana/buffer-layout-utils@0.2.0': + '@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.95.8 + '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) bigint-buffer: 1.1.5 bignumber.js: 9.1.2 transitivePeerDependencies: @@ -1328,10 +1869,10 @@ snapshots: dependencies: '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-core@2.0.0-rc.1(typescript@5.6.3)': + '@solana/codecs-core@2.0.0-rc.1(typescript@5.7.2)': dependencies: - '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) - typescript: 5.6.3 + '@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: @@ -1339,23 +1880,23 @@ snapshots: '@solana/codecs-numbers': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.6.3)': + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.7.2)': 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-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-rc.1(typescript@5.6.3)': + '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.2)': 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-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: @@ -1364,13 +1905,13 @@ snapshots: '@solana/errors': 2.0.0-preview.2 fastestsmallesttextencoderdecoder: 1.0.22 - '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@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.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) + '@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.6.3 + typescript: 5.7.2 '@solana/codecs@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: @@ -1382,14 +1923,14 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@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.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 + '@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 @@ -1398,59 +1939,59 @@ snapshots: chalk: 5.3.0 commander: 12.1.0 - '@solana/errors@2.0.0-rc.1(typescript@5.6.3)': + '@solana/errors@2.0.0-rc.1(typescript@5.7.2)': dependencies: chalk: 5.3.0 commander: 12.1.0 - typescript: 5.6.3 + 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-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@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.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 + '@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.95.8)(fastestsmallesttextencoderdecoder@1.0.22)': + '@solana/spl-token-group@0.0.4(@solana/web3.js@1.95.8(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.95.8 + '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/spl-token-group@0.0.7(@solana/web3.js@1.95.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.95.8(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.6.3) - '@solana/web3.js': 1.95.8 + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.95.8(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.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.8(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.6.3) - '@solana/web3.js': 1.95.8 + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token@0.4.6(@solana/web3.js@1.95.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@solana/spl-token@0.4.6(@solana/web3.js@1.95.8(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 - '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.95.8)(fastestsmallesttextencoderdecoder@1.0.22) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.95.8 + '@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.95.8(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.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -1459,13 +2000,13 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.4.9(@solana/web3.js@1.95.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@solana/spl-token@0.4.9(@solana/web3.js@1.95.8(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 - '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.95.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.95.8 + '@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.95.8(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.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -1478,7 +2019,7 @@ snapshots: dependencies: buffer: 6.0.3 - '@solana/web3.js@1.95.8': + '@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 '@noble/curves': 1.7.0 @@ -1491,7 +2032,7 @@ snapshots: bs58: 4.0.1 buffer: 6.0.3 fast-stable-stringify: 1.0.0 - jayson: 4.1.3 + 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 @@ -1500,6 +2041,8 @@ snapshots: - encoding - utf-8-validate + '@sqlite.org/sqlite-wasm@3.47.1-build1': {} + '@swc/helpers@0.5.15': dependencies: tslib: 2.8.1 @@ -1512,6 +2055,10 @@ snapshots: '@tsconfig/node16@1.0.4': {} + '@types/better-sqlite3@7.6.12': + dependencies: + '@types/node': 22.10.2 + '@types/connect@3.4.38': dependencies: '@types/node': 22.10.2 @@ -1543,6 +2090,8 @@ snapshots: '@types/retry@0.12.0': {} + '@types/triple-beam@1.3.5': {} + '@types/unist@3.0.3': {} '@types/uuid@10.0.0': {} @@ -1559,6 +2108,8 @@ snapshots: '@ungap/structured-clone@1.2.1': {} + '@ungap/with-resolvers@0.1.0': {} + JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 @@ -1584,6 +2135,8 @@ snapshots: argparse@2.0.1: {} + async@3.2.6: {} + asynckit@0.4.0: {} balanced-match@1.0.2: {} @@ -1598,6 +2151,11 @@ snapshots: base64-js@1.5.1: {} + better-sqlite3@11.7.0: + dependencies: + bindings: 1.5.0 + prebuild-install: 7.1.2 + bigint-buffer@1.1.5: dependencies: bindings: 1.5.0 @@ -1608,6 +2166,12 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + bn.js@5.2.1: {} borsh@0.7.0: @@ -1636,6 +2200,13 @@ snapshots: dependencies: base-x: 5.0.0 + 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 @@ -1644,6 +2215,7 @@ snapshots: bufferutil@4.0.8: dependencies: node-gyp-build: 4.8.4 + optional: true camelcase@6.3.0: {} @@ -1655,6 +2227,43 @@ snapshots: character-entities-legacy@3.0.0: {} + chownr@1.1.4: {} + + coincident@1.2.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + '@ungap/structured-clone': 1.2.1 + '@ungap/with-resolvers': 0.1.0 + gc-hook: 0.3.1 + proxy-target: 3.0.2 + optionalDependencies: + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + color@3.2.1: + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + + colorspace@1.1.4: + dependencies: + color: 3.2.1 + text-hex: 1.0.0 + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -1669,24 +2278,61 @@ snapshots: create-require@1.1.1: {} + cross-fetch@3.1.8: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + crypto-hash@1.3.0: {} + decamelize@1.2.0: {} + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + deep-extend@0.6.0: {} + 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 diff@4.0.2: {} + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + dotenv@16.4.7: {} + drizzle-orm@0.33.0(@types/better-sqlite3@7.6.12)(better-sqlite3@11.7.0): + optionalDependencies: + '@types/better-sqlite3': 7.6.12 + better-sqlite3: 11.7.0 + + drizzle-orm@0.38.2(@types/better-sqlite3@7.6.12)(better-sqlite3@11.7.0): + optionalDependencies: + '@types/better-sqlite3': 7.6.12 + better-sqlite3: 11.7.0 + emoji-regex-xs@1.0.0: {} + enabled@2.0.0: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + entities@4.5.0: {} es6-promise@4.2.8: {} @@ -1701,14 +2347,20 @@ snapshots: eventemitter3@5.0.1: {} + expand-template@2.0.3: {} + eyes@0.1.8: {} fast-stable-stringify@1.0.0: {} fastestsmallesttextencoderdecoder@1.0.22: {} + fecha@4.2.3: {} + file-uri-to-path@1.0.0: {} + fn.name@1.1.0: {} + form-data-encoder@1.7.2: {} form-data@4.0.1: @@ -1722,6 +2374,12 @@ snapshots: node-domexception: 1.0.0 web-streams-polyfill: 4.0.0-beta.3 + fs-constants@1.0.0: {} + + gc-hook@0.3.1: {} + + github-from-package@0.0.0: {} + graphemesplit@2.4.4: dependencies: js-base64: 3.7.7 @@ -1758,6 +2416,54 @@ snapshots: dependencies: '@types/hast': 3.0.4 + helius-airship-core@file:../airship/packages/core(@types/better-sqlite3@7.6.12)(better-sqlite3@11.7.0)(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10): + dependencies: + '@lightprotocol/compressed-token': 0.13.1(@lightprotocol/stateless.js@0.13.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.13.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.95.8(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.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + bs58: 6.0.0 + drizzle-orm: 0.33.0(@types/better-sqlite3@7.6.12)(better-sqlite3@11.7.0) + logform: 2.7.0 + papaparse: 5.4.1 + winston: 3.17.0 + winston-transport: 4.9.0 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/sql.js' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - encoding + - expo-sqlite + - fastestsmallesttextencoderdecoder + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - react + - sql.js + - sqlite3 + - typescript + - utf-8-validate + html-void-elements@3.0.0: {} humanize-ms@1.2.1: @@ -1766,13 +2472,21 @@ snapshots: ieee754@1.2.1: {} + inherits@2.0.4: {} + + ini@1.3.8: {} + ipaddr.js@2.2.0: {} - isomorphic-ws@4.0.1(ws@7.5.10): - dependencies: - ws: 7.5.10 + is-arrayish@0.3.2: {} - jayson@4.1.3: + is-stream@2.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) + + 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 @@ -1782,10 +2496,10 @@ snapshots: delay: 5.0.0 es6-promisify: 5.0.0 eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10) + 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 + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -1806,40 +2520,57 @@ snapshots: jsonpointer@5.0.1: {} - langchain@0.3.7(@langchain/core@0.3.23)(@langchain/groq@0.1.2)(openai@4.76.3): + kuler@2.0.0: {} + + langchain@0.3.7(@langchain/core@0.3.23(openai@4.76.3(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.23(openai@4.76.3(zod@3.24.1))))(openai@4.76.3(zod@3.24.1)): dependencies: - '@langchain/core': 0.3.23(openai@4.76.3) - '@langchain/groq': 0.1.2(@langchain/core@0.3.23) - '@langchain/openai': 0.3.14(@langchain/core@0.3.23) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.23) + '@langchain/core': 0.3.23(openai@4.76.3(zod@3.24.1)) + '@langchain/openai': 0.3.14(@langchain/core@0.3.23(openai@4.76.3(zod@3.24.1))) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.23(openai@4.76.3(zod@3.24.1))) js-tiktoken: 1.0.15 js-yaml: 4.1.0 jsonpointer: 5.0.1 - langsmith: 0.2.13(openai@4.76.3) + langsmith: 0.2.13(openai@4.76.3(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.23(openai@4.76.3(zod@3.24.1))) transitivePeerDependencies: - encoding - openai - langsmith@0.2.13(openai@4.76.3): + langsmith@0.2.13(openai@4.76.3(zod@3.24.1)): dependencies: '@types/uuid': 10.0.0 commander: 10.0.1 - openai: 4.76.3(zod@3.24.1) p-queue: 6.6.2 p-retry: 4.6.2 semver: 7.6.3 uuid: 10.0.0 + optionalDependencies: + openai: 4.76.3(zod@3.24.1) linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 + logform@2.7.0: + dependencies: + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.5.0 + triple-beam: 1.4.1 + + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + lunr@2.3.9: {} make-error@1.3.6: {} @@ -1890,21 +2621,47 @@ snapshots: dependencies: mime-db: 1.52.0 + mimic-response@3.1.0: {} + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 + minimist@1.2.8: {} + + mkdirp-classic@0.5.3: {} + ms@2.1.3: {} mustache@4.2.0: {} + napi-build-utils@1.0.2: {} + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + + node-abi@3.71.0: + dependencies: + semver: 7.6.3 + node-domexception@1.0.0: {} node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - node-gyp-build@4.8.4: {} + node-gyp-build@4.8.4: + optional: true + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + one-time@1.0.0: + dependencies: + fn.name: 1.1.0 oniguruma-to-es@0.7.0: dependencies: @@ -1921,6 +2678,7 @@ snapshots: form-data-encoder: 1.7.2 formdata-node: 4.4.1 node-fetch: 2.7.0 + optionalDependencies: zod: 3.24.1 transitivePeerDependencies: - encoding @@ -1945,12 +2703,51 @@ snapshots: pako@0.2.9: {} + pako@2.1.0: {} + + papaparse@5.4.1: {} + + prebuild-install@7.1.2: + dependencies: + detect-libc: 2.0.3 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.71.0 + pump: 3.0.2 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + property-information@6.5.0: {} + proxy-target@3.0.2: {} + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + punycode.js@2.3.1: {} punycode@2.3.1: {} + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + regenerator-runtime@0.14.1: {} regex-recursion@4.3.0: @@ -1980,6 +2777,8 @@ snapshots: safe-buffer@5.2.1: {} + safe-stable-stringify@2.5.0: {} + semver@7.6.3: {} shiki@1.24.2: @@ -1991,26 +2790,84 @@ snapshots: '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 + simple-concat@1.0.1: {} + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + + 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 + space-separated-tokens@2.0.2: {} + sqlocal@0.13.0(bufferutil@4.0.8)(drizzle-orm@0.38.2(@types/better-sqlite3@7.6.12)(better-sqlite3@11.7.0))(utf-8-validate@5.0.10): + dependencies: + '@sqlite.org/sqlite-wasm': 3.47.1-build1 + coincident: 1.2.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + optionalDependencies: + drizzle-orm: 0.38.2(@types/better-sqlite3@7.6.12)(better-sqlite3@11.7.0) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + stack-trace@0.0.10: {} + + 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-json-comments@2.0.1: {} + + superstruct@0.15.5: {} + superstruct@2.0.2: {} + tar-fs@2.1.1: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.2 + tar-stream: 2.2.0 + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + text-encoding-utf-8@1.0.2: {} + text-hex@1.0.0: {} + through@2.3.8: {} tiny-inflate@1.0.3: {} + toml@3.0.0: {} + tr46@0.0.3: {} trim-lines@3.0.1: {} - ts-node@10.9.2(@types/node@22.10.2)(typescript@5.6.3): + triple-beam@1.4.1: {} + + ts-node@10.9.2(@types/node@22.10.2)(typescript@5.7.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -2024,22 +2881,28 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.6.3 + typescript: 5.7.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 tslib@2.8.1: {} - typedoc@0.26.11(typescript@5.6.3): + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + tweetnacl@1.0.3: {} + + 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.2 - typescript: 5.6.3 + typescript: 5.7.2 yaml: 2.6.1 - typescript@5.6.3: {} + typescript@5.7.2: {} uc.micro@2.1.0: {} @@ -2078,6 +2941,9 @@ snapshots: utf-8-validate@5.0.10: dependencies: node-gyp-build: 4.8.4 + optional: true + + util-deprecate@1.0.2: {} uuid@10.0.0: {} @@ -2108,10 +2974,35 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - ws@7.5.10: {} + winston-transport@4.9.0: + dependencies: + logform: 2.7.0 + readable-stream: 3.6.2 + triple-beam: 1.4.1 + + winston@3.17.0: + dependencies: + '@colors/colors': 1.6.0 + '@dabh/diagnostics': 2.0.3 + async: 3.2.6 + is-stream: 2.0.1 + logform: 2.7.0 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.5.0 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.9.0 + + wrappy@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): - dependencies: + optionalDependencies: bufferutil: 4.0.8 utf-8-validate: 5.0.10 diff --git a/src/agent/index.ts b/src/agent/index.ts index 28e2814..efe4925 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -17,6 +17,8 @@ import { getTokenDataByAddress, getTokenDataByTicker, stakeWithJup, + createCompressedAirdrop, + sendCompressedAirdrop, } from "../tools"; import { CollectionOptions, PumpFunTokenOptions } from "../types"; import { DEFAULT_OPTIONS } from "../constants"; @@ -57,7 +59,7 @@ export class SolanaAgentKit { uri: string, symbol: string, decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS, - initialSupply?: number, + initialSupply?: number ) { return deploy_token(this, name, uri, symbol, decimals, initialSupply); } @@ -87,11 +89,11 @@ export class SolanaAgentKit { } async resolveSolDomain(domain: string) { - return resolveSolDomain(this, domain) + return resolveSolDomain(this, domain); } async getPrimaryDomain(account: PublicKey) { - return getPrimaryDomain(this, account) + return getPrimaryDomain(this, account); } async trade( @@ -136,9 +138,21 @@ export class SolanaAgentKit { ); } - async stake( - amount: number, - ) { + async stake(amount: number) { return stakeWithJup(this, amount); } + + async airdropCompressedTokens( + mintAddress: string, + amount: number, + recipients: string[] + ) { + await createCompressedAirdrop( + this, + new PublicKey(mintAddress), + BigInt(amount), + recipients.map((recipient) => new PublicKey(recipient)) + ); + return await sendCompressedAirdrop(this); + } } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 71465b4..c2c1d8b 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -181,7 +181,6 @@ export class SolanaMintNFTTool extends Tool { try { const parsedInput = JSON.parse(input); - const result = await this.solanaKit.mintNFT( new PublicKey(parsedInput.collectionMint), { @@ -703,6 +702,46 @@ export class SolanaTokenDataByTickerTool extends Tool { } } +export class SolanaAirdropCompressedTokensTool extends Tool { + name = "solana_airdrop_compressed_tokens"; + description = `Airdrop tokens with zk compression + + Inputs: + - mintAddress: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" + - amount: number, the amount of tokens to airdrop per recipient, e.g., 42 + - recipients: string[], the recipient addresses, e.g., ["JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"] + `; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + if (parsedInput.recipients.length <= 100) { + throw new Error("Recipients array must contain at least 420 addresses"); + } + await this.solanaKit.airdropCompressedTokens( + parsedInput.mintAddress, + parsedInput.amount, + parsedInput.recipients + ); + + return JSON.stringify({ + status: "success", + message: `Airdropped ${parsedInput.amount} tokens to ${parsedInput.recipients.length} recipients.`, + }); + } 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), @@ -724,5 +763,6 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaGetDomainTool(solanaKit), new SolanaTokenDataTool(solanaKit), new SolanaTokenDataByTickerTool(solanaKit), + new SolanaAirdropCompressedTokensTool(solanaKit), ]; } diff --git a/src/tools/airdrop_compressed_tokens/index.ts b/src/tools/airdrop_compressed_tokens/index.ts new file mode 100644 index 0000000..86a25ee --- /dev/null +++ b/src/tools/airdrop_compressed_tokens/index.ts @@ -0,0 +1,228 @@ +import { PublicKey } from "@solana/web3.js"; +import type { DrizzleDb, WorkerMessage, WorkerData } from "./types"; +import { SolanaAgentKit } from "../../agent/index.js"; + +let db: DrizzleDb | null = null; +let dbInitPromise: Promise | null = null; + +async function configureForBrowser() { + try { + const [{ SQLocalDrizzle }, { drizzle }, { sql }, heliusCore] = + await Promise.all([ + // @ts-ignore + import("sqlocal/drizzle"), + import("drizzle-orm/sqlite-proxy"), + import("drizzle-orm"), + import("helius-airship-core"), + ]); + + const { databaseFile } = heliusCore; + + const { driver, batchDriver } = new SQLocalDrizzle({ + databasePath: databaseFile, + verbose: false, + }); + + const database = drizzle(driver, batchDriver); + await database.run(sql`PRAGMA journal_mode = WAL;`); + await database.run(sql`PRAGMA synchronous = normal;`); + + return database; + } catch (error) { + console.error("Browser database configuration failed:", error); + throw error; + } +} + +async function configureForNode() { + try { + const [{ drizzle }, { default: Database }, { databaseFile }] = + await Promise.all([ + import("drizzle-orm/better-sqlite3"), + import("better-sqlite3"), + import("helius-airship-core"), + ]); + + const sqlite = new Database(databaseFile); + sqlite.exec("PRAGMA journal_mode = WAL;"); + sqlite.exec("PRAGMA synchronous = normal;"); + + return drizzle(sqlite); + } catch (error) { + console.error("Node database configuration failed:", error); + throw error; + } +} + +async function configureDatabase(): Promise { + if (!dbInitPromise) { + dbInitPromise = (async () => { + if (!db) { + db = + typeof window !== "undefined" + ? await configureForBrowser() + : await configureForNode(); + } + return db; + })(); + } + + const database = await dbInitPromise; + if (!database) throw new Error("Database initialization failed"); + return database; +} +async function createWorker(): Promise< + Worker | import("worker_threads").Worker +> { + if (typeof window !== "undefined") { + const origin = new URL(window.location.href).origin; + if ( + !origin.startsWith("https://") && + !origin.startsWith("http://localhost") + ) { + throw new Error("Invalid origin protocol"); + } + + const workerCode = ` + self.importScripts('${origin}/airdrop-worker.js'.replace(/[<>'"]/g, '')); + `; + + const blobOptions = { + type: "application/javascript", + headers: { + "Content-Security-Policy": "default-src 'self'", + }, + }; + + const blob = new Blob([workerCode], blobOptions); + const workerUrl = URL.createObjectURL(blob); + const worker = new Worker(workerUrl); + URL.revokeObjectURL(workerUrl); + return worker; + } else { + // Node + const { Worker } = await import("worker_threads"); + const path = await import("path"); + + return new Worker(path.resolve(__dirname, "worker.js")); + } +} + +/** + * Create airdrop with zk compression + * @param agent Agent + * @param mintAddress Token mint public key (non token-2022) + * @param amount amount of tokens to airdrop per recipient + * @param recipients Recipient public keys + */ +export async function createCompressedAirdrop( + agent: SolanaAgentKit, + mintAddress: PublicKey, + amount: bigint, + recipients: PublicKey[] +): Promise { + try { + const database = await configureDatabase(); + const { create, init } = await import("helius-airship-core"); + + await init({ + db: database as any, + }); + + await create({ + db: database as any, + signer: agent.wallet.publicKey, + addresses: recipients, + amount, + mintAddress, + }); + } catch (error) { + console.error("Create operation failed:", error); + throw error; + } +} + +/** + * Send airdrop. must be called after `createCompressedAirdrop` + * @param agent Agent + * @param onProgress Callback for progress updates + * @param onError Callback for error handling + */ +export async function sendCompressedAirdrop( + agent: SolanaAgentKit, + onProgress?: (progress: number) => void, + onError?: (error: Error) => void +): Promise { + let worker: Worker | import("worker_threads").Worker | null = null; + const { databaseFile } = await import("helius-airship-core"); + + return new Promise(async (resolve, reject) => { + const cleanup = () => { + if (worker) { + try { + if ("terminate" in worker) { + worker.terminate(); + } + } catch (error) { + console.error("[Main] Worker cleanup error:", error); + } + } + }; + + try { + worker = await createWorker(); + + const message: WorkerData = { + type: "send", + data: { + secretKey: Array.from(agent.wallet.secretKey), + url: agent.connection.rpcEndpoint, + dbPath: databaseFile, + }, + }; + + const handleMessage = (event: MessageEvent) => { + if (event.data === undefined) { + cleanup(); + reject(new Error()); + return; + } + const { type, data, error } = event.data; + switch (type) { + case "progress": + onProgress?.(data!); + break; + case "error": + cleanup(); + const errorObj = new Error(error); + onError?.(errorObj); + reject(errorObj); + break; + case "complete": + cleanup(); + resolve(); + break; + } + }; + + if (typeof window !== "undefined") { + (worker as Worker).onmessage = handleMessage; + } else { + (worker as import("worker_threads").Worker).on( + "message", + handleMessage + ); + } + + worker.postMessage(message); + } catch (error) { + cleanup(); + console.error("[Main] Send operation failed:", { + error: error instanceof Error ? error.message : String(error), + stack: error instanceof Error ? error.stack : undefined, + }); + onError?.(error instanceof Error ? error : new Error(String(error))); + reject(error); + } + }); +} diff --git a/src/tools/airdrop_compressed_tokens/types.ts b/src/tools/airdrop_compressed_tokens/types.ts new file mode 100644 index 0000000..d4353b8 --- /dev/null +++ b/src/tools/airdrop_compressed_tokens/types.ts @@ -0,0 +1,69 @@ +import type { BetterSQLite3Database } from "drizzle-orm/better-sqlite3"; +import type { SqliteRemoteDatabase } from "drizzle-orm/sqlite-proxy"; + +export interface Closeable { + close(): Promise | void; +} + +export type DrizzleDb = BetterSQLite3Database | SqliteRemoteDatabase; + +export interface WorkerMessage { + type: "progress" | "error" | "complete"; + data?: number; + error?: string; +} + +export interface WorkerData { + type: "send" | "poll"; + data: { + dbPath: string; + url: string; + secretKey?: number[]; + }; +} + +export interface WorkerError extends Error { + code?: string; + type: "worker_error"; +} + +export interface DatabaseError extends Error { + code?: string; + type: "database_error"; +} + +export function isWorkerMessage(message: any): message is WorkerMessage { + return ( + message && + typeof message === "object" && + "type" in message && + (message.type === "progress" || + message.type === "error" || + message.type === "complete") + ); +} + +export function isWorkerData(data: any): data is WorkerData { + return ( + data && + typeof data === "object" && + "type" in data && + (data.type === "send" || data.type === "poll") && + "data" in data && + typeof data.data === "object" && + typeof data.data.dbPath === "string" && + typeof data.data.url === "string" + ); +} + +export function isWorkerError(error: any): error is WorkerError { + return ( + error instanceof Error && "type" in error && error.type === "worker_error" + ); +} + +export function isDatabaseError(error: any): error is DatabaseError { + return ( + error instanceof Error && "type" in error && error.type === "database_error" + ); +} diff --git a/src/tools/airdrop_compressed_tokens/worker.ts b/src/tools/airdrop_compressed_tokens/worker.ts new file mode 100644 index 0000000..f43123c --- /dev/null +++ b/src/tools/airdrop_compressed_tokens/worker.ts @@ -0,0 +1,128 @@ +import { send } from "helius-airship-core"; +import { Keypair } from "@solana/web3.js"; +import type { WorkerMessage, WorkerData, DrizzleDb, Closeable } from "./types"; + +let db: DrizzleDb | null = null; +let dbInitPromise: Promise | null = null; + +async function initializeDb(dbPath: string): Promise { + if (!dbInitPromise) { + dbInitPromise = (async () => { + if (!db) { + try { + if (typeof window !== "undefined") { + const [{ SQLocalDrizzle }, { drizzle }, { sql }] = + await Promise.all([ + // @ts-ignore + import("sqlocal/drizzle"), + import("drizzle-orm/sqlite-proxy"), + import("drizzle-orm"), + ]); + + const { driver, batchDriver } = new SQLocalDrizzle({ + databasePath: dbPath, + verbose: false, + }); + + db = drizzle(driver, batchDriver); + await db.run(sql`PRAGMA journal_mode = WAL;`); + await db.run(sql`PRAGMA synchronous = normal;`); + } else { + const [{ drizzle }, { default: Database }] = await Promise.all([ + import("drizzle-orm/better-sqlite3"), + import("better-sqlite3"), + ]); + + const sqlite = new Database(dbPath); + sqlite.exec("PRAGMA journal_mode = WAL;"); + sqlite.exec("PRAGMA synchronous = normal;"); + db = drizzle(sqlite); + } + } catch (error) { + console.error("Worker database initialization failed:", error); + throw error; + } + } + return db; + })(); + } + + const database = await dbInitPromise; + if (!database) throw new Error("Worker database initialization failed"); + return database; +} + +function postMessage(message: WorkerMessage) { + if (typeof window !== "undefined") { + self.postMessage(message); + } else { + const { parentPort } = require("worker_threads"); + parentPort?.postMessage(message); + } +} + +async function handleMessage(data: WorkerData) { + let database: DrizzleDb | null = null; + + try { + database = await initializeDb(data.data.dbPath); + + switch (data.type) { + case "send": + if (!data.data.secretKey) { + throw new Error("Secret key is required for send operation"); + } + + await send({ + db: database, + keypair: Keypair.fromSecretKey(new Uint8Array(data.data.secretKey)), + url: data.data.url, + }); + + break; + } + + postMessage({ type: "complete" }); + } catch (error) { + console.error("[Worker] Operation failed:", { + error: error instanceof Error ? error.message : String(error), + stack: error instanceof Error ? error.stack : undefined, + type: data.type, + url: data.data.url, + }); + + postMessage({ + type: "error", + error: error instanceof Error ? error.message : String(error), + }); + } finally { + if (database && "close" in database) { + try { + await (database as Closeable).close(); + } catch (error) { + console.error("Error closing database connection:", error); + } + } + } +} + +if (typeof window !== "undefined") { + self.onmessage = (event: MessageEvent) => { + handleMessage(event.data).catch((error) => { + postMessage({ + type: "error", + error: error instanceof Error ? error.message : String(error), + }); + }); + }; +} else { + const { parentPort } = require("worker_threads"); + parentPort?.on("message", (data: WorkerData) => { + handleMessage(data).catch((error) => { + postMessage({ + type: "error", + error: error instanceof Error ? error.message : String(error), + }); + }); + }); +} diff --git a/src/tools/index.ts b/src/tools/index.ts index 57764b8..0e6af80 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -12,5 +12,6 @@ export * from "./launch_pumpfun_token"; export * from "./lend"; export * from "./get_tps"; export * from "./get_token_data"; -export * from './stake_with_jup'; +export * from "./stake_with_jup"; export * from "./fetch_price"; +export * from "./airdrop_compressed_tokens"; diff --git a/src/utils/send_tx.ts b/src/utils/send_tx.ts index 593cbc8..903ddd5 100644 --- a/src/utils/send_tx.ts +++ b/src/utils/send_tx.ts @@ -41,7 +41,7 @@ export async function getPriorityFees(connection: Connection): Promise<{ const median = sortedFees.length % 2 === 0 ? ((sortedFees[mid - 1] ?? 0) + (sortedFees[mid] ?? 0)) / 2 - : (sortedFees[mid] ?? 0); + : sortedFees[mid] ?? 0; // Helper to create priority fee IX based on chosen strategy const createPriorityFeeIx = (fee: number) => { @@ -76,7 +76,7 @@ export async function getPriorityFees(connection: Connection): Promise<{ export async function sendTx( agent: SolanaAgentKit, tx: Transaction, - otherKeypairs?: Keypair[], + otherKeypairs?: Keypair[] ) { tx.recentBlockhash = (await agent.connection.getLatestBlockhash()).blockhash; tx.feePayer = agent.wallet_address; @@ -90,8 +90,9 @@ export async function sendTx( await agent.connection.confirmTransaction({ signature: txid, blockhash: (await agent.connection.getLatestBlockhash()).blockhash, - lastValidBlockHeight: (await agent.connection.getLatestBlockhash()) - .lastValidBlockHeight, + lastValidBlockHeight: ( + await agent.connection.getLatestBlockhash() + ).lastValidBlockHeight, }); return txid; }