UNPKG

@agentek/tools

Version:

Blockchain tools for AI agents

82 lines 3.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkMaliciousWebsite = exports.checkMaliciousAddress = void 0; const client_js_1 = require("../client.js"); const zod_1 = require("zod"); const supportedChains = []; // essentially cross chain function normalizeUrl(url) { try { const urlObj = new URL(url.toLowerCase()); return urlObj.hostname.replace(/^www\./, ""); } catch { // If URL parsing fails, try basic string manipulation const normalized = url .toLowerCase() .replace(/^https?:\/\//, "") .replace(/^www\./, "") .split("/")[0]; return normalized || ""; } } // Cache configuration let addressBlacklist = null; let domainBlacklist = null; let lastAddressFetch = 0; let lastDomainFetch = 0; const CACHE_DURATION = 1000 * 60 * 60 * 24; // 24 hours to match daily updates async function getAddressBlacklist() { const now = Date.now(); if (!addressBlacklist || now - lastAddressFetch > CACHE_DURATION) { const response = await fetch("https://raw.githubusercontent.com/scamsniffer/scam-database/refs/heads/main/blacklist/address.json"); addressBlacklist = await response.json(); lastAddressFetch = now; } return addressBlacklist; } async function getDomainBlacklist() { const now = Date.now(); if (!domainBlacklist || now - lastDomainFetch > CACHE_DURATION) { const response = await fetch("https://raw.githubusercontent.com/scamsniffer/scam-database/refs/heads/main/blacklist/domains.json"); domainBlacklist = await response.json(); lastDomainFetch = now; } return domainBlacklist; } exports.checkMaliciousAddress = (0, client_js_1.createTool)({ name: "checkMaliciousAddress", description: "Check if an Ethereum address has been associated with malicious activity", supportedChains, parameters: zod_1.z.object({ address: zod_1.z.string(), }), execute: async (_client, args) => { const blacklist = await getAddressBlacklist(); if (!blacklist) { throw new Error("Failed to fetch address blacklist"); } return { address: args.address, isMalicious: blacklist.includes(args.address.toLowerCase()), }; }, }); exports.checkMaliciousWebsite = (0, client_js_1.createTool)({ name: "checkMaliciousWebsite", description: "Check if a website has been associated with crypto scams or malicious activity", parameters: zod_1.z.object({ website: zod_1.z.string(), }), execute: async (_client, args) => { const blacklist = await getDomainBlacklist(); if (!blacklist) { throw new Error("Failed to fetch domain blacklist"); } const formattedWebsite = normalizeUrl(args.website); return { website: args.website, isMalicious: blacklist.includes(formattedWebsite), }; }, }); //# sourceMappingURL=tools.js.map