UNPKG

vibe-coder-mcp

Version:

Production-ready MCP server with complete agent integration, multi-transport support, and comprehensive development automation tools for AI-assisted workflows.

97 lines (96 loc) 3.66 kB
import logger from '../../../logger.js'; export function preprocessRelevanceScoringResponse(rawResponse, jobId) { if (rawResponse.length < 10000) { logger.debug({ jobId, responseSize: rawResponse.length }, "Response too small for preprocessing, using normal processing"); return rawResponse; } logger.debug({ jobId, originalSize: rawResponse.length }, "Applying Context Curator relevance scoring preprocessing"); const jsonCandidates = findAllValidJsonObjects(rawResponse); if (jsonCandidates.length > 0) { const relevanceScoringObjects = jsonCandidates.filter(candidate => { try { const parsed = JSON.parse(candidate); return isRelevanceScoringResponse(parsed); } catch { return false; } }); if (relevanceScoringObjects.length > 0) { relevanceScoringObjects.sort((a, b) => b.length - a.length); logger.info({ jobId, originalSize: rawResponse.length, preprocessedSize: relevanceScoringObjects[0].length, candidatesFound: jsonCandidates.length, relevanceScoringCandidates: relevanceScoringObjects.length }, "Context Curator relevance scoring JSON preprocessing successful"); return relevanceScoringObjects[0]; } } logger.debug({ jobId, candidatesFound: jsonCandidates.length }, "No valid relevance scoring objects found, using original response"); return rawResponse; } function findAllValidJsonObjects(content) { const jsonCandidates = []; for (let i = 0; i < content.length; i++) { if (content[i] === '{') { let braceCount = 1; let inString = false; let escaped = false; for (let j = i + 1; j < content.length && braceCount > 0; j++) { const char = content[j]; if (escaped) { escaped = false; continue; } if (char === '\\' && inString) { escaped = true; continue; } if (char === '"' && !escaped) { inString = !inString; continue; } if (!inString) { if (char === '{') { braceCount++; } else if (char === '}') { braceCount--; if (braceCount === 0) { const candidate = content.substring(i, j + 1); try { JSON.parse(candidate); jsonCandidates.push(candidate); } catch { } break; } } } } } } jsonCandidates.sort((a, b) => b.length - a.length); return jsonCandidates; } function isRelevanceScoringResponse(parsed) { if (!parsed || typeof parsed !== 'object') { return false; } if (!Array.isArray(parsed.fileScores)) { return false; } if (parsed.fileScores.length === 0) { return false; } const firstFile = parsed.fileScores[0]; if (!firstFile || typeof firstFile !== 'object') { return false; } const hasRequiredFields = 'filePath' in firstFile && 'relevanceScore' in firstFile; return hasRequiredFields; }