/** * Extrae una sección conocida de los artifacts Markdown de agentes. * Vive en lib para que observe y tui compartan el parser sin depender entre sí. */ export function extractMarkdownSection(markdown: string, heading: string): string | undefined { const escaped = heading.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); const knownHeadings = ["Access", "Prompt", "Structured Output", "Stdout", "Stderr"]; const nextHeadings = knownHeadings .filter((candidate) => candidate !== heading) .map((candidate) => candidate.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")); const nextPattern = nextHeadings.length ? `\\n## (?:${nextHeadings.join("|")})\\n` : "$^"; const match = new RegExp(`(?:^|\\n)## ${escaped}\\n\\n([\\s\\S]*?)(?=${nextPattern}|$)`).exec(markdown); return match?.[1]?.trim(); }