Browse Source

fix(studio): use responseText instead of last session message for agent replies

The agent endpoint was returning `session.messages.at(-1)?.content` as
the response, but the last session message is the user's input — the
actual assistant reply is in `result.responseText`. This caused the
ChatBar to echo the user's own message back as the "assistant response".
Ma 7 months ago
parent
commit
0495b001bc
2 changed files with 2 additions and 1 deletions
  1. 1 0
      packages/studio/src/api/server.test.ts
  2. 1 1
      packages/studio/src/api/server.ts

+ 1 - 0
packages/studio/src/api/server.test.ts

@@ -627,6 +627,7 @@ describe("createStudioServer daemon lifecycle", () => {
   it("routes /api/agent through the shared interaction control layer", async () => {
   it("routes /api/agent through the shared interaction control layer", async () => {
     processProjectInteractionInputMock.mockResolvedValue({
     processProjectInteractionInputMock.mockResolvedValue({
       request: { intent: "write_next", bookId: "demo-book" },
       request: { intent: "write_next", bookId: "demo-book" },
+      responseText: "Completed write_next for demo-book.",
       session: {
       session: {
         sessionId: "session-1",
         sessionId: "session-1",
         projectRoot: root,
         projectRoot: root,

+ 1 - 1
packages/studio/src/api/server.ts

@@ -592,7 +592,7 @@ export function createStudioServer(initialConfig: ProjectConfig, root: string) {
         tools,
         tools,
         activeBookId,
         activeBookId,
       });
       });
-      const response = result.session.messages.at(-1)?.content ?? "Acknowledged.";
+      const response = result.responseText ?? "Acknowledged.";
 
 
       broadcast("agent:complete", { instruction, activeBookId, response });
       broadcast("agent:complete", { instruction, activeBookId, response });
       return c.json({ response, session: result.session, request: result.request });
       return c.json({ response, session: result.session, request: result.request });