diff --git a/src/auto-reply/reply/commands-btw.test.ts b/src/auto-reply/reply/commands-btw.test.ts index ba971844120..f70c141a4f9 100644 --- a/src/auto-reply/reply/commands-btw.test.ts +++ b/src/auto-reply/reply/commands-btw.test.ts @@ -227,4 +227,34 @@ describe("handleBtwCommand", () => { reply: { text: "resolved fallback", btw: { question: "what changed?" } }, }); }); + + it("prefers the target session entry for side-question context", async () => { + const params = buildParams("/btw what changed?"); + params.sessionKey = "agent:worker-1:whatsapp:direct:12345"; + params.sessionEntry = { + sessionId: "wrapper-session", + updatedAt: Date.now(), + }; + params.sessionStore = { + "agent:worker-1:whatsapp:direct:12345": { + sessionId: "target-session", + updatedAt: Date.now(), + }, + }; + runBtwSideQuestionMock.mockResolvedValue({ text: "target context" }); + + const result = await handleBtwCommand(params, true); + + expect(runBtwSideQuestionMock).toHaveBeenCalledWith( + expect.objectContaining({ + sessionEntry: expect.objectContaining({ + sessionId: "target-session", + }), + }), + ); + expect(result).toEqual({ + shouldContinue: false, + reply: { text: "target context", btw: { question: "what changed?" } }, + }); + }); }); diff --git a/src/auto-reply/reply/commands-btw.ts b/src/auto-reply/reply/commands-btw.ts index c4b7b3e75fe..4b88470dbd4 100644 --- a/src/auto-reply/reply/commands-btw.ts +++ b/src/auto-reply/reply/commands-btw.ts @@ -26,7 +26,9 @@ export const handleBtwCommand: CommandHandler = async (params, allowTextCommands }; } - if (!params.sessionEntry?.sessionId) { + const targetSessionEntry = params.sessionStore?.[params.sessionKey] ?? params.sessionEntry; + + if (!targetSessionEntry?.sessionId) { return { shouldContinue: false, reply: { text: "⚠️ /btw requires an active session with existing context." }, @@ -56,7 +58,7 @@ export const handleBtwCommand: CommandHandler = async (params, allowTextCommands provider: params.provider, model: params.model, question, - sessionEntry: params.sessionEntry, + sessionEntry: targetSessionEntry, sessionStore: params.sessionStore, sessionKey: params.sessionKey, storePath: params.storePath,