@chainlink/mcp-server
Version:
Prototype MCP Server for CLL
72 lines • 2.94 kB
JavaScript
;
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