diff --git a/core/src/providers/trustScoreProvider.ts b/core/src/providers/trustScoreProvider.ts index 84ab77f91fa..6f0fb8e7555 100644 --- a/core/src/providers/trustScoreProvider.ts +++ b/core/src/providers/trustScoreProvider.ts @@ -81,6 +81,9 @@ export class TrustScoreProvider { const recommenderMetrics = await this.trustScoreDb.getRecommenderMetrics(recommenderId); + if (!recommenderMetrics) { + throw new Error("Recommender not found"); + } const isRapidDump = await this.isRapidDump(tokenAddress); const sustainedGrowth = await this.sustainedGrowth(tokenAddress); @@ -109,12 +112,13 @@ export class TrustScoreProvider { processedData.tradeData.price_change_24h_percent, volumeChange24h: processedData.tradeData.volume_24h, trade_24h_change: - processedData.tradeData.trade_24h_change_percent, + processedData.tradeData.trade_24h_change_percent || 0, liquidity: processedData.dexScreenerData.pairs[0]?.liquidity.usd || 0, liquidityChange24h: 0, holderChange24h: - processedData.tradeData.unique_wallet_24h_change_percent, + processedData.tradeData.unique_wallet_24h_change_percent || + 0, rugPull: false, // TODO: Implement rug pull detection isScam: false, // TODO: Implement scam detection marketCapChange24h: 0, // TODO: Implement market cap change @@ -147,6 +151,9 @@ export class TrustScoreProvider { ): Promise { const recommenderMetrics = await this.trustScoreDb.getRecommenderMetrics(recommenderId); + if (!recommenderMetrics) { + throw new Error("Recommender not found"); + } const totalRecommendations = recommenderMetrics.totalRecommendations + 1; @@ -269,6 +276,13 @@ export class TrustScoreProvider { const processedData: ProcessedTokenData = await this.tokenProvider.getProcessedTokenData(); console.log(`Fetched processed token data for token: ${tokenAddress}`); + if ( + !processedData || + !processedData.tradeData || + !processedData.tradeData.volume_24h_change_percent + ) { + return false; + } return processedData.tradeData.volume_24h_change_percent > 50; } @@ -278,6 +292,14 @@ export class TrustScoreProvider { await this.tokenProvider.getProcessedTokenData(); console.log(`Fetched processed token data for token: ${tokenAddress}`); + if ( + !processedData || + !processedData.tradeData || + !processedData.tradeData.trade_24h_change_percent + ) { + return false; + } + return processedData.tradeData.trade_24h_change_percent < -50; } @@ -384,6 +406,9 @@ export class TrustScoreProvider { recommenderId, isSimulation ); + if (!trade) { + throw new Error("Trade not found"); + } const buyTimeStamp = trade.buy_timeStamp; const marketCap = processedData.dexScreenerData.pairs[0]?.marketCap || 0; diff --git a/core/tests/utils.test.ts b/core/tests/utils.test.ts index 8fe285ee509..6c7a5c474f0 100644 --- a/core/tests/utils.test.ts +++ b/core/tests/utils.test.ts @@ -1,14 +1,14 @@ import Database from "better-sqlite3"; import fs from "fs"; import path from "path"; -import { SqliteDatabaseAdapter } from "../../adapters/sqlite.ts"; -import defaultCharacter from "../../core/defaultCharacter.ts"; -import { AgentRuntime } from "../../core/runtime.ts"; -import settings from "../../core/settings.ts"; -import { TwitterInteractionClient } from "./interactions.ts"; -import { buildConversationThread } from "./utils.ts"; +import { SqliteDatabaseAdapter } from "../src/adapters/sqlite.ts"; +import defaultCharacter from "../src/core/defaultCharacter.ts"; +import { AgentRuntime } from "../src/core/runtime.ts"; +import settings from "../src/core/settings.ts"; +import { TwitterInteractionClient } from "../src/clients/twitter/interactions.ts"; +import { buildConversationThread } from "../src/clients/twitter/utils.ts"; import { fileURLToPath } from "url"; -import { ModelProvider } from "../../core/types.ts"; +import { ModelProvider } from "../src/core/types.ts"; // const __dirname = path.dirname(new URL(".", import.meta.url).pathname); diff --git a/core/tsconfig.json b/core/tsconfig.json index f10a566a259..ef9de447bc9 100644 --- a/core/tsconfig.json +++ b/core/tsconfig.json @@ -5,7 +5,7 @@ "lib": ["ESNext", "dom"], "moduleResolution": "Bundler", "outDir": "./dist", - "rootDir": "./src", + "rootDir": "./", "strict": false, "esModuleInterop": true, "skipLibCheck": true, @@ -20,8 +20,8 @@ "noEmitOnError": false, "moduleDetection": "force", "allowArbitraryExtensions": true, - "typeRoots": ["./node_modules/@types", "./types", "./node_modules/jest/types"] + "typeRoots": ["./node_modules/@types", "./types", "./node_modules/jest/types", "../node_modules/@types", "../types", "../node_modules/jest/types"], }, - "include": ["src/**/*"], + "include": ["src/**/*", "tests/**/*.test.ts"], "exclude": ["node_modules", "dist", "src/**/*.d.ts", "types/**/*.test.ts"] }