with open("App.tsx", "r") as f: content = f.read() # Fix the hook definition issue by moving the interval into a functional form correctly import re # Let's replace the whole interval logic with something simpler since we just wrote it interval_regex = re.compile(r"// Timer interval to process HF Deployment Cues every 10 seconds.*?// --- Message Sending & Event Streaming ---", re.DOTALL) new_interval = """ // Timer interval to process HF Deployment Cues every 10 seconds useEffect(() => { const interval = setInterval(() => { const stored = localStorage.getItem('jules_hf_timer_queue'); if (!stored) return; let currentQueue = JSON.parse(stored); const now = Date.now(); let hasChanges = false; for (const sessionId of Object.keys(currentQueue)) { const queueData = currentQueue[sessionId]; if (queueData.templates && queueData.templates.length > 0 && now >= queueData.nextExecutionTime) { const templateToFire = queueData.templates[0]; const remainingTemplates = queueData.templates.slice(1); console.log(`[TimerQueue] Firing template for session ${sessionId}`); // Fire out of band so we don't block setTimeout(() => { _sendText(sessionId, templateToFire).catch(e => console.error("Timer send failed", e)); }, 0); if (remainingTemplates.length > 0) { currentQueue[sessionId] = { templates: remainingTemplates, nextExecutionTime: now + 30 * 60 * 1000 }; } else { delete currentQueue[sessionId]; } hasChanges = true; } } if (hasChanges) { setHfTimerQueue(currentQueue); localStorage.setItem('jules_hf_timer_queue', JSON.stringify(currentQueue)); } }, 10000); return () => clearInterval(interval); }, []); // --- Message Sending & Event Streaming ---""" content = interval_regex.sub(new_interval, content) # Include HFCueWizardModal imports_search = """import { TemplateFillerModal } from './components/TemplateFillerModal';""" imports_replace = """import { TemplateFillerModal } from './components/TemplateFillerModal'; import { HFCueWizardModal } from './components/HFCueWizardModal';""" content = content.replace(imports_search, imports_replace) with open("App.tsx", "w") as f: f.write(content)