const fs = require('fs'); let content = fs.readFileSync('App.tsx', 'utf8'); // There are extra lines left behind from the bad regex replace earlier // Let's replace EVERYTHING from the end of SettingsModal to the beginning of NewSessionModal. const startRegex = /]*\/>/s; const endRegex = / { setTemplateModalOpen(false); if (activeWorkflow && activeWorkflow.stepIndex > 0) { if (window.confirm('Cancel the rest of the workflow?')) { setActiveWorkflow(null); } } else { setActiveWorkflow(null); } }} onSubmit={async (text) => { 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) => { 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} /> `; const newContent = content.substring(0, startIndex) + replacement + content.substring(endIndex); fs.writeFileSync('App.tsx', newContent); console.log('Fixed completely.'); }