UNPKG

@chainlink/mcp-server

Version:
72 lines 2.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.searchCreWorkflows = void 0; const logger_1 = require("../../../utils/logger"); const database_1 = require("../../../vectordb/database"); /** * Search for CRE workflows using vector database semantic search * * Searches for CRE workflow examples (TypeScript and Go) that have been * ingested into the vector database from external repositories. * * @param query - User query to search for * @returns Array of CRE workflow search results */ const searchCreWorkflows = async (query) => { const results = []; try { const vectorDb = new database_1.VectorDatabase(); await vectorDb.initialize(); const vectorResults = await vectorDb.searchSimilar(query, 20); for (const result of vectorResults) { const metadata = result.metadata || {}; const fileType = metadata.fileType || ""; const filePath = metadata.filePath || ""; const title = metadata.title || ""; if (fileType !== "ts" && fileType !== "go") { continue; } const isCreWorkflow = filePath.includes("minimal-cre-examples") || filePath.includes("cre-templates") || filePath.includes("cre-gcp-prediction-market-demo") || filePath.includes("main.ts") || filePath.includes("main.go"); if (!isCreWorkflow) { continue; } let category = "workflow"; let key = title; if (filePath.includes("minimal-cre-examples")) { const lang = filePath.includes("capabilities-ts") ? "ts" : "go"; category = `minimal-examples-${lang}`; const parts = filePath.split("/"); key = parts.find((p) => p.includes("-trigger") || p.includes("read")) || title; } else if (filePath.includes("cre-templates")) { category = "templates"; } else if (filePath.includes("cre-gcp-prediction-market-demo")) { category = "demo-dapps"; } const relevance = Math.round((result.score || 0) * 1000); results.push({ dataType: "cre-workflow", key, category, path: filePath, contentSnippet: result.chunkText || "", relevance, }); } logger_1.Logger.debug(`Found ${results.length} relevant CRE workflow results from vector DB`); } catch (error) { logger_1.Logger.log("warn", `Failed to search CRE workflows in vector DB: ${error}`); } return results .sort((a, b) => (b.relevance || 0) - (a.relevance || 0)) .slice(0, 30); }; exports.searchCreWorkflows = searchCreWorkflows; //# sourceMappingURL=search.js.map