diff --git a/packages/coding-agent/src/core/agent-session.ts b/packages/coding-agent/src/core/agent-session.ts index fe450e5e..54dbb1a8 100644 --- a/packages/coding-agent/src/core/agent-session.ts +++ b/packages/coding-agent/src/core/agent-session.ts @@ -2370,7 +2370,7 @@ export class AgentSession { this._pendingNextTurnMessages = []; if (!selectedEntry.parentId) { - this.sessionManager.newSession(); + this.sessionManager.newSession({ parentSession: previousSessionFile }); } else { this.sessionManager.createBranchedSession(selectedEntry.parentId); } diff --git a/packages/coding-agent/src/core/session-manager.ts b/packages/coding-agent/src/core/session-manager.ts index b8c74c69..839a9e9b 100644 --- a/packages/coding-agent/src/core/session-manager.ts +++ b/packages/coding-agent/src/core/session-manager.ts @@ -1150,6 +1150,7 @@ export class SessionManager { * Returns the new session file path, or undefined if not persisting. */ createBranchedSession(leafId: string): string | undefined { + const previousSessionFile = this.sessionFile; const path = this.getBranch(leafId); if (path.length === 0) { throw new Error(`Entry ${leafId} not found`); @@ -1169,7 +1170,7 @@ export class SessionManager { id: newSessionId, timestamp, cwd: this.cwd, - parentSession: this.persist ? this.sessionFile : undefined, + parentSession: this.persist ? previousSessionFile : undefined, }; // Collect labels for entries in the path @@ -1206,6 +1207,8 @@ export class SessionManager { } this.fileEntries = [header, ...pathWithoutLabels, ...labelEntries]; this.sessionId = newSessionId; + this.sessionFile = newSessionFile; + this.flushed = true; this._buildIndex(); return newSessionFile; } diff --git a/packages/coding-agent/test/git-update.test.ts b/packages/coding-agent/test/git-update.test.ts index 72e6bdc9..c79521dc 100644 --- a/packages/coding-agent/test/git-update.test.ts +++ b/packages/coding-agent/test/git-update.test.ts @@ -88,15 +88,15 @@ describe("DefaultPackageManager git update", () => { // Create "remote" repository mkdirSync(remoteDir, { recursive: true }); git(["init"], remoteDir); - git(["config", "user.email", "test@test.com"], remoteDir); - git(["config", "user.name", "Test"], remoteDir); + git(["config", "--local", "user.email", "test@test.com"], remoteDir); + git(["config", "--local", "user.name", "Test"], remoteDir); createCommit(remoteDir, "extension.ts", "// v1", "Initial commit"); // Clone to installed directory (simulating what install() does) mkdirSync(join(agentDir, "git", "github.com", "test"), { recursive: true }); git(["clone", remoteDir, installedDir], tempDir); - git(["config", "user.email", "test@test.com"], installedDir); - git(["config", "user.name", "Test"], installedDir); + git(["config", "--local", "user.email", "test@test.com"], installedDir); + git(["config", "--local", "user.name", "Test"], installedDir); // Add to global packages so update() processes this source settingsManager.setPackages([gitSource]);