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
JavaScript
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;
}