Skip to content

Commit 4d88e23

Browse files
authored
Merge 6286e05 into f3df863
2 parents f3df863 + 6286e05 commit 4d88e23

2 files changed

Lines changed: 37 additions & 5 deletions

File tree

ui/src/ui/app-render.helpers.node.test.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -835,6 +835,42 @@ describe("createChatSession", () => {
835835
expect(loadChatHistoryMock).toHaveBeenCalledWith(state);
836836
});
837837

838+
it("keeps the selected session as parent when the session list is stale", async () => {
839+
const state = createChatSessionState({
840+
sessionsResult: {
841+
ts: 0,
842+
path: "",
843+
count: 1,
844+
defaults: { modelProvider: "openai", model: "gpt-5", contextTokens: null },
845+
sessions: [row({ key: "agent:ops:dashboard:older" })],
846+
},
847+
});
848+
createSessionAndRefreshMock.mockResolvedValue("agent:ops:dashboard:new-chat");
849+
refreshChatAvatarMock.mockResolvedValue(undefined);
850+
refreshSlashCommandsMock.mockResolvedValue(undefined);
851+
loadChatHistoryMock.mockResolvedValue(undefined);
852+
loadSessionsMock.mockResolvedValue(undefined);
853+
854+
await createChatSession(state);
855+
856+
expect(createSessionAndRefreshMock).toHaveBeenCalledWith(
857+
state,
858+
{
859+
agentId: "ops",
860+
parentSessionKey: "agent:ops:main",
861+
emitCommandHooks: true,
862+
},
863+
{
864+
activeMinutes: 120,
865+
limit: 50,
866+
includeGlobal: true,
867+
includeUnknown: true,
868+
showArchived: false,
869+
agentId: "ops",
870+
},
871+
);
872+
});
873+
838874
it("creates selected global sessions under the same agent used for refresh", async () => {
839875
const state = createChatSessionState({
840876
sessionKey: "global",

ui/src/ui/app-render.helpers.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -731,11 +731,7 @@ export async function createChatSession(
731731
state.lastError = null;
732732
state.chatError = null;
733733
const previousSessionKey = state.sessionKey;
734-
const parentSessionKey = state.sessionsResult?.sessions.some(
735-
(row) => row.key === previousSessionKey,
736-
)
737-
? previousSessionKey
738-
: undefined;
734+
const parentSessionKey = normalizeOptionalString(previousSessionKey);
739735
const nextSessionKey = await createSessionAndRefresh(
740736
state as unknown as Parameters<typeof createSessionAndRefresh>[0],
741737
{

0 commit comments

Comments
 (0)