src/normalization/jsonExtraction.ts
export function extractJsonObjectFromText(rawText) { const raw = String(rawText || "").trim(); if (!raw) return null;
const attempts = [
raw,
raw.match(/(?:json)?\s*([\s\S]*?)/i)?.[1],
(() => {
const start = raw.indexOf("{");
const end = raw.lastIndexOf("}");
return start >= 0 && end > start ? raw.slice(start, end + 1) : "";
})()
]
.map((item) => String(item || "").trim())
.filter(Boolean);
for (const candidate of attempts) { try { const parsed = JSON.parse(candidate); if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) { return parsed; } } catch { // try next candidate } }
return null; }
