import re with open("App.tsx", "r") as f: content = f.read() # I used "function()" instead of arrow functions for the callbacks in my patch which messed up the JSX parser. # Let's fix the syntax of the TemplateFillerModal old_modal = """ 0) { if (window.confirm('Cancel the rest of the workflow?')) { setActiveWorkflow(null); } } else { setActiveWorkflow(null); } }} onSubmit={async function(text: string) { if (activeWorkflow && activeWorkflow.stepIndex > 0 && activeWorkflow.sessionId) { const delay = activeWorkflow.workflow.steps[activeWorkflow.stepIndex].delayMinutes; queueWorkflowStep(text, activeWorkflow.sessionId, delay); const nextIndex = activeWorkflow.stepIndex + 1; if (nextIndex < activeWorkflow.workflow.steps.length) { setActiveWorkflow({ ...activeWorkflow, stepIndex: nextIndex }); const nextTemplate = notes.find(n => n.id === activeWorkflow.workflow.steps[nextIndex].templateId); if (nextTemplate) { setTimeout(() => handleUseTemplate(nextTemplate), 100); } } else { setActiveWorkflow(null); setTemplateModalOpen(false); } } else { await handleTemplateSubmitted(text, false); setTemplateModalOpen(false); if (!activeWorkflow) { setInputText(text); setActiveTab('chat'); if (window.innerWidth < 1024) { setTemplatesOpen(false); setSidebarOpen(false); } } } }} onStartNewChat={function(text: string) { if (activeWorkflow) { handleTemplateSubmitted(text, true); } handleStartNewChatFromTemplate(text); }} hfProfileData={hfProfiles[currentAgent.id]} workflowContext={activeWorkflow ? { stepIndex: activeWorkflow.stepIndex, totalSteps: activeWorkflow.workflow.steps.length, delayMinutes: activeWorkflow.workflow.steps[activeWorkflow.stepIndex].delayMinutes } : undefined} />""" new_modal = """ { setTemplateModalOpen(false); if (activeWorkflow && activeWorkflow.stepIndex > 0) { if (window.confirm('Cancel the rest of the workflow?')) { setActiveWorkflow(null); } } else { setActiveWorkflow(null); } }} onSubmit={async (text: string) => { if (activeWorkflow && activeWorkflow.stepIndex > 0 && activeWorkflow.sessionId) { const delay = activeWorkflow.workflow.steps[activeWorkflow.stepIndex].delayMinutes; queueWorkflowStep(text, activeWorkflow.sessionId, delay); const nextIndex = activeWorkflow.stepIndex + 1; if (nextIndex < activeWorkflow.workflow.steps.length) { setActiveWorkflow({ ...activeWorkflow, stepIndex: nextIndex }); const nextTemplate = notes.find(n => n.id === activeWorkflow.workflow.steps[nextIndex].templateId); if (nextTemplate) { setTimeout(() => handleUseTemplate(nextTemplate), 100); } } else { setActiveWorkflow(null); setTemplateModalOpen(false); } } else { await handleTemplateSubmitted(text, false); setTemplateModalOpen(false); if (!activeWorkflow) { setInputText(text); setActiveTab('chat'); if (window.innerWidth < 1024) { setTemplatesOpen(false); setSidebarOpen(false); } } } }} onStartNewChat={(text: string) => { if (activeWorkflow) { handleTemplateSubmitted(text, true); } handleStartNewChatFromTemplate(text); }} hfProfileData={hfProfiles[currentAgent.id]} workflowContext={activeWorkflow ? { stepIndex: activeWorkflow.stepIndex, totalSteps: activeWorkflow.workflow.steps.length, delayMinutes: activeWorkflow.workflow.steps[activeWorkflow.stepIndex].delayMinutes } : undefined} />""" content = content.replace(old_modal, new_modal) with open("App.tsx", "w") as f: f.write(content)