diff --git a/packages/plugin-ferePro/.npmignore b/packages/plugin-ferePro/.npmignore deleted file mode 100644 index 078562eceab..00000000000 --- a/packages/plugin-ferePro/.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -* - -!dist/** -!package.json -!readme.md -!tsup.config.ts \ No newline at end of file diff --git a/packages/plugin-ferePro/eslint.config.mjs b/packages/plugin-ferePro/eslint.config.mjs deleted file mode 100644 index 92fe5bbebef..00000000000 --- a/packages/plugin-ferePro/eslint.config.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import eslintGlobalConfig from "../../eslint.config.mjs"; - -export default [...eslintGlobalConfig]; diff --git a/packages/plugin-ferePro/package.json b/packages/plugin-ferePro/package.json deleted file mode 100644 index c65e8e429f3..00000000000 --- a/packages/plugin-ferePro/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@elizaos/plugin-ferepro", - "version": "0.1.7-alpha.2", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "^0.1.7-alpha.1", - "tsup": "^8.3.5", - "ws": "^8.18.0" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsx watch src/index.ts", - "lint": "eslint --fix --cache ." - }, - "devDependencies": { - "@types/ws": "^8.5.13", - "tsx": "^4.19.2" - } -} diff --git a/packages/plugin-ferePro/src/actions/FereProAction.ts b/packages/plugin-ferePro/src/actions/FereProAction.ts deleted file mode 100644 index 415c8aa0ce8..00000000000 --- a/packages/plugin-ferePro/src/actions/FereProAction.ts +++ /dev/null @@ -1,150 +0,0 @@ -import { - elizaLogger, - ActionExample, - Memory, - State, - IAgentRuntime, - type Action, - HandlerCallback, -} from "@elizaos/core"; -import { FereProService } from "../services/FereProService"; - -export interface FereMessageContent { - message: string; - stream?: boolean; - debug?: boolean; -} - -function isValidMessageContent(content: any): content is FereMessageContent { - return typeof content.message === "string"; -} - -const _fereProTemplate = `Extract the core query from user input and respond with the requested data. If the user asks for a comparison or historical data, make sure to reflect that accurately. - -Example: -\`\`\`json -{ - "message": "Compare top 3 coins against Bitcoin in the last 3 months", - "stream": true, - "debug": false -} -\`\`\` - -{{recentMessages}} - -Extract the core request and execute the appropriate action.`; - -export default { - name: "SEND_FEREPRO_MESSAGE", - similes: ["QUERY_MARKET", "ASK_AGENT"], - description: - "Send a message to FerePro API and receive streaming or non-streaming responses.", - - validate: async (runtime: IAgentRuntime, _message: Memory) => { - console.log("Validating environment for FerePro..."); - const user = runtime.getSetting("FERE_USER_ID"); - if (!user) { - throw new Error("FERE_USER_ID not set in runtime."); - } - return true; - }, - - handler: async ( - runtime: IAgentRuntime, - message: Memory, - state: State, - _options: { [key: string]: unknown }, - callback?: HandlerCallback - ) => { - elizaLogger.log("Executing SEND_FEREPRO_MESSAGE..."); - - // Ensure state exists or generate a new one - if (!state) { - state = (await runtime.composeState(message)) as State; - } else { - state = await runtime.updateRecentMessageState(state); - } - - // Compose context for the WebSocket message - const context = { - message: message.content.text, - stream: message.content.stream || false, - debug: message.content.debug || false, - }; - - if (!isValidMessageContent(context)) { - console.error("Invalid content for SEND_FEREPRO_MESSAGE."); - if (callback) { - callback({ - text: "Unable to process request. Invalid message content.", - content: { error: "Invalid message content" }, - }); - } - return false; - } - - // Send the message via WebSocket using FereProService - try { - const service = new FereProService(); - await service.initialize(runtime); - - const response = await service.sendMessage(context); - - if (response.success) { - if (callback) { - callback({ - text: "Response received from FerePro.", - content: response.data, - }); - } - return true; - } else { - throw new Error(response.error || "Unknown WebSocket error."); - } - } catch (error) { - console.error("Error during WebSocket communication:", error); - if (callback) { - callback({ - text: `Error sending message: ${error.message}`, - content: { error: error.message }, - }); - } - return false; - } - }, - - examples: [ - [ - { - user: "{{user1}}", - content: { - text: "What are the top 5 cryptocurrencies?", - action: "SEND_FEREPRO_MESSAGE", - }, - }, - { - user: "{{user2}}", - content: { - text: "Here are the top 5 cryptocurrencies.", - }, - }, - ], - [ - { - user: "{{user1}}", - content: { - text: "Compare Ethereum and Bitcoin for the past 6 months.", - action: "SEND_FEREPRO_MESSAGE", - stream: true, - debug: true, - }, - }, - { - user: "{{user2}}", - content: { - text: "Streaming Ethereum and Bitcoin comparison...", - }, - }, - ], - ] as ActionExample[][], -} as Action; diff --git a/packages/plugin-ferePro/src/index.ts b/packages/plugin-ferePro/src/index.ts deleted file mode 100644 index d4513ef478d..00000000000 --- a/packages/plugin-ferePro/src/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Plugin } from "@elizaos/core"; -import sendFereProMessage from "./actions/FereProAction"; -import { FereProService } from "./services/FereProService"; - -export const fereProPlugin: Plugin = { - name: "ferePro", - description: - "FerePro Plugin for Eliza - Enables WebSocket communication for AI-driven market insights", - actions: [sendFereProMessage], - evaluators: [], - providers: [], - services: [new FereProService()], -}; - -export default fereProPlugin; diff --git a/packages/plugin-ferePro/src/services/FereProService.ts b/packages/plugin-ferePro/src/services/FereProService.ts deleted file mode 100644 index 3300bf4d71e..00000000000 --- a/packages/plugin-ferePro/src/services/FereProService.ts +++ /dev/null @@ -1,104 +0,0 @@ -import WebSocket from "ws"; -import { IAgentRuntime, Service } from "@elizaos/core"; - -interface ChatResponse { - answer: string; - chat_id: string; - representation?: Record[]; - agent_api_name: string; - query_summary: string; - agent_credits: number; - credits_available: number; -} - -interface FereMessage { - message: string; - stream?: boolean; - debug?: boolean; -} - -interface FereResponse { - success: boolean; - data?: ChatResponse; - error?: string; -} - -export class FereProService extends Service { - private ws: WebSocket | null = null; - private user: string = "1a5b4a29-9d95-44c8-aef3-05a8e515f43e"; - private runtime: IAgentRuntime | null = null; - - async initialize(runtime: IAgentRuntime): Promise { - console.log("Initializing FerePro WebSocket Service"); - this.runtime = runtime; - this.user = runtime.getSetting("FERE_USER_ID") ?? this.user; - } - - /** - * Connect to WebSocket and send a message - */ - async sendMessage(payload: FereMessage): Promise { - return new Promise((resolve, reject) => { - try { - const url = `wss:/api.fereai.xyz/chat/v2/ws/${this.user}`; - this.ws = new WebSocket(url); - - this.ws.on("open", () => { - console.log("Connected to FerePro WebSocket"); - this.ws?.send(JSON.stringify(payload)); - console.log("Message sent:", payload.message); - }); - - this.ws.on("message", (data) => { - try { - const response = JSON.parse(data.toString()); - const chatResponse: ChatResponse = { - answer: response.answer, - chat_id: response.chat_id, - representation: response.representation || null, - agent_api_name: response.agent_api_name, - query_summary: response.query_summary, - agent_credits: response.agent_credits, - credits_available: response.credits_available, - }; - - console.log("Received ChatResponse:", chatResponse); - - resolve({ - success: true, - data: chatResponse, - }); - } catch (err) { - console.error("Error parsing response:", err); - reject({ - success: false, - error: "Invalid response format", - }); - } - }); - - this.ws.on("close", () => { - console.log("Disconnected from FerePro WebSocket"); - }); - - this.ws.on("error", (err) => { - console.error("WebSocket error:", err); - reject({ - success: false, - error: err.message, - }); - }); - } catch (error) { - reject({ - success: false, - error: - error instanceof Error - ? error.message - : "Error Occured", - }); - } - }); - } -} - -export default FereProService; diff --git a/packages/plugin-ferePro/tsconfig.json b/packages/plugin-ferePro/tsconfig.json deleted file mode 100644 index c5870a42ab1..00000000000 --- a/packages/plugin-ferePro/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "module": "ESNext", - "target": "ESNext", - "outDir": "dist", - "declaration": true, - "declarationMap": true, - "moduleResolution": "Node", - "esModuleInterop": true, - "skipLibCheck": true - } -} diff --git a/packages/plugin-ferePro/tsup.config.ts b/packages/plugin-ferePro/tsup.config.ts deleted file mode 100644 index c7bf2d61a74..00000000000 --- a/packages/plugin-ferePro/tsup.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - format: ["esm"], - dts: true, - sourcemap: true, - splitting: false, - clean: true, -});