/** * Episteme Presentation Renderer * * Reads JSON data and renders Reveal.js slides */ (async function () { // Load presentation data const dataUrl = window.PRESENTATION_DATA_URL || '../generated/agile-agent-team.json'; let data; try { const response = await fetch(dataUrl); data = await response.json(); } catch (error) { console.error('Failed to load presentation data:', error); document.getElementById('slides').innerHTML = ` `; Reveal.initialize(); return; } const slidesContainer = document.getElementById('slides'); // Actor icon mapping (simple initials for now) function getActorInitials(actor) { return actor.label.split(' ').map(w => w[0]).join('').toUpperCase().slice(0, 2); } // Format JSON for display function formatData(data) { if (!data) return ''; return JSON.stringify(data, null, 2) .replace(/"([^"]+)":/g, '"$1":') .replace(/: "([^"]+)"/g, ': "$1"') .replace(/: (\d+\.?\d*)/g, ': $1') .replace(/: (true|false)/g, ': $1') .replace(/: (null)/g, ': $1'); } // Render slides function renderSlides(slides) { let sectionNumber = 0; for (const slide of slides) { const section = document.createElement('section'); switch (slide.type) { case 'title': section.classList.add('title-slide'); section.innerHTML = `
`; break; case 'section-title': sectionNumber++; section.innerHTML = ` `; break; case 'sequence': section.setAttribute('data-auto-animate', ''); section.innerHTML = renderSequenceSlide(slide, data.actors); break; } slidesContainer.appendChild(section); } } // Render sequence slide function renderSequenceSlide(slide, allActors) { const actors = slide.actors; const steps = slide.steps; // Actor columns const actorHtml = Object.values(actors).map(actor => `${formatData(step.data)}