Skip to content

Commit 4d15f47

Browse files
committed
chore: update version to 0.1.9-alpha.1 and enhance .gitignore; refactor wallet keypair handling
1 parent 3b334cb commit 4d15f47

File tree

7 files changed

+364
-167
lines changed

7 files changed

+364
-167
lines changed

.gitignore

+5-1
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,8 @@ agent/content
6060

6161
eliza.manifest
6262
eliza.manifest.sgx
63-
eliza.sig
63+
eliza.sig
64+
65+
notes/*
66+
core/*
67+
.specstory

agent/package.json

+45-43
Original file line numberDiff line numberDiff line change
@@ -18,89 +18,91 @@
1818
"exec": "node --enable-source-maps --loader ts-node/esm src/index.ts"
1919
},
2020
"dependencies": {
21-
"@elizaos/adapter-supabase": "workspace:*",
21+
"@elizaos/adapter-pglite": "workspace:*",
2222
"@elizaos/adapter-postgres": "workspace:*",
2323
"@elizaos/adapter-redis": "workspace:*",
2424
"@elizaos/adapter-sqlite": "workspace:*",
25-
"@elizaos/adapter-pglite": "workspace:*",
25+
"@elizaos/adapter-supabase": "workspace:*",
2626
"@elizaos/client-auto": "workspace:*",
2727
"@elizaos/client-direct": "workspace:*",
2828
"@elizaos/client-discord": "workspace:*",
2929
"@elizaos/client-farcaster": "workspace:*",
30+
"@elizaos/client-instagram": "workspace:*",
3031
"@elizaos/client-lens": "workspace:*",
32+
"@elizaos/client-slack": "workspace:*",
3133
"@elizaos/client-telegram": "workspace:*",
3234
"@elizaos/client-twitter": "workspace:*",
33-
"@elizaos/client-instagram": "workspace:*",
34-
"@elizaos/client-slack": "workspace:*",
3535
"@elizaos/core": "workspace:*",
3636
"@elizaos/plugin-0g": "workspace:*",
37+
"@elizaos/plugin-3d-generation": "workspace:*",
3738
"@elizaos/plugin-abstract": "workspace:*",
39+
"@elizaos/plugin-akash": "workspace:*",
40+
"@elizaos/plugin-allora": "workspace:*",
3841
"@elizaos/plugin-aptos": "workspace:*",
39-
"@elizaos/plugin-birdeye": "workspace:*",
40-
"@elizaos/plugin-coingecko": "workspace:*",
41-
"@elizaos/plugin-coinmarketcap": "workspace:*",
42-
"@elizaos/plugin-binance": "workspace:*",
42+
"@elizaos/plugin-arthera": "workspace:*",
43+
"@elizaos/plugin-autonome": "workspace:*",
4344
"@elizaos/plugin-avail": "workspace:*",
45+
"@elizaos/plugin-avalanche": "workspace:*",
46+
"@elizaos/plugin-b2": "workspace:*",
47+
"@elizaos/plugin-binance": "workspace:*",
48+
"@elizaos/plugin-birdeye": "workspace:*",
4449
"@elizaos/plugin-bootstrap": "workspace:*",
45-
"@elizaos/plugin-cosmos": "workspace:*",
46-
"@elizaos/plugin-intiface": "workspace:*",
4750
"@elizaos/plugin-coinbase": "workspace:*",
51+
"@elizaos/plugin-coingecko": "workspace:*",
52+
"@elizaos/plugin-coinmarketcap": "workspace:*",
4853
"@elizaos/plugin-conflux": "workspace:*",
49-
"@elizaos/plugin-evm": "workspace:*",
54+
"@elizaos/plugin-cosmos": "workspace:*",
55+
"@elizaos/plugin-cronoszkevm": "workspace:*",
56+
"@elizaos/plugin-depin": "workspace:*",
57+
"@elizaos/plugin-dexscreener": "workspace:*",
5058
"@elizaos/plugin-echochambers": "workspace:*",
59+
"@elizaos/plugin-evm": "workspace:*",
5160
"@elizaos/plugin-flow": "workspace:*",
61+
"@elizaos/plugin-fuel": "workspace:*",
62+
"@elizaos/plugin-genlayer": "workspace:*",
63+
"@elizaos/plugin-giphy": "workspace:*",
5264
"@elizaos/plugin-gitbook": "workspace:*",
53-
"@elizaos/plugin-story": "workspace:*",
5465
"@elizaos/plugin-gitcoin-passport": "workspace:*",
5566
"@elizaos/plugin-goat": "workspace:*",
56-
"@elizaos/plugin-lensNetwork": "workspace:*",
67+
"@elizaos/plugin-hyperliquid": "workspace:*",
5768
"@elizaos/plugin-icp": "workspace:*",
5869
"@elizaos/plugin-image-generation": "workspace:*",
59-
"@elizaos/plugin-movement": "workspace:*",
70+
"@elizaos/plugin-intiface": "workspace:*",
71+
"@elizaos/plugin-lensNetwork": "workspace:*",
72+
"@elizaos/plugin-letzai": "workspace:*",
6073
"@elizaos/plugin-massa": "workspace:*",
74+
"@elizaos/plugin-movement": "workspace:*",
75+
"@elizaos/plugin-multiversx": "workspace:*",
76+
"@elizaos/plugin-near": "workspace:*",
77+
"@elizaos/plugin-nft-collections": "workspace:*",
6178
"@elizaos/plugin-nft-generation": "workspace:*",
6279
"@elizaos/plugin-node": "workspace:*",
80+
"@elizaos/plugin-obsidian": "workspace:*",
81+
"@elizaos/plugin-opacity": "workspace:*",
82+
"@elizaos/plugin-open-weather": "workspace:*",
83+
"@elizaos/plugin-primus": "workspace:*",
84+
"@elizaos/plugin-quai": "workspace:*",
85+
"@elizaos/plugin-rabbi-trader": "workspace:*",
86+
"@elizaos/plugin-sgx": "workspace:*",
6387
"@elizaos/plugin-solana": "workspace:*",
6488
"@elizaos/plugin-solana-agentkit": "workspace:*",
6589
"@elizaos/plugin-squid-router": "workspace:*",
66-
"@elizaos/plugin-autonome": "workspace:*",
67-
"@elizaos/plugin-starknet": "workspace:*",
6890
"@elizaos/plugin-stargaze": "workspace:*",
69-
"@elizaos/plugin-giphy": "workspace:*",
70-
"@elizaos/plugin-ton": "workspace:*",
91+
"@elizaos/plugin-starknet": "workspace:*",
92+
"@elizaos/plugin-story": "workspace:*",
7193
"@elizaos/plugin-sui": "workspace:*",
72-
"@elizaos/plugin-sgx": "workspace:*",
7394
"@elizaos/plugin-tee": "workspace:*",
7495
"@elizaos/plugin-tee-log": "workspace:*",
7596
"@elizaos/plugin-tee-marlin": "workspace:*",
76-
"@elizaos/plugin-multiversx": "workspace:*",
77-
"@elizaos/plugin-near": "workspace:*",
78-
"@elizaos/plugin-zksync-era": "workspace:*",
97+
"@elizaos/plugin-tee-verifiable-log": "workspace:*",
98+
"@elizaos/plugin-thirdweb": "workspace:*",
99+
"@elizaos/plugin-ton": "workspace:*",
79100
"@elizaos/plugin-twitter": "workspace:*",
80-
"@elizaos/plugin-primus": "workspace:*",
81-
"@elizaos/plugin-cronoszkevm": "workspace:*",
82-
"@elizaos/plugin-3d-generation": "workspace:*",
83-
"@elizaos/plugin-fuel": "workspace:*",
84-
"@elizaos/plugin-avalanche": "workspace:*",
85101
"@elizaos/plugin-video-generation": "workspace:*",
86102
"@elizaos/plugin-web-search": "workspace:*",
87-
"@elizaos/plugin-dexscreener": "workspace:*",
88-
"@elizaos/plugin-letzai": "workspace:*",
89-
"@elizaos/plugin-thirdweb": "workspace:*",
90-
"@elizaos/plugin-genlayer": "workspace:*",
91-
"@elizaos/plugin-tee-verifiable-log": "workspace:*",
92-
"@elizaos/plugin-depin": "workspace:*",
93-
"@elizaos/plugin-open-weather": "workspace:*",
94-
"@elizaos/plugin-obsidian": "workspace:*",
95-
"@elizaos/plugin-arthera": "workspace:*",
96-
"@elizaos/plugin-allora": "workspace:*",
97-
"@elizaos/plugin-opacity": "workspace:*",
98-
"@elizaos/plugin-hyperliquid": "workspace:*",
99-
"@elizaos/plugin-akash": "workspace:*",
100-
"@elizaos/plugin-quai": "workspace:*",
101-
"@elizaos/plugin-b2": "workspace:*",
102-
"@elizaos/plugin-nft-collections": "workspace:*",
103+
"@elizaos/plugin-zksync-era": "workspace:*",
103104
"readline": "1.3.0",
105+
"rss-parser": "^3.13.0",
104106
"ws": "8.18.0",
105107
"yargs": "17.7.2"
106108
},

agent/src/index.ts

+16-11
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import { SqliteDatabaseAdapter } from "@elizaos/adapter-sqlite";
55
import { SupabaseDatabaseAdapter } from "@elizaos/adapter-supabase";
66
import { AutoClientInterface } from "@elizaos/client-auto";
77
import { DiscordClientInterface } from "@elizaos/client-discord";
8+
import { FarcasterClientInterface } from "@elizaos/client-farcaster";
89
import { InstagramClientInterface } from "@elizaos/client-instagram";
910
import { LensAgentClient } from "@elizaos/client-lens";
1011
import { SlackClientInterface } from "@elizaos/client-slack";
1112
import { TelegramClientInterface } from "@elizaos/client-telegram";
1213
import { TwitterClientInterface } from "@elizaos/client-twitter";
13-
import { FarcasterClientInterface } from "@elizaos/client-farcaster";
1414
// import { ReclaimAdapter } from "@elizaos/plugin-reclaim";
1515
import { PrimusAdapter } from "@elizaos/plugin-primus";
1616

@@ -66,6 +66,8 @@ import { coinmarketcapPlugin } from "@elizaos/plugin-coinmarketcap";
6666
import { confluxPlugin } from "@elizaos/plugin-conflux";
6767
import { createCosmosPlugin } from "@elizaos/plugin-cosmos";
6868
import { cronosZkEVMPlugin } from "@elizaos/plugin-cronoszkevm";
69+
import { dexScreenerPlugin } from "@elizaos/plugin-dexscreener";
70+
import { echoChambersPlugin } from "@elizaos/plugin-echochambers";
6971
import { evmPlugin } from "@elizaos/plugin-evm";
7072
import { flowPlugin } from "@elizaos/plugin-flow";
7173
import { fuelPlugin } from "@elizaos/plugin-fuel";
@@ -99,17 +101,18 @@ import { verifiableLogPlugin } from "@elizaos/plugin-tee-verifiable-log";
99101
import { thirdwebPlugin } from "@elizaos/plugin-thirdweb";
100102
import { tonPlugin } from "@elizaos/plugin-ton";
101103
import { webSearchPlugin } from "@elizaos/plugin-web-search";
102-
import { echoChambersPlugin } from "@elizaos/plugin-echochambers";
103-
import { dexScreenerPlugin } from "@elizaos/plugin-dexscreener";
104104

105+
import createRabbiTraderPlugin from "@elizaos/plugin-rabbi-trader";
105106
import { zksyncEraPlugin } from "@elizaos/plugin-zksync-era";
106107
import Database from "better-sqlite3";
107108
import fs from "fs";
108109
import net from "net";
109110
import path from "path";
110111
import { fileURLToPath } from "url";
111112
import yargs from "yargs";
112-
113+
import { cryptoNewsProvider } from "../providers/cryptoNewsProvider";
114+
import { cryptoPriceProvider } from "../providers/cryptoPriceProvider";
115+
import { timeProvider } from "../providers/timeProvider";
113116

114117
const __filename = fileURLToPath(import.meta.url); // get the resolved path to the file
115118
const __dirname = path.dirname(__filename); // get the name of the directory
@@ -246,14 +249,13 @@ async function loadCharacter(filePath: string): Promise<Character> {
246249
}
247250

248251
function commaSeparatedStringToArray(commaSeparated: string): string[] {
249-
return commaSeparated?.split(",").map(value => value.trim())
252+
return commaSeparated?.split(",").map((value) => value.trim());
250253
}
251254

252-
253255
export async function loadCharacters(
254256
charactersArg: string
255257
): Promise<Character[]> {
256-
let characterPaths = commaSeparatedStringToArray(charactersArg)
258+
let characterPaths = commaSeparatedStringToArray(charactersArg);
257259
const loadedCharacters: Character[] = [];
258260

259261
if (characterPaths?.length > 0) {
@@ -327,7 +329,9 @@ export async function loadCharacters(
327329

328330
if (hasValidRemoteUrls()) {
329331
elizaLogger.info("Loading characters from remote URLs");
330-
let characterUrls = commaSeparatedStringToArray(process.env.REMOTE_CHARACTER_URLS)
332+
let characterUrls = commaSeparatedStringToArray(
333+
process.env.REMOTE_CHARACTER_URLS
334+
);
331335
for (const characterUrl of characterUrls) {
332336
const character = await loadCharacterFromUrl(characterUrl);
333337
loadedCharacters.push(character);
@@ -774,6 +778,9 @@ export async function createAgent(
774778
// character.plugins are handled when clients are added
775779
plugins: [
776780
bootstrapPlugin,
781+
await createRabbiTraderPlugin((key: string) =>
782+
getSecret(character, key)
783+
),
777784
getSecret(character, "DEXSCREENER_API_KEY")
778785
? dexScreenerPlugin
779786
: null,
@@ -941,7 +948,7 @@ export async function createAgent(
941948
? createNFTCollectionsPlugin()
942949
: null,
943950
].filter(Boolean),
944-
providers: [],
951+
providers: [timeProvider, cryptoPriceProvider, cryptoNewsProvider],
945952
actions: [],
946953
services: [],
947954
managers: [],
@@ -1101,13 +1108,11 @@ const checkPortAvailable = (port: number): Promise<boolean> => {
11011108
});
11021109
};
11031110

1104-
11051111
const hasValidRemoteUrls = () =>
11061112
process.env.REMOTE_CHARACTER_URLS &&
11071113
process.env.REMOTE_CHARACTER_URLS !== "" &&
11081114
process.env.REMOTE_CHARACTER_URLS.startsWith("http");
11091115

1110-
11111116
const startAgents = async () => {
11121117
const directClient = new DirectClient();
11131118
let serverPort = parseInt(settings.SERVER_PORT || "3000");

agent/tsconfig.json

+11-3
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,20 @@
55
"rootDir": ".",
66
"module": "ESNext",
77
"moduleResolution": "Bundler",
8-
"types": ["node", "jest"]
8+
"types": [
9+
"node",
10+
"jest"
11+
]
912
},
1013
"ts-node": {
1114
"experimentalSpecifierResolution": "node",
1215
"transpileOnly": true,
1316
"esm": true
1417
},
15-
"include": ["src"]
16-
}
18+
"include": [
19+
"src",
20+
"evaluators/tokenRiskEvaluator.ts",
21+
"providers/whaleDataProvider.ts",
22+
"evaluators/trustScoreEvaluator.ts"
23+
]
24+
}

client/src/lib/info.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"version": "0.1.8+build.1"}
1+
{"version": "0.1.9-alpha.1"}

packages/plugin-rabbi-trader/src/wallet.ts

+27-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { elizaLogger, IAgentRuntime } from "@elizaos/core";
22
import { Connection, Keypair, VersionedTransaction } from "@solana/web3.js";
3-
import { decodeBase58 } from "./utils";
43
import { SAFETY_LIMITS } from "./constants";
4+
import { decodeBase58 } from "./utils";
55

66
/**
77
* Gets wallet keypair from runtime settings
@@ -10,19 +10,37 @@ import { SAFETY_LIMITS } from "./constants";
1010
* @throws Error if private key is missing or invalid
1111
*/
1212
export function getWalletKeypair(runtime?: IAgentRuntime): Keypair {
13-
// Check chain type from token address or configuration
13+
const privateKeyString =
14+
runtime?.getSetting("WALLET_PRIVATE_KEY") ||
15+
runtime?.getSetting("SOLANA_PRIVATE_KEY");
1416

15-
const privateKeyString = runtime?.getSetting("WALLET_PRIVATE_KEY");
1617
if (!privateKeyString) {
18+
elizaLogger.error("No wallet private key found in settings");
1719
throw new Error("No wallet private key configured");
1820
}
1921

2022
try {
21-
const privateKeyBytes = decodeBase58(privateKeyString);
22-
return Keypair.fromSecretKey(privateKeyBytes);
23+
// Handle array format
24+
if (
25+
privateKeyString.startsWith("[") &&
26+
privateKeyString.endsWith("]")
27+
) {
28+
const privateKeyArray = JSON.parse(privateKeyString);
29+
return Keypair.fromSecretKey(new Uint8Array(privateKeyArray));
30+
}
31+
32+
// Handle base58 format
33+
if (
34+
typeof privateKeyString === "string" &&
35+
!privateKeyString.startsWith("[")
36+
) {
37+
return Keypair.fromSecretKey(decodeBase58(privateKeyString));
38+
}
39+
40+
throw new Error("Invalid private key format");
2341
} catch (error) {
24-
elizaLogger.error("Failed to create wallet keypair:", error);
25-
throw error;
42+
elizaLogger.error("Failed to create keypair:", error);
43+
throw new Error(`Invalid wallet private key format: ${error.message}`);
2644
}
2745
}
2846

@@ -62,7 +80,8 @@ export async function getWalletBalance(
6280
// Add helper function to get connection
6381
async function getConnection(runtime: IAgentRuntime): Promise<Connection> {
6482
return new Connection(
65-
runtime.getSetting("SOLANA_RPC_URL") || "https://api.mainnet-beta.solana.com"
83+
runtime.getSetting("SOLANA_RPC_URL") ||
84+
"https://api.mainnet-beta.solana.com"
6685
);
6786
}
6887

0 commit comments

Comments
 (0)