Skip to content

Commit

Permalink
client-solana-trading now builds
Browse files Browse the repository at this point in the history
  • Loading branch information
yodamaster726 committed Dec 28, 2024
1 parent a224e6c commit 8537e18
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 12 deletions.
29 changes: 17 additions & 12 deletions packages/client-solana-trading/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import { Client, IAgentRuntime, Memory, Plugin } from "@elizaos/core";
import { Client, IAgentRuntime, Memory, Plugin, UUID } from "@elizaos/core";
import { DiscordClient } from "@elizaos/client-discord";
import { PriceMonitorAction } from "@elizaos/plugin-solana-trading/src/actions/priceMonitor";
import { CandleAnalysisAction } from "@elizaos/plugin-solana-trading/src/actions/candleAnalysis";
import { BottomDetectionAction } from "@elizaos/plugin-solana-trading/src/actions/bottomDetection";
import { TradingSignalEvaluator } from "@elizaos/plugin-solana-trading/src/evaluators/tradingSignal";
import { GeckoTerminalProvider } from "@elizaos/plugin-solana-trading/src/providers/geckoTerminal";
import {
PriceMonitorAction,
CandleAnalysisAction,
BottomDetectionAction,
TradingSignalEvaluator,
GeckoTerminalProvider
} from "@elizaos/plugin-solana-trading";
import { stringToUuid } from "@elizaos/core";
import dotenv from "dotenv";

dotenv.config();
Expand Down Expand Up @@ -34,10 +37,9 @@ export class SolanaTradingClient implements Client {
};
}

async start(runtime: IAgentRuntime) {
start = async (runtime: IAgentRuntime): Promise<unknown> => {
// Initialize Discord client
this.discordClient = new DiscordClient(runtime);
await this.discordClient.start(runtime);

// Register plugin's actions
this.plugin.actions?.forEach(action => runtime.registerAction(action));
Expand All @@ -54,18 +56,20 @@ export class SolanaTradingClient implements Client {
this.startPriceMonitoring(runtime);

console.log("Solana Trading Bot initialized and monitoring prices...");
}
return this;
};

private startPriceMonitoring(runtime: IAgentRuntime) {
// Run price analysis every minute
this.analysisInterval = setInterval(async () => {
try {
// Create memory object for analysis
const message: Memory = {
id: undefined,
id: stringToUuid(runtime.agentId),
userId: runtime.agentId,
agentId: runtime.agentId,
roomId: runtime.agentId,
createdAt: Date.now(),
content: {
text: "Analyze trading signals",
action: "analyze"
Expand All @@ -85,7 +89,7 @@ export class SolanaTradingClient implements Client {
}, 60 * 1000); // Every minute
}

async stop(runtime: IAgentRuntime) {
stop = async (runtime: IAgentRuntime): Promise<unknown> => {
if (this.analysisInterval) {
clearInterval(this.analysisInterval);
this.analysisInterval = null;
Expand All @@ -95,7 +99,8 @@ export class SolanaTradingClient implements Client {
await this.discordClient.stop();

console.log("Shutting down Solana Trading Bot...");
}
return this;
};
}

// Export the client class instead of an instance
Expand Down
7 changes: 7 additions & 0 deletions packages/plugin-solana-trading/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ import { CandleAnalysisAction } from './actions/candleAnalysis'
import { BottomDetectionAction } from './actions/bottomDetection'
import { TradingSignalEvaluator } from './evaluators/tradingSignal'

// Export individual components
export { GeckoTerminalProvider } from './providers/geckoTerminal'
export { PriceMonitorAction } from './actions/priceMonitor'
export { CandleAnalysisAction } from './actions/candleAnalysis'
export { BottomDetectionAction } from './actions/bottomDetection'
export { TradingSignalEvaluator } from './evaluators/tradingSignal'

export class SolanaTradingPlugin extends Plugin {
name = 'solana-trading'
version = '0.1.0'
Expand Down
1 change: 1 addition & 0 deletions packages/plugin-solana/tsup.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ export default defineConfig({
clean: true,
format: ["esm"], // Ensure you're targeting CommonJS
external: [
"@elizaos/core",
"dotenv", // Externalize dotenv to prevent bundling
"fs", // Externalize fs to use Node.js built-in module
"path", // Externalize other built-ins if necessary
Expand Down

0 comments on commit 8537e18

Please sign in to comment.