From dce24ac9ff98d4d4df7a7a6129468932f2c50508 Mon Sep 17 00:00:00 2001 From: Sviatoslav Abakumov Date: Wed, 20 May 2026 15:54:11 +0400 Subject: [PATCH] fix(coding-agent): keep fork session id aligned --- packages/coding-agent/src/core/agent-session-runtime.ts | 5 ++--- .../coding-agent/test/suite/agent-session-runtime.test.ts | 4 +++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/coding-agent/src/core/agent-session-runtime.ts b/packages/coding-agent/src/core/agent-session-runtime.ts index a89fef835..b4756d4cf 100644 --- a/packages/coding-agent/src/core/agent-session-runtime.ts +++ b/packages/coding-agent/src/core/agent-session-runtime.ts @@ -292,12 +292,11 @@ export class AgentSessionRuntime { return { cancelled: false, selectedText }; } - const sourceManager = SessionManager.open(currentSessionFile, sessionDir); - const forkedSessionPath = sourceManager.createBranchedSession(targetLeafId); + const sessionManager = SessionManager.open(currentSessionFile, sessionDir); + const forkedSessionPath = sessionManager.createBranchedSession(targetLeafId); if (!forkedSessionPath) { throw new Error("Failed to create forked session"); } - const sessionManager = SessionManager.open(forkedSessionPath, sessionDir); await this.teardownCurrent("fork", sessionManager.getSessionFile()); this.apply( await this.createRuntime({ diff --git a/packages/coding-agent/test/suite/agent-session-runtime.test.ts b/packages/coding-agent/test/suite/agent-session-runtime.test.ts index fb8b21679..a4d6e04de 100644 --- a/packages/coding-agent/test/suite/agent-session-runtime.test.ts +++ b/packages/coding-agent/test/suite/agent-session-runtime.test.ts @@ -1,6 +1,6 @@ import { existsSync, mkdirSync, realpathSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; -import { join } from "node:path"; +import { join, parse } from "node:path"; import { fauxAssistantMessage, registerFauxProvider } from "@earendil-works/pi-ai"; import { afterEach, describe, expect, it } from "vitest"; import { @@ -274,6 +274,8 @@ describe("AgentSessionRuntime characterization", () => { { type: "session_shutdown", reason: "fork", targetSessionFile: runtime.session.sessionFile }, { type: "session_start", reason: "fork", previousSessionFile }, ]); + const sessionFileName = parse(runtime.session.sessionFile!).name; + expect(sessionFileName.endsWith(`_${runtime.session.sessionId}`)).toBe(true); events.length = 0; cancelNextFork = true;