diff --git a/packages/backend/server/src/models/copilot-session.ts b/packages/backend/server/src/models/copilot-session.ts index 4c2e8db9de..1d9586768e 100644 --- a/packages/backend/server/src/models/copilot-session.ts +++ b/packages/backend/server/src/models/copilot-session.ts @@ -396,7 +396,10 @@ export class CopilotSessionModel extends BaseModel { } @Transactional() - async update(options: UpdateChatSessionOptions): Promise { + async update( + options: UpdateChatSessionOptions, + internalCall = false + ): Promise { const { userId, sessionId, docId, promptName, pinned, title } = options; const session = await this.getExists( sessionId, @@ -415,14 +418,16 @@ export class CopilotSessionModel extends BaseModel { } // not allow to update action session - if (session.prompt.action) { - throw new CopilotSessionInvalidInput( - `Cannot update action: ${session.id}` - ); - } else if (docId && session.parentSessionId) { - throw new CopilotSessionInvalidInput( - `Cannot update docId for forked session: ${session.id}` - ); + if (!internalCall) { + if (session.prompt.action) { + throw new CopilotSessionInvalidInput( + `Cannot update action: ${session.id}` + ); + } else if (docId && session.parentSessionId) { + throw new CopilotSessionInvalidInput( + `Cannot update docId for forked session: ${session.id}` + ); + } } if (promptName) { diff --git a/packages/backend/server/src/plugins/copilot/session.ts b/packages/backend/server/src/plugins/copilot/session.ts index 9c37007fcc..a2021516ee 100644 --- a/packages/backend/server/src/plugins/copilot/session.ts +++ b/packages/backend/server/src/plugins/copilot/session.ts @@ -636,11 +636,10 @@ export class ChatSessionService { }) .then(s => s.map(s => [s.userId, s.id])); for (const [userId, sessionId] of sessionIds) { - await this.models.copilotSession.update({ - userId, - sessionId, - docId: null, - }); + await this.models.copilotSession.update( + { userId, sessionId, docId: null }, + true + ); } }