/**
 * Extract JSON from text that may contain prose, markdown code blocks, or raw JSON.
 * Pure function — same input = same output, no side effects.
 */
export const extractJsonFromText = (text: string): unknown => {
	try {
		return JSON.parse(text);
	} catch {
		const codeBlockMatch = text.match(/```(?:json)?\s*([\s\S]*?)```/);
		if (codeBlockMatch) {
			return JSON.parse(codeBlockMatch[1].trim());
		}
		const arrayMatch = text.match(/\[[\s\S]*\]/);
		if (arrayMatch) {
			return JSON.parse(arrayMatch[0]);
		}
		throw new Error("No JSON found in response");
	}
};
