summaryrefslogtreecommitdiffhomepage
path: root/patches/@ai-sdk%[email protected]
blob: 8776cab4830eb0ced1292c3560edd7e0f698cd60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
diff --git a/dist/index.mjs b/dist/index.mjs
--- a/dist/index.mjs
+++ b/dist/index.mjs
@@ -959,7 +959,7 @@
   model: z4.string().nullish(),
   object: z4.literal("response"),
   output: z4.array(outputItemSchema),
-  usage: xaiResponsesUsageSchema,
+  usage: xaiResponsesUsageSchema.nullish(),
   status: z4.string()
 });
 var xaiResponsesChunkSchema = z4.union([
\ No newline at end of file
@@ -1143,6 +1143,18 @@
   z4.object({
     type: z4.literal("response.completed"),
     response: xaiResponsesResponseSchema
+  }),
+  z4.object({
+    type: z4.literal("response.function_call_arguments.delta"),
+    item_id: z4.string(),
+    output_index: z4.number(),
+    delta: z4.string()
+  }),
+  z4.object({
+    type: z4.literal("response.function_call_arguments.done"),
+    item_id: z4.string(),
+    output_index: z4.number(),
+    arguments: z4.string()
   })
 ]);
 
\ No newline at end of file
@@ -1940,6 +1952,9 @@
               if (response2.status) {
                 finishReason = mapXaiResponsesFinishReason(response2.status);
               }
+              if (seenToolCalls.size > 0 && finishReason !== "tool-calls") {
+                finishReason = "tool-calls";
+              }
               return;
             }
             if (event.type === "response.output_item.added" || event.type === "response.output_item.done") {
\ No newline at end of file
@@ -2024,7 +2039,7 @@
                   }
                 }
               } else if (part.type === "function_call") {
-                if (!seenToolCalls.has(part.call_id)) {
+                if (event.type === "response.output_item.done" && !seenToolCalls.has(part.call_id)) {
                   seenToolCalls.add(part.call_id);
                   controller.enqueue({
                     type: "tool-input-start",
\ No newline at end of file
diff --git a/dist/index.js b/dist/index.js
--- a/dist/index.js
+++ b/dist/index.js
@@ -964,7 +964,7 @@
   model: import_v44.z.string().nullish(),
   object: import_v44.z.literal("response"),
   output: import_v44.z.array(outputItemSchema),
-  usage: xaiResponsesUsageSchema,
+  usage: xaiResponsesUsageSchema.nullish(),
   status: import_v44.z.string()
 });
 var xaiResponsesChunkSchema = import_v44.z.union([
\ No newline at end of file
@@ -1148,6 +1148,18 @@
   import_v44.z.object({
     type: import_v44.z.literal("response.completed"),
     response: xaiResponsesResponseSchema
+  }),
+  import_v44.z.object({
+    type: import_v44.z.literal("response.function_call_arguments.delta"),
+    item_id: import_v44.z.string(),
+    output_index: import_v44.z.number(),
+    delta: import_v44.z.string()
+  }),
+  import_v44.z.object({
+    type: import_v44.z.literal("response.function_call_arguments.done"),
+    item_id: import_v44.z.string(),
+    output_index: import_v44.z.number(),
+    arguments: import_v44.z.string()
   })
 ]);
 
\ No newline at end of file
@@ -1935,6 +1947,9 @@
               if (response2.status) {
                 finishReason = mapXaiResponsesFinishReason(response2.status);
               }
+              if (seenToolCalls.size > 0 && finishReason !== "tool-calls") {
+                finishReason = "tool-calls";
+              }
               return;
             }
             if (event.type === "response.output_item.added" || event.type === "response.output_item.done") {
\ No newline at end of file
@@ -2019,7 +2034,7 @@
                   }
                 }
               } else if (part.type === "function_call") {
-                if (!seenToolCalls.has(part.call_id)) {
+                if (event.type === "response.output_item.done" && !seenToolCalls.has(part.call_id)) {
                   seenToolCalls.add(part.call_id);
                   controller.enqueue({
                     type: "tool-input-start",
\ No newline at end of file