mirror of
https://github.com/d0zingcat/solana-agent-kit.git
synced 2026-05-22 15:10:43 +00:00
# Pull Request Description ## Related Issue Fixes # (issue number) ## Changes Made This PR adds the following changes: <!-- List the key changes made in this PR --> - Query Voltr vault and strategies balances - Withdraw from Voltr strategies - Deposit into Voltr strategies ## Implementation Details <!-- Provide technical details about the implementation --> - utilises Voltr's SDK `@voltr/sdk` to instantiate a `VoltrClient` - find and fetch relevant accounts to create instructions using `VoltrClient` ## Transaction executed by agent <!-- If applicable, provide example usage, transactions, or screenshots --> Example transaction: https://solana.fm/tx/GnUd38TMhtBYNv29nNAyESEWLwjHhUW6hraNrPE3RTF6LtdqNtnoBBqEKptT5JaWqv6TiFp6MeooUa9Rt7vMAu9?cluster=mainnet-alpha Demo: https://x.com/voltrxyz/status/1875204418465059189 ## Prompt Used <!-- If relevant, include the prompt or configuration used --> Tested on autonomous mode. ``` async function runAutonomousMode(agent: any, config: any, interval = 10) { console.log("Starting autonomous mode..."); let iterations = 0; while (true) { try { const evenThought = "1. Get the total amount and amount for each strategy of a Voltr vault: 3ab3KVY9GbDbUUbRnYNSBDQqABTDup7HmdgADHGpB8Bq. " + "2. Take note of the strategies id with the their respective amount. " + "3. Calculate the sum of all strategy amounts. " + "4. Subtract that sum from the vault total to get the excess amount. " + "5. Indicate the excess amount and the strategy id with the lowest amount."; const oddThought = "Using the latest excess amount, if it is 0 then do nothing. " + "Else if it is more than 0, deposit the excess amount into the lowest strategy and vault: 3ab3KVY9GbDbUUbRnYNSBDQqABTDup7HmdgADHGpB8Bq."; const thought = iterations % 2 === 0 ? evenThought : oddThought; const stream = await agent.stream( { messages: [new HumanMessage(thought)] }, config, ); for await (const chunk of stream) { if ("agent" in chunk) { for (const message of chunk.agent.messages) { console.log(message.content); } } else if ("tools" in chunk) { for (const message of chunk.tools.messages) { console.log(message.content); } } console.log("-------------------"); } iterations++; await new Promise((resolve) => setTimeout(resolve, interval * 1000)); } catch (error) { if (error instanceof Error) { console.error("Error:", error.message); } process.exit(1); } } } ``` ## Additional Notes <!-- Any additional information that reviewers should know --> ## Checklist - [x] I have tested these changes locally - [x] I have updated the documentation - [x] I have added a transaction link - [x] I have added the prompt used to test it
2.7 KiB
2.7 KiB