From 847b359617d086d48b06177f9e05427678ba36a8 Mon Sep 17 00:00:00 2001 From: Shaw Date: Wed, 12 Feb 2025 02:55:40 -0500 Subject: [PATCH 01/10] rebuild evm as client, fix many things --- bun.lockb | Bin 1375200 -> 1375200 bytes package.json | 2 +- packages/agent/src/api.ts | 3 --- packages/agent/src/defaultCharacter.ts | 11 ++++---- packages/agent/src/server.ts | 14 +++++----- packages/cli/src/commands/init.ts | 1 - packages/cli/src/utils/registry/index.ts | 1 - packages/core/src/generation.ts | 7 +++++ packages/core/src/logger.ts | 2 +- packages/core/src/runtime.ts | 31 +++++++++++++++++++++++ packages/core/src/types.ts | 2 +- packages/plugin-openai/src/index.ts | 7 +++-- 12 files changed, 56 insertions(+), 25 deletions(-) diff --git a/bun.lockb b/bun.lockb index 8b3ceb7127f21babe54f6b5a1932f40b2932d5a6..e577e7ff2b4037bd11c9364c1935b8aba2f59546 100755 GIT binary patch delta 151508 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

&P3;RE*?I^Q$H=5sDsp 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

!t< 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 Wukp-NuO#vX&LXrq<$vdJ>3;$1HMVd7 delta 151514 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%0D#%NYH79#F8h9A%~k=_ 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 { const { characterPath, characterJson } = req.body; - console.log("characterPath:", characterPath); - console.log("characterJson:", characterJson); try { let character: Character; if (characterJson) { @@ -340,7 +338,6 @@ export function createApiRouter( router.post("/agents/:agentId/stop", async (req, res) => { const agentId = req.params.agentId; - console.log("agentId", agentId); const agent: IAgentRuntime = agents.get(agentId); // update character diff --git a/packages/agent/src/defaultCharacter.ts b/packages/agent/src/defaultCharacter.ts index 2f3a570de06..2c97f1c30f9 100644 --- a/packages/agent/src/defaultCharacter.ts +++ b/packages/agent/src/defaultCharacter.ts @@ -4,13 +4,14 @@ export const defaultCharacter: Character = { name: "Eliza", username: "eliza", plugins: [ - "@elizaos/plugin-anthropic", + // "@elizaos/plugin-anthropic", "@elizaos/plugin-openai", - "@elizaos/plugin-local-ai", - "@elizaos/plugin-discord", + // "@elizaos/plugin-local-ai", + // "@elizaos/plugin-discord", "@elizaos/plugin-node", - "@elizaos/plugin-telegram", - "@elizaos/plugin-twitter", + // "@elizaos/plugin-telegram", + // "@elizaos/plugin-twitter", + "@elizaos-plugins/evm" ], settings: { secrets: {}, diff --git a/packages/agent/src/server.ts b/packages/agent/src/server.ts index 827b9b56f8f..7507c13189f 100644 --- a/packages/agent/src/server.ts +++ b/packages/agent/src/server.ts @@ -1,16 +1,15 @@ import { composeContext, - logger, generateMessageResponse, generateObject, - messageCompletionFooter, + logger, ModelClass, stringToUuid, + type Character, type Content, - type Media, - type Memory, type IAgentRuntime, - type Character + type Media, + type Memory } from "@elizaos/core"; import bodyParser from "body-parser"; import cors from "cors"; @@ -20,9 +19,8 @@ import * as fs from "node:fs"; import * as path from "node:path"; import { z } from "zod"; import { createApiRouter } from "./api.ts"; +import { hyperfiHandlerTemplate, messageHandlerTemplate, upload } from "./helper.ts"; import replyAction from "./reply.ts"; -import { messageHandlerTemplate } from "./helper.ts"; -import { upload } from "./helper.ts"; @@ -31,7 +29,7 @@ export class CharacterServer { public app: express.Application; private agents: Map; // container management private server: any; // Store server instance - public startAgent: () => Promise; // Store startAgent function + public startAgent: (character: Character) => Promise; // Store startAgent function public loadCharacterTryPath: (characterPath: string) => Promise; // Store loadCharacterTryPath function public jsonToCharacter: (filePath: string, character: string | never) => Promise; // Store jsonToCharacter function diff --git a/packages/cli/src/commands/init.ts b/packages/cli/src/commands/init.ts index e92476094ca..d677cccc612 100644 --- a/packages/cli/src/commands/init.ts +++ b/packages/cli/src/commands/init.ts @@ -85,7 +85,6 @@ async function installDependencies(targetDir: string, database: string, selected }) if (selectedPlugins.length > 0) { - console.log(selectedPlugins) await execa("bun", ["add", ...selectedPlugins, "--workspace-root"], { cwd: targetDir, stdio: "inherit" diff --git a/packages/cli/src/utils/registry/index.ts b/packages/cli/src/utils/registry/index.ts index 96e43429a69..5764dcd4861 100644 --- a/packages/cli/src/utils/registry/index.ts +++ b/packages/cli/src/utils/registry/index.ts @@ -9,7 +9,6 @@ const agent = process.env.https_proxy export async function getRegistryIndex(): Promise { try { - console.log("REGISTRY_URL", REGISTRY_URL) const response = await fetch(REGISTRY_URL, { agent }) // Get the response body as text first const text = await response.text() diff --git a/packages/core/src/generation.ts b/packages/core/src/generation.ts index fb43f779ae7..8a5fbe77923 100644 --- a/packages/core/src/generation.ts +++ b/packages/core/src/generation.ts @@ -131,12 +131,19 @@ export async function generateText({ stopSequences?: string[]; customSystemPrompt?: string; }): Promise { + + console.log("Generating text") + console.log(context) + const text = await runtime.useModel(modelClass, { runtime, context, stopSequences, }); + console.log("Generated text") + console.log(text) + return text; } diff --git a/packages/core/src/logger.ts b/packages/core/src/logger.ts index 76c4b0a5547..21b2b6ddf49 100644 --- a/packages/core/src/logger.ts +++ b/packages/core/src/logger.ts @@ -29,7 +29,7 @@ const createStream = () => { }); }; -const defaultLevel = process?.env?.DEFAULT_LOG_LEVEL || "info"; +const defaultLevel = process?.env?.DEFAULT_LOG_LEVEL || process?.env?.LOG_LEVEL || "info"; const options = { level: defaultLevel, diff --git a/packages/core/src/runtime.ts b/packages/core/src/runtime.ts index 0ce9fb06259..b97bb209e55 100644 --- a/packages/core/src/runtime.ts +++ b/packages/core/src/runtime.ts @@ -304,6 +304,7 @@ export class AgentRuntime implements IAgentRuntime { const plugins = opts?.plugins ?? []; for (const plugin of plugins) { + console.log("Handling for plugin", plugin.name) for (const action of (plugin.actions ?? [])) { this.registerAction(action); } @@ -327,6 +328,15 @@ export class AgentRuntime implements IAgentRuntime { for(const route of plugin.routes){ this.routes.push(route); } + + for(const client of plugin.clients){ + client.start(this).then((startedClient) => { + logger.debug( + `Initializing client: ${client.name}` + ); + this.clients.push(startedClient); + }); + } } this.plugins = plugins; @@ -345,7 +355,9 @@ export class AgentRuntime implements IAgentRuntime { continue; } if (plugin.clients) { + console.log("plugin has clients:", plugin.name) for (const client of plugin.clients) { + console.log("client", client) const startedClient = await client.start(this); logger.debug( `Initializing client: ${client.name}` @@ -353,6 +365,25 @@ export class AgentRuntime implements IAgentRuntime { this.clients.push(startedClient); } } + + if (plugin.actions) { + for (const action of plugin.actions) { + this.registerAction(action); + } + } + + if (plugin.evaluators) { + for (const evaluator of plugin.evaluators) { + this.registerEvaluator(evaluator); + } + } + + if (plugin.providers) { + for (const provider of plugin.providers) { + this.registerContextProvider(provider); + } + } + if (plugin.models) { for (const [modelClass, handler] of Object.entries(plugin.models)) { this.registerModel(modelClass as ModelClass, handler as (params: any) => Promise); diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index b9cd5c6f0f2..e417795c36e 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -527,7 +527,7 @@ export type Media = { */ export type ClientInstance = { /** Client name */ - // name: string; + name?: string; /** Stop client connection */ stop: (runtime: IAgentRuntime) => Promise; diff --git a/packages/plugin-openai/src/index.ts b/packages/plugin-openai/src/index.ts index f14041f87dd..f3897d2eeae 100644 --- a/packages/plugin-openai/src/index.ts +++ b/packages/plugin-openai/src/index.ts @@ -146,6 +146,9 @@ export const openaiPlugin: Plugin = { runtime.getSetting("SMALL_MODEL") ?? "gpt-4o-mini"; + console.log("generating text") + console.log(context) + const { text: openaiResponse } = await aiGenerateText({ model: openai.languageModel(model), prompt: context, @@ -178,10 +181,6 @@ export const openaiPlugin: Plugin = { baseURL, }); - const smallModel = - runtime.getSetting("OPENAI_SMALL_MODEL") ?? - runtime.getSetting("SMALL_MODEL") ?? - "gpt-4o-mini"; const model = runtime.getSetting("OPENAI_LARGE_MODEL") ?? runtime.getSetting("LARGE_MODEL") ?? "gpt-4o"; From 0b1d8ff5e01514a72956762fe4451348d166b25c Mon Sep 17 00:00:00 2001 From: Shaw Date: Wed, 12 Feb 2025 02:55:52 -0500 Subject: [PATCH 02/10] console to debug --- packages/core/src/generation.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/core/src/generation.ts b/packages/core/src/generation.ts index 8a5fbe77923..dd8656b6791 100644 --- a/packages/core/src/generation.ts +++ b/packages/core/src/generation.ts @@ -132,8 +132,8 @@ export async function generateText({ customSystemPrompt?: string; }): Promise { - console.log("Generating text") - console.log(context) + logger.debug("Generating text") + logger.debug(context) const text = await runtime.useModel(modelClass, { runtime, @@ -141,8 +141,8 @@ export async function generateText({ stopSequences, }); - console.log("Generated text") - console.log(text) + logger.debug("Generated text") + logger.debug(text) return text; } From 8ad9ef64edfaf319a428f51b4161d3843b01ac58 Mon Sep 17 00:00:00 2001 From: Shaw Date: Wed, 12 Feb 2025 02:56:52 -0500 Subject: [PATCH 03/10] remove logs --- packages/core/src/knowledge.ts | 2 -- packages/core/src/memory.ts | 2 -- packages/core/src/runtime.ts | 5 ----- 3 files changed, 9 deletions(-) diff --git a/packages/core/src/knowledge.ts b/packages/core/src/knowledge.ts index 8b157646fa8..9a149d7455d 100644 --- a/packages/core/src/knowledge.ts +++ b/packages/core/src/knowledge.ts @@ -8,7 +8,6 @@ async function get( runtime: AgentRuntime, message: Memory ): Promise { - console.log("get", message); // Add validation for message if (!message?.content?.text) { logger.warn("Invalid message for knowledge query:", { @@ -70,7 +69,6 @@ async function set( chunkSize = 512, bleed = 20 ) { - console.log("set", item); const embedding = await runtime.useModel(ModelClass.TEXT_EMBEDDING, null); await runtime.documentsManager.createMemory({ id: item.id, diff --git a/packages/core/src/memory.ts b/packages/core/src/memory.ts index bda44b96f7b..08ea3e13e6e 100644 --- a/packages/core/src/memory.ts +++ b/packages/core/src/memory.ts @@ -50,7 +50,6 @@ export class MemoryManager implements IMemoryManager { * @throws Error if the memory content is empty */ async addEmbeddingToMemory(memory: Memory): Promise { - console.log("addEmbeddingToMemory", memory); // Return early if embedding already exists if (memory.embedding) { return memory; @@ -174,7 +173,6 @@ export class MemoryManager implements IMemoryManager { */ async createMemory(memory: Memory, unique = false): Promise { // TODO: check memory.agentId == this.runtime.agentId - console.log("createMemory", memory); const existingMessage = await this.runtime.databaseAdapter.getMemoryById(memory.id); diff --git a/packages/core/src/runtime.ts b/packages/core/src/runtime.ts index b97bb209e55..d67adb17836 100644 --- a/packages/core/src/runtime.ts +++ b/packages/core/src/runtime.ts @@ -304,7 +304,6 @@ export class AgentRuntime implements IAgentRuntime { const plugins = opts?.plugins ?? []; for (const plugin of plugins) { - console.log("Handling for plugin", plugin.name) for (const action of (plugin.actions ?? [])) { this.registerAction(action); } @@ -355,9 +354,7 @@ export class AgentRuntime implements IAgentRuntime { continue; } if (plugin.clients) { - console.log("plugin has clients:", plugin.name) for (const client of plugin.clients) { - console.log("client", client) const startedClient = await client.start(this); logger.debug( `Initializing client: ${client.name}` @@ -633,8 +630,6 @@ export class AgentRuntime implements IAgentRuntime { modelClass: ModelClass.TEXT_SMALL, }); - console.log("***** result", result); - const evaluators = parseJsonArrayFromText( result, ) as unknown as string[]; From d5295c70e1ce5c769ca613cf36af4ae4b3717803 Mon Sep 17 00:00:00 2001 From: Shaw Date: Wed, 12 Feb 2025 03:09:16 -0500 Subject: [PATCH 04/10] unify plugin naming --- packages/agent/src/defaultCharacter.ts | 2 +- packages/agent/src/index.ts | 2 +- packages/agent/src/plugins.test.ts | 2 +- packages/cli/src/commands/character.ts | 2 +- packages/cli/src/database.ts | 2 +- packages/cli/src/templates/database/sqlite.ts.txt | 2 +- packages/cli/src/utils/templates.ts | 2 +- packages/core/src/test_resources/createRuntime.ts | 2 +- packages/plugin-sqlite/package.json | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/agent/src/defaultCharacter.ts b/packages/agent/src/defaultCharacter.ts index 2c97f1c30f9..5f7a3269e59 100644 --- a/packages/agent/src/defaultCharacter.ts +++ b/packages/agent/src/defaultCharacter.ts @@ -11,7 +11,7 @@ export const defaultCharacter: Character = { "@elizaos/plugin-node", // "@elizaos/plugin-telegram", // "@elizaos/plugin-twitter", - "@elizaos-plugins/evm" + "@elizaos/plugin-evm" ], settings: { secrets: {}, diff --git a/packages/agent/src/index.ts b/packages/agent/src/index.ts index 5307b322b03..efd7b8d03bb 100644 --- a/packages/agent/src/index.ts +++ b/packages/agent/src/index.ts @@ -348,7 +348,7 @@ async function findDatabaseAdapter(runtime: IAgentRuntime) { let adapter: Adapter | undefined; // if not found, default to sqlite if (adapters.length === 0) { - const sqliteAdapterPlugin = await import('@elizaos-plugins/sqlite'); + const sqliteAdapterPlugin = await import('@elizaos/plugin-sqlite'); const sqliteAdapterPluginDefault = sqliteAdapterPlugin.default; adapter = sqliteAdapterPluginDefault.adapters[0]; if (!adapter) { diff --git a/packages/agent/src/plugins.test.ts b/packages/agent/src/plugins.test.ts index 16618050955..3ae9a52d30f 100644 --- a/packages/agent/src/plugins.test.ts +++ b/packages/agent/src/plugins.test.ts @@ -25,7 +25,7 @@ async function findDatabaseAdapter(runtime: IAgentRuntime) { // Default to sqlite if no adapter found if (adapters.length === 0) { - const sqliteAdapter = await import('@elizaos-plugins/sqlite'); + const sqliteAdapter = await import('@elizaos/plugin-sqlite'); adapter = sqliteAdapter.default.adapters[0]; if (!adapter) { throw new Error("No database adapter found in default sqlite plugin"); diff --git a/packages/cli/src/commands/character.ts b/packages/cli/src/commands/character.ts index 81d02cf7692..88140c13376 100644 --- a/packages/cli/src/commands/character.ts +++ b/packages/cli/src/commands/character.ts @@ -1,5 +1,5 @@ // src/commands/agent.ts -import { Database, SqliteDatabaseAdapter } from "@elizaos-plugins/sqlite"; +import { Database, SqliteDatabaseAdapter } from "@elizaos/plugin-sqlite"; import type { MessageExample, UUID } from "@elizaos/core"; import { MessageExampleSchema } from "@elizaos/core"; import { Command } from "commander"; diff --git a/packages/cli/src/database.ts b/packages/cli/src/database.ts index 393beac7169..1627cd403a0 100644 --- a/packages/cli/src/database.ts +++ b/packages/cli/src/database.ts @@ -1,5 +1,5 @@ import Database from "better-sqlite3" -import { SqliteDatabaseAdapter } from "@elizaos-plugins/sqlite" +import { SqliteDatabaseAdapter } from "@elizaos/plugin-sqlite" // Initialize database export const adapter = new SqliteDatabaseAdapter(new Database("./eliza.db")) diff --git a/packages/cli/src/templates/database/sqlite.ts.txt b/packages/cli/src/templates/database/sqlite.ts.txt index 1ffdcf4c363..53faf20fa9b 100644 --- a/packages/cli/src/templates/database/sqlite.ts.txt +++ b/packages/cli/src/templates/database/sqlite.ts.txt @@ -1,4 +1,4 @@ -import { SqliteDatabaseAdapter } from '@elizaos-plugins/sqlite'; +import { SqliteDatabaseAdapter } from '@elizaos/plugin-sqlite'; import Database from 'better-sqlite3'; import path from 'path'; diff --git a/packages/cli/src/utils/templates.ts b/packages/cli/src/utils/templates.ts index 73d99701a52..2504b079342 100644 --- a/packages/cli/src/utils/templates.ts +++ b/packages/cli/src/utils/templates.ts @@ -2,7 +2,7 @@ export function createDatabaseTemplate(database: string) { if (database === "sqlite") { return `import { Database } from "better-sqlite3" - import { SqliteDatabaseAdapter } from "@elizaos-plugins/sqlite" + import { SqliteDatabaseAdapter } from "@elizaos/plugin-sqlite" // Initialize database export const db = new Database("./eliza.db") diff --git a/packages/core/src/test_resources/createRuntime.ts b/packages/core/src/test_resources/createRuntime.ts index 21beebe4d21..3f3b1bf3eb2 100644 --- a/packages/core/src/test_resources/createRuntime.ts +++ b/packages/core/src/test_resources/createRuntime.ts @@ -1,4 +1,4 @@ -import { SqliteDatabaseAdapter, loadVecExtensions } from "@elizaos-plugins/sqlite"; +import { SqliteDatabaseAdapter, loadVecExtensions } from "@elizaos/plugin-sqlite"; import type { DatabaseAdapter } from "../database.ts"; import { AgentRuntime } from "../runtime.ts"; import type { Action, Evaluator, Provider } from "../types.ts"; diff --git a/packages/plugin-sqlite/package.json b/packages/plugin-sqlite/package.json index 82f4e3f65ab..8a78a431127 100644 --- a/packages/plugin-sqlite/package.json +++ b/packages/plugin-sqlite/package.json @@ -1,5 +1,5 @@ { - "name": "@elizaos-plugins/sqlite", + "name": "@elizaos/plugin-sqlite", "version": "1.0.0-alpha.0", "type": "module", "main": "dist/index.js", From 531df245abbae88c824554f0f0d803d51e63496a Mon Sep 17 00:00:00 2001 From: Shaw Date: Wed, 12 Feb 2025 04:22:35 -0500 Subject: [PATCH 05/10] Update Solana --- .env.example | 25 + .gitignore | 8 - bun.lockb | Bin 1375200 -> 1591040 bytes packages/agent/src/defaultCharacter.ts | 3 +- packages/plugin-solana/.npmignore | 6 + packages/plugin-solana/README.md | 374 +++++++++++++++ .../__tests__/actions/swap.test.ts | 22 + packages/plugin-solana/biome.json | 41 ++ packages/plugin-solana/images/banner.jpg | Bin 0 -> 23108 bytes packages/plugin-solana/images/logo.jpg | Bin 0 -> 10764 bytes packages/plugin-solana/package.json | 52 +++ packages/plugin-solana/src/actions/swap.ts | 433 ++++++++++++++++++ .../plugin-solana/src/actions/transfer.ts | 276 +++++++++++ packages/plugin-solana/src/bignumber.ts | 9 + packages/plugin-solana/src/client.ts | 256 +++++++++++ packages/plugin-solana/src/environment.ts | 78 ++++ packages/plugin-solana/src/index.ts | 18 + packages/plugin-solana/src/keypairUtils.ts | 59 +++ .../plugin-solana/src/providers/wallet.ts | 418 +++++++++++++++++ packages/plugin-solana/src/types.ts | 32 ++ packages/plugin-solana/src/types/token.ts | 302 ++++++++++++ packages/plugin-solana/tsconfig.json | 8 + packages/plugin-solana/tsup.config.ts | 29 ++ .../src/providers/walletProvider.ts | 295 ------------ 24 files changed, 2440 insertions(+), 304 deletions(-) create mode 100644 packages/plugin-solana/.npmignore create mode 100644 packages/plugin-solana/README.md create mode 100644 packages/plugin-solana/__tests__/actions/swap.test.ts create mode 100644 packages/plugin-solana/biome.json create mode 100644 packages/plugin-solana/images/banner.jpg create mode 100644 packages/plugin-solana/images/logo.jpg create mode 100644 packages/plugin-solana/package.json create mode 100644 packages/plugin-solana/src/actions/swap.ts create mode 100644 packages/plugin-solana/src/actions/transfer.ts create mode 100644 packages/plugin-solana/src/bignumber.ts create mode 100644 packages/plugin-solana/src/client.ts create mode 100644 packages/plugin-solana/src/environment.ts create mode 100644 packages/plugin-solana/src/index.ts create mode 100644 packages/plugin-solana/src/keypairUtils.ts create mode 100644 packages/plugin-solana/src/providers/wallet.ts create mode 100644 packages/plugin-solana/src/types.ts create mode 100644 packages/plugin-solana/src/types/token.ts create mode 100644 packages/plugin-solana/tsconfig.json create mode 100644 packages/plugin-solana/tsup.config.ts delete mode 100644 packages/plugin-tee/src/providers/walletProvider.ts diff --git a/.env.example b/.env.example index 7603a9f2c59..86aaa58f977 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,27 @@ +# OpenAI Configuration OPENAI_API_KEY= + +# Anthropic Configuration ANTHROPIC_API_KEY= + +# Fill these out if you want to use Discord +DISCORD_APPLICATION_ID= +DISCORD_API_TOKEN= + +# Fill these out if you want to use Telegram +TELEGRAM_BOT_TOKEN= + +# Fill these out if you want to use Twitter +TWITTER_USERNAME= +TWITTER_PASSWORD= +TWITTER_EMAIL= + +# Fill these out if you want to use EVM +EVM_PRIVATE_KEY= +EVM_CHAINS=mainnet,sepolia,base,arbitrum,polygon +EVM_PROVIDER_URL= + +# Fill these out if you want to use Solana +SOLANA_PUBLIC_KEY= +SOLANA_PRIVATE_KEY= +BIRDEYE_API_KEY= \ No newline at end of file diff --git a/.gitignore b/.gitignore index 9febd13a35d..caf0f5024db 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,6 @@ node_modules .env_main concatenated-output.ts embedding-cache.json -packages/plugin-buttplug/intiface-engine node-compile-cache @@ -50,10 +49,7 @@ characters/**/*.env characters/**/*.key characters/**/private/ -packages/core/src/providers/cache -packages/core/src/providers/cache/* cache/* -packages/plugin-coinbase/src/plugins/transactions.csv tsup.config.bundled_*.mjs @@ -71,10 +67,6 @@ eliza.manifest eliza.manifest.sgx eliza.sig -packages/plugin-nvidia-nim/extra -packages/plugin-nvidia-nim/old_code -packages/plugin-nvidia-nim/docs - # Edriziai specific ignores characters/edriziai-info/secrets.json diff --git a/bun.lockb b/bun.lockb index e577e7ff2b4037bd11c9364c1935b8aba2f59546..d5576174e8aab50e500dd3b05d672fcb616fef9f 100755 GIT binary patch delta 407070 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�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

lWH&`L@8m{ApXhy^bt69Vs~Kr$Tvbzq3;^ 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 Sa|>whyDu(@%FF*C?)!f)j_Be5 delta 267711 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 InyVN7FEDeocmMzZ diff --git a/packages/agent/src/defaultCharacter.ts b/packages/agent/src/defaultCharacter.ts index 5f7a3269e59..31b51a5478d 100644 --- a/packages/agent/src/defaultCharacter.ts +++ b/packages/agent/src/defaultCharacter.ts @@ -11,7 +11,8 @@ export const defaultCharacter: Character = { "@elizaos/plugin-node", // "@elizaos/plugin-telegram", // "@elizaos/plugin-twitter", - "@elizaos/plugin-evm" + "@elizaos/plugin-evm", + "@elizaos/plugin-solana", ], settings: { secrets: {}, diff --git a/packages/plugin-solana/.npmignore b/packages/plugin-solana/.npmignore new file mode 100644 index 00000000000..078562eceab --- /dev/null +++ b/packages/plugin-solana/.npmignore @@ -0,0 +1,6 @@ +* + +!dist/** +!package.json +!readme.md +!tsup.config.ts \ No newline at end of file diff --git a/packages/plugin-solana/README.md b/packages/plugin-solana/README.md new file mode 100644 index 00000000000..c0c3e79d8c8 --- /dev/null +++ b/packages/plugin-solana/README.md @@ -0,0 +1,374 @@ +# @elizaos/plugin-solana + +Core Solana blockchain plugin for Eliza OS that provides essential services and actions for token operations, trading, and DeFi integrations. + +## Overview + +The Solana plugin serves as a foundational component of Eliza OS, bridging Solana blockchain capabilities with the Eliza ecosystem. It provides crucial services for token operations, trading, portfolio management, and DeFi integrations, enabling both automated and user-directed interactions with the Solana blockchain. + +## Features + +### Token Operations + +- **Token Creation**: Deploy new tokens with customizable metadata +- **Token Transfers**: Send and receive tokens securely +- **Balance Management**: Track and manage token balances +- **Portfolio Analytics**: Real-time portfolio valuation and tracking + +### Trading Operations + +- **Token Swaps**: Execute trades between tokens using Jupiter aggregator +- **Order Management**: Place and track token orders +- **Price Monitoring**: Real-time price feeds and historical data +- **Automated Trading**: Configurable trading strategies and automation + +### DeFi Integration + +- **Liquidity Analysis**: Monitor and analyze pool liquidity +- **Market Making**: Automated market making capabilities +- **Yield Optimization**: Smart routing for optimal yields +- **Risk Management**: Advanced risk scoring and monitoring + +### Trust & Security + +- **Trust Scoring**: Dynamic trust score calculation for tokens +- **Risk Assessment**: Real-time risk evaluation for trades +- **Performance Tracking**: Historical performance monitoring +- **Simulation Mode**: Test strategies without real transactions + +## Security Features + +### Access Control + +- **Wallet Management**: Secure wallet key derivation and storage +- **Permission Scoping**: Granular control over trading permissions +- **TEE Integration**: Trusted Execution Environment support +- **Key Protection**: Secure private key handling + +### Risk Management + +- **Trade Limits**: Configurable transaction limits +- **Slippage Protection**: Automatic slippage controls +- **Validation Checks**: Multi-level transaction validation +- **Simulation Support**: Pre-execution transaction simulation + +## Installation + +```bash +npm install @elizaos/plugin-solana +``` + +## Configuration + +Configure the plugin by setting the following environment variables: + +```typescript +const solanaEnvSchema = { + WALLET_SECRET_SALT: string(optional), + WALLET_SECRET_KEY: string, + WALLET_PUBLIC_KEY: string, + SOL_ADDRESS: string, + SLIPPAGE: string, + SOLANA_RPC_URL: string, + HELIUS_API_KEY: string, + BIRDEYE_API_KEY: string, +}; +``` + +## Usage + +### Basic Setup + +```typescript +import { solanaPlugin } from "@elizaos/plugin-solana"; + +// Initialize the plugin +const runtime = await initializeRuntime({ + plugins: [solanaPlugin], +}); +``` + +### Services + +#### TokenProvider + +Manages token operations and information retrieval. + +```typescript +const tokenProvider = new TokenProvider( + tokenAddress, + walletProvider, + cacheManager +); +await tokenProvider.getTokensInWallet(runtime); +``` + +#### WalletProvider + +Handles wallet operations and portfolio management. + +```typescript +const walletProvider = new WalletProvider(connection, publicKey); +await walletProvider.getFormattedPortfolio(runtime); +``` + +#### TrustScoreProvider + +Evaluates and manages trust scores for tokens and trading activities. + +```typescript +const trustScore = await runtime.getProvider("trustScore"); +``` + +## Actions + +### executeSwap + +Executes a token swap using Jupiter aggregator. + +```typescript +// Example usage +const result = await runtime.executeAction("EXECUTE_SWAP", { + inputTokenSymbol: "SOL", + outputTokenSymbol: "USDC", + amount: 0.1, +}); +``` + +### transferToken + +Transfers tokens between wallets. + +```typescript +// Example usage +const result = await runtime.executeAction("SEND_TOKEN", { + tokenAddress: "TokenAddressHere", + recipient: "RecipientAddressHere", + amount: "1000", +}); +``` + +### transferSol + +Transfers SOL between wallets. + +```typescript +// Example usage +const result = await runtime.executeAction("SEND_SOL", { + recipient: "RecipientAddressHere", + amount: "1000", +}); +``` + +### takeOrder + +Places a buy order based on conviction level. + +```typescript +// Example usage +const result = await runtime.executeAction("TAKE_ORDER", { + ticker: "SOL", + contractAddress: "ContractAddressHere", +}); +``` + +### pumpfun + +Creates and buys tokens on pump.fun. + +```typescript +// Example usage +const result = await runtime.executeAction("CREATE_AND_BUY_TOKEN", { + tokenMetadata: { + name: "TokenName", + symbol: "SYMBOL", + description: "Token description", + image_description: "Image description", + }, + buyAmountSol: 0.1, +}); +``` + +### fomo + +Creates and buys tokens on fomo.fund. + +```typescript +// Example usage +const result = await runtime.executeAction("CREATE_AND_BUY_TOKEN", { + tokenMetadata: { + name: "TokenName", + symbol: "SYMBOL", + description: "Token description", + image_description: "Image description", + }, + buyAmountSol: 0.1, + requiredLiquidity: 1000, +}); +``` + +### executeSwapForDAO + +Executes token swaps for DAO operations. + +```typescript +// Example usage +const result = await runtime.executeAction("EXECUTE_SWAP_DAO", { + inputTokenSymbol: "SOL", + outputTokenSymbol: "USDC", + amount: 0.1, +}); +``` + +## Performance Optimization + +1. **Cache Management** + + - Implement token data caching + - Configure cache TTL settings + - Monitor cache hit rates + +2. **RPC Optimization** + + - Use connection pooling + - Implement request batching + - Monitor RPC usage + +3. **Transaction Management** + - Optimize transaction bundling + - Implement retry strategies + - Monitor transaction success rates + +## System Requirements + +- Node.js 16.x or higher +- Solana CLI tools (optional) +- Minimum 4GB RAM recommended +- Stable internet connection +- Access to Solana RPC endpoint + +## Troubleshooting + +### Common Issues + +1. **Wallet Connection Failures** + +```bash +Error: Failed to connect to wallet +``` + +- Verify RPC endpoint is accessible +- Check wallet configuration settings +- Ensure proper network selection + +2. **Transaction Errors** + +```bash +Error: Transaction simulation failed +``` + +- Check account balances +- Verify transaction parameters +- Ensure proper fee configuration + +3. **Price Feed Issues** + +```bash +Error: Unable to fetch price data +``` + +- Verify API key configuration +- Check network connectivity +- Ensure price feed service status + +## Safety & Security + +### Best Practices + +1. **Environment Variables** + + - Store sensitive keys in environment variables + - Use .env.example for non-sensitive defaults + - Never commit real credentials to version control + +2. **Transaction Limits** + + - Set maximum transaction amounts + - Implement daily trading limits + - Configure per-token restrictions + +3. **Monitoring** + + - Track failed transaction attempts + - Monitor unusual trading patterns + - Log security-relevant events + +4. **Recovery** + - Implement transaction rollback mechanisms + - Maintain backup RPC endpoints + - Document recovery procedures + +## Performance Optimization + +1. **Cache Management** + + - Implement token data caching + - Configure cache TTL settings + - Monitor cache hit rates + +2. **RPC Optimization** + + - Use connection pooling + - Implement request batching + - Monitor RPC usage + +3. **Transaction Management** + - Optimize transaction bundling + - Implement retry strategies + - Monitor transaction success rates + +## Support + +For issues and feature requests, please: + +1. Check the troubleshooting guide above +2. Review existing GitHub issues +3. Submit a new issue with: + - System information + - Error logs + - Steps to reproduce + - Transaction IDs (if applicable) + +## Contributing + +Contributions are welcome! Please see the [CONTRIBUTING.md](CONTRIBUTING.md) file for more information. + +## Credits + +This plugin integrates with and builds upon several key technologies: + +- [Solana](https://solana.com/) - The core blockchain platform +- [Solana Web3.js](https://github.com/solana-labs/solana-web3.js) - Core Solana interactions +- [SPL Token](https://spl.solana.com/) - Token program interactions +- [Jupiter](https://jup.ag/) - Token swap aggregation +- [Birdeye](https://birdeye.so/) - Price feeds and analytics +- [Helius](https://helius.xyz/) - Enhanced RPC services +- [Anchor](https://project-serum.github.io/anchor/) - Smart contract framework +- [FOMO](https://fomo.fund/) - Token creation and trading +- [Pump.fun](https://pump.fun/) - Token creation and trading + +Special thanks to: + +- The Solana ecosystem and all the open-source contributors who make these integrations possible. +- The Eliza community for their contributions and feedback. + +For more information about Solana blockchain capabilities: + +- [Solana Documentation](https://docs.solana.com/) +- [Solana Developer Portal](https://solana.com/developers) +- [Solana Network Dashboard](https://solscan.io/) +- [Solana GitHub Repository](https://github.com/solana-labs/solana) + +## License + +This plugin is part of the Eliza project. See the main project repository for license information. diff --git a/packages/plugin-solana/__tests__/actions/swap.test.ts b/packages/plugin-solana/__tests__/actions/swap.test.ts new file mode 100644 index 00000000000..f38f806c4e8 --- /dev/null +++ b/packages/plugin-solana/__tests__/actions/swap.test.ts @@ -0,0 +1,22 @@ +import { describe, it, expect, vi } from 'vitest'; + +describe('Swap Action', () => { + describe('validate', () => { + it('should handle swap message validation', async () => { + const mockMessage = { + content: 'Swap 1 SOL to USDC', + metadata: { + fromToken: 'SOL', + toToken: 'USDC', + amount: '1' + } + }; + + // Basic test to ensure message structure + expect(mockMessage.metadata).toBeDefined(); + expect(mockMessage.metadata.fromToken).toBe('SOL'); + expect(mockMessage.metadata.toToken).toBe('USDC'); + expect(mockMessage.metadata.amount).toBe('1'); + }); + }); +}); diff --git a/packages/plugin-solana/biome.json b/packages/plugin-solana/biome.json new file mode 100644 index 00000000000..818716a6219 --- /dev/null +++ b/packages/plugin-solana/biome.json @@ -0,0 +1,41 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json", + "organizeImports": { + "enabled": false + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "correctness": { + "noUnusedVariables": "error" + }, + "suspicious": { + "noExplicitAny": "error" + }, + "style": { + "useConst": "error", + "useImportType": "off" + } + } + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 4, + "lineWidth": 100 + }, + "javascript": { + "formatter": { + "quoteStyle": "single", + "trailingCommas": "es5" + } + }, + "files": { + "ignore": [ + "dist/**/*", + "extra/**/*", + "node_modules/**/*" + ] + } +} \ No newline at end of file diff --git a/packages/plugin-solana/images/banner.jpg b/packages/plugin-solana/images/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b0da69f7644e5b59a83a99d909a3cca080c92da1 GIT binary patch literal 23108 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 QsPh>{@_jz9YW(s40;w<7?EnA( literal 0 HcmV?d00001 diff --git a/packages/plugin-solana/images/logo.jpg b/packages/plugin-solana/images/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..11238b75fd3f6a34a3e377a2a4f7e91b38a8e2be GIT binary patch literal 10764 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 literal 0 HcmV?d00001 diff --git a/packages/plugin-solana/package.json b/packages/plugin-solana/package.json new file mode 100644 index 00000000000..f61b659a6a9 --- /dev/null +++ b/packages/plugin-solana/package.json @@ -0,0 +1,52 @@ +{ + "name": "@elizaos/plugin-solana", + "version": "0.1.9", + "type": "module", + "main": "dist/index.js", + "module": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + "./package.json": "./package.json", + ".": { + "import": { + "@elizaos/source": "./src/index.ts", + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + } + }, + "files": [ + "dist" + ], + "dependencies": { + "@coral-xyz/anchor": "0.30.1", + "@elizaos/core": "workspace:*", + "@solana/spl-token": "0.4.9", + "@solana/web3.js": "npm:@solana/web3.js@1.95.8", + "bignumber.js": "9.1.2", + "bs58": "6.0.0", + "fomo-sdk-solana": "1.3.2", + "node-cache": "5.1.2", + "pumpdotfun-sdk": "1.3.2", + "solana-agent-kit": "^1.4.0", + "tsup": "8.3.5", + "vitest": "2.1.9" + }, + "devDependencies": { + "@biomejs/biome": "1.5.3", + "tsup": "^8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "biome check src/", + "lint:fix": "biome check --apply src/", + "format": "biome format src/", + "format:fix": "biome format --write src/", + "test": "vitest run" + }, + "peerDependencies": { + "form-data": "4.0.1", + "whatwg-url": "7.1.0" + } +} diff --git a/packages/plugin-solana/src/actions/swap.ts b/packages/plugin-solana/src/actions/swap.ts new file mode 100644 index 00000000000..78150c8adff --- /dev/null +++ b/packages/plugin-solana/src/actions/swap.ts @@ -0,0 +1,433 @@ +import { + type Action, + type ActionExample, + composeContext, + elizaLogger, + generateObject, + type HandlerCallback, + type IAgentRuntime, + type Memory, + ModelClass, + settings, + type State, +} from "@elizaos/core"; +import { Connection, PublicKey, VersionedTransaction } from "@solana/web3.js"; +import BigNumber from "bignumber.js"; +import { getWalletKey } from "../keypairUtils.ts"; +import { walletProvider, WalletProvider } from "../providers/wallet.ts"; + +async function getTokenDecimals( + connection: Connection, + mintAddress: string +): Promise { + const mintPublicKey = new PublicKey(mintAddress); + const tokenAccountInfo = + await connection.getParsedAccountInfo(mintPublicKey); + + // Check if the data is parsed and contains the expected structure + if ( + tokenAccountInfo.value && + typeof tokenAccountInfo.value.data === "object" && + "parsed" in tokenAccountInfo.value.data + ) { + const parsedInfo = tokenAccountInfo.value.data.parsed?.info; + if (parsedInfo && typeof parsedInfo.decimals === "number") { + return parsedInfo.decimals; + } + } + + throw new Error("Unable to fetch token decimals"); +} + +async function swapToken( + connection: Connection, + walletPublicKey: PublicKey, + inputTokenCA: string, + outputTokenCA: string, + amount: number +): Promise { + try { + // Get the decimals for the input token + const decimals = + inputTokenCA === settings.SOL_ADDRESS + ? new BigNumber(9) + : new BigNumber( + await getTokenDecimals(connection, inputTokenCA) + ); + + elizaLogger.log("Decimals:", decimals.toString()); + + // Use BigNumber for adjustedAmount: amount * (10 ** decimals) + const amountBN = new BigNumber(amount); + const adjustedAmount = amountBN.multipliedBy( + new BigNumber(10).pow(decimals) + ); + + elizaLogger.log("Fetching quote with params:", { + inputMint: inputTokenCA, + outputMint: outputTokenCA, + amount: adjustedAmount, + }); + + const quoteResponse = await fetch( + `https://quote-api.jup.ag/v6/quote?inputMint=${inputTokenCA}&outputMint=${outputTokenCA}&amount=${adjustedAmount}&dynamicSlippage=true&maxAccounts=64` + ); + const quoteData = await quoteResponse.json(); + + if (!quoteData || quoteData.error) { + elizaLogger.error("Quote error:", quoteData); + throw new Error( + `Failed to get quote: ${quoteData?.error || "Unknown error"}` + ); + } + + elizaLogger.log("Quote received:", quoteData); + + const swapRequestBody = { + quoteResponse: quoteData, + userPublicKey: walletPublicKey.toBase58(), + dynamicComputeUnitLimit: true, + dynamicSlippage: true, + priorityLevelWithMaxLamports: { + maxLamports: 4000000, + priorityLevel: "veryHigh", + }, + }; + + elizaLogger.log("Requesting swap with body:", swapRequestBody); + + const swapResponse = await fetch("https://quote-api.jup.ag/v6/swap", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(swapRequestBody), + }); + + const swapData = await swapResponse.json(); + + if (!swapData || !swapData.swapTransaction) { + elizaLogger.error("Swap error:", swapData); + throw new Error( + `Failed to get swap transaction: ${swapData?.error || "No swap transaction returned"}` + ); + } + + elizaLogger.log("Swap transaction received"); + return swapData; + } catch (error) { + elizaLogger.error("Error in swapToken:", error); + throw error; + } +} + +const swapTemplate = `Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined. + +Example response: +\`\`\`json +{ + "inputTokenSymbol": "SOL", + "outputTokenSymbol": "USDC", + "inputTokenCA": "So11111111111111111111111111111111111111112", + "outputTokenCA": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "amount": 1.5 +} +\`\`\` + +{{recentMessages}} + +Given the recent messages and wallet information below: + +{{walletInfo}} + +Extract the following information about the requested token swap: +- Input token symbol (the token being sold) +- Output token symbol (the token being bought) +- Input token contract address if provided +- Output token contract address if provided +- Amount to swap + +Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined. The result should be a valid JSON object with the following schema: +\`\`\`json +{ + "inputTokenSymbol": string | null, + "outputTokenSymbol": string | null, + "inputTokenCA": string | null, + "outputTokenCA": string | null, + "amount": number | string | null +} +\`\`\``; + +// if we get the token symbol but not the CA, check walet for matching token, and if we have, get the CA for it + +// get all the tokens in the wallet using the wallet provider +async function getTokensInWallet(runtime: IAgentRuntime) { + const { publicKey } = await getWalletKey(runtime, false); + const walletProvider = new WalletProvider( + new Connection("https://api.mainnet-beta.solana.com"), + publicKey + ); + + const walletInfo = await walletProvider.fetchPortfolioValue(runtime); + const items = walletInfo.items; + return items; +} + +// check if the token symbol is in the wallet +async function getTokenFromWallet(runtime: IAgentRuntime, tokenSymbol: string) { + try { + const items = await getTokensInWallet(runtime); + const token = items.find((item) => item.symbol === tokenSymbol); + + if (token) { + return token.address; + } else { + return null; + } + } catch (error) { + elizaLogger.error("Error checking token in wallet:", error); + return null; + } +} + +// swapToken should took CA, not symbol + +export const executeSwap: Action = { + name: "SWAP_SOLANA", + similes: ["SWAP_SOL", "SWAP_TOKENS_SOLANA", "TOKEN_SWAP_SOLANA", "TRADE_TOKENS_SOLANA", "EXCHANGE_TOKENS_SOLANA"], + validate: async (runtime: IAgentRuntime, message: Memory) => { + // Check if the necessary parameters are provided in the message + elizaLogger.log("Message:", message); + return true; + }, + description: "Perform a token swap from one token to another on Solana. Works with SOL and SPL tokens.", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: { [key: string]: unknown }, + callback?: HandlerCallback + ): Promise => { + // composeState + if (!state) { + state = (await runtime.composeState(message)) as State; + } else { + state = await runtime.updateRecentMessageState(state); + } + + const walletInfo = await walletProvider.get(runtime, message, state); + + state.walletInfo = walletInfo; + + const swapContext = composeContext({ + state, + template: swapTemplate, + }); + + const response = await generateObject({ + runtime, + context: swapContext, + modelClass: ModelClass.LARGE, + }); + + elizaLogger.log("Response:", response); + // const type = response.inputTokenSymbol?.toUpperCase() === "SOL" ? "buy" : "sell"; + + // Add SOL handling logic + if (response.inputTokenSymbol?.toUpperCase() === "SOL") { + response.inputTokenCA = settings.SOL_ADDRESS; + } + if (response.outputTokenSymbol?.toUpperCase() === "SOL") { + response.outputTokenCA = settings.SOL_ADDRESS; + } + + // if both contract addresses are set, lets execute the swap + // TODO: try to resolve CA from symbol based on existing symbol in wallet + if (!response.inputTokenCA && response.inputTokenSymbol) { + elizaLogger.log( + `Attempting to resolve CA for input token symbol: ${response.inputTokenSymbol}` + ); + response.inputTokenCA = await getTokenFromWallet( + runtime, + response.inputTokenSymbol + ); + if (response.inputTokenCA) { + elizaLogger.log( + `Resolved inputTokenCA: ${response.inputTokenCA}` + ); + } else { + elizaLogger.log( + "No contract addresses provided, skipping swap" + ); + const responseMsg = { + text: "I need the contract addresses to perform the swap", + }; + callback?.(responseMsg); + return true; + } + } + + if (!response.outputTokenCA && response.outputTokenSymbol) { + elizaLogger.log( + `Attempting to resolve CA for output token symbol: ${response.outputTokenSymbol}` + ); + response.outputTokenCA = await getTokenFromWallet( + runtime, + response.outputTokenSymbol + ); + if (response.outputTokenCA) { + elizaLogger.log( + `Resolved outputTokenCA: ${response.outputTokenCA}` + ); + } else { + elizaLogger.log( + "No contract addresses provided, skipping swap" + ); + const responseMsg = { + text: "I need the contract addresses to perform the swap", + }; + callback?.(responseMsg); + return true; + } + } + + if (!response.amount) { + elizaLogger.log("No amount provided, skipping swap"); + const responseMsg = { + text: "I need the amount to perform the swap", + }; + callback?.(responseMsg); + return true; + } + + // TODO: if response amount is half, all, etc, semantically retrieve amount and return as number + if (!response.amount) { + elizaLogger.log("Amount is not a number, skipping swap"); + const responseMsg = { + text: "The amount must be a number", + }; + callback?.(responseMsg); + return true; + } + try { + const connection = new Connection( + "https://api.mainnet-beta.solana.com" + ); + const { publicKey: walletPublicKey } = await getWalletKey( + runtime, + false + ); + + // const provider = new WalletProvider(connection, walletPublicKey); + + elizaLogger.log("Wallet Public Key:", walletPublicKey); + elizaLogger.log("inputTokenSymbol:", response.inputTokenCA); + elizaLogger.log("outputTokenSymbol:", response.outputTokenCA); + elizaLogger.log("amount:", response.amount); + + const swapResult = await swapToken( + connection, + walletPublicKey, + response.inputTokenCA as string, + response.outputTokenCA as string, + response.amount as number + ); + + elizaLogger.log("Deserializing transaction..."); + const transactionBuf = Buffer.from( + swapResult.swapTransaction, + "base64" + ); + const transaction = + VersionedTransaction.deserialize(transactionBuf); + + elizaLogger.log("Preparing to sign transaction..."); + + elizaLogger.log("Creating keypair..."); + const { keypair } = await getWalletKey(runtime, true); + // Verify the public key matches what we expect + if (keypair.publicKey.toBase58() !== walletPublicKey.toBase58()) { + throw new Error( + "Generated public key doesn't match expected public key" + ); + } + + elizaLogger.log("Signing transaction..."); + transaction.sign([keypair]); + + elizaLogger.log("Sending transaction..."); + + const latestBlockhash = await connection.getLatestBlockhash(); + + const txid = await connection.sendTransaction(transaction, { + skipPreflight: false, + maxRetries: 3, + preflightCommitment: "confirmed", + }); + + elizaLogger.log("Transaction sent:", txid); + + // Confirm transaction using the blockhash + const confirmation = await connection.confirmTransaction( + { + signature: txid, + blockhash: latestBlockhash.blockhash, + lastValidBlockHeight: latestBlockhash.lastValidBlockHeight, + }, + "confirmed" + ); + + if (confirmation.value.err) { + throw new Error( + `Transaction failed: ${confirmation.value.err}` + ); + } + + if (confirmation.value.err) { + throw new Error( + `Transaction failed: ${confirmation.value.err}` + ); + } + + elizaLogger.log("Swap completed successfully!"); + elizaLogger.log(`Transaction ID: ${txid}`); + + const responseMsg = { + text: `Swap completed successfully! Transaction ID: ${txid}`, + }; + + callback?.(responseMsg); + + return true; + } catch (error) { + elizaLogger.error("Error during token swap:", error); + return false; + } + }, + examples: [ + [ + { + user: "{{user1}}", + content: { + inputTokenSymbol: "SOL", + outputTokenSymbol: "USDC", + amount: 0.1, + }, + }, + { + user: "{{user2}}", + content: { + text: "Swapping 0.1 SOL for USDC...", + action: "SWAP_SOLANA", + }, + }, + { + user: "{{user2}}", + content: { + text: "Swap completed successfully! Transaction ID: ...", + }, + }, + ], + // Add more examples as needed + ] as ActionExample[][], +} as Action; \ No newline at end of file diff --git a/packages/plugin-solana/src/actions/transfer.ts b/packages/plugin-solana/src/actions/transfer.ts new file mode 100644 index 00000000000..54c8e2cb7ab --- /dev/null +++ b/packages/plugin-solana/src/actions/transfer.ts @@ -0,0 +1,276 @@ +import { + type Action, + type ActionExample, + composeContext, + type Content, + elizaLogger, + generateObject, + type HandlerCallback, + type IAgentRuntime, + type Memory, + ModelClass, settings, type State +} from "@elizaos/core"; +import { + createAssociatedTokenAccountInstruction, + createTransferInstruction, + getAssociatedTokenAddressSync, +} from "@solana/spl-token"; +import { + Connection, + PublicKey, + SystemProgram, + TransactionMessage, + VersionedTransaction, +} from "@solana/web3.js"; +import { getWalletKey } from "../keypairUtils"; + +interface TransferContent extends Content { + tokenAddress: string | null; // null for SOL transfers + recipient: string; + amount: string | number; +} + +function isTransferContent( + content: any +): content is TransferContent { + elizaLogger.log("Content for transfer", content); + + // Base validation + if (!content.recipient || typeof content.recipient !== "string") { + return false; + } + + // SOL transfer validation + if (content.tokenAddress === null) { + return typeof content.amount === "number"; + } + + // SPL token transfer validation + if (typeof content.tokenAddress === "string") { + return typeof content.amount === "string" || typeof content.amount === "number"; + } + + return false; +} + +const transferTemplate = `Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined. + +Example responses: +For SPL tokens: +\`\`\`json +{ + "tokenAddress": "BieefG47jAHCGZBxi2q87RDuHyGZyYC3vAzxpyu8pump", + "recipient": "9jW8FPr6BSSsemWPV22UUCzSqkVdTp6HTyPqeqyuBbCa", + "amount": "1000" +} +\`\`\` + +For SOL: +\`\`\`json +{ + "tokenAddress": null, + "recipient": "9jW8FPr6BSSsemWPV22UUCzSqkVdTp6HTyPqeqyuBbCa", + "amount": 1.5 +} +\`\`\` + +{{recentMessages}} + +Extract the following information about the requested transfer: +- Token contract address (use null for SOL transfers) +- Recipient wallet address +- Amount to transfer +`; + +export default { + name: "TRANSFER_SOLANA", + similes: [ + "TRANSFER_SOL", + "SEND_TOKEN_SOLANA", "TRANSFER_TOKEN_SOLANA", "SEND_TOKENS_SOLANA", "TRANSFER_TOKENS_SOLANA", + "SEND_SOL", "SEND_TOKEN_SOL", "PAY_SOL", "PAY_TOKEN_SOL", "PAY_TOKENS_SOL", "PAY_TOKENS_SOLANA", + "PAY_SOLANA" + ], + validate: async (runtime: IAgentRuntime, message: Memory) => { + elizaLogger.log("Validating transfer from user:", message.userId); + return true; + }, + description: "Transfer SOL or SPL tokens to another address on Solana.", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: { [key: string]: unknown }, + callback?: HandlerCallback + ): Promise => { + elizaLogger.log("Starting TRANSFER handler..."); + + if (!state) { + state = (await runtime.composeState(message)) as State; + } else { + state = await runtime.updateRecentMessageState(state); + } + + const transferContext = composeContext({ + state, + template: transferTemplate, + }); + + const content = await generateObject({ + runtime, + context: transferContext, + modelClass: ModelClass.LARGE, + }); + + if (!isTransferContent(content)) { + if (callback) { + callback({ + text: "Need a valid recipient address and amount to transfer.", + content: { error: "Invalid transfer content" }, + }); + } + return false; + } + + try { + const { keypair: senderKeypair } = await getWalletKey(runtime, true); + const connection = new Connection(settings.SOLANA_RPC_URL!); + const recipientPubkey = new PublicKey(content.recipient); + + let signature: string; + + // Handle SOL transfer + if (content.tokenAddress === null) { + const lamports = Number(content.amount) * 1e9; + + const instruction = SystemProgram.transfer({ + fromPubkey: senderKeypair.publicKey, + toPubkey: recipientPubkey, + lamports, + }); + + const messageV0 = new TransactionMessage({ + payerKey: senderKeypair.publicKey, + recentBlockhash: (await connection.getLatestBlockhash()).blockhash, + instructions: [instruction], + }).compileToV0Message(); + + const transaction = new VersionedTransaction(messageV0); + transaction.sign([senderKeypair]); + + signature = await connection.sendTransaction(transaction); + + if (callback) { + callback({ + text: `Sent ${content.amount} SOL. Transaction hash: ${signature}`, + content: { + success: true, + signature, + amount: content.amount, + recipient: content.recipient, + }, + }); + } + } + // Handle SPL token transfer + else { + const mintPubkey = new PublicKey(content.tokenAddress); + const mintInfo = await connection.getParsedAccountInfo(mintPubkey); + const decimals = (mintInfo.value?.data as any)?.parsed?.info?.decimals ?? 9; + const adjustedAmount = BigInt(Number(content.amount) * Math.pow(10, decimals)); + + const senderATA = getAssociatedTokenAddressSync(mintPubkey, senderKeypair.publicKey); + const recipientATA = getAssociatedTokenAddressSync(mintPubkey, recipientPubkey); + + const instructions = []; + + const recipientATAInfo = await connection.getAccountInfo(recipientATA); + if (!recipientATAInfo) { + instructions.push( + createAssociatedTokenAccountInstruction( + senderKeypair.publicKey, + recipientATA, + recipientPubkey, + mintPubkey + ) + ); + } + + instructions.push( + createTransferInstruction( + senderATA, + recipientATA, + senderKeypair.publicKey, + adjustedAmount + ) + ); + + const messageV0 = new TransactionMessage({ + payerKey: senderKeypair.publicKey, + recentBlockhash: (await connection.getLatestBlockhash()).blockhash, + instructions, + }).compileToV0Message(); + + const transaction = new VersionedTransaction(messageV0); + transaction.sign([senderKeypair]); + + signature = await connection.sendTransaction(transaction); + + if (callback) { + callback({ + text: `Sent ${content.amount} tokens to ${content.recipient}\nTransaction hash: ${signature}`, + content: { + success: true, + signature, + amount: content.amount, + recipient: content.recipient, + }, + }); + } + } + + return true; + } catch (error) { + elizaLogger.error("Error during transfer:", error); + if (callback) { + callback({ + text: `Transfer failed: ${error.message}`, + content: { error: error.message }, + }); + } + return false; + } + }, + + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "Send 1.5 SOL to 9jW8FPr6BSSsemWPV22UUCzSqkVdTp6HTyPqeqyuBbCa", + }, + }, + { + user: "{{user2}}", + content: { + text: "Sending SOL now...", + action: "TRANSFER_SOLANA", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Send 69 $DEGENAI BieefG47jAHCGZBxi2q87RDuHyGZyYC3vAzxpyu8pump to 9jW8FPr6BSSsemWPV22UUCzSqkVdTp6HTyPqeqyuBbCa", + }, + }, + { + user: "{{user2}}", + content: { + text: "Sending the tokens now...", + action: "TRANSFER_SOLANA", + }, + }, + ], + ] as ActionExample[][], +} as Action; \ No newline at end of file diff --git a/packages/plugin-solana/src/bignumber.ts b/packages/plugin-solana/src/bignumber.ts new file mode 100644 index 00000000000..f320676a0fc --- /dev/null +++ b/packages/plugin-solana/src/bignumber.ts @@ -0,0 +1,9 @@ +import BigNumber from "bignumber.js"; + +// Re-export BigNumber constructor +export const BN = BigNumber; + +// Helper function to create new BigNumber instances +export function toBN(value: string | number | BigNumber): BigNumber { + return new BigNumber(value); +} diff --git a/packages/plugin-solana/src/client.ts b/packages/plugin-solana/src/client.ts new file mode 100644 index 00000000000..78548935495 --- /dev/null +++ b/packages/plugin-solana/src/client.ts @@ -0,0 +1,256 @@ +import { logger, type Client, type IAgentRuntime, type ICacheManager } from '@elizaos/core'; +import { Connection, PublicKey } from "@solana/web3.js"; +import BigNumber from "bignumber.js"; +import { getWalletKey } from "./keypairUtils"; +import type { Item, Prices, WalletPortfolio } from "./types"; + +const PROVIDER_CONFIG = { + BIRDEYE_API: "https://public-api.birdeye.so", + MAX_RETRIES: 3, + RETRY_DELAY: 2000, + DEFAULT_RPC: "https://api.mainnet-beta.solana.com", + TOKEN_ADDRESSES: { + SOL: "So11111111111111111111111111111111111111112", + BTC: "3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh", + ETH: "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs", + }, +}; + +class SolanaClient { + private updateInterval: NodeJS.Timer | null = null; + private lastUpdate: number = 0; + private readonly UPDATE_INTERVAL = 120000; // 2 minutes + private readonly CACHE_KEY = 'solana/walletData'; + private connection: Connection; + private publicKey: PublicKey; + + constructor( + private runtime: IAgentRuntime, + private cacheManager: ICacheManager, + connection: Connection, + publicKey: PublicKey + ) { + this.connection = connection; + this.publicKey = publicKey; + this.start(); + } + + start() { + logger.log('SolanaClient start'); + if (this.updateInterval) { + clearInterval(this.updateInterval); + } + + this.updateInterval = setInterval(async () => { + logger.log('Updating wallet data'); + await this.updateWalletData(); + }, this.UPDATE_INTERVAL); + + // Initial update + this.updateWalletData().catch(console.error); + } + + public stop(runtime: IAgentRuntime) { + if (this.updateInterval) { + clearInterval(this.updateInterval); + this.updateInterval = null; + } + + const client = runtime.clients.find(client => client.name === 'SolanaClient'); + runtime.clients = runtime.clients.filter(c => c !== client); + + return Promise.resolve(); + } + + private async fetchWithRetry( + url: string, + options: RequestInit = {} + ): Promise { + let lastError: Error; + + for (let i = 0; i < PROVIDER_CONFIG.MAX_RETRIES; i++) { + try { + const response = await fetch(url, { + ...options, + headers: { + Accept: "application/json", + "x-chain": "solana", + "X-API-KEY": this.runtime.getSetting("BIRDEYE_API_KEY"), + ...options.headers, + }, + }); + + if (!response.ok) { + const errorText = await response.text(); + throw new Error(`HTTP error! status: ${response.status}, message: ${errorText}`); + } + + return await response.json(); + } catch (error) { + logger.error(`Attempt ${i + 1} failed:`, error); + lastError = error; + if (i < PROVIDER_CONFIG.MAX_RETRIES - 1) { + await new Promise(resolve => setTimeout(resolve, PROVIDER_CONFIG.RETRY_DELAY * Math.pow(2, i))); + continue; + } + } + } + + throw lastError; + } + + private async fetchPrices(): Promise { + const cacheKey = "prices"; + const cachedValue = await this.cacheManager.get(cacheKey); + + if (cachedValue) { + logger.log("Cache hit for fetchPrices"); + return cachedValue; + } + + logger.log("Cache miss for fetchPrices"); + const { SOL, BTC, ETH } = PROVIDER_CONFIG.TOKEN_ADDRESSES; + const tokens = [SOL, BTC, ETH]; + const prices: Prices = { + solana: { usd: "0" }, + bitcoin: { usd: "0" }, + ethereum: { usd: "0" }, + }; + + for (const token of tokens) { + const response = await this.fetchWithRetry( + `${PROVIDER_CONFIG.BIRDEYE_API}/defi/price?address=${token}` + ); + + if (response?.data?.value) { + const price = response.data.value.toString(); + prices[ + token === SOL ? "solana" : token === BTC ? "bitcoin" : "ethereum" + ].usd = price; + } + } + + await this.cacheManager.set(cacheKey, prices); + return prices; + } + + private async getTokenAccounts() { + try { + const accounts = await this.connection.getParsedTokenAccountsByOwner( + this.publicKey, + { + programId: new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), + } + ); + return accounts.value; + } catch (error) { + logger.error("Error fetching token accounts:", error); + return []; + } + } + + private async updateWalletData(force: boolean = false): Promise { + const now = Date.now(); + + // Don't update if less than interval has passed, unless forced + if (!force && now - this.lastUpdate < this.UPDATE_INTERVAL) { + const cached = await this.getCachedData(); + if (cached) return cached; + } + + try { + // Try Birdeye API first + const birdeyeApiKey = this.runtime.getSetting("BIRDEYE_API_KEY"); + if (birdeyeApiKey) { + const walletData = await this.fetchWithRetry( + `${PROVIDER_CONFIG.BIRDEYE_API}/v1/wallet/token_list?wallet=${this.publicKey.toBase58()}` + ); + + if (walletData?.success && walletData?.data) { + const data = walletData.data; + const totalUsd = new BigNumber(data.totalUsd.toString()); + const prices = await this.fetchPrices(); + const solPriceInUSD = new BigNumber(prices.solana.usd); + + const portfolio: WalletPortfolio = { + totalUsd: totalUsd.toString(), + totalSol: totalUsd.div(solPriceInUSD).toFixed(6), + items: data.items.map((item: any) => ({ + ...item, + valueSol: new BigNumber(item.valueUsd || 0) + .div(solPriceInUSD) + .toFixed(6), + name: item.name || "Unknown", + symbol: item.symbol || "Unknown", + priceUsd: item.priceUsd || "0", + valueUsd: item.valueUsd || "0", + })), + }; + + await this.cacheManager.set(this.CACHE_KEY, portfolio); + this.lastUpdate = now; + return portfolio; + } + } + + // Fallback to basic token account info + const accounts = await this.getTokenAccounts(); + const items: Item[] = accounts.map((acc) => ({ + name: "Unknown", + address: acc.account.data.parsed.info.mint, + symbol: "Unknown", + decimals: acc.account.data.parsed.info.tokenAmount.decimals, + balance: acc.account.data.parsed.info.tokenAmount.amount, + uiAmount: acc.account.data.parsed.info.tokenAmount.uiAmount.toString(), + priceUsd: "0", + valueUsd: "0", + valueSol: "0", + })); + + const portfolio: WalletPortfolio = { + totalUsd: "0", + totalSol: "0", + items, + }; + + await this.cacheManager.set(this.CACHE_KEY, portfolio); + this.lastUpdate = now; + return portfolio; + + } catch (error) { + logger.error("Error updating wallet data:", error); + throw error; + } + } + + public async getCachedData(): Promise { + return await this.cacheManager.get(this.CACHE_KEY); + } + + public async forceUpdate(): Promise { + return await this.updateWalletData(true); + } + + public getPublicKey(): PublicKey { + return this.publicKey; + } + + public getConnection(): Connection { + return this.connection; + } +} + +export const SolanaClientInterface: Client = { + name: 'SolanaClient', + start: async (runtime: IAgentRuntime) => { + logger.log('initSolanaClient'); + + const connection = new Connection( + runtime.getSetting("SOLANA_RPC_URL") || PROVIDER_CONFIG.DEFAULT_RPC + ); + + const { publicKey } = await getWalletKey(runtime, false); + + return new SolanaClient(runtime, runtime.cacheManager, connection, publicKey); + } +}; \ No newline at end of file diff --git a/packages/plugin-solana/src/environment.ts b/packages/plugin-solana/src/environment.ts new file mode 100644 index 00000000000..5a536ced6fb --- /dev/null +++ b/packages/plugin-solana/src/environment.ts @@ -0,0 +1,78 @@ +import type { IAgentRuntime } from "@elizaos/core"; +import { z } from "zod"; + +export const solanaEnvSchema = z + .object({ + WALLET_SECRET_SALT: z.string().optional(), + }) + .and( + z.union([ + z.object({ + WALLET_SECRET_KEY: z + .string() + .min(1, "Wallet secret key is required"), + WALLET_PUBLIC_KEY: z + .string() + .min(1, "Wallet public key is required"), + }), + z.object({ + WALLET_SECRET_SALT: z + .string() + .min(1, "Wallet secret salt is required"), + }), + ]) + ) + .and( + z.object({ + SOL_ADDRESS: z.string().min(1, "SOL address is required"), + SLIPPAGE: z.string().min(1, "Slippage is required"), + SOLANA_RPC_URL: z.string().min(1, "RPC URL is required"), + HELIUS_API_KEY: z.string().min(1, "Helius API key is required"), + BIRDEYE_API_KEY: z.string().min(1, "Birdeye API key is required"), + }) + ); + +export type SolanaConfig = z.infer; + +export async function validateSolanaConfig( + runtime: IAgentRuntime +): Promise { + try { + const config = { + WALLET_SECRET_SALT: + runtime.getSetting("WALLET_SECRET_SALT") || + process.env.WALLET_SECRET_SALT, + WALLET_SECRET_KEY: + runtime.getSetting("WALLET_SECRET_KEY") || + process.env.WALLET_SECRET_KEY, + WALLET_PUBLIC_KEY: + runtime.getSetting("SOLANA_PUBLIC_KEY") || + runtime.getSetting("WALLET_PUBLIC_KEY") || + process.env.WALLET_PUBLIC_KEY, + SOL_ADDRESS: + runtime.getSetting("SOL_ADDRESS") || process.env.SOL_ADDRESS, + SLIPPAGE: runtime.getSetting("SLIPPAGE") || process.env.SLIPPAGE, + SOLANA_RPC_URL: + runtime.getSetting("SOLANA_RPC_URL") || + process.env.SOLANA_RPC_URL, + HELIUS_API_KEY: + runtime.getSetting("HELIUS_API_KEY") || + process.env.HELIUS_API_KEY, + BIRDEYE_API_KEY: + runtime.getSetting("BIRDEYE_API_KEY") || + process.env.BIRDEYE_API_KEY, + }; + + return solanaEnvSchema.parse(config); + } catch (error) { + if (error instanceof z.ZodError) { + const errorMessages = error.errors + .map((err) => `${err.path.join(".")}: ${err.message}`) + .join("\n"); + throw new Error( + `Solana configuration validation failed:\n${errorMessages}` + ); + } + throw error; + } +} diff --git a/packages/plugin-solana/src/index.ts b/packages/plugin-solana/src/index.ts new file mode 100644 index 00000000000..a062298fad2 --- /dev/null +++ b/packages/plugin-solana/src/index.ts @@ -0,0 +1,18 @@ +import type { Plugin } from "@elizaos/core"; +import { executeSwap } from "./actions/swap.ts"; +import transferToken from "./actions/transfer.ts"; +import { walletProvider } from "./providers/wallet.ts"; +import { SolanaClientInterface } from "./client.ts"; + +export const solanaPlugin: Plugin = { + name: "solana", + description: "Solana Plugin for Eliza", + actions: [ + transferToken, + executeSwap, + ], + evaluators: [], + providers: [walletProvider], + clients: [SolanaClientInterface], +}; +export default solanaPlugin; diff --git a/packages/plugin-solana/src/keypairUtils.ts b/packages/plugin-solana/src/keypairUtils.ts new file mode 100644 index 00000000000..c4c37e5e90b --- /dev/null +++ b/packages/plugin-solana/src/keypairUtils.ts @@ -0,0 +1,59 @@ +import { Keypair, PublicKey } from "@solana/web3.js"; +import bs58 from "bs58"; +import { type IAgentRuntime, elizaLogger } from "@elizaos/core"; + +export interface KeypairResult { + keypair?: Keypair; + publicKey?: PublicKey; +} + +/** + * Gets either a keypair or public key based on TEE mode and runtime settings + * @param runtime The agent runtime + * @param requirePrivateKey Whether to return a full keypair (true) or just public key (false) + * @returns KeypairResult containing either keypair or public key + */ +export async function getWalletKey( + runtime: IAgentRuntime, + requirePrivateKey = true +): Promise { + // TEE mode is OFF + if (requirePrivateKey) { + const privateKeyString = + runtime.getSetting("SOLANA_PRIVATE_KEY") ?? + runtime.getSetting("WALLET_PRIVATE_KEY"); + + if (!privateKeyString) { + throw new Error("Private key not found in settings"); + } + + try { + // First try base58 + const secretKey = bs58.decode(privateKeyString); + return { keypair: Keypair.fromSecretKey(secretKey) }; + } catch (e) { + elizaLogger.log("Error decoding base58 private key:", e); + try { + // Then try base64 + elizaLogger.log("Try decoding base64 instead"); + const secretKey = Uint8Array.from( + Buffer.from(privateKeyString, "base64") + ); + return { keypair: Keypair.fromSecretKey(secretKey) }; + } catch (e2) { + elizaLogger.error("Error decoding private key: ", e2); + throw new Error("Invalid private key format"); + } + } + } else { + const publicKeyString = + runtime.getSetting("SOLANA_PUBLIC_KEY") ?? + runtime.getSetting("WALLET_PUBLIC_KEY"); + + if (!publicKeyString) { + throw new Error("Solana Public key not found in settings, but plugin was loaded, please set SOLANA_PUBLIC_KEY"); + } + + return { publicKey: new PublicKey(publicKeyString) }; + } +} diff --git a/packages/plugin-solana/src/providers/wallet.ts b/packages/plugin-solana/src/providers/wallet.ts new file mode 100644 index 00000000000..ceb9ba647d4 --- /dev/null +++ b/packages/plugin-solana/src/providers/wallet.ts @@ -0,0 +1,418 @@ +import { + type IAgentRuntime, + type Memory, + type Provider, + type State, + elizaLogger, +} from "@elizaos/core"; +import { Connection, PublicKey } from "@solana/web3.js"; +import BigNumber from "bignumber.js"; +import NodeCache from "node-cache"; +import { getWalletKey } from "../keypairUtils"; +import { Item, Prices, WalletPortfolio } from "../types"; + +// Provider configuration +const PROVIDER_CONFIG = { + BIRDEYE_API: "https://public-api.birdeye.so", + MAX_RETRIES: 3, + RETRY_DELAY: 2000, + DEFAULT_RPC: "https://api.mainnet-beta.solana.com", + GRAPHQL_ENDPOINT: "https://graph.codex.io/graphql", + TOKEN_ADDRESSES: { + SOL: "So11111111111111111111111111111111111111112", + BTC: "3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh", + ETH: "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs", + }, +}; + +export class WalletProvider { + private cache: NodeCache; + + constructor( + private connection: Connection, + private walletPublicKey: PublicKey + ) { + this.cache = new NodeCache({ stdTTL: 300 }); // Cache TTL set to 5 minutes + } + + private async fetchWithRetry( + runtime, + url: string, + options: RequestInit = {} + ): Promise { + let lastError: Error; + + for (let i = 0; i < PROVIDER_CONFIG.MAX_RETRIES; i++) { + try { + const response = await fetch(url, { + ...options, + headers: { + Accept: "application/json", + "x-chain": "solana", + "X-API-KEY": + runtime.getSetting("BIRDEYE_API_KEY", "") || "", + ...options.headers, + }, + }); + + if (!response.ok) { + const errorText = await response.text(); + throw new Error( + `HTTP error! status: ${response.status}, message: ${errorText}` + ); + } + + const data = await response.json(); + return data; + } catch (error) { + elizaLogger.error(`Attempt ${i + 1} failed:`, error); + lastError = error; + if (i < PROVIDER_CONFIG.MAX_RETRIES - 1) { + const delay = PROVIDER_CONFIG.RETRY_DELAY * Math.pow(2, i); + await new Promise((resolve) => setTimeout(resolve, delay)); + continue; + } + } + } + + elizaLogger.error( + "All attempts failed. You may need BIRDEYE_API_KEY to fetch portfolio. Throwing the last error:", + lastError + ); + throw lastError; + } + + async fetchPortfolioValue(runtime): Promise { + try { + const cacheKey = `portfolio-${this.walletPublicKey.toBase58()}`; + const cachedValue = this.cache.get(cacheKey); + + if (cachedValue) { + elizaLogger.log("Cache hit for fetchPortfolioValue"); + return cachedValue; + } + elizaLogger.log("Cache miss for fetchPortfolioValue"); + + // Check if Birdeye API key is available + const birdeyeApiKey = runtime.getSetting("BIRDEYE_API_KEY"); + + if (birdeyeApiKey) { + // Existing Birdeye API logic + const walletData = await this.fetchWithRetry( + runtime, + `${PROVIDER_CONFIG.BIRDEYE_API}/v1/wallet/token_list?wallet=${this.walletPublicKey.toBase58()}` + ); + + if (walletData?.success && walletData?.data) { + const data = walletData.data; + const totalUsd = new BigNumber(data.totalUsd.toString()); + const prices = await this.fetchPrices(runtime); + const solPriceInUSD = new BigNumber( + prices.solana.usd.toString() + ); + + const items = data.items.map((item: any) => ({ + ...item, + valueSol: new BigNumber(item.valueUsd || 0) + .div(solPriceInUSD) + .toFixed(6), + name: item.name || "Unknown", + symbol: item.symbol || "Unknown", + priceUsd: item.priceUsd || "0", + valueUsd: item.valueUsd || "0", + })); + + const portfolio = { + totalUsd: totalUsd.toString(), + totalSol: totalUsd.div(solPriceInUSD).toFixed(6), + items: items.sort((a, b) => + new BigNumber(b.valueUsd) + .minus(new BigNumber(a.valueUsd)) + .toNumber() + ), + }; + + this.cache.set(cacheKey, portfolio); + return portfolio; + } + } + + // Fallback to basic token account info if no Birdeye API key or API call fails + const accounts = await this.getTokenAccounts( + this.walletPublicKey.toBase58() + ); + + const items = accounts.map((acc) => ({ + name: "Unknown", + address: acc.account.data.parsed.info.mint, + symbol: "Unknown", + decimals: acc.account.data.parsed.info.tokenAmount.decimals, + balance: acc.account.data.parsed.info.tokenAmount.amount, + uiAmount: + acc.account.data.parsed.info.tokenAmount.uiAmount.toString(), + priceUsd: "0", + valueUsd: "0", + valueSol: "0", + })); + + const portfolio = { + totalUsd: "0", + totalSol: "0", + items, + }; + + this.cache.set(cacheKey, portfolio); + return portfolio; + } catch (error) { + elizaLogger.error("Error fetching portfolio:", error); + throw error; + } + } + + async fetchPortfolioValueCodex(runtime): Promise { + try { + const cacheKey = `portfolio-${this.walletPublicKey.toBase58()}`; + const cachedValue = await this.cache.get(cacheKey); + + if (cachedValue) { + elizaLogger.log("Cache hit for fetchPortfolioValue"); + return cachedValue; + } + elizaLogger.log("Cache miss for fetchPortfolioValue"); + + const query = ` + query Balances($walletId: String!, $cursor: String) { + balances(input: { walletId: $walletId, cursor: $cursor }) { + cursor + items { + walletId + tokenId + balance + shiftedBalance + } + } + } + `; + + const variables = { + walletId: `${this.walletPublicKey.toBase58()}:${1399811149}`, + cursor: null, + }; + + const response = await fetch(PROVIDER_CONFIG.GRAPHQL_ENDPOINT, { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: + runtime.getSetting("CODEX_API_KEY", "") || "", + }, + body: JSON.stringify({ + query, + variables, + }), + }).then((res) => res.json()); + + const data = response.data?.data?.balances?.items; + + if (!data || data.length === 0) { + elizaLogger.error("No portfolio data available", data); + throw new Error("No portfolio data available"); + } + + // Fetch token prices + const prices = await this.fetchPrices(runtime); + const solPriceInUSD = new BigNumber(prices.solana.usd.toString()); + + // Reformat items + const items: Item[] = data.map((item: any) => { + return { + name: "Unknown", + address: item.tokenId.split(":")[0], + symbol: item.tokenId.split(":")[0], + decimals: 6, + balance: item.balance, + uiAmount: item.shiftedBalance.toString(), + priceUsd: "", + valueUsd: "", + valueSol: "", + }; + }); + + // Calculate total portfolio value + const totalUsd = items.reduce( + (sum, item) => sum.plus(new BigNumber(item.valueUsd)), + new BigNumber(0) + ); + + const totalSol = totalUsd.div(solPriceInUSD); + + const portfolio: WalletPortfolio = { + totalUsd: totalUsd.toFixed(6), + totalSol: totalSol.toFixed(6), + items: items.sort((a, b) => + new BigNumber(b.valueUsd) + .minus(new BigNumber(a.valueUsd)) + .toNumber() + ), + }; + + // Cache the portfolio for future requests + await this.cache.set(cacheKey, portfolio, 60 * 1000); // Cache for 1 minute + + return portfolio; + } catch (error) { + elizaLogger.error("Error fetching portfolio:", error); + throw error; + } + } + + async fetchPrices(runtime): Promise { + try { + const cacheKey = "prices"; + const cachedValue = this.cache.get(cacheKey); + + if (cachedValue) { + elizaLogger.log("Cache hit for fetchPrices"); + return cachedValue; + } + elizaLogger.log("Cache miss for fetchPrices"); + + const { SOL, BTC, ETH } = PROVIDER_CONFIG.TOKEN_ADDRESSES; + const tokens = [SOL, BTC, ETH]; + const prices: Prices = { + solana: { usd: "0" }, + bitcoin: { usd: "0" }, + ethereum: { usd: "0" }, + }; + + for (const token of tokens) { + const response = await this.fetchWithRetry( + runtime, + `${PROVIDER_CONFIG.BIRDEYE_API}/defi/price?address=${token}`, + { + headers: { + "x-chain": "solana", + }, + } + ); + + if (response?.data?.value) { + const price = response.data.value.toString(); + prices[ + token === SOL + ? "solana" + : token === BTC + ? "bitcoin" + : "ethereum" + ].usd = price; + } else { + elizaLogger.warn( + `No price data available for token: ${token}` + ); + } + } + + this.cache.set(cacheKey, prices); + return prices; + } catch (error) { + elizaLogger.error("Error fetching prices:", error); + throw error; + } + } + + formatPortfolio( + runtime, + portfolio: WalletPortfolio, + prices: Prices + ): string { + let output = `${runtime.character.description}\n`; + output += `Wallet Address: ${this.walletPublicKey.toBase58()}\n\n`; + + const totalUsdFormatted = new BigNumber(portfolio.totalUsd).toFixed(2); + const totalSolFormatted = portfolio.totalSol; + + output += `Total Value: $${totalUsdFormatted} (${totalSolFormatted} SOL)\n\n`; + output += "Token Balances:\n"; + + const nonZeroItems = portfolio.items.filter((item) => + new BigNumber(item.uiAmount).isGreaterThan(0) + ); + + if (nonZeroItems.length === 0) { + output += "No tokens found with non-zero balance\n"; + } else { + for (const item of nonZeroItems) { + const valueUsd = new BigNumber(item.valueUsd).toFixed(2); + output += `${item.name} (${item.symbol}): ${new BigNumber( + item.uiAmount + ).toFixed(6)} ($${valueUsd} | ${item.valueSol} SOL)\n`; + } + } + + output += "\nMarket Prices:\n"; + output += `SOL: $${new BigNumber(prices.solana.usd).toFixed(2)}\n`; + output += `BTC: $${new BigNumber(prices.bitcoin.usd).toFixed(2)}\n`; + output += `ETH: $${new BigNumber(prices.ethereum.usd).toFixed(2)}\n`; + + return output; + } + + async getFormattedPortfolio(runtime): Promise { + try { + const [portfolio, prices] = await Promise.all([ + this.fetchPortfolioValue(runtime), + this.fetchPrices(runtime), + ]); + + return this.formatPortfolio(runtime, portfolio, prices); + } catch (error) { + elizaLogger.error("Error generating portfolio report:", error); + return "Unable to fetch wallet information. Please try again later."; + } + } + + private async getTokenAccounts(walletAddress: string) { + try { + const accounts = + await this.connection.getParsedTokenAccountsByOwner( + new PublicKey(walletAddress), + { + programId: new PublicKey( + "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + ), + } + ); + return accounts.value; + } catch (error) { + elizaLogger.error("Error fetching token accounts:", error); + return []; + } + } +} + +const walletProvider: Provider = { + get: async ( + runtime: IAgentRuntime, + _message: Memory, + _state?: State + ): Promise => { + try { + const { publicKey } = await getWalletKey(runtime, false); + + const connection = new Connection( + runtime.getSetting("SOLANA_RPC_URL") || + PROVIDER_CONFIG.DEFAULT_RPC + ); + + const provider = new WalletProvider(connection, publicKey); + + return await provider.getFormattedPortfolio(runtime); + } catch (error) { + elizaLogger.error("Error in wallet provider:", error); + return null; + } + }, +}; + +// Module exports +export { walletProvider }; diff --git a/packages/plugin-solana/src/types.ts b/packages/plugin-solana/src/types.ts new file mode 100644 index 00000000000..1cd7e4d5d9c --- /dev/null +++ b/packages/plugin-solana/src/types.ts @@ -0,0 +1,32 @@ +export interface Item { + name: string; + address: string; + symbol: string; + decimals: number; + balance: string; + uiAmount: string; + priceUsd: string; + valueUsd: string; + valueSol?: string; +} + +export interface WalletPortfolio { + totalUsd: string; + totalSol?: string; + items: Array; +} + +export interface _BirdEyePriceData { + data: { + [key: string]: { + price: number; + priceChange24h: number; + }; + }; +} + +export interface Prices { + solana: { usd: string }; + bitcoin: { usd: string }; + ethereum: { usd: string }; +} \ No newline at end of file diff --git a/packages/plugin-solana/src/types/token.ts b/packages/plugin-solana/src/types/token.ts new file mode 100644 index 00000000000..1fca4c37c32 --- /dev/null +++ b/packages/plugin-solana/src/types/token.ts @@ -0,0 +1,302 @@ +export interface TokenSecurityData { + ownerBalance: string; + creatorBalance: string; + ownerPercentage: number; + creatorPercentage: number; + top10HolderBalance: string; + top10HolderPercent: number; +} + +export interface TokenCodex { + id: string; + address: string; + cmcId: number; + decimals: number; + name: string; + symbol: string; + totalSupply: string; + circulatingSupply: string; + imageThumbUrl: string; + blueCheckmark: boolean; + isScam: boolean; +} + +export interface TokenTradeData { + address: string; + holder: number; + market: number; + last_trade_unix_time: number; + last_trade_human_time: string; + price: number; + history_30m_price: number; + price_change_30m_percent: number; + history_1h_price: number; + price_change_1h_percent: number; + history_2h_price: number; + price_change_2h_percent: number; + history_4h_price: number; + price_change_4h_percent: number; + history_6h_price: number; + price_change_6h_percent: number; + history_8h_price: number; + price_change_8h_percent: number; + history_12h_price: number; + price_change_12h_percent: number; + history_24h_price: number; + price_change_24h_percent: number; + unique_wallet_30m: number; + unique_wallet_history_30m: number; + unique_wallet_30m_change_percent: number; + unique_wallet_1h: number; + unique_wallet_history_1h: number; + unique_wallet_1h_change_percent: number; + unique_wallet_2h: number; + unique_wallet_history_2h: number; + unique_wallet_2h_change_percent: number; + unique_wallet_4h: number; + unique_wallet_history_4h: number; + unique_wallet_4h_change_percent: number; + unique_wallet_8h: number; + unique_wallet_history_8h: number | null; + unique_wallet_8h_change_percent: number | null; + unique_wallet_24h: number; + unique_wallet_history_24h: number | null; + unique_wallet_24h_change_percent: number | null; + trade_30m: number; + trade_history_30m: number; + trade_30m_change_percent: number; + sell_30m: number; + sell_history_30m: number; + sell_30m_change_percent: number; + buy_30m: number; + buy_history_30m: number; + buy_30m_change_percent: number; + volume_30m: number; + volume_30m_usd: number; + volume_history_30m: number; + volume_history_30m_usd: number; + volume_30m_change_percent: number; + volume_buy_30m: number; + volume_buy_30m_usd: number; + volume_buy_history_30m: number; + volume_buy_history_30m_usd: number; + volume_buy_30m_change_percent: number; + volume_sell_30m: number; + volume_sell_30m_usd: number; + volume_sell_history_30m: number; + volume_sell_history_30m_usd: number; + volume_sell_30m_change_percent: number; + trade_1h: number; + trade_history_1h: number; + trade_1h_change_percent: number; + sell_1h: number; + sell_history_1h: number; + sell_1h_change_percent: number; + buy_1h: number; + buy_history_1h: number; + buy_1h_change_percent: number; + volume_1h: number; + volume_1h_usd: number; + volume_history_1h: number; + volume_history_1h_usd: number; + volume_1h_change_percent: number; + volume_buy_1h: number; + volume_buy_1h_usd: number; + volume_buy_history_1h: number; + volume_buy_history_1h_usd: number; + volume_buy_1h_change_percent: number; + volume_sell_1h: number; + volume_sell_1h_usd: number; + volume_sell_history_1h: number; + volume_sell_history_1h_usd: number; + volume_sell_1h_change_percent: number; + trade_2h: number; + trade_history_2h: number; + trade_2h_change_percent: number; + sell_2h: number; + sell_history_2h: number; + sell_2h_change_percent: number; + buy_2h: number; + buy_history_2h: number; + buy_2h_change_percent: number; + volume_2h: number; + volume_2h_usd: number; + volume_history_2h: number; + volume_history_2h_usd: number; + volume_2h_change_percent: number; + volume_buy_2h: number; + volume_buy_2h_usd: number; + volume_buy_history_2h: number; + volume_buy_history_2h_usd: number; + volume_buy_2h_change_percent: number; + volume_sell_2h: number; + volume_sell_2h_usd: number; + volume_sell_history_2h: number; + volume_sell_history_2h_usd: number; + volume_sell_2h_change_percent: number; + trade_4h: number; + trade_history_4h: number; + trade_4h_change_percent: number; + sell_4h: number; + sell_history_4h: number; + sell_4h_change_percent: number; + buy_4h: number; + buy_history_4h: number; + buy_4h_change_percent: number; + volume_4h: number; + volume_4h_usd: number; + volume_history_4h: number; + volume_history_4h_usd: number; + volume_4h_change_percent: number; + volume_buy_4h: number; + volume_buy_4h_usd: number; + volume_buy_history_4h: number; + volume_buy_history_4h_usd: number; + volume_buy_4h_change_percent: number; + volume_sell_4h: number; + volume_sell_4h_usd: number; + volume_sell_history_4h: number; + volume_sell_history_4h_usd: number; + volume_sell_4h_change_percent: number; + trade_8h: number; + trade_history_8h: number | null; + trade_8h_change_percent: number | null; + sell_8h: number; + sell_history_8h: number | null; + sell_8h_change_percent: number | null; + buy_8h: number; + buy_history_8h: number | null; + buy_8h_change_percent: number | null; + volume_8h: number; + volume_8h_usd: number; + volume_history_8h: number; + volume_history_8h_usd: number; + volume_8h_change_percent: number | null; + volume_buy_8h: number; + volume_buy_8h_usd: number; + volume_buy_history_8h: number; + volume_buy_history_8h_usd: number; + volume_buy_8h_change_percent: number | null; + volume_sell_8h: number; + volume_sell_8h_usd: number; + volume_sell_history_8h: number; + volume_sell_history_8h_usd: number; + volume_sell_8h_change_percent: number | null; + trade_24h: number; + trade_history_24h: number; + trade_24h_change_percent: number | null; + sell_24h: number; + sell_history_24h: number; + sell_24h_change_percent: number | null; + buy_24h: number; + buy_history_24h: number; + buy_24h_change_percent: number | null; + volume_24h: number; + volume_24h_usd: number; + volume_history_24h: number; + volume_history_24h_usd: number; + volume_24h_change_percent: number | null; + volume_buy_24h: number; + volume_buy_24h_usd: number; + volume_buy_history_24h: number; + volume_buy_history_24h_usd: number; + volume_buy_24h_change_percent: number | null; + volume_sell_24h: number; + volume_sell_24h_usd: number; + volume_sell_history_24h: number; + volume_sell_history_24h_usd: number; + volume_sell_24h_change_percent: number | null; +} + +export interface HolderData { + address: string; + balance: string; +} + +export interface ProcessedTokenData { + security: TokenSecurityData; + tradeData: TokenTradeData; + holderDistributionTrend: string; // 'increasing' | 'decreasing' | 'stable' + highValueHolders: Array<{ + holderAddress: string; + balanceUsd: string; + }>; + recentTrades: boolean; + highSupplyHoldersCount: number; + dexScreenerData: DexScreenerData; + + isDexScreenerListed: boolean; + isDexScreenerPaid: boolean; + tokenCodex: TokenCodex; +} + +export interface DexScreenerPair { + chainId: string; + dexId: string; + url: string; + pairAddress: string; + baseToken: { + address: string; + name: string; + symbol: string; + }; + quoteToken: { + address: string; + name: string; + symbol: string; + }; + priceNative: string; + priceUsd: string; + txns: { + m5: { buys: number; sells: number }; + h1: { buys: number; sells: number }; + h6: { buys: number; sells: number }; + h24: { buys: number; sells: number }; + }; + volume: { + h24: number; + h6: number; + h1: number; + m5: number; + }; + priceChange: { + m5: number; + h1: number; + h6: number; + h24: number; + }; + liquidity: { + usd: number; + base: number; + quote: number; + }; + fdv: number; + marketCap: number; + pairCreatedAt: number; + info: { + imageUrl: string; + websites: { label: string; url: string }[]; + socials: { type: string; url: string }[]; + }; + boosts: { + active: number; + }; +} + +export interface DexScreenerData { + schemaVersion: string; + pairs: DexScreenerPair[]; +} + +export interface Prices { + solana: { usd: string }; + bitcoin: { usd: string }; + ethereum: { usd: string }; +} + +export interface CalculatedBuyAmounts { + none: 0; + low: number; + medium: number; + high: number; +} diff --git a/packages/plugin-solana/tsconfig.json b/packages/plugin-solana/tsconfig.json new file mode 100644 index 00000000000..005fbac9d36 --- /dev/null +++ b/packages/plugin-solana/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src" + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/plugin-solana/tsup.config.ts b/packages/plugin-solana/tsup.config.ts new file mode 100644 index 00000000000..dd25475bb63 --- /dev/null +++ b/packages/plugin-solana/tsup.config.ts @@ -0,0 +1,29 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], // Ensure you're targeting CommonJS + external: [ + "dotenv", // Externalize dotenv to prevent bundling + "fs", // Externalize fs to use Node.js built-in module + "path", // Externalize other built-ins if necessary + "@reflink/reflink", + "@node-llama-cpp", + "https", + "http", + "agentkeepalive", + "safe-buffer", + "base-x", + "bs58", + "borsh", + "@solana/buffer-layout", + "stream", + "buffer", + "querystring", + "amqplib", + // Add other modules you want to externalize + ], +}); diff --git a/packages/plugin-tee/src/providers/walletProvider.ts b/packages/plugin-tee/src/providers/walletProvider.ts deleted file mode 100644 index 24ac7943b34..00000000000 --- a/packages/plugin-tee/src/providers/walletProvider.ts +++ /dev/null @@ -1,295 +0,0 @@ -/* This is an example of how WalletProvider can use DeriveKeyProvider to generate a Solana Keypair */ -import { type IAgentRuntime, type Memory, type Provider, type State, logger } from '@elizaos/core'; -import { Connection, type Keypair, type PublicKey } from '@solana/web3.js'; -import BigNumber from 'bignumber.js'; -import NodeCache from 'node-cache'; -import { DeriveKeyProvider } from './deriveKeyProvider'; -import type { RemoteAttestationQuote } from '@elizaos/core'; -// Provider configuration -const PROVIDER_CONFIG = { - BIRDEYE_API: 'https://public-api.birdeye.so', - MAX_RETRIES: 3, - RETRY_DELAY: 2000, - DEFAULT_RPC: 'https://api.mainnet-beta.solana.com', - TOKEN_ADDRESSES: { - SOL: 'So11111111111111111111111111111111111111112', - BTC: '3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh', - ETH: '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs', - }, -}; - -export interface Item { - name: string; - address: string; - symbol: string; - decimals: number; - balance: string; - uiAmount: string; - priceUsd: string; - valueUsd: string; - valueSol?: string; -} - -interface WalletPortfolio { - totalUsd: string; - totalSol?: string; - items: Array; -} - -interface _BirdEyePriceData { - data: { - [key: string]: { - price: number; - priceChange24h: number; - }; - }; -} - -interface Prices { - solana: { usd: string }; - bitcoin: { usd: string }; - ethereum: { usd: string }; -} - -export class WalletProvider { - private cache: NodeCache; - - constructor( - private connection: Connection, - private walletPublicKey: PublicKey, - ) { - this.cache = new NodeCache({ stdTTL: 300 }); // Cache TTL set to 5 minutes - } - - private async fetchWithRetry(runtime, url: string, options: RequestInit = {}): Promise { - let lastError: Error; - - for (let i = 0; i < PROVIDER_CONFIG.MAX_RETRIES; i++) { - try { - const apiKey = runtime.getSetting('BIRDEYE_API_KEY'); - const response = await fetch(url, { - ...options, - headers: { - Accept: 'application/json', - 'x-chain': 'solana', - 'X-API-KEY': apiKey || '', - ...options.headers, - }, - }); - - if (!response.ok) { - const errorText = await response.text(); - throw new Error( - `HTTP error! status: ${response.status}, message: ${errorText}`, - ); - } - - const data = await response.json(); - return data; - } catch (error) { - logger.error(`Attempt ${i + 1} failed:`, error); - lastError = error; - if (i < PROVIDER_CONFIG.MAX_RETRIES - 1) { - const delay = PROVIDER_CONFIG.RETRY_DELAY * 2 ** i; - await new Promise((resolve) => setTimeout(resolve, delay)); - } - } - } - - logger.error('All attempts failed. Throwing the last error:', lastError); - throw lastError; - } - - async fetchPortfolioValue(runtime): Promise { - try { - const cacheKey = `portfolio-${this.walletPublicKey.toBase58()}`; - const cachedValue = this.cache.get(cacheKey); - - if (cachedValue) { - logger.log('Cache hit for fetchPortfolioValue'); - return cachedValue; - } - logger.log('Cache miss for fetchPortfolioValue'); - - const walletData = await this.fetchWithRetry( - runtime, - `${ - PROVIDER_CONFIG.BIRDEYE_API - }/v1/wallet/token_list?wallet=${this.walletPublicKey.toBase58()}`, - ); - - if (!walletData?.success || !walletData?.data) { - logger.error('No portfolio data available', walletData); - throw new Error('No portfolio data available'); - } - - const data = walletData.data; - const totalUsd = new BigNumber(data.totalUsd.toString()); - const prices = await this.fetchPrices(runtime); - const solPriceInUSD = new BigNumber(prices.solana.usd.toString()); - - const items = data.items.map((item: any) => ({ - ...item, - valueSol: new BigNumber(item.valueUsd || 0).div(solPriceInUSD).toFixed(6), - name: item.name || 'Unknown', - symbol: item.symbol || 'Unknown', - priceUsd: item.priceUsd || '0', - valueUsd: item.valueUsd || '0', - })); - - const totalSol = totalUsd.div(solPriceInUSD); - const portfolio = { - totalUsd: totalUsd.toString(), - totalSol: totalSol.toFixed(6), - items: items.sort((a, b) => - new BigNumber(b.valueUsd).minus(new BigNumber(a.valueUsd)).toNumber(), - ), - }; - this.cache.set(cacheKey, portfolio); - return portfolio; - } catch (error) { - logger.error('Error fetching portfolio:', error); - throw error; - } - } - - async fetchPrices(runtime): Promise { - try { - const cacheKey = 'prices'; - const cachedValue = this.cache.get(cacheKey); - - if (cachedValue) { - logger.log('Cache hit for fetchPrices'); - return cachedValue; - } - logger.log('Cache miss for fetchPrices'); - - const { SOL, BTC, ETH } = PROVIDER_CONFIG.TOKEN_ADDRESSES; - const tokens = [SOL, BTC, ETH]; - const prices: Prices = { - solana: { usd: '0' }, - bitcoin: { usd: '0' }, - ethereum: { usd: '0' }, - }; - - for (const token of tokens) { - const response = await this.fetchWithRetry( - runtime, - `${PROVIDER_CONFIG.BIRDEYE_API}/defi/price?address=${token}`, - { - headers: { - 'x-chain': 'solana', - }, - }, - ); - - if (response?.data?.value) { - const price = response.data.value.toString(); - prices[token === SOL ? 'solana' : token === BTC ? 'bitcoin' : 'ethereum'].usd = - price; - } else { - logger.warn(`No price data available for token: ${token}`); - } - } - - this.cache.set(cacheKey, prices); - return prices; - } catch (error) { - logger.error('Error fetching prices:', error); - throw error; - } - } - - formatPortfolio(runtime, portfolio: WalletPortfolio, prices: Prices): string { - let output = `${runtime.character.description}\n`; - output += `Wallet Address: ${this.walletPublicKey.toBase58()}\n\n`; - - const totalUsdFormatted = new BigNumber(portfolio.totalUsd).toFixed(2); - const totalSolFormatted = portfolio.totalSol; - - output += `Total Value: $${totalUsdFormatted} (${totalSolFormatted} SOL)\n\n`; - output += 'Token Balances:\n'; - - const nonZeroItems = portfolio.items.filter((item) => - new BigNumber(item.uiAmount).isGreaterThan(0), - ); - - if (nonZeroItems.length === 0) { - output += 'No tokens found with non-zero balance\n'; - } else { - for (const item of nonZeroItems) { - const valueUsd = new BigNumber(item.valueUsd).toFixed(2); - output += `${item.name} (${item.symbol}): ${new BigNumber(item.uiAmount).toFixed( - 6, - )} ($${valueUsd} | ${item.valueSol} SOL)\n`; - } - } - - output += '\nMarket Prices:\n'; - output += `SOL: $${new BigNumber(prices.solana.usd).toFixed(2)}\n`; - output += `BTC: $${new BigNumber(prices.bitcoin.usd).toFixed(2)}\n`; - output += `ETH: $${new BigNumber(prices.ethereum.usd).toFixed(2)}\n`; - - return output; - } - - async getFormattedPortfolio(runtime): Promise { - try { - const [portfolio, prices] = await Promise.all([ - this.fetchPortfolioValue(runtime), - this.fetchPrices(runtime), - ]); - - return this.formatPortfolio(runtime, portfolio, prices); - } catch (error) { - logger.error('Error generating portfolio report:', error); - return 'Unable to fetch wallet information. Please try again later.'; - } - } -} - -const walletProvider: Provider = { - get: async (runtime: IAgentRuntime, _message: Memory, _state?: State): Promise => { - const agentId = runtime.agentId; - const teeMode = runtime.getSetting('TEE_MODE'); - const deriveKeyProvider = new DeriveKeyProvider(teeMode); - try { - // Validate wallet configuration - if (!runtime.getSetting('WALLET_SECRET_SALT')) { - logger.error('Wallet secret salt is not configured in settings'); - return ''; - } - - let publicKey: PublicKey; - try { - const derivedKeyPair: { - keypair: Keypair; - attestation: RemoteAttestationQuote; - } = await deriveKeyProvider.deriveEd25519Keypair( - runtime.getSetting('WALLET_SECRET_SALT'), - 'solana', - agentId, - ); - publicKey = derivedKeyPair.keypair.publicKey; - logger.log('Wallet Public Key: ', publicKey.toBase58()); - } catch (error) { - logger.error('Error creating PublicKey:', error); - return ''; - } - - const connection = new Connection(PROVIDER_CONFIG.DEFAULT_RPC); - const provider = new WalletProvider(connection, publicKey); - - const porfolio = await provider.getFormattedPortfolio(runtime); - return porfolio; - } catch (error) { - logger.error('Error in wallet provider:', error.message); - return `Failed to fetch wallet information: ${ - error instanceof Error ? error.message : 'Unknown error' - }`; - } - }, -}; - -// Module exports -export { walletProvider }; From beab6b39e72d9f006e24a4fe9388778a0ccc2107 Mon Sep 17 00:00:00 2001 From: Shaw Date: Wed, 12 Feb 2025 04:33:21 -0500 Subject: [PATCH 06/10] type cleanups --- packages/cli/src/commands/character.ts | 14 +- packages/plugin-solana/src/types/token.ts | 302 ---------------------- 2 files changed, 10 insertions(+), 306 deletions(-) delete mode 100644 packages/plugin-solana/src/types/token.ts diff --git a/packages/cli/src/commands/character.ts b/packages/cli/src/commands/character.ts index 88140c13376..e052a83047b 100644 --- a/packages/cli/src/commands/character.ts +++ b/packages/cli/src/commands/character.ts @@ -116,10 +116,16 @@ async function collectCharacterData( const examples = response.value .split('\\n') .map(line => line.trim()) - .filter(Boolean); - formData.messageExamples = examples.length > 0 - ? examples - : [`{{user1}}: hey how are you?\n${formData.name}`]; + .filter(Boolean) + .map(line => ({ + user: line.split(':')[0].trim(), + content: { + text: line.split(':').slice(1).join(':').trim() + } + })); + formData.messageExamples = examples.length > 0 + ? [examples] + : []; break; } diff --git a/packages/plugin-solana/src/types/token.ts b/packages/plugin-solana/src/types/token.ts deleted file mode 100644 index 1fca4c37c32..00000000000 --- a/packages/plugin-solana/src/types/token.ts +++ /dev/null @@ -1,302 +0,0 @@ -export interface TokenSecurityData { - ownerBalance: string; - creatorBalance: string; - ownerPercentage: number; - creatorPercentage: number; - top10HolderBalance: string; - top10HolderPercent: number; -} - -export interface TokenCodex { - id: string; - address: string; - cmcId: number; - decimals: number; - name: string; - symbol: string; - totalSupply: string; - circulatingSupply: string; - imageThumbUrl: string; - blueCheckmark: boolean; - isScam: boolean; -} - -export interface TokenTradeData { - address: string; - holder: number; - market: number; - last_trade_unix_time: number; - last_trade_human_time: string; - price: number; - history_30m_price: number; - price_change_30m_percent: number; - history_1h_price: number; - price_change_1h_percent: number; - history_2h_price: number; - price_change_2h_percent: number; - history_4h_price: number; - price_change_4h_percent: number; - history_6h_price: number; - price_change_6h_percent: number; - history_8h_price: number; - price_change_8h_percent: number; - history_12h_price: number; - price_change_12h_percent: number; - history_24h_price: number; - price_change_24h_percent: number; - unique_wallet_30m: number; - unique_wallet_history_30m: number; - unique_wallet_30m_change_percent: number; - unique_wallet_1h: number; - unique_wallet_history_1h: number; - unique_wallet_1h_change_percent: number; - unique_wallet_2h: number; - unique_wallet_history_2h: number; - unique_wallet_2h_change_percent: number; - unique_wallet_4h: number; - unique_wallet_history_4h: number; - unique_wallet_4h_change_percent: number; - unique_wallet_8h: number; - unique_wallet_history_8h: number | null; - unique_wallet_8h_change_percent: number | null; - unique_wallet_24h: number; - unique_wallet_history_24h: number | null; - unique_wallet_24h_change_percent: number | null; - trade_30m: number; - trade_history_30m: number; - trade_30m_change_percent: number; - sell_30m: number; - sell_history_30m: number; - sell_30m_change_percent: number; - buy_30m: number; - buy_history_30m: number; - buy_30m_change_percent: number; - volume_30m: number; - volume_30m_usd: number; - volume_history_30m: number; - volume_history_30m_usd: number; - volume_30m_change_percent: number; - volume_buy_30m: number; - volume_buy_30m_usd: number; - volume_buy_history_30m: number; - volume_buy_history_30m_usd: number; - volume_buy_30m_change_percent: number; - volume_sell_30m: number; - volume_sell_30m_usd: number; - volume_sell_history_30m: number; - volume_sell_history_30m_usd: number; - volume_sell_30m_change_percent: number; - trade_1h: number; - trade_history_1h: number; - trade_1h_change_percent: number; - sell_1h: number; - sell_history_1h: number; - sell_1h_change_percent: number; - buy_1h: number; - buy_history_1h: number; - buy_1h_change_percent: number; - volume_1h: number; - volume_1h_usd: number; - volume_history_1h: number; - volume_history_1h_usd: number; - volume_1h_change_percent: number; - volume_buy_1h: number; - volume_buy_1h_usd: number; - volume_buy_history_1h: number; - volume_buy_history_1h_usd: number; - volume_buy_1h_change_percent: number; - volume_sell_1h: number; - volume_sell_1h_usd: number; - volume_sell_history_1h: number; - volume_sell_history_1h_usd: number; - volume_sell_1h_change_percent: number; - trade_2h: number; - trade_history_2h: number; - trade_2h_change_percent: number; - sell_2h: number; - sell_history_2h: number; - sell_2h_change_percent: number; - buy_2h: number; - buy_history_2h: number; - buy_2h_change_percent: number; - volume_2h: number; - volume_2h_usd: number; - volume_history_2h: number; - volume_history_2h_usd: number; - volume_2h_change_percent: number; - volume_buy_2h: number; - volume_buy_2h_usd: number; - volume_buy_history_2h: number; - volume_buy_history_2h_usd: number; - volume_buy_2h_change_percent: number; - volume_sell_2h: number; - volume_sell_2h_usd: number; - volume_sell_history_2h: number; - volume_sell_history_2h_usd: number; - volume_sell_2h_change_percent: number; - trade_4h: number; - trade_history_4h: number; - trade_4h_change_percent: number; - sell_4h: number; - sell_history_4h: number; - sell_4h_change_percent: number; - buy_4h: number; - buy_history_4h: number; - buy_4h_change_percent: number; - volume_4h: number; - volume_4h_usd: number; - volume_history_4h: number; - volume_history_4h_usd: number; - volume_4h_change_percent: number; - volume_buy_4h: number; - volume_buy_4h_usd: number; - volume_buy_history_4h: number; - volume_buy_history_4h_usd: number; - volume_buy_4h_change_percent: number; - volume_sell_4h: number; - volume_sell_4h_usd: number; - volume_sell_history_4h: number; - volume_sell_history_4h_usd: number; - volume_sell_4h_change_percent: number; - trade_8h: number; - trade_history_8h: number | null; - trade_8h_change_percent: number | null; - sell_8h: number; - sell_history_8h: number | null; - sell_8h_change_percent: number | null; - buy_8h: number; - buy_history_8h: number | null; - buy_8h_change_percent: number | null; - volume_8h: number; - volume_8h_usd: number; - volume_history_8h: number; - volume_history_8h_usd: number; - volume_8h_change_percent: number | null; - volume_buy_8h: number; - volume_buy_8h_usd: number; - volume_buy_history_8h: number; - volume_buy_history_8h_usd: number; - volume_buy_8h_change_percent: number | null; - volume_sell_8h: number; - volume_sell_8h_usd: number; - volume_sell_history_8h: number; - volume_sell_history_8h_usd: number; - volume_sell_8h_change_percent: number | null; - trade_24h: number; - trade_history_24h: number; - trade_24h_change_percent: number | null; - sell_24h: number; - sell_history_24h: number; - sell_24h_change_percent: number | null; - buy_24h: number; - buy_history_24h: number; - buy_24h_change_percent: number | null; - volume_24h: number; - volume_24h_usd: number; - volume_history_24h: number; - volume_history_24h_usd: number; - volume_24h_change_percent: number | null; - volume_buy_24h: number; - volume_buy_24h_usd: number; - volume_buy_history_24h: number; - volume_buy_history_24h_usd: number; - volume_buy_24h_change_percent: number | null; - volume_sell_24h: number; - volume_sell_24h_usd: number; - volume_sell_history_24h: number; - volume_sell_history_24h_usd: number; - volume_sell_24h_change_percent: number | null; -} - -export interface HolderData { - address: string; - balance: string; -} - -export interface ProcessedTokenData { - security: TokenSecurityData; - tradeData: TokenTradeData; - holderDistributionTrend: string; // 'increasing' | 'decreasing' | 'stable' - highValueHolders: Array<{ - holderAddress: string; - balanceUsd: string; - }>; - recentTrades: boolean; - highSupplyHoldersCount: number; - dexScreenerData: DexScreenerData; - - isDexScreenerListed: boolean; - isDexScreenerPaid: boolean; - tokenCodex: TokenCodex; -} - -export interface DexScreenerPair { - chainId: string; - dexId: string; - url: string; - pairAddress: string; - baseToken: { - address: string; - name: string; - symbol: string; - }; - quoteToken: { - address: string; - name: string; - symbol: string; - }; - priceNative: string; - priceUsd: string; - txns: { - m5: { buys: number; sells: number }; - h1: { buys: number; sells: number }; - h6: { buys: number; sells: number }; - h24: { buys: number; sells: number }; - }; - volume: { - h24: number; - h6: number; - h1: number; - m5: number; - }; - priceChange: { - m5: number; - h1: number; - h6: number; - h24: number; - }; - liquidity: { - usd: number; - base: number; - quote: number; - }; - fdv: number; - marketCap: number; - pairCreatedAt: number; - info: { - imageUrl: string; - websites: { label: string; url: string }[]; - socials: { type: string; url: string }[]; - }; - boosts: { - active: number; - }; -} - -export interface DexScreenerData { - schemaVersion: string; - pairs: DexScreenerPair[]; -} - -export interface Prices { - solana: { usd: string }; - bitcoin: { usd: string }; - ethereum: { usd: string }; -} - -export interface CalculatedBuyAmounts { - none: 0; - low: number; - medium: number; - high: number; -} From 20c7d44e9bb7ec32bc2377ee72c18cd1fc467873 Mon Sep 17 00:00:00 2001 From: Shaw Date: Wed, 12 Feb 2025 05:19:34 -0500 Subject: [PATCH 07/10] fix transfer and object generation --- packages/core/src/generation.ts | 36 +- packages/plugin-solana/src/actions/swap.ts | 341 +++++--------- .../plugin-solana/src/actions/transfer.ts | 7 +- packages/plugin-solana/src/client.ts | 10 +- .../plugin-solana/src/providers/wallet.ts | 429 ++---------------- packages/plugin-solana/src/types.ts | 47 +- 6 files changed, 219 insertions(+), 651 deletions(-) diff --git a/packages/core/src/generation.ts b/packages/core/src/generation.ts index dd8656b6791..2977f552a64 100644 --- a/packages/core/src/generation.ts +++ b/packages/core/src/generation.ts @@ -264,7 +264,7 @@ export async function generateTrueOrFalse({ export const generateObject = async ({ runtime, context, - modelClass = ModelClass.TEXT_SMALL, + modelClass = ModelClass.TEXT_LARGE, stopSequences, }: GenerateObjectOptions): Promise => { if (!context) { @@ -272,8 +272,9 @@ export const generateObject = async ({ console.error(errorMessage); throw new Error(errorMessage); } + console.log(context); - const { object } = await runtime.useModel(modelClass, { + const obj = await runtime.useModel(modelClass, { runtime, context, modelClass, @@ -281,8 +282,35 @@ export const generateObject = async ({ object: true, }); - logger.debug(`Received Object response from ${modelClass} model.`); - return object; + console.log(obj); + + + let jsonString = obj; + + // try to find a first and last bracket + const firstBracket = obj.indexOf("{"); + const lastBracket = obj.lastIndexOf("}"); + if (firstBracket !== -1 && lastBracket !== -1 && firstBracket < lastBracket) { + jsonString = obj.slice(firstBracket, lastBracket + 1); + } + + console.log("jsonString", jsonString); + + if (jsonString.length === 0) { + logger.error("Failed to extract JSON string from model response"); + return null; + } + + // parse the json string + try { + const json = JSON.parse(jsonString); + console.log("json exported", json); + return json; + } catch (error) { + logger.error("Failed to parse JSON string"); + logger.error(jsonString); + return null; + } }; export async function generateObjectArray({ diff --git a/packages/plugin-solana/src/actions/swap.ts b/packages/plugin-solana/src/actions/swap.ts index 78150c8adff..b03e320e235 100644 --- a/packages/plugin-solana/src/actions/swap.ts +++ b/packages/plugin-solana/src/actions/swap.ts @@ -13,18 +13,16 @@ import { } from "@elizaos/core"; import { Connection, PublicKey, VersionedTransaction } from "@solana/web3.js"; import BigNumber from "bignumber.js"; -import { getWalletKey } from "../keypairUtils.ts"; -import { walletProvider, WalletProvider } from "../providers/wallet.ts"; +import { getWalletKey } from "../keypairUtils"; +import type { ISolanaClient, Item } from "../types"; async function getTokenDecimals( connection: Connection, mintAddress: string ): Promise { const mintPublicKey = new PublicKey(mintAddress); - const tokenAccountInfo = - await connection.getParsedAccountInfo(mintPublicKey); + const tokenAccountInfo = await connection.getParsedAccountInfo(mintPublicKey); - // Check if the data is parsed and contains the expected structure if ( tokenAccountInfo.value && typeof tokenAccountInfo.value.data === "object" && @@ -47,21 +45,15 @@ async function swapToken( amount: number ): Promise { try { - // Get the decimals for the input token const decimals = inputTokenCA === settings.SOL_ADDRESS ? new BigNumber(9) - : new BigNumber( - await getTokenDecimals(connection, inputTokenCA) - ); + : new BigNumber(await getTokenDecimals(connection, inputTokenCA)); elizaLogger.log("Decimals:", decimals.toString()); - // Use BigNumber for adjustedAmount: amount * (10 ** decimals) const amountBN = new BigNumber(amount); - const adjustedAmount = amountBN.multipliedBy( - new BigNumber(10).pow(decimals) - ); + const adjustedAmount = amountBN.multipliedBy(new BigNumber(10).pow(decimals)); elizaLogger.log("Fetching quote with params:", { inputMint: inputTokenCA, @@ -76,13 +68,9 @@ async function swapToken( if (!quoteData || quoteData.error) { elizaLogger.error("Quote error:", quoteData); - throw new Error( - `Failed to get quote: ${quoteData?.error || "Unknown error"}` - ); + throw new Error(`Failed to get quote: ${quoteData?.error || "Unknown error"}`); } - elizaLogger.log("Quote received:", quoteData); - const swapRequestBody = { quoteResponse: quoteData, userPublicKey: walletPublicKey.toBase58(), @@ -94,13 +82,9 @@ async function swapToken( }, }; - elizaLogger.log("Requesting swap with body:", swapRequestBody); - const swapResponse = await fetch("https://quote-api.jup.ag/v6/swap", { method: "POST", - headers: { - "Content-Type": "application/json", - }, + headers: { "Content-Type": "application/json" }, body: JSON.stringify(swapRequestBody), }); @@ -108,12 +92,9 @@ async function swapToken( if (!swapData || !swapData.swapTransaction) { elizaLogger.error("Swap error:", swapData); - throw new Error( - `Failed to get swap transaction: ${swapData?.error || "No swap transaction returned"}` - ); + throw new Error(`Failed to get swap transaction: ${swapData?.error || "No swap transaction returned"}`); } - elizaLogger.log("Swap transaction received"); return swapData; } catch (error) { elizaLogger.error("Error in swapToken:", error); @@ -121,6 +102,30 @@ async function swapToken( } } +// Get token from wallet data using SolanaClient +async function getTokenFromWallet(runtime: IAgentRuntime, tokenSymbol: string): Promise { + try { + const solanaClient = runtime.clients.find(client => client.name === 'SolanaClient') as ISolanaClient; + if (!solanaClient) { + throw new Error('SolanaClient not initialized'); + } + + const walletData = await solanaClient.getCachedData(); + if (!walletData) { + return null; + } + + const token = walletData.items.find((item: Item) => + item.symbol.toLowerCase() === tokenSymbol.toLowerCase() + ); + + return token ? token.address : null; + } catch (error) { + elizaLogger.error("Error checking token in wallet:", error); + return null; + } +} + const swapTemplate = `Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined. Example response: @@ -147,58 +152,14 @@ Extract the following information about the requested token swap: - Output token contract address if provided - Amount to swap -Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined. The result should be a valid JSON object with the following schema: -\`\`\`json -{ - "inputTokenSymbol": string | null, - "outputTokenSymbol": string | null, - "inputTokenCA": string | null, - "outputTokenCA": string | null, - "amount": number | string | null -} -\`\`\``; - -// if we get the token symbol but not the CA, check walet for matching token, and if we have, get the CA for it - -// get all the tokens in the wallet using the wallet provider -async function getTokensInWallet(runtime: IAgentRuntime) { - const { publicKey } = await getWalletKey(runtime, false); - const walletProvider = new WalletProvider( - new Connection("https://api.mainnet-beta.solana.com"), - publicKey - ); - - const walletInfo = await walletProvider.fetchPortfolioValue(runtime); - const items = walletInfo.items; - return items; -} - -// check if the token symbol is in the wallet -async function getTokenFromWallet(runtime: IAgentRuntime, tokenSymbol: string) { - try { - const items = await getTokensInWallet(runtime); - const token = items.find((item) => item.symbol === tokenSymbol); - - if (token) { - return token.address; - } else { - return null; - } - } catch (error) { - elizaLogger.error("Error checking token in wallet:", error); - return null; - } -} - -// swapToken should took CA, not symbol +Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined.`; export const executeSwap: Action = { name: "SWAP_SOLANA", similes: ["SWAP_SOL", "SWAP_TOKENS_SOLANA", "TOKEN_SWAP_SOLANA", "TRADE_TOKENS_SOLANA", "EXCHANGE_TOKENS_SOLANA"], validate: async (runtime: IAgentRuntime, message: Memory) => { - // Check if the necessary parameters are provided in the message - elizaLogger.log("Message:", message); - return true; + const solanaClient = runtime.clients.find(client => client.name === 'SolanaClient'); + return !!solanaClient; }, description: "Perform a token swap from one token to another on Solana. Works with SOL and SPL tokens.", handler: async ( @@ -208,122 +169,64 @@ export const executeSwap: Action = { _options: { [key: string]: unknown }, callback?: HandlerCallback ): Promise => { - // composeState - if (!state) { - state = (await runtime.composeState(message)) as State; - } else { - state = await runtime.updateRecentMessageState(state); - } - - const walletInfo = await walletProvider.get(runtime, message, state); - - state.walletInfo = walletInfo; - - const swapContext = composeContext({ - state, - template: swapTemplate, - }); + try { + if (!state) { + state = await runtime.composeState(message); + } else { + state = await runtime.updateRecentMessageState(state); + } - const response = await generateObject({ - runtime, - context: swapContext, - modelClass: ModelClass.LARGE, - }); + const solanaClient = runtime.clients.find(client => client.name === 'SolanaClient') as ISolanaClient; + if (!solanaClient) { + throw new Error('SolanaClient not initialized'); + } - elizaLogger.log("Response:", response); - // const type = response.inputTokenSymbol?.toUpperCase() === "SOL" ? "buy" : "sell"; + const walletData = await solanaClient.getCachedData(); + state.walletInfo = walletData; - // Add SOL handling logic - if (response.inputTokenSymbol?.toUpperCase() === "SOL") { - response.inputTokenCA = settings.SOL_ADDRESS; - } - if (response.outputTokenSymbol?.toUpperCase() === "SOL") { - response.outputTokenCA = settings.SOL_ADDRESS; - } + const swapContext = composeContext({ + state, + template: swapTemplate, + }); - // if both contract addresses are set, lets execute the swap - // TODO: try to resolve CA from symbol based on existing symbol in wallet - if (!response.inputTokenCA && response.inputTokenSymbol) { - elizaLogger.log( - `Attempting to resolve CA for input token symbol: ${response.inputTokenSymbol}` - ); - response.inputTokenCA = await getTokenFromWallet( + const response = await generateObject({ runtime, - response.inputTokenSymbol - ); - if (response.inputTokenCA) { - elizaLogger.log( - `Resolved inputTokenCA: ${response.inputTokenCA}` - ); - } else { - elizaLogger.log( - "No contract addresses provided, skipping swap" - ); - const responseMsg = { - text: "I need the contract addresses to perform the swap", - }; - callback?.(responseMsg); - return true; - } - } + context: swapContext, + modelClass: ModelClass.LARGE, + }); - if (!response.outputTokenCA && response.outputTokenSymbol) { - elizaLogger.log( - `Attempting to resolve CA for output token symbol: ${response.outputTokenSymbol}` - ); - response.outputTokenCA = await getTokenFromWallet( - runtime, - response.outputTokenSymbol - ); - if (response.outputTokenCA) { - elizaLogger.log( - `Resolved outputTokenCA: ${response.outputTokenCA}` - ); - } else { - elizaLogger.log( - "No contract addresses provided, skipping swap" - ); - const responseMsg = { - text: "I need the contract addresses to perform the swap", - }; - callback?.(responseMsg); - return true; + // Handle SOL addresses + if (response.inputTokenSymbol?.toUpperCase() === "SOL") { + response.inputTokenCA = settings.SOL_ADDRESS; + } + if (response.outputTokenSymbol?.toUpperCase() === "SOL") { + response.outputTokenCA = settings.SOL_ADDRESS; } - } - if (!response.amount) { - elizaLogger.log("No amount provided, skipping swap"); - const responseMsg = { - text: "I need the amount to perform the swap", - }; - callback?.(responseMsg); - return true; - } + // Resolve token addresses if needed + if (!response.inputTokenCA && response.inputTokenSymbol) { + response.inputTokenCA = await getTokenFromWallet(runtime, response.inputTokenSymbol); + if (!response.inputTokenCA) { + callback?.({ text: "Could not find the input token in your wallet" }); + return false; + } + } - // TODO: if response amount is half, all, etc, semantically retrieve amount and return as number - if (!response.amount) { - elizaLogger.log("Amount is not a number, skipping swap"); - const responseMsg = { - text: "The amount must be a number", - }; - callback?.(responseMsg); - return true; - } - try { - const connection = new Connection( - "https://api.mainnet-beta.solana.com" - ); - const { publicKey: walletPublicKey } = await getWalletKey( - runtime, - false - ); + if (!response.outputTokenCA && response.outputTokenSymbol) { + response.outputTokenCA = await getTokenFromWallet(runtime, response.outputTokenSymbol); + if (!response.outputTokenCA) { + callback?.({ text: "Could not find the output token in your wallet" }); + return false; + } + } - // const provider = new WalletProvider(connection, walletPublicKey); + if (!response.amount) { + callback?.({ text: "Please specify the amount you want to swap" }); + return false; + } - elizaLogger.log("Wallet Public Key:", walletPublicKey); - elizaLogger.log("inputTokenSymbol:", response.inputTokenCA); - elizaLogger.log("outputTokenSymbol:", response.outputTokenCA); - elizaLogger.log("amount:", response.amount); + const connection = new Connection(runtime.getSetting("SOLANA_RPC_URL") || "https://api.mainnet-beta.solana.com"); + const { publicKey: walletPublicKey } = await getWalletKey(runtime, false); const swapResult = await swapToken( connection, @@ -333,74 +236,45 @@ export const executeSwap: Action = { response.amount as number ); - elizaLogger.log("Deserializing transaction..."); - const transactionBuf = Buffer.from( - swapResult.swapTransaction, - "base64" - ); - const transaction = - VersionedTransaction.deserialize(transactionBuf); - - elizaLogger.log("Preparing to sign transaction..."); + const transactionBuf = Buffer.from(swapResult.swapTransaction, "base64"); + const transaction = VersionedTransaction.deserialize(transactionBuf); - elizaLogger.log("Creating keypair..."); const { keypair } = await getWalletKey(runtime, true); - // Verify the public key matches what we expect if (keypair.publicKey.toBase58() !== walletPublicKey.toBase58()) { - throw new Error( - "Generated public key doesn't match expected public key" - ); + throw new Error("Generated public key doesn't match expected public key"); } - elizaLogger.log("Signing transaction..."); transaction.sign([keypair]); - elizaLogger.log("Sending transaction..."); - const latestBlockhash = await connection.getLatestBlockhash(); - const txid = await connection.sendTransaction(transaction, { skipPreflight: false, maxRetries: 3, preflightCommitment: "confirmed", }); - elizaLogger.log("Transaction sent:", txid); - - // Confirm transaction using the blockhash - const confirmation = await connection.confirmTransaction( - { - signature: txid, - blockhash: latestBlockhash.blockhash, - lastValidBlockHeight: latestBlockhash.lastValidBlockHeight, - }, - "confirmed" - ); - - if (confirmation.value.err) { - throw new Error( - `Transaction failed: ${confirmation.value.err}` - ); - } + const confirmation = await connection.confirmTransaction({ + signature: txid, + blockhash: latestBlockhash.blockhash, + lastValidBlockHeight: latestBlockhash.lastValidBlockHeight, + }, "confirmed"); if (confirmation.value.err) { - throw new Error( - `Transaction failed: ${confirmation.value.err}` - ); + throw new Error(`Transaction failed: ${confirmation.value.err}`); } - elizaLogger.log("Swap completed successfully!"); - elizaLogger.log(`Transaction ID: ${txid}`); - - const responseMsg = { + callback?.({ text: `Swap completed successfully! Transaction ID: ${txid}`, - }; - - callback?.(responseMsg); + content: { success: true, txid } + }); return true; } catch (error) { elizaLogger.error("Error during token swap:", error); + callback?.({ + text: `Swap failed: ${error.message}`, + content: { error: error.message } + }); return false; } }, @@ -409,25 +283,16 @@ export const executeSwap: Action = { { user: "{{user1}}", content: { - inputTokenSymbol: "SOL", - outputTokenSymbol: "USDC", - amount: 0.1, + text: "Swap 0.1 SOL for USDC" }, }, { user: "{{user2}}", content: { - text: "Swapping 0.1 SOL for USDC...", + text: "I'll help you swap 0.1 SOL for USDC", action: "SWAP_SOLANA", }, - }, - { - user: "{{user2}}", - content: { - text: "Swap completed successfully! Transaction ID: ...", - }, - }, - ], - // Add more examples as needed + } + ] ] as ActionExample[][], -} as Action; \ No newline at end of file +}; \ No newline at end of file diff --git a/packages/plugin-solana/src/actions/transfer.ts b/packages/plugin-solana/src/actions/transfer.ts index 54c8e2cb7ab..17a45cd0e4f 100644 --- a/packages/plugin-solana/src/actions/transfer.ts +++ b/packages/plugin-solana/src/actions/transfer.ts @@ -115,12 +115,17 @@ export default { template: transferTemplate, }); + + console.log("Transfer context:", transferContext); + const content = await generateObject({ runtime, context: transferContext, modelClass: ModelClass.LARGE, }); + console.log("Content:", content); + if (!isTransferContent(content)) { if (callback) { callback({ @@ -133,7 +138,7 @@ export default { try { const { keypair: senderKeypair } = await getWalletKey(runtime, true); - const connection = new Connection(settings.SOLANA_RPC_URL!); + const connection = new Connection(runtime.getSetting("SOLANA_RPC_URL") || "https://api.mainnet-beta.solana.com"); const recipientPubkey = new PublicKey(content.recipient); let signature: string; diff --git a/packages/plugin-solana/src/client.ts b/packages/plugin-solana/src/client.ts index 78548935495..530b6efc890 100644 --- a/packages/plugin-solana/src/client.ts +++ b/packages/plugin-solana/src/client.ts @@ -1,8 +1,8 @@ +import { Connection, Keypair, PublicKey } from "@solana/web3.js"; import { logger, type Client, type IAgentRuntime, type ICacheManager } from '@elizaos/core'; -import { Connection, PublicKey } from "@solana/web3.js"; -import BigNumber from "bignumber.js"; import { getWalletKey } from "./keypairUtils"; -import type { Item, Prices, WalletPortfolio } from "./types"; +import BigNumber from "bignumber.js"; +import type { Item, WalletPortfolio, Prices, ISolanaClient } from "./types"; const PROVIDER_CONFIG = { BIRDEYE_API: "https://public-api.birdeye.so", @@ -16,7 +16,7 @@ const PROVIDER_CONFIG = { }, }; -class SolanaClient { +class SolanaClient implements ISolanaClient { private updateInterval: NodeJS.Timer | null = null; private lastUpdate: number = 0; private readonly UPDATE_INTERVAL = 120000; // 2 minutes @@ -175,6 +175,8 @@ class SolanaClient { const portfolio: WalletPortfolio = { totalUsd: totalUsd.toString(), totalSol: totalUsd.div(solPriceInUSD).toFixed(6), + prices, + lastUpdated: now, items: data.items.map((item: any) => ({ ...item, valueSol: new BigNumber(item.valueUsd || 0) diff --git a/packages/plugin-solana/src/providers/wallet.ts b/packages/plugin-solana/src/providers/wallet.ts index ceb9ba647d4..68d53e5ec30 100644 --- a/packages/plugin-solana/src/providers/wallet.ts +++ b/packages/plugin-solana/src/providers/wallet.ts @@ -3,416 +3,55 @@ import { type Memory, type Provider, type State, - elizaLogger, } from "@elizaos/core"; -import { Connection, PublicKey } from "@solana/web3.js"; import BigNumber from "bignumber.js"; -import NodeCache from "node-cache"; -import { getWalletKey } from "../keypairUtils"; -import { Item, Prices, WalletPortfolio } from "../types"; +import type { WalletPortfolio } from "../types"; -// Provider configuration -const PROVIDER_CONFIG = { - BIRDEYE_API: "https://public-api.birdeye.so", - MAX_RETRIES: 3, - RETRY_DELAY: 2000, - DEFAULT_RPC: "https://api.mainnet-beta.solana.com", - GRAPHQL_ENDPOINT: "https://graph.codex.io/graphql", - TOKEN_ADDRESSES: { - SOL: "So11111111111111111111111111111111111111112", - BTC: "3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh", - ETH: "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs", - }, -}; - -export class WalletProvider { - private cache: NodeCache; - - constructor( - private connection: Connection, - private walletPublicKey: PublicKey - ) { - this.cache = new NodeCache({ stdTTL: 300 }); // Cache TTL set to 5 minutes - } - - private async fetchWithRetry( - runtime, - url: string, - options: RequestInit = {} - ): Promise { - let lastError: Error; - - for (let i = 0; i < PROVIDER_CONFIG.MAX_RETRIES; i++) { - try { - const response = await fetch(url, { - ...options, - headers: { - Accept: "application/json", - "x-chain": "solana", - "X-API-KEY": - runtime.getSetting("BIRDEYE_API_KEY", "") || "", - ...options.headers, - }, - }); - - if (!response.ok) { - const errorText = await response.text(); - throw new Error( - `HTTP error! status: ${response.status}, message: ${errorText}` - ); - } - - const data = await response.json(); - return data; - } catch (error) { - elizaLogger.error(`Attempt ${i + 1} failed:`, error); - lastError = error; - if (i < PROVIDER_CONFIG.MAX_RETRIES - 1) { - const delay = PROVIDER_CONFIG.RETRY_DELAY * Math.pow(2, i); - await new Promise((resolve) => setTimeout(resolve, delay)); - continue; - } - } - } - - elizaLogger.error( - "All attempts failed. You may need BIRDEYE_API_KEY to fetch portfolio. Throwing the last error:", - lastError - ); - throw lastError; - } - - async fetchPortfolioValue(runtime): Promise { - try { - const cacheKey = `portfolio-${this.walletPublicKey.toBase58()}`; - const cachedValue = this.cache.get(cacheKey); - - if (cachedValue) { - elizaLogger.log("Cache hit for fetchPortfolioValue"); - return cachedValue; - } - elizaLogger.log("Cache miss for fetchPortfolioValue"); - - // Check if Birdeye API key is available - const birdeyeApiKey = runtime.getSetting("BIRDEYE_API_KEY"); - - if (birdeyeApiKey) { - // Existing Birdeye API logic - const walletData = await this.fetchWithRetry( - runtime, - `${PROVIDER_CONFIG.BIRDEYE_API}/v1/wallet/token_list?wallet=${this.walletPublicKey.toBase58()}` - ); - - if (walletData?.success && walletData?.data) { - const data = walletData.data; - const totalUsd = new BigNumber(data.totalUsd.toString()); - const prices = await this.fetchPrices(runtime); - const solPriceInUSD = new BigNumber( - prices.solana.usd.toString() - ); - - const items = data.items.map((item: any) => ({ - ...item, - valueSol: new BigNumber(item.valueUsd || 0) - .div(solPriceInUSD) - .toFixed(6), - name: item.name || "Unknown", - symbol: item.symbol || "Unknown", - priceUsd: item.priceUsd || "0", - valueUsd: item.valueUsd || "0", - })); - - const portfolio = { - totalUsd: totalUsd.toString(), - totalSol: totalUsd.div(solPriceInUSD).toFixed(6), - items: items.sort((a, b) => - new BigNumber(b.valueUsd) - .minus(new BigNumber(a.valueUsd)) - .toNumber() - ), - }; - - this.cache.set(cacheKey, portfolio); - return portfolio; - } - } - - // Fallback to basic token account info if no Birdeye API key or API call fails - const accounts = await this.getTokenAccounts( - this.walletPublicKey.toBase58() - ); - - const items = accounts.map((acc) => ({ - name: "Unknown", - address: acc.account.data.parsed.info.mint, - symbol: "Unknown", - decimals: acc.account.data.parsed.info.tokenAmount.decimals, - balance: acc.account.data.parsed.info.tokenAmount.amount, - uiAmount: - acc.account.data.parsed.info.tokenAmount.uiAmount.toString(), - priceUsd: "0", - valueUsd: "0", - valueSol: "0", - })); - - const portfolio = { - totalUsd: "0", - totalSol: "0", - items, - }; - - this.cache.set(cacheKey, portfolio); - return portfolio; - } catch (error) { - elizaLogger.error("Error fetching portfolio:", error); - throw error; - } - } - - async fetchPortfolioValueCodex(runtime): Promise { +export const walletProvider: Provider = { + get: async ( + runtime: IAgentRuntime, + _message: Memory, + state?: State + ): Promise => { try { - const cacheKey = `portfolio-${this.walletPublicKey.toBase58()}`; - const cachedValue = await this.cache.get(cacheKey); - - if (cachedValue) { - elizaLogger.log("Cache hit for fetchPortfolioValue"); - return cachedValue; - } - elizaLogger.log("Cache miss for fetchPortfolioValue"); - - const query = ` - query Balances($walletId: String!, $cursor: String) { - balances(input: { walletId: $walletId, cursor: $cursor }) { - cursor - items { - walletId - tokenId - balance - shiftedBalance - } - } - } - `; - - const variables = { - walletId: `${this.walletPublicKey.toBase58()}:${1399811149}`, - cursor: null, - }; - - const response = await fetch(PROVIDER_CONFIG.GRAPHQL_ENDPOINT, { - method: "POST", - headers: { - "Content-Type": "application/json", - Authorization: - runtime.getSetting("CODEX_API_KEY", "") || "", - }, - body: JSON.stringify({ - query, - variables, - }), - }).then((res) => res.json()); - - const data = response.data?.data?.balances?.items; - - if (!data || data.length === 0) { - elizaLogger.error("No portfolio data available", data); - throw new Error("No portfolio data available"); + const portfolio = await runtime.cacheManager.get('solana/walletData'); + if (!portfolio) { + return null; } - // Fetch token prices - const prices = await this.fetchPrices(runtime); - const solPriceInUSD = new BigNumber(prices.solana.usd.toString()); - - // Reformat items - const items: Item[] = data.map((item: any) => { - return { - name: "Unknown", - address: item.tokenId.split(":")[0], - symbol: item.tokenId.split(":")[0], - decimals: 6, - balance: item.balance, - uiAmount: item.shiftedBalance.toString(), - priceUsd: "", - valueUsd: "", - valueSol: "", - }; - }); + const agentName = state?.agentName || 'The agent'; + let output = `${agentName}'s Solana Wallet\n`; + output += `Total Value: $${new BigNumber(portfolio.totalUsd).toFixed(2)} (${portfolio.totalSol} SOL)\n\n`; - // Calculate total portfolio value - const totalUsd = items.reduce( - (sum, item) => sum.plus(new BigNumber(item.valueUsd)), - new BigNumber(0) + // Token Balances + output += "Token Balances:\n"; + const nonZeroItems = portfolio.items.filter((item) => + new BigNumber(item.uiAmount).isGreaterThan(0) ); - const totalSol = totalUsd.div(solPriceInUSD); - - const portfolio: WalletPortfolio = { - totalUsd: totalUsd.toFixed(6), - totalSol: totalSol.toFixed(6), - items: items.sort((a, b) => - new BigNumber(b.valueUsd) - .minus(new BigNumber(a.valueUsd)) - .toNumber() - ), - }; - - // Cache the portfolio for future requests - await this.cache.set(cacheKey, portfolio, 60 * 1000); // Cache for 1 minute - - return portfolio; - } catch (error) { - elizaLogger.error("Error fetching portfolio:", error); - throw error; - } - } - - async fetchPrices(runtime): Promise { - try { - const cacheKey = "prices"; - const cachedValue = this.cache.get(cacheKey); - - if (cachedValue) { - elizaLogger.log("Cache hit for fetchPrices"); - return cachedValue; - } - elizaLogger.log("Cache miss for fetchPrices"); - - const { SOL, BTC, ETH } = PROVIDER_CONFIG.TOKEN_ADDRESSES; - const tokens = [SOL, BTC, ETH]; - const prices: Prices = { - solana: { usd: "0" }, - bitcoin: { usd: "0" }, - ethereum: { usd: "0" }, - }; - - for (const token of tokens) { - const response = await this.fetchWithRetry( - runtime, - `${PROVIDER_CONFIG.BIRDEYE_API}/defi/price?address=${token}`, - { - headers: { - "x-chain": "solana", - }, - } - ); - - if (response?.data?.value) { - const price = response.data.value.toString(); - prices[ - token === SOL - ? "solana" - : token === BTC - ? "bitcoin" - : "ethereum" - ].usd = price; - } else { - elizaLogger.warn( - `No price data available for token: ${token}` - ); + if (nonZeroItems.length === 0) { + output += "No tokens found with non-zero balance\n"; + } else { + for (const item of nonZeroItems) { + const valueUsd = new BigNumber(item.valueUsd).toFixed(2); + output += `${item.name} (${item.symbol}): ${new BigNumber( + item.uiAmount + ).toFixed(6)} ($${valueUsd} | ${item.valueSol} SOL)\n`; } } - this.cache.set(cacheKey, prices); - return prices; - } catch (error) { - elizaLogger.error("Error fetching prices:", error); - throw error; - } - } - - formatPortfolio( - runtime, - portfolio: WalletPortfolio, - prices: Prices - ): string { - let output = `${runtime.character.description}\n`; - output += `Wallet Address: ${this.walletPublicKey.toBase58()}\n\n`; - - const totalUsdFormatted = new BigNumber(portfolio.totalUsd).toFixed(2); - const totalSolFormatted = portfolio.totalSol; - - output += `Total Value: $${totalUsdFormatted} (${totalSolFormatted} SOL)\n\n`; - output += "Token Balances:\n"; - - const nonZeroItems = portfolio.items.filter((item) => - new BigNumber(item.uiAmount).isGreaterThan(0) - ); - - if (nonZeroItems.length === 0) { - output += "No tokens found with non-zero balance\n"; - } else { - for (const item of nonZeroItems) { - const valueUsd = new BigNumber(item.valueUsd).toFixed(2); - output += `${item.name} (${item.symbol}): ${new BigNumber( - item.uiAmount - ).toFixed(6)} ($${valueUsd} | ${item.valueSol} SOL)\n`; + // Market Prices + if (portfolio.prices) { + output += "\nMarket Prices:\n"; + output += `SOL: $${new BigNumber(portfolio.prices.solana.usd).toFixed(2)}\n`; + output += `BTC: $${new BigNumber(portfolio.prices.bitcoin.usd).toFixed(2)}\n`; + output += `ETH: $${new BigNumber(portfolio.prices.ethereum.usd).toFixed(2)}\n`; } - } - output += "\nMarket Prices:\n"; - output += `SOL: $${new BigNumber(prices.solana.usd).toFixed(2)}\n`; - output += `BTC: $${new BigNumber(prices.bitcoin.usd).toFixed(2)}\n`; - output += `ETH: $${new BigNumber(prices.ethereum.usd).toFixed(2)}\n`; - - return output; - } - - async getFormattedPortfolio(runtime): Promise { - try { - const [portfolio, prices] = await Promise.all([ - this.fetchPortfolioValue(runtime), - this.fetchPrices(runtime), - ]); - - return this.formatPortfolio(runtime, portfolio, prices); + return output; } catch (error) { - elizaLogger.error("Error generating portfolio report:", error); - return "Unable to fetch wallet information. Please try again later."; - } - } - - private async getTokenAccounts(walletAddress: string) { - try { - const accounts = - await this.connection.getParsedTokenAccountsByOwner( - new PublicKey(walletAddress), - { - programId: new PublicKey( - "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" - ), - } - ); - return accounts.value; - } catch (error) { - elizaLogger.error("Error fetching token accounts:", error); - return []; - } - } -} - -const walletProvider: Provider = { - get: async ( - runtime: IAgentRuntime, - _message: Memory, - _state?: State - ): Promise => { - try { - const { publicKey } = await getWalletKey(runtime, false); - - const connection = new Connection( - runtime.getSetting("SOLANA_RPC_URL") || - PROVIDER_CONFIG.DEFAULT_RPC - ); - - const provider = new WalletProvider(connection, publicKey); - - return await provider.getFormattedPortfolio(runtime); - } catch (error) { - elizaLogger.error("Error in wallet provider:", error); + console.error("Error in Solana wallet provider:", error); return null; } }, -}; - -// Module exports -export { walletProvider }; +}; \ No newline at end of file diff --git a/packages/plugin-solana/src/types.ts b/packages/plugin-solana/src/types.ts index 1cd7e4d5d9c..1dd2e24326b 100644 --- a/packages/plugin-solana/src/types.ts +++ b/packages/plugin-solana/src/types.ts @@ -1,3 +1,6 @@ +import { IAgentRuntime } from "@elizaos/core"; +import { PublicKey } from "@solana/web3.js"; + export interface Item { name: string; address: string; @@ -10,23 +13,49 @@ export interface Item { valueSol?: string; } +export interface Prices { + solana: { usd: string }; + bitcoin: { usd: string }; + ethereum: { usd: string }; +} + export interface WalletPortfolio { totalUsd: string; totalSol?: string; items: Array; + prices?: Prices; + lastUpdated?: number; } -export interface _BirdEyePriceData { - data: { - [key: string]: { - price: number; - priceChange24h: number; +export interface TokenAccountInfo { + pubkey: PublicKey; + account: { + lamports: number; + data: { + parsed: { + info: { + mint: string; + owner: string; + tokenAmount: { + amount: string; + decimals: number; + uiAmount: number; + }; + }; + type: string; + }; + program: string; + space: number; }; + owner: string; + executable: boolean; + rentEpoch: number; }; } -export interface Prices { - solana: { usd: string }; - bitcoin: { usd: string }; - ethereum: { usd: string }; +export interface ISolanaClient { + start: () => void; + stop: (runtime: IAgentRuntime) => Promise; + getCachedData: () => Promise; + forceUpdate: () => Promise; } \ No newline at end of file From f3e3b3b6fba71b9e2fa83d77190921537471fbfd Mon Sep 17 00:00:00 2001 From: Shaw Date: Wed, 12 Feb 2025 05:21:13 -0500 Subject: [PATCH 08/10] remove logs --- packages/core/src/generation.ts | 7 ------- packages/plugin-solana/src/actions/transfer.ts | 2 -- 2 files changed, 9 deletions(-) diff --git a/packages/core/src/generation.ts b/packages/core/src/generation.ts index 2977f552a64..056a1369136 100644 --- a/packages/core/src/generation.ts +++ b/packages/core/src/generation.ts @@ -272,7 +272,6 @@ export const generateObject = async ({ console.error(errorMessage); throw new Error(errorMessage); } - console.log(context); const obj = await runtime.useModel(modelClass, { runtime, @@ -282,9 +281,6 @@ export const generateObject = async ({ object: true, }); - console.log(obj); - - let jsonString = obj; // try to find a first and last bracket @@ -294,8 +290,6 @@ export const generateObject = async ({ jsonString = obj.slice(firstBracket, lastBracket + 1); } - console.log("jsonString", jsonString); - if (jsonString.length === 0) { logger.error("Failed to extract JSON string from model response"); return null; @@ -304,7 +298,6 @@ export const generateObject = async ({ // parse the json string try { const json = JSON.parse(jsonString); - console.log("json exported", json); return json; } catch (error) { logger.error("Failed to parse JSON string"); diff --git a/packages/plugin-solana/src/actions/transfer.ts b/packages/plugin-solana/src/actions/transfer.ts index 17a45cd0e4f..02440a78779 100644 --- a/packages/plugin-solana/src/actions/transfer.ts +++ b/packages/plugin-solana/src/actions/transfer.ts @@ -116,8 +116,6 @@ export default { }); - console.log("Transfer context:", transferContext); - const content = await generateObject({ runtime, context: transferContext, From 8b858e1dbd4d30fc9811a948a8a3b16f0b98aca6 Mon Sep 17 00:00:00 2001 From: Ting Chien Meng Date: Wed, 12 Feb 2025 23:12:06 +0800 Subject: [PATCH 09/10] fix client speech to text --- packages/agent/src/server.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/agent/src/server.ts b/packages/agent/src/server.ts index 7507c13189f..83cc2fa254b 100644 --- a/packages/agent/src/server.ts +++ b/packages/agent/src/server.ts @@ -89,9 +89,10 @@ export class CharacterServer { return; } - const transcription = await runtime.useModel(ModelClass.TRANSCRIPTION, fs.createReadStream(audioFile.path)); - - res.json(transcription); + const audioBuffer = fs.readFileSync(audioFile.path); + const transcription = await runtime.useModel(ModelClass.TRANSCRIPTION, audioBuffer); + + res.json({text: transcription}); } ); From 97ca4eff11c7dfbd3a9d0c5ffd4e7c46139d2c25 Mon Sep 17 00:00:00 2001 From: Sayo Date: Wed, 12 Feb 2025 22:19:54 +0530 Subject: [PATCH 10/10] just minor biome pref (#3462) --- packages/plugin-anthropic/src/index.ts | 8 +++++--- packages/plugin-openai/src/index.ts | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/plugin-anthropic/src/index.ts b/packages/plugin-anthropic/src/index.ts index 9c3418566c1..7cdde4c6208 100644 --- a/packages/plugin-anthropic/src/index.ts +++ b/packages/plugin-anthropic/src/index.ts @@ -20,10 +20,12 @@ export const anthropicPlugin: Plugin = { async init(config: Record) { try { const validatedConfig = await configSchema.parseAsync(config); - // Set all validated configuration values as environment variables. - Object.entries(validatedConfig).forEach(([key, value]) => { + + // Set all environment variables at once + for (const [key, value] of Object.entries(validatedConfig)) { if (value) process.env[key] = value; - }); + } + // (Optional) If the Anthropics SDK supports API key verification, // you might add a check here. } catch (error) { diff --git a/packages/plugin-openai/src/index.ts b/packages/plugin-openai/src/index.ts index f3897d2eeae..be4cf054df3 100644 --- a/packages/plugin-openai/src/index.ts +++ b/packages/plugin-openai/src/index.ts @@ -50,9 +50,9 @@ export const openaiPlugin: Plugin = { const validatedConfig = await configSchema.parseAsync(config); // Set all environment variables at once - Object.entries(validatedConfig).forEach(([key, value]) => { + for (const [key, value] of Object.entries(validatedConfig)) { if (value) process.env[key] = value; - }); + } // Verify API key const baseURL =