diff --git a/src/sessions/user-turn-transcript.test.ts b/src/sessions/user-turn-transcript.test.ts index 9354e6d302f..fee5ca45728 100644 --- a/src/sessions/user-turn-transcript.test.ts +++ b/src/sessions/user-turn-transcript.test.ts @@ -83,6 +83,19 @@ describe("user turn transcript persistence", () => { ]); }); + it("does not reuse singular media type for later media paths", () => { + expect( + buildPersistedUserTurnMediaInputsFromFields({ + MediaPath: "/tmp/a.png", + MediaPaths: ["/tmp/a.png", "/tmp/report.pdf"], + MediaType: "image/png", + }), + ).toEqual([ + { path: "/tmp/a.png", contentType: "image/png" }, + { path: "/tmp/report.pdf", contentType: "application/pdf" }, + ]); + }); + it("resolves staged relative media paths against the media workspace", () => { const workspaceDir = createTempDir("openclaw-user-turn-media-"); diff --git a/src/sessions/user-turn-transcript.ts b/src/sessions/user-turn-transcript.ts index 705281b7a96..d69b7d2da64 100644 --- a/src/sessions/user-turn-transcript.ts +++ b/src/sessions/user-turn-transcript.ts @@ -250,7 +250,7 @@ export function buildPersistedUserTurnMediaInputsFromFields( ...(mediaPath ? { path: mediaPath } : {}), ...(url ? { url } : {}), contentType: resolveTranscriptMediaType({ - explicitType: types[index] ?? singleType, + explicitType: types[index] ?? (index === 0 ? singleType : undefined), mediaPath, mediaUrl: url, }),