



























@@ -45,6 +45,40 @@ function assistantToolCall(
4545}
46464747describe("transformTransportMessages synthetic tool-result policy", () => {
48+it("normalizes malformed assistant content before transport conversion", () => {
49+const objectContentMessages = [
50+{
51+ ...assistantToolCall("call_object"),
52+stopReason: "stop",
53+content: { type: "text", text: "legacy object" },
54+},
55+{ role: "user", content: "continue", timestamp: Date.now() },
56+] as unknown as Context["messages"];
57+const objectResult = transformTransportMessages(
58+objectContentMessages,
59+makeModel("openai-responses", "openai", "gpt-5.4"),
60+);
61+expect(objectResult[0]).toMatchObject({
62+role: "assistant",
63+content: [{ type: "text", text: "legacy object" }],
64+});
65+66+const nullContentMessages = [
67+{
68+ ...assistantToolCall("call_null"),
69+stopReason: "stop",
70+content: null,
71+},
72+{ role: "user", content: "continue", timestamp: Date.now() },
73+] as unknown as Context["messages"];
74+const nullResult = transformTransportMessages(
75+nullContentMessages,
76+makeModel("openai-responses", "openai", "gpt-5.4"),
77+);
78+expect(nullResult[0]).toMatchObject({ role: "assistant", content: [] });
79+expect(nullResult[1]).toMatchObject({ role: "user" });
80+});
81+4882it("synthesizes Codex-style aborted tool results for OpenAI Responses transports", () => {
4983const messages: Context["messages"] = [
5084assistantToolCall("call_openai_1"),
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。