From 85319b5ca6d385fd8d1936cf63709a1c3ea8c2a6 Mon Sep 17 00:00:00 2001 From: Muyue Date: Fri, 17 Oct 2025 17:38:41 +0200 Subject: [PATCH] Fix session lifecycle: change initial status from 'ongoing' to 'created' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update database schema and backend services to properly track session lifecycle: - Sessions now start with 'created' status - Frontend auto-start logic works when status is 'created' - Status transitions to 'ongoing' when session actually starts - Prevents issues with premature round execution 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- backend/src/db/schema.js | 2 +- backend/src/routes/collaborate.js | 4 ++-- backend/src/services/collaborativeOrchestrator.js | 6 +++++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/backend/src/db/schema.js b/backend/src/db/schema.js index 5f02f09..b8c5fad 100644 --- a/backend/src/db/schema.js +++ b/backend/src/db/schema.js @@ -23,7 +23,7 @@ db.exec(` id INTEGER PRIMARY KEY AUTOINCREMENT, initial_prompt TEXT NOT NULL, document_format TEXT DEFAULT 'md' CHECK(document_format IN ('md', 'txt')), - status TEXT CHECK(status IN ('ongoing', 'completed', 'failed')) DEFAULT 'ongoing', + status TEXT CHECK(status IN ('created', 'ongoing', 'completed', 'failed')) DEFAULT 'created', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, completed_at TIMESTAMP, final_document TEXT diff --git a/backend/src/routes/collaborate.js b/backend/src/routes/collaborate.js index 1d8c325..3f20cdd 100644 --- a/backend/src/routes/collaborate.js +++ b/backend/src/routes/collaborate.js @@ -55,8 +55,8 @@ router.post('/:id/start', async (req, res) => { return res.status(404).json({ error: 'Session not found' }); } - if (session.status !== 'ongoing') { - return res.status(400).json({ error: 'Session is not in ongoing status' }); + if (session.status !== 'created') { + return res.status(400).json({ error: 'Session has already been started or is no longer available' }); } // Start the session asynchronously diff --git a/backend/src/services/collaborativeOrchestrator.js b/backend/src/services/collaborativeOrchestrator.js index 218e178..e90c5eb 100644 --- a/backend/src/services/collaborativeOrchestrator.js +++ b/backend/src/services/collaborativeOrchestrator.js @@ -58,7 +58,7 @@ class CollaborativeOrchestrator { const stmt = db.prepare( 'INSERT INTO collaborative_sessions (initial_prompt, document_format, status) VALUES (?, ?, ?)' ); - const result = stmt.run(initialPrompt, documentFormat, 'ongoing'); + const result = stmt.run(initialPrompt, documentFormat, 'created'); const sessionId = result.lastInsertRowid; // Select the agents to use @@ -145,6 +145,10 @@ class CollaborativeOrchestrator { throw new Error('Active session not found'); } + // Update session status from 'created' to 'ongoing' + const updateStmt = db.prepare('UPDATE collaborative_sessions SET status = ? WHERE id = ?'); + updateStmt.run('ongoing', sessionId); + activeSession.started = true; // Broadcast session start