with open("App.tsx", "r") as f: content = f.read() modal_old = """ setTemplateModalOpen(false)} note={selectedNoteForTemplate} hfProfileData={hfProfiles[currentAgent.id]} onSubmit={(text) => { setInputText(text); setActiveTab('chat'); // Close overlays on mobile if (window.innerWidth < 1024) { setTemplatesOpen(false); setSidebarOpen(false); } }} onStartNewChat={handleStartNewChatFromTemplate} />""" modal_new = """ { setTemplateModalOpen(false); if (activeWorkflow && activeWorkflow.stepIndex > 0) { if (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} />""" content = content.replace(modal_old, modal_new) with open("App.tsx", "w") as f: f.write(content)