Skip to content

Commit d0b3119

Browse files
Cover non-Error mapper failures in onError reporting
Co-authored-by: Eric Allam <eric@trigger.dev>
1 parent 6100c6e commit d0b3119

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

packages/ai/src/chatTransport.test.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -798,6 +798,43 @@ describe("TriggerChatTransport", function () {
798798
expect(errors[0]?.error.message).toBe("mapper failed");
799799
});
800800

801+
it("normalizes non-Error mapper failures before reporting onError", async function () {
802+
const errors: TriggerChatTransportError[] = [];
803+
804+
const transport = new TriggerChatTransport<
805+
UIMessage,
806+
{ prompt: string }
807+
>({
808+
task: "chat-task",
809+
stream: "chat-stream",
810+
accessToken: "pk_trigger",
811+
payloadMapper: async function payloadMapper() {
812+
throw "string mapper failure";
813+
},
814+
onError: function onError(error) {
815+
errors.push(error);
816+
},
817+
});
818+
819+
await expect(
820+
transport.sendMessages({
821+
trigger: "submit-message",
822+
chatId: "chat-mapper-string-failure",
823+
messageId: undefined,
824+
messages: [],
825+
abortSignal: undefined,
826+
})
827+
).rejects.toBe("string mapper failure");
828+
829+
expect(errors).toHaveLength(1);
830+
expect(errors[0]).toMatchObject({
831+
phase: "payloadMapper",
832+
chatId: "chat-mapper-string-failure",
833+
runId: undefined,
834+
});
835+
expect(errors[0]?.error.message).toBe("string mapper failure");
836+
});
837+
801838
it("surfaces trigger options resolver errors and does not trigger runs", async function () {
802839
let triggerCalls = 0;
803840
const errors: TriggerChatTransportError[] = [];

0 commit comments

Comments
 (0)