From 5e193b58c0a063fa5f09bd3708f293df58739a17 Mon Sep 17 00:00:00 2001 From: DarkSky <25152247+darkskygit@users.noreply.github.com> Date: Thu, 26 Jun 2025 17:04:25 +0800 Subject: [PATCH] fix(server): allow fork empty session in playground (#12940) ## Summary by CodeRabbit * **Bug Fixes** * Improved session forking by allowing sessions to be forked even when no messages are provided, preventing unnecessary errors. * Reduced unnecessary database operations by only updating messages when there are messages to update. --- .../server/src/models/copilot-session.ts | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/packages/backend/server/src/models/copilot-session.ts b/packages/backend/server/src/models/copilot-session.ts index e57f8a911..92c26613d 100644 --- a/packages/backend/server/src/models/copilot-session.ts +++ b/packages/backend/server/src/models/copilot-session.ts @@ -188,11 +188,6 @@ export class CopilotSessionModel extends BaseModel { @Transactional() async fork(options: ForkSessionOptions): Promise { - if (!options.messages?.length) { - throw new CopilotSessionInvalidInput( - 'Cannot fork session without messages' - ); - } if (options.pinned) { await this.unpin(options.workspaceId, options.userId); } @@ -203,12 +198,15 @@ export class CopilotSessionModel extends BaseModel { ...forkedState, messages: [], }); - // save message - await this.models.copilotSession.updateMessages({ - ...forkedState, - sessionId, - messages, - }); + if (options.messages.length) { + // save message + await this.models.copilotSession.updateMessages({ + ...forkedState, + sessionId, + messages, + }); + } + return sessionId; }