@mastra/server 0.0.0-experimental-agent-builder-20250815195917 → 0.0.0-export-agent-memory-from-local-studio-20251112153946

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/CHANGELOG.md +4878 -0
  2. package/README.md +1 -6
  3. package/dist/chunk-2IS5WICF.js +23036 -0
  4. package/dist/chunk-2IS5WICF.js.map +1 -0
  5. package/dist/chunk-2PLXW4ZX.cjs +2777 -0
  6. package/dist/chunk-2PLXW4ZX.cjs.map +1 -0
  7. package/dist/chunk-2YZH5PH6.cjs +200 -0
  8. package/dist/chunk-2YZH5PH6.cjs.map +1 -0
  9. package/dist/chunk-3AMNUUZF.js +124 -0
  10. package/dist/chunk-3AMNUUZF.js.map +1 -0
  11. package/dist/chunk-3F52QCI4.js +192 -0
  12. package/dist/chunk-3F52QCI4.js.map +1 -0
  13. package/dist/{chunk-ZKJZQN24.js → chunk-4JF5WXPL.js} +158 -227
  14. package/dist/chunk-4JF5WXPL.js.map +1 -0
  15. package/dist/{chunk-7NADHFD2.cjs → chunk-64ITUOXI.cjs} +2 -2
  16. package/dist/chunk-64ITUOXI.cjs.map +1 -0
  17. package/dist/{chunk-MMROOK5J.js → chunk-6QWQZI4Q.js} +2 -2
  18. package/dist/{chunk-7NADHFD2.cjs.map → chunk-6QWQZI4Q.js.map} +1 -1
  19. package/dist/{chunk-4MQU6AJN.js → chunk-73PAWDM5.js} +14 -14
  20. package/dist/chunk-73PAWDM5.js.map +1 -0
  21. package/dist/chunk-A24TSVEZ.cjs +130 -0
  22. package/dist/chunk-A24TSVEZ.cjs.map +1 -0
  23. package/dist/chunk-A2NPD5N6.cjs +517 -0
  24. package/dist/chunk-A2NPD5N6.cjs.map +1 -0
  25. package/dist/{chunk-HWHKM67I.js → chunk-B3Z6J745.js} +27 -19
  26. package/dist/chunk-B3Z6J745.js.map +1 -0
  27. package/dist/chunk-BTWIR2B7.cjs +28 -0
  28. package/dist/chunk-BTWIR2B7.cjs.map +1 -0
  29. package/dist/chunk-D7T74TVR.js +129 -0
  30. package/dist/chunk-D7T74TVR.js.map +1 -0
  31. package/dist/chunk-EHACNWDL.cjs +681 -0
  32. package/dist/chunk-EHACNWDL.cjs.map +1 -0
  33. package/dist/{chunk-JNWFG7JP.js → chunk-FPBYKMIS.js} +15 -14
  34. package/dist/chunk-FPBYKMIS.js.map +1 -0
  35. package/dist/chunk-GLAZTMX3.cjs +128 -0
  36. package/dist/chunk-GLAZTMX3.cjs.map +1 -0
  37. package/dist/chunk-GU4EWMZB.cjs +769 -0
  38. package/dist/chunk-GU4EWMZB.cjs.map +1 -0
  39. package/dist/chunk-ID6JYDNL.cjs +23075 -0
  40. package/dist/chunk-ID6JYDNL.cjs.map +1 -0
  41. package/dist/chunk-KF3RI45U.cjs +172 -0
  42. package/dist/chunk-KF3RI45U.cjs.map +1 -0
  43. package/dist/{chunk-KXNFZXLG.cjs → chunk-KJIDZQRA.cjs} +16 -15
  44. package/dist/chunk-KJIDZQRA.cjs.map +1 -0
  45. package/dist/{chunk-G7NVCO5M.js → chunk-KWH5QBXP.js} +5 -5
  46. package/dist/{chunk-G7NVCO5M.js.map → chunk-KWH5QBXP.js.map} +1 -1
  47. package/dist/chunk-LF2ZLOFP.js +767 -0
  48. package/dist/chunk-LF2ZLOFP.js.map +1 -0
  49. package/dist/chunk-LPM6BBAX.cjs +1043 -0
  50. package/dist/chunk-LPM6BBAX.cjs.map +1 -0
  51. package/dist/chunk-ND5OKOMT.js +165 -0
  52. package/dist/chunk-ND5OKOMT.js.map +1 -0
  53. package/dist/chunk-O7I5CWRX.cjs +44 -0
  54. package/dist/{chunk-Q7SFCCGT.cjs.map → chunk-O7I5CWRX.cjs.map} +1 -1
  55. package/dist/{chunk-BED2O446.cjs → chunk-PPMIB3FQ.cjs} +22 -22
  56. package/dist/chunk-PPMIB3FQ.cjs.map +1 -0
  57. package/dist/chunk-PR4QN5HX.js +39 -0
  58. package/dist/{chunk-PZ5AY32C.js.map → chunk-PR4QN5HX.js.map} +1 -1
  59. package/dist/chunk-QU6N55W6.cjs +256 -0
  60. package/dist/chunk-QU6N55W6.cjs.map +1 -0
  61. package/dist/chunk-RQK4FQUD.js +1012 -0
  62. package/dist/chunk-RQK4FQUD.js.map +1 -0
  63. package/dist/{chunk-NCS2OXX6.cjs → chunk-S54HNARD.cjs} +20 -20
  64. package/dist/{chunk-NCS2OXX6.cjs.map → chunk-S54HNARD.cjs.map} +1 -1
  65. package/dist/chunk-SHWNNZBL.js +254 -0
  66. package/dist/chunk-SHWNNZBL.js.map +1 -0
  67. package/dist/{chunk-OW4FX5TS.js → chunk-SZIFSF4T.js} +11 -4
  68. package/dist/chunk-SZIFSF4T.js.map +1 -0
  69. package/dist/chunk-TOCYBDP2.js +46 -0
  70. package/dist/chunk-TOCYBDP2.js.map +1 -0
  71. package/dist/{chunk-CY4TP3FK.js → chunk-UXGQZUYZ.js} +3 -3
  72. package/dist/{chunk-CY4TP3FK.js.map → chunk-UXGQZUYZ.js.map} +1 -1
  73. package/dist/{chunk-RE4RPXT2.cjs → chunk-V5WWQN7P.cjs} +4 -4
  74. package/dist/{chunk-RE4RPXT2.cjs.map → chunk-V5WWQN7P.cjs.map} +1 -1
  75. package/dist/chunk-W2KMU354.cjs +133 -0
  76. package/dist/chunk-W2KMU354.cjs.map +1 -0
  77. package/dist/chunk-X3MICMI2.cjs +620 -0
  78. package/dist/chunk-X3MICMI2.cjs.map +1 -0
  79. package/dist/chunk-X6C7BUWN.cjs +48 -0
  80. package/dist/chunk-X6C7BUWN.cjs.map +1 -0
  81. package/dist/chunk-Z2O5YVHY.js +661 -0
  82. package/dist/chunk-Z2O5YVHY.js.map +1 -0
  83. package/dist/{chunk-BUOJL3MN.js → chunk-ZJ6KEY6H.js} +264 -193
  84. package/dist/chunk-ZJ6KEY6H.js.map +1 -0
  85. package/dist/chunk-ZULZ2752.js +2774 -0
  86. package/dist/chunk-ZULZ2752.js.map +1 -0
  87. package/dist/dist-4MVGNSRL.cjs +1150 -0
  88. package/dist/dist-4MVGNSRL.cjs.map +1 -0
  89. package/dist/dist-FZYCV3VB.cjs +940 -0
  90. package/dist/dist-FZYCV3VB.cjs.map +1 -0
  91. package/dist/dist-G2BYZJOC.cjs +928 -0
  92. package/dist/dist-G2BYZJOC.cjs.map +1 -0
  93. package/dist/dist-P4MXBQ3U.cjs +16 -0
  94. package/dist/dist-P4MXBQ3U.cjs.map +1 -0
  95. package/dist/dist-PQZUVLPC.js +937 -0
  96. package/dist/dist-PQZUVLPC.js.map +1 -0
  97. package/dist/dist-R7WYX6LC.js +925 -0
  98. package/dist/dist-R7WYX6LC.js.map +1 -0
  99. package/dist/dist-RFMYFILX.cjs +764 -0
  100. package/dist/dist-RFMYFILX.cjs.map +1 -0
  101. package/dist/dist-X7XR3M3Z.js +1147 -0
  102. package/dist/dist-X7XR3M3Z.js.map +1 -0
  103. package/dist/dist-XVBSOGFK.js +761 -0
  104. package/dist/dist-XVBSOGFK.js.map +1 -0
  105. package/dist/dist-YREX2TJT.js +3 -0
  106. package/dist/dist-YREX2TJT.js.map +1 -0
  107. package/dist/index.cjs +4 -0
  108. package/dist/index.cjs.map +1 -1
  109. package/dist/index.js +3 -0
  110. package/dist/index.js.map +1 -1
  111. package/dist/server/handlers/a2a.cjs +7 -7
  112. package/dist/server/handlers/a2a.d.ts +10 -10
  113. package/dist/server/handlers/a2a.d.ts.map +1 -1
  114. package/dist/server/handlers/a2a.js +1 -1
  115. package/dist/server/handlers/agent-builder.cjs +80 -0
  116. package/dist/server/handlers/agent-builder.cjs.map +1 -0
  117. package/dist/server/handlers/agent-builder.d.ts +85 -0
  118. package/dist/server/handlers/agent-builder.d.ts.map +1 -0
  119. package/dist/server/handlers/agent-builder.js +3 -0
  120. package/dist/server/handlers/agent-builder.js.map +1 -0
  121. package/dist/server/handlers/agents.cjs +51 -15
  122. package/dist/server/handlers/agents.d.ts +165 -61
  123. package/dist/server/handlers/agents.d.ts.map +1 -1
  124. package/dist/server/handlers/agents.js +1 -1
  125. package/dist/server/handlers/error.cjs +2 -2
  126. package/dist/server/handlers/error.js +1 -1
  127. package/dist/server/handlers/logs.cjs +7 -7
  128. package/dist/server/handlers/logs.d.ts +3 -3
  129. package/dist/server/handlers/logs.d.ts.map +1 -1
  130. package/dist/server/handlers/logs.js +1 -1
  131. package/dist/server/handlers/memory.cjs +17 -25
  132. package/dist/server/handlers/memory.d.ts +28 -35
  133. package/dist/server/handlers/memory.d.ts.map +1 -1
  134. package/dist/server/handlers/memory.js +1 -1
  135. package/dist/server/handlers/observability.cjs +24 -0
  136. package/dist/server/handlers/observability.cjs.map +1 -0
  137. package/dist/server/handlers/observability.d.ts +49 -0
  138. package/dist/server/handlers/observability.d.ts.map +1 -0
  139. package/dist/server/handlers/observability.js +3 -0
  140. package/dist/server/handlers/observability.js.map +1 -0
  141. package/dist/server/handlers/scores.cjs +11 -11
  142. package/dist/server/handlers/scores.d.ts +121 -18
  143. package/dist/server/handlers/scores.d.ts.map +1 -1
  144. package/dist/server/handlers/scores.js +1 -1
  145. package/dist/server/handlers/tools.cjs +10 -6
  146. package/dist/server/handlers/tools.d.ts +10 -6
  147. package/dist/server/handlers/tools.d.ts.map +1 -1
  148. package/dist/server/handlers/tools.js +1 -1
  149. package/dist/server/handlers/utils.cjs +6 -2
  150. package/dist/server/handlers/utils.d.ts +6 -0
  151. package/dist/server/handlers/utils.d.ts.map +1 -1
  152. package/dist/server/handlers/utils.js +1 -1
  153. package/dist/server/handlers/vector.cjs +7 -7
  154. package/dist/server/handlers/vector.js +1 -1
  155. package/dist/server/handlers/voice.cjs +5 -5
  156. package/dist/server/handlers/voice.d.ts +6 -4
  157. package/dist/server/handlers/voice.d.ts.map +1 -1
  158. package/dist/server/handlers/voice.js +1 -1
  159. package/dist/server/handlers/workflows.cjs +35 -23
  160. package/dist/server/handlers/workflows.d.ts +50 -50
  161. package/dist/server/handlers/workflows.d.ts.map +1 -1
  162. package/dist/server/handlers/workflows.js +1 -1
  163. package/dist/server/handlers.cjs +31 -36
  164. package/dist/server/handlers.d.ts +2 -3
  165. package/dist/server/handlers.d.ts.map +1 -1
  166. package/dist/server/handlers.js +11 -12
  167. package/dist/server/http-exception.d.ts +0 -5
  168. package/dist/server/http-exception.d.ts.map +1 -1
  169. package/dist/server/utils.d.ts +45 -0
  170. package/dist/server/utils.d.ts.map +1 -0
  171. package/dist/token-375W3LEI.cjs +64 -0
  172. package/dist/token-375W3LEI.cjs.map +1 -0
  173. package/dist/token-C3IMNCC4.js +62 -0
  174. package/dist/token-C3IMNCC4.js.map +1 -0
  175. package/dist/token-util-CV3RRG6K.cjs +9 -0
  176. package/dist/token-util-CV3RRG6K.cjs.map +1 -0
  177. package/dist/token-util-E5QO2RCL.js +7 -0
  178. package/dist/token-util-E5QO2RCL.js.map +1 -0
  179. package/package.json +27 -13
  180. package/dist/chunk-4CEZIJWJ.cjs +0 -150
  181. package/dist/chunk-4CEZIJWJ.cjs.map +0 -1
  182. package/dist/chunk-4MQU6AJN.js.map +0 -1
  183. package/dist/chunk-4QSNRCOT.cjs +0 -20
  184. package/dist/chunk-4QSNRCOT.cjs.map +0 -1
  185. package/dist/chunk-4US5W7PH.cjs +0 -120
  186. package/dist/chunk-4US5W7PH.cjs.map +0 -1
  187. package/dist/chunk-5AKR33BI.js +0 -333
  188. package/dist/chunk-5AKR33BI.js.map +0 -1
  189. package/dist/chunk-7FHF55WA.js +0 -2041
  190. package/dist/chunk-7FHF55WA.js.map +0 -1
  191. package/dist/chunk-BED2O446.cjs.map +0 -1
  192. package/dist/chunk-BUOJL3MN.js.map +0 -1
  193. package/dist/chunk-EBNIUZRY.cjs +0 -344
  194. package/dist/chunk-EBNIUZRY.cjs.map +0 -1
  195. package/dist/chunk-GX25CWC7.cjs +0 -588
  196. package/dist/chunk-GX25CWC7.cjs.map +0 -1
  197. package/dist/chunk-HWHKM67I.js.map +0 -1
  198. package/dist/chunk-ILCWPBYQ.cjs +0 -147
  199. package/dist/chunk-ILCWPBYQ.cjs.map +0 -1
  200. package/dist/chunk-JGVY3KWV.cjs +0 -334
  201. package/dist/chunk-JGVY3KWV.cjs.map +0 -1
  202. package/dist/chunk-JNWFG7JP.js.map +0 -1
  203. package/dist/chunk-KXNFZXLG.cjs.map +0 -1
  204. package/dist/chunk-L7YG7WQH.js +0 -151
  205. package/dist/chunk-L7YG7WQH.js.map +0 -1
  206. package/dist/chunk-LRUH33B4.cjs +0 -2044
  207. package/dist/chunk-LRUH33B4.cjs.map +0 -1
  208. package/dist/chunk-MMROOK5J.js.map +0 -1
  209. package/dist/chunk-O4I563YW.cjs +0 -130
  210. package/dist/chunk-O4I563YW.cjs.map +0 -1
  211. package/dist/chunk-OW4FX5TS.js.map +0 -1
  212. package/dist/chunk-PZ5AY32C.js +0 -9
  213. package/dist/chunk-Q7SFCCGT.cjs +0 -11
  214. package/dist/chunk-RQQNZZAI.cjs +0 -159
  215. package/dist/chunk-RQQNZZAI.cjs.map +0 -1
  216. package/dist/chunk-S37KCGOR.cjs +0 -546
  217. package/dist/chunk-S37KCGOR.cjs.map +0 -1
  218. package/dist/chunk-SQ7KKIH3.js +0 -143
  219. package/dist/chunk-SQ7KKIH3.js.map +0 -1
  220. package/dist/chunk-UVOSITKU.js +0 -322
  221. package/dist/chunk-UVOSITKU.js.map +0 -1
  222. package/dist/chunk-Y3J45CVZ.js +0 -144
  223. package/dist/chunk-Y3J45CVZ.js.map +0 -1
  224. package/dist/chunk-YS66MFDY.js +0 -124
  225. package/dist/chunk-YS66MFDY.js.map +0 -1
  226. package/dist/chunk-ZKJZQN24.js.map +0 -1
  227. package/dist/server/handlers/legacyWorkflows.cjs +0 -48
  228. package/dist/server/handlers/legacyWorkflows.cjs.map +0 -1
  229. package/dist/server/handlers/legacyWorkflows.d.ts +0 -59
  230. package/dist/server/handlers/legacyWorkflows.d.ts.map +0 -1
  231. package/dist/server/handlers/legacyWorkflows.js +0 -3
  232. package/dist/server/handlers/legacyWorkflows.js.map +0 -1
  233. package/dist/server/handlers/network.cjs +0 -24
  234. package/dist/server/handlers/network.cjs.map +0 -1
  235. package/dist/server/handlers/network.d.ts +0 -50
  236. package/dist/server/handlers/network.d.ts.map +0 -1
  237. package/dist/server/handlers/network.js +0 -3
  238. package/dist/server/handlers/network.js.map +0 -1
  239. package/dist/server/handlers/telemetry.cjs +0 -16
  240. package/dist/server/handlers/telemetry.cjs.map +0 -1
  241. package/dist/server/handlers/telemetry.d.ts +0 -32
  242. package/dist/server/handlers/telemetry.d.ts.map +0 -1
  243. package/dist/server/handlers/telemetry.js +0 -3
  244. package/dist/server/handlers/telemetry.js.map +0 -1
  245. package/dist/server/handlers/vNextNetwork.cjs +0 -220
  246. package/dist/server/handlers/vNextNetwork.cjs.map +0 -1
  247. package/dist/server/handlers/vNextNetwork.d.ts +0 -179
  248. package/dist/server/handlers/vNextNetwork.d.ts.map +0 -1
  249. package/dist/server/handlers/vNextNetwork.js +0 -213
  250. package/dist/server/handlers/vNextNetwork.js.map +0 -1
@@ -0,0 +1,928 @@
1
+ 'use strict';
2
+
3
+ var chunkLPM6BBAX_cjs = require('./chunk-LPM6BBAX.cjs');
4
+ var zod = require('zod');
5
+
6
+ function getOpenAIMetadata(message) {
7
+ var _a, _b;
8
+ return (_b = (_a = message == null ? void 0 : message.providerMetadata) == null ? void 0 : _a.openaiCompatible) != null ? _b : {};
9
+ }
10
+ function convertToOpenAICompatibleChatMessages(prompt) {
11
+ const messages = [];
12
+ for (const { role, content, ...message } of prompt) {
13
+ const metadata = getOpenAIMetadata({ ...message });
14
+ switch (role) {
15
+ case "system": {
16
+ messages.push({ role: "system", content, ...metadata });
17
+ break;
18
+ }
19
+ case "user": {
20
+ if (content.length === 1 && content[0].type === "text") {
21
+ messages.push({
22
+ role: "user",
23
+ content: content[0].text,
24
+ ...getOpenAIMetadata(content[0])
25
+ });
26
+ break;
27
+ }
28
+ messages.push({
29
+ role: "user",
30
+ content: content.map((part) => {
31
+ var _a;
32
+ const partMetadata = getOpenAIMetadata(part);
33
+ switch (part.type) {
34
+ case "text": {
35
+ return { type: "text", text: part.text, ...partMetadata };
36
+ }
37
+ case "image": {
38
+ return {
39
+ type: "image_url",
40
+ image_url: {
41
+ url: part.image instanceof URL ? part.image.toString() : `data:${(_a = part.mimeType) != null ? _a : "image/jpeg"};base64,${chunkLPM6BBAX_cjs.convertUint8ArrayToBase64(part.image)}`
42
+ },
43
+ ...partMetadata
44
+ };
45
+ }
46
+ case "file": {
47
+ throw new chunkLPM6BBAX_cjs.UnsupportedFunctionalityError({
48
+ functionality: "File content parts in user messages"
49
+ });
50
+ }
51
+ }
52
+ }),
53
+ ...metadata
54
+ });
55
+ break;
56
+ }
57
+ case "assistant": {
58
+ let text = "";
59
+ const toolCalls = [];
60
+ for (const part of content) {
61
+ const partMetadata = getOpenAIMetadata(part);
62
+ switch (part.type) {
63
+ case "text": {
64
+ text += part.text;
65
+ break;
66
+ }
67
+ case "tool-call": {
68
+ toolCalls.push({
69
+ id: part.toolCallId,
70
+ type: "function",
71
+ function: {
72
+ name: part.toolName,
73
+ arguments: JSON.stringify(part.args)
74
+ },
75
+ ...partMetadata
76
+ });
77
+ break;
78
+ }
79
+ }
80
+ }
81
+ messages.push({
82
+ role: "assistant",
83
+ content: text,
84
+ tool_calls: toolCalls.length > 0 ? toolCalls : void 0,
85
+ ...metadata
86
+ });
87
+ break;
88
+ }
89
+ case "tool": {
90
+ for (const toolResponse of content) {
91
+ const toolResponseMetadata = getOpenAIMetadata(toolResponse);
92
+ messages.push({
93
+ role: "tool",
94
+ tool_call_id: toolResponse.toolCallId,
95
+ content: JSON.stringify(toolResponse.result),
96
+ ...toolResponseMetadata
97
+ });
98
+ }
99
+ break;
100
+ }
101
+ default: {
102
+ const _exhaustiveCheck = role;
103
+ throw new Error(`Unsupported role: ${_exhaustiveCheck}`);
104
+ }
105
+ }
106
+ }
107
+ return messages;
108
+ }
109
+ function getResponseMetadata({
110
+ id,
111
+ model,
112
+ created
113
+ }) {
114
+ return {
115
+ id: id != null ? id : void 0,
116
+ modelId: model != null ? model : void 0,
117
+ timestamp: created != null ? new Date(created * 1e3) : void 0
118
+ };
119
+ }
120
+ function mapOpenAICompatibleFinishReason(finishReason) {
121
+ switch (finishReason) {
122
+ case "stop":
123
+ return "stop";
124
+ case "length":
125
+ return "length";
126
+ case "content_filter":
127
+ return "content-filter";
128
+ case "function_call":
129
+ case "tool_calls":
130
+ return "tool-calls";
131
+ default:
132
+ return "unknown";
133
+ }
134
+ }
135
+ var openaiCompatibleErrorDataSchema = zod.z.object({
136
+ error: zod.z.object({
137
+ message: zod.z.string(),
138
+ // The additional information below is handled loosely to support
139
+ // OpenAI-compatible providers that have slightly different error
140
+ // responses:
141
+ type: zod.z.string().nullish(),
142
+ param: zod.z.any().nullish(),
143
+ code: zod.z.union([zod.z.string(), zod.z.number()]).nullish()
144
+ })
145
+ });
146
+ var defaultOpenAICompatibleErrorStructure = {
147
+ errorSchema: openaiCompatibleErrorDataSchema,
148
+ errorToMessage: (data) => data.error.message
149
+ };
150
+ function prepareTools({
151
+ mode,
152
+ structuredOutputs
153
+ }) {
154
+ var _a;
155
+ const tools = ((_a = mode.tools) == null ? void 0 : _a.length) ? mode.tools : void 0;
156
+ const toolWarnings = [];
157
+ if (tools == null) {
158
+ return { tools: void 0, tool_choice: void 0, toolWarnings };
159
+ }
160
+ const toolChoice = mode.toolChoice;
161
+ const openaiCompatTools = [];
162
+ for (const tool of tools) {
163
+ if (tool.type === "provider-defined") {
164
+ toolWarnings.push({ type: "unsupported-tool", tool });
165
+ } else {
166
+ openaiCompatTools.push({
167
+ type: "function",
168
+ function: {
169
+ name: tool.name,
170
+ description: tool.description,
171
+ parameters: tool.parameters
172
+ }
173
+ });
174
+ }
175
+ }
176
+ if (toolChoice == null) {
177
+ return { tools: openaiCompatTools, tool_choice: void 0, toolWarnings };
178
+ }
179
+ const type = toolChoice.type;
180
+ switch (type) {
181
+ case "auto":
182
+ case "none":
183
+ case "required":
184
+ return { tools: openaiCompatTools, tool_choice: type, toolWarnings };
185
+ case "tool":
186
+ return {
187
+ tools: openaiCompatTools,
188
+ tool_choice: {
189
+ type: "function",
190
+ function: {
191
+ name: toolChoice.toolName
192
+ }
193
+ },
194
+ toolWarnings
195
+ };
196
+ default: {
197
+ const _exhaustiveCheck = type;
198
+ throw new chunkLPM6BBAX_cjs.UnsupportedFunctionalityError({
199
+ functionality: `Unsupported tool choice type: ${_exhaustiveCheck}`
200
+ });
201
+ }
202
+ }
203
+ }
204
+ var OpenAICompatibleChatLanguageModel = class {
205
+ // type inferred via constructor
206
+ constructor(modelId, settings, config) {
207
+ this.specificationVersion = "v1";
208
+ var _a, _b;
209
+ this.modelId = modelId;
210
+ this.settings = settings;
211
+ this.config = config;
212
+ const errorStructure = (_a = config.errorStructure) != null ? _a : defaultOpenAICompatibleErrorStructure;
213
+ this.chunkSchema = createOpenAICompatibleChatChunkSchema(
214
+ errorStructure.errorSchema
215
+ );
216
+ this.failedResponseHandler = chunkLPM6BBAX_cjs.createJsonErrorResponseHandler(errorStructure);
217
+ this.supportsStructuredOutputs = (_b = config.supportsStructuredOutputs) != null ? _b : false;
218
+ }
219
+ get defaultObjectGenerationMode() {
220
+ return this.config.defaultObjectGenerationMode;
221
+ }
222
+ get provider() {
223
+ return this.config.provider;
224
+ }
225
+ get providerOptionsName() {
226
+ return this.config.provider.split(".")[0].trim();
227
+ }
228
+ getArgs({
229
+ mode,
230
+ prompt,
231
+ maxTokens,
232
+ temperature,
233
+ topP,
234
+ topK,
235
+ frequencyPenalty,
236
+ presencePenalty,
237
+ providerMetadata,
238
+ stopSequences,
239
+ responseFormat,
240
+ seed
241
+ }) {
242
+ var _a, _b, _c, _d, _e;
243
+ const type = mode.type;
244
+ const warnings = [];
245
+ if (topK != null) {
246
+ warnings.push({
247
+ type: "unsupported-setting",
248
+ setting: "topK"
249
+ });
250
+ }
251
+ if ((responseFormat == null ? void 0 : responseFormat.type) === "json" && responseFormat.schema != null && !this.supportsStructuredOutputs) {
252
+ warnings.push({
253
+ type: "unsupported-setting",
254
+ setting: "responseFormat",
255
+ details: "JSON response format schema is only supported with structuredOutputs"
256
+ });
257
+ }
258
+ const baseArgs = {
259
+ // model id:
260
+ model: this.modelId,
261
+ // model specific settings:
262
+ user: this.settings.user,
263
+ // standardized settings:
264
+ max_tokens: maxTokens,
265
+ temperature,
266
+ top_p: topP,
267
+ frequency_penalty: frequencyPenalty,
268
+ presence_penalty: presencePenalty,
269
+ response_format: (responseFormat == null ? void 0 : responseFormat.type) === "json" ? this.supportsStructuredOutputs === true && responseFormat.schema != null ? {
270
+ type: "json_schema",
271
+ json_schema: {
272
+ schema: responseFormat.schema,
273
+ name: (_a = responseFormat.name) != null ? _a : "response",
274
+ description: responseFormat.description
275
+ }
276
+ } : { type: "json_object" } : void 0,
277
+ stop: stopSequences,
278
+ seed,
279
+ ...providerMetadata == null ? void 0 : providerMetadata[this.providerOptionsName],
280
+ reasoning_effort: (_d = (_b = providerMetadata == null ? void 0 : providerMetadata[this.providerOptionsName]) == null ? void 0 : _b.reasoningEffort) != null ? _d : (_c = providerMetadata == null ? void 0 : providerMetadata["openai-compatible"]) == null ? void 0 : _c.reasoningEffort,
281
+ // messages:
282
+ messages: convertToOpenAICompatibleChatMessages(prompt)
283
+ };
284
+ switch (type) {
285
+ case "regular": {
286
+ const { tools, tool_choice, toolWarnings } = prepareTools({
287
+ mode,
288
+ structuredOutputs: this.supportsStructuredOutputs
289
+ });
290
+ return {
291
+ args: { ...baseArgs, tools, tool_choice },
292
+ warnings: [...warnings, ...toolWarnings]
293
+ };
294
+ }
295
+ case "object-json": {
296
+ return {
297
+ args: {
298
+ ...baseArgs,
299
+ response_format: this.supportsStructuredOutputs === true && mode.schema != null ? {
300
+ type: "json_schema",
301
+ json_schema: {
302
+ schema: mode.schema,
303
+ name: (_e = mode.name) != null ? _e : "response",
304
+ description: mode.description
305
+ }
306
+ } : { type: "json_object" }
307
+ },
308
+ warnings
309
+ };
310
+ }
311
+ case "object-tool": {
312
+ return {
313
+ args: {
314
+ ...baseArgs,
315
+ tool_choice: {
316
+ type: "function",
317
+ function: { name: mode.tool.name }
318
+ },
319
+ tools: [
320
+ {
321
+ type: "function",
322
+ function: {
323
+ name: mode.tool.name,
324
+ description: mode.tool.description,
325
+ parameters: mode.tool.parameters
326
+ }
327
+ }
328
+ ]
329
+ },
330
+ warnings
331
+ };
332
+ }
333
+ default: {
334
+ const _exhaustiveCheck = type;
335
+ throw new Error(`Unsupported type: ${_exhaustiveCheck}`);
336
+ }
337
+ }
338
+ }
339
+ async doGenerate(options) {
340
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
341
+ const { args, warnings } = this.getArgs({ ...options });
342
+ const body = JSON.stringify(args);
343
+ const {
344
+ responseHeaders,
345
+ value: responseBody,
346
+ rawValue: rawResponse
347
+ } = await chunkLPM6BBAX_cjs.postJsonToApi({
348
+ url: this.config.url({
349
+ path: "/chat/completions",
350
+ modelId: this.modelId
351
+ }),
352
+ headers: chunkLPM6BBAX_cjs.combineHeaders(this.config.headers(), options.headers),
353
+ body: args,
354
+ failedResponseHandler: this.failedResponseHandler,
355
+ successfulResponseHandler: chunkLPM6BBAX_cjs.createJsonResponseHandler(
356
+ OpenAICompatibleChatResponseSchema
357
+ ),
358
+ abortSignal: options.abortSignal,
359
+ fetch: this.config.fetch
360
+ });
361
+ const { messages: rawPrompt, ...rawSettings } = args;
362
+ const choice = responseBody.choices[0];
363
+ const providerMetadata = {
364
+ [this.providerOptionsName]: {},
365
+ ...(_b = (_a = this.config.metadataExtractor) == null ? void 0 : _a.extractMetadata) == null ? void 0 : _b.call(_a, {
366
+ parsedBody: rawResponse
367
+ })
368
+ };
369
+ const completionTokenDetails = (_c = responseBody.usage) == null ? void 0 : _c.completion_tokens_details;
370
+ const promptTokenDetails = (_d = responseBody.usage) == null ? void 0 : _d.prompt_tokens_details;
371
+ if ((completionTokenDetails == null ? void 0 : completionTokenDetails.reasoning_tokens) != null) {
372
+ providerMetadata[this.providerOptionsName].reasoningTokens = completionTokenDetails == null ? void 0 : completionTokenDetails.reasoning_tokens;
373
+ }
374
+ if ((completionTokenDetails == null ? void 0 : completionTokenDetails.accepted_prediction_tokens) != null) {
375
+ providerMetadata[this.providerOptionsName].acceptedPredictionTokens = completionTokenDetails == null ? void 0 : completionTokenDetails.accepted_prediction_tokens;
376
+ }
377
+ if ((completionTokenDetails == null ? void 0 : completionTokenDetails.rejected_prediction_tokens) != null) {
378
+ providerMetadata[this.providerOptionsName].rejectedPredictionTokens = completionTokenDetails == null ? void 0 : completionTokenDetails.rejected_prediction_tokens;
379
+ }
380
+ if ((promptTokenDetails == null ? void 0 : promptTokenDetails.cached_tokens) != null) {
381
+ providerMetadata[this.providerOptionsName].cachedPromptTokens = promptTokenDetails == null ? void 0 : promptTokenDetails.cached_tokens;
382
+ }
383
+ return {
384
+ text: (_e = choice.message.content) != null ? _e : void 0,
385
+ reasoning: (_f = choice.message.reasoning_content) != null ? _f : void 0,
386
+ toolCalls: (_g = choice.message.tool_calls) == null ? void 0 : _g.map((toolCall) => {
387
+ var _a2;
388
+ return {
389
+ toolCallType: "function",
390
+ toolCallId: (_a2 = toolCall.id) != null ? _a2 : chunkLPM6BBAX_cjs.generateId(),
391
+ toolName: toolCall.function.name,
392
+ args: toolCall.function.arguments
393
+ };
394
+ }),
395
+ finishReason: mapOpenAICompatibleFinishReason(choice.finish_reason),
396
+ usage: {
397
+ promptTokens: (_i = (_h = responseBody.usage) == null ? void 0 : _h.prompt_tokens) != null ? _i : NaN,
398
+ completionTokens: (_k = (_j = responseBody.usage) == null ? void 0 : _j.completion_tokens) != null ? _k : NaN
399
+ },
400
+ providerMetadata,
401
+ rawCall: { rawPrompt, rawSettings },
402
+ rawResponse: { headers: responseHeaders, body: rawResponse },
403
+ response: getResponseMetadata(responseBody),
404
+ warnings,
405
+ request: { body }
406
+ };
407
+ }
408
+ async doStream(options) {
409
+ var _a;
410
+ if (this.settings.simulateStreaming) {
411
+ const result = await this.doGenerate(options);
412
+ const simulatedStream = new ReadableStream({
413
+ start(controller) {
414
+ controller.enqueue({ type: "response-metadata", ...result.response });
415
+ if (result.reasoning) {
416
+ if (Array.isArray(result.reasoning)) {
417
+ for (const part of result.reasoning) {
418
+ if (part.type === "text") {
419
+ controller.enqueue({
420
+ type: "reasoning",
421
+ textDelta: part.text
422
+ });
423
+ }
424
+ }
425
+ } else {
426
+ controller.enqueue({
427
+ type: "reasoning",
428
+ textDelta: result.reasoning
429
+ });
430
+ }
431
+ }
432
+ if (result.text) {
433
+ controller.enqueue({
434
+ type: "text-delta",
435
+ textDelta: result.text
436
+ });
437
+ }
438
+ if (result.toolCalls) {
439
+ for (const toolCall of result.toolCalls) {
440
+ controller.enqueue({
441
+ type: "tool-call",
442
+ ...toolCall
443
+ });
444
+ }
445
+ }
446
+ controller.enqueue({
447
+ type: "finish",
448
+ finishReason: result.finishReason,
449
+ usage: result.usage,
450
+ logprobs: result.logprobs,
451
+ providerMetadata: result.providerMetadata
452
+ });
453
+ controller.close();
454
+ }
455
+ });
456
+ return {
457
+ stream: simulatedStream,
458
+ rawCall: result.rawCall,
459
+ rawResponse: result.rawResponse,
460
+ warnings: result.warnings
461
+ };
462
+ }
463
+ const { args, warnings } = this.getArgs({ ...options });
464
+ const body = {
465
+ ...args,
466
+ stream: true,
467
+ // only include stream_options when in strict compatibility mode:
468
+ stream_options: this.config.includeUsage ? { include_usage: true } : void 0
469
+ };
470
+ const metadataExtractor = (_a = this.config.metadataExtractor) == null ? void 0 : _a.createStreamExtractor();
471
+ const { responseHeaders, value: response } = await chunkLPM6BBAX_cjs.postJsonToApi({
472
+ url: this.config.url({
473
+ path: "/chat/completions",
474
+ modelId: this.modelId
475
+ }),
476
+ headers: chunkLPM6BBAX_cjs.combineHeaders(this.config.headers(), options.headers),
477
+ body,
478
+ failedResponseHandler: this.failedResponseHandler,
479
+ successfulResponseHandler: chunkLPM6BBAX_cjs.createEventSourceResponseHandler(
480
+ this.chunkSchema
481
+ ),
482
+ abortSignal: options.abortSignal,
483
+ fetch: this.config.fetch
484
+ });
485
+ const { messages: rawPrompt, ...rawSettings } = args;
486
+ const toolCalls = [];
487
+ let finishReason = "unknown";
488
+ let usage = {
489
+ completionTokens: void 0,
490
+ completionTokensDetails: {
491
+ reasoningTokens: void 0,
492
+ acceptedPredictionTokens: void 0,
493
+ rejectedPredictionTokens: void 0
494
+ },
495
+ promptTokens: void 0,
496
+ promptTokensDetails: {
497
+ cachedTokens: void 0
498
+ }
499
+ };
500
+ let isFirstChunk = true;
501
+ let providerOptionsName = this.providerOptionsName;
502
+ return {
503
+ stream: response.pipeThrough(
504
+ new TransformStream({
505
+ // TODO we lost type safety on Chunk, most likely due to the error schema. MUST FIX
506
+ transform(chunk, controller) {
507
+ var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
508
+ if (!chunk.success) {
509
+ finishReason = "error";
510
+ controller.enqueue({ type: "error", error: chunk.error });
511
+ return;
512
+ }
513
+ const value = chunk.value;
514
+ metadataExtractor == null ? void 0 : metadataExtractor.processChunk(chunk.rawValue);
515
+ if ("error" in value) {
516
+ finishReason = "error";
517
+ controller.enqueue({ type: "error", error: value.error.message });
518
+ return;
519
+ }
520
+ if (isFirstChunk) {
521
+ isFirstChunk = false;
522
+ controller.enqueue({
523
+ type: "response-metadata",
524
+ ...getResponseMetadata(value)
525
+ });
526
+ }
527
+ if (value.usage != null) {
528
+ const {
529
+ prompt_tokens,
530
+ completion_tokens,
531
+ prompt_tokens_details,
532
+ completion_tokens_details
533
+ } = value.usage;
534
+ usage.promptTokens = prompt_tokens != null ? prompt_tokens : void 0;
535
+ usage.completionTokens = completion_tokens != null ? completion_tokens : void 0;
536
+ if ((completion_tokens_details == null ? void 0 : completion_tokens_details.reasoning_tokens) != null) {
537
+ usage.completionTokensDetails.reasoningTokens = completion_tokens_details == null ? void 0 : completion_tokens_details.reasoning_tokens;
538
+ }
539
+ if ((completion_tokens_details == null ? void 0 : completion_tokens_details.accepted_prediction_tokens) != null) {
540
+ usage.completionTokensDetails.acceptedPredictionTokens = completion_tokens_details == null ? void 0 : completion_tokens_details.accepted_prediction_tokens;
541
+ }
542
+ if ((completion_tokens_details == null ? void 0 : completion_tokens_details.rejected_prediction_tokens) != null) {
543
+ usage.completionTokensDetails.rejectedPredictionTokens = completion_tokens_details == null ? void 0 : completion_tokens_details.rejected_prediction_tokens;
544
+ }
545
+ if ((prompt_tokens_details == null ? void 0 : prompt_tokens_details.cached_tokens) != null) {
546
+ usage.promptTokensDetails.cachedTokens = prompt_tokens_details == null ? void 0 : prompt_tokens_details.cached_tokens;
547
+ }
548
+ }
549
+ const choice = value.choices[0];
550
+ if ((choice == null ? void 0 : choice.finish_reason) != null) {
551
+ finishReason = mapOpenAICompatibleFinishReason(
552
+ choice.finish_reason
553
+ );
554
+ }
555
+ if ((choice == null ? void 0 : choice.delta) == null) {
556
+ return;
557
+ }
558
+ const delta = choice.delta;
559
+ if (delta.reasoning_content != null) {
560
+ controller.enqueue({
561
+ type: "reasoning",
562
+ textDelta: delta.reasoning_content
563
+ });
564
+ }
565
+ if (delta.content != null) {
566
+ controller.enqueue({
567
+ type: "text-delta",
568
+ textDelta: delta.content
569
+ });
570
+ }
571
+ if (delta.tool_calls != null) {
572
+ for (const toolCallDelta of delta.tool_calls) {
573
+ const index = toolCallDelta.index;
574
+ if (toolCalls[index] == null) {
575
+ if (toolCallDelta.type !== "function") {
576
+ throw new chunkLPM6BBAX_cjs.InvalidResponseDataError({
577
+ data: toolCallDelta,
578
+ message: `Expected 'function' type.`
579
+ });
580
+ }
581
+ if (toolCallDelta.id == null) {
582
+ throw new chunkLPM6BBAX_cjs.InvalidResponseDataError({
583
+ data: toolCallDelta,
584
+ message: `Expected 'id' to be a string.`
585
+ });
586
+ }
587
+ if (((_a2 = toolCallDelta.function) == null ? void 0 : _a2.name) == null) {
588
+ throw new chunkLPM6BBAX_cjs.InvalidResponseDataError({
589
+ data: toolCallDelta,
590
+ message: `Expected 'function.name' to be a string.`
591
+ });
592
+ }
593
+ toolCalls[index] = {
594
+ id: toolCallDelta.id,
595
+ type: "function",
596
+ function: {
597
+ name: toolCallDelta.function.name,
598
+ arguments: (_b = toolCallDelta.function.arguments) != null ? _b : ""
599
+ },
600
+ hasFinished: false
601
+ };
602
+ const toolCall2 = toolCalls[index];
603
+ if (((_c = toolCall2.function) == null ? void 0 : _c.name) != null && ((_d = toolCall2.function) == null ? void 0 : _d.arguments) != null) {
604
+ if (toolCall2.function.arguments.length > 0) {
605
+ controller.enqueue({
606
+ type: "tool-call-delta",
607
+ toolCallType: "function",
608
+ toolCallId: toolCall2.id,
609
+ toolName: toolCall2.function.name,
610
+ argsTextDelta: toolCall2.function.arguments
611
+ });
612
+ }
613
+ if (chunkLPM6BBAX_cjs.isParsableJson(toolCall2.function.arguments)) {
614
+ controller.enqueue({
615
+ type: "tool-call",
616
+ toolCallType: "function",
617
+ toolCallId: (_e = toolCall2.id) != null ? _e : chunkLPM6BBAX_cjs.generateId(),
618
+ toolName: toolCall2.function.name,
619
+ args: toolCall2.function.arguments
620
+ });
621
+ toolCall2.hasFinished = true;
622
+ }
623
+ }
624
+ continue;
625
+ }
626
+ const toolCall = toolCalls[index];
627
+ if (toolCall.hasFinished) {
628
+ continue;
629
+ }
630
+ if (((_f = toolCallDelta.function) == null ? void 0 : _f.arguments) != null) {
631
+ toolCall.function.arguments += (_h = (_g = toolCallDelta.function) == null ? void 0 : _g.arguments) != null ? _h : "";
632
+ }
633
+ controller.enqueue({
634
+ type: "tool-call-delta",
635
+ toolCallType: "function",
636
+ toolCallId: toolCall.id,
637
+ toolName: toolCall.function.name,
638
+ argsTextDelta: (_i = toolCallDelta.function.arguments) != null ? _i : ""
639
+ });
640
+ if (((_j = toolCall.function) == null ? void 0 : _j.name) != null && ((_k = toolCall.function) == null ? void 0 : _k.arguments) != null && chunkLPM6BBAX_cjs.isParsableJson(toolCall.function.arguments)) {
641
+ controller.enqueue({
642
+ type: "tool-call",
643
+ toolCallType: "function",
644
+ toolCallId: (_l = toolCall.id) != null ? _l : chunkLPM6BBAX_cjs.generateId(),
645
+ toolName: toolCall.function.name,
646
+ args: toolCall.function.arguments
647
+ });
648
+ toolCall.hasFinished = true;
649
+ }
650
+ }
651
+ }
652
+ },
653
+ flush(controller) {
654
+ var _a2, _b;
655
+ const providerMetadata = {
656
+ [providerOptionsName]: {},
657
+ ...metadataExtractor == null ? void 0 : metadataExtractor.buildMetadata()
658
+ };
659
+ if (usage.completionTokensDetails.reasoningTokens != null) {
660
+ providerMetadata[providerOptionsName].reasoningTokens = usage.completionTokensDetails.reasoningTokens;
661
+ }
662
+ if (usage.completionTokensDetails.acceptedPredictionTokens != null) {
663
+ providerMetadata[providerOptionsName].acceptedPredictionTokens = usage.completionTokensDetails.acceptedPredictionTokens;
664
+ }
665
+ if (usage.completionTokensDetails.rejectedPredictionTokens != null) {
666
+ providerMetadata[providerOptionsName].rejectedPredictionTokens = usage.completionTokensDetails.rejectedPredictionTokens;
667
+ }
668
+ if (usage.promptTokensDetails.cachedTokens != null) {
669
+ providerMetadata[providerOptionsName].cachedPromptTokens = usage.promptTokensDetails.cachedTokens;
670
+ }
671
+ controller.enqueue({
672
+ type: "finish",
673
+ finishReason,
674
+ usage: {
675
+ promptTokens: (_a2 = usage.promptTokens) != null ? _a2 : NaN,
676
+ completionTokens: (_b = usage.completionTokens) != null ? _b : NaN
677
+ },
678
+ providerMetadata
679
+ });
680
+ }
681
+ })
682
+ ),
683
+ rawCall: { rawPrompt, rawSettings },
684
+ rawResponse: { headers: responseHeaders },
685
+ warnings,
686
+ request: { body: JSON.stringify(body) }
687
+ };
688
+ }
689
+ };
690
+ var openaiCompatibleTokenUsageSchema = zod.z.object({
691
+ prompt_tokens: zod.z.number().nullish(),
692
+ completion_tokens: zod.z.number().nullish(),
693
+ prompt_tokens_details: zod.z.object({
694
+ cached_tokens: zod.z.number().nullish()
695
+ }).nullish(),
696
+ completion_tokens_details: zod.z.object({
697
+ reasoning_tokens: zod.z.number().nullish(),
698
+ accepted_prediction_tokens: zod.z.number().nullish(),
699
+ rejected_prediction_tokens: zod.z.number().nullish()
700
+ }).nullish()
701
+ }).nullish();
702
+ var OpenAICompatibleChatResponseSchema = zod.z.object({
703
+ id: zod.z.string().nullish(),
704
+ created: zod.z.number().nullish(),
705
+ model: zod.z.string().nullish(),
706
+ choices: zod.z.array(
707
+ zod.z.object({
708
+ message: zod.z.object({
709
+ role: zod.z.literal("assistant").nullish(),
710
+ content: zod.z.string().nullish(),
711
+ reasoning_content: zod.z.string().nullish(),
712
+ tool_calls: zod.z.array(
713
+ zod.z.object({
714
+ id: zod.z.string().nullish(),
715
+ type: zod.z.literal("function"),
716
+ function: zod.z.object({
717
+ name: zod.z.string(),
718
+ arguments: zod.z.string()
719
+ })
720
+ })
721
+ ).nullish()
722
+ }),
723
+ finish_reason: zod.z.string().nullish()
724
+ })
725
+ ),
726
+ usage: openaiCompatibleTokenUsageSchema
727
+ });
728
+ var createOpenAICompatibleChatChunkSchema = (errorSchema) => zod.z.union([
729
+ zod.z.object({
730
+ id: zod.z.string().nullish(),
731
+ created: zod.z.number().nullish(),
732
+ model: zod.z.string().nullish(),
733
+ choices: zod.z.array(
734
+ zod.z.object({
735
+ delta: zod.z.object({
736
+ role: zod.z.enum(["assistant"]).nullish(),
737
+ content: zod.z.string().nullish(),
738
+ reasoning_content: zod.z.string().nullish(),
739
+ tool_calls: zod.z.array(
740
+ zod.z.object({
741
+ index: zod.z.number().optional(),
742
+ id: zod.z.string().nullish(),
743
+ type: zod.z.literal("function").nullish(),
744
+ function: zod.z.object({
745
+ name: zod.z.string().nullish(),
746
+ arguments: zod.z.string().nullish()
747
+ })
748
+ })
749
+ ).nullish()
750
+ }).nullish(),
751
+ finish_reason: zod.z.string().nullish()
752
+ })
753
+ ),
754
+ usage: openaiCompatibleTokenUsageSchema
755
+ }),
756
+ errorSchema
757
+ ]);
758
+ zod.z.object({
759
+ id: zod.z.string().nullish(),
760
+ created: zod.z.number().nullish(),
761
+ model: zod.z.string().nullish(),
762
+ choices: zod.z.array(
763
+ zod.z.object({
764
+ text: zod.z.string(),
765
+ finish_reason: zod.z.string()
766
+ })
767
+ ),
768
+ usage: zod.z.object({
769
+ prompt_tokens: zod.z.number(),
770
+ completion_tokens: zod.z.number()
771
+ }).nullish()
772
+ });
773
+ zod.z.object({
774
+ data: zod.z.array(zod.z.object({ embedding: zod.z.array(zod.z.number()) })),
775
+ usage: zod.z.object({ prompt_tokens: zod.z.number() }).nullish()
776
+ });
777
+ var OpenAICompatibleImageModel = class {
778
+ constructor(modelId, settings, config) {
779
+ this.modelId = modelId;
780
+ this.settings = settings;
781
+ this.config = config;
782
+ this.specificationVersion = "v1";
783
+ }
784
+ get maxImagesPerCall() {
785
+ var _a;
786
+ return (_a = this.settings.maxImagesPerCall) != null ? _a : 10;
787
+ }
788
+ get provider() {
789
+ return this.config.provider;
790
+ }
791
+ async doGenerate({
792
+ prompt,
793
+ n,
794
+ size,
795
+ aspectRatio,
796
+ seed,
797
+ providerOptions,
798
+ headers,
799
+ abortSignal
800
+ }) {
801
+ var _a, _b, _c, _d, _e;
802
+ const warnings = [];
803
+ if (aspectRatio != null) {
804
+ warnings.push({
805
+ type: "unsupported-setting",
806
+ setting: "aspectRatio",
807
+ details: "This model does not support aspect ratio. Use `size` instead."
808
+ });
809
+ }
810
+ if (seed != null) {
811
+ warnings.push({ type: "unsupported-setting", setting: "seed" });
812
+ }
813
+ const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
814
+ const { value: response, responseHeaders } = await chunkLPM6BBAX_cjs.postJsonToApi({
815
+ url: this.config.url({
816
+ path: "/images/generations",
817
+ modelId: this.modelId
818
+ }),
819
+ headers: chunkLPM6BBAX_cjs.combineHeaders(this.config.headers(), headers),
820
+ body: {
821
+ model: this.modelId,
822
+ prompt,
823
+ n,
824
+ size,
825
+ ...(_d = providerOptions.openai) != null ? _d : {},
826
+ response_format: "b64_json",
827
+ ...this.settings.user ? { user: this.settings.user } : {}
828
+ },
829
+ failedResponseHandler: chunkLPM6BBAX_cjs.createJsonErrorResponseHandler(
830
+ (_e = this.config.errorStructure) != null ? _e : defaultOpenAICompatibleErrorStructure
831
+ ),
832
+ successfulResponseHandler: chunkLPM6BBAX_cjs.createJsonResponseHandler(
833
+ openaiCompatibleImageResponseSchema
834
+ ),
835
+ abortSignal,
836
+ fetch: this.config.fetch
837
+ });
838
+ return {
839
+ images: response.data.map((item) => item.b64_json),
840
+ warnings,
841
+ response: {
842
+ timestamp: currentDate,
843
+ modelId: this.modelId,
844
+ headers: responseHeaders
845
+ }
846
+ };
847
+ }
848
+ };
849
+ var openaiCompatibleImageResponseSchema = zod.z.object({
850
+ data: zod.z.array(zod.z.object({ b64_json: zod.z.string() }))
851
+ });
852
+ function supportsStructuredOutputs(modelId) {
853
+ return [
854
+ "grok-3",
855
+ "grok-3-beta",
856
+ "grok-3-latest",
857
+ "grok-3-fast",
858
+ "grok-3-fast-beta",
859
+ "grok-3-fast-latest",
860
+ "grok-3-mini",
861
+ "grok-3-mini-beta",
862
+ "grok-3-mini-latest",
863
+ "grok-3-mini-fast",
864
+ "grok-3-mini-fast-beta",
865
+ "grok-3-mini-fast-latest",
866
+ "grok-2-1212",
867
+ "grok-2-vision-1212"
868
+ ].includes(modelId);
869
+ }
870
+ var xaiErrorSchema = zod.z.object({
871
+ code: zod.z.string(),
872
+ error: zod.z.string()
873
+ });
874
+ var xaiErrorStructure = {
875
+ errorSchema: xaiErrorSchema,
876
+ errorToMessage: (data) => data.error
877
+ };
878
+ function createXai(options = {}) {
879
+ var _a;
880
+ const baseURL = chunkLPM6BBAX_cjs.withoutTrailingSlash(
881
+ (_a = options.baseURL) != null ? _a : "https://api.x.ai/v1"
882
+ );
883
+ const getHeaders = () => ({
884
+ Authorization: `Bearer ${chunkLPM6BBAX_cjs.loadApiKey({
885
+ apiKey: options.apiKey,
886
+ environmentVariableName: "XAI_API_KEY",
887
+ description: "xAI API key"
888
+ })}`,
889
+ ...options.headers
890
+ });
891
+ const createLanguageModel = (modelId, settings = {}) => {
892
+ const structuredOutputs = supportsStructuredOutputs(modelId);
893
+ return new OpenAICompatibleChatLanguageModel(modelId, settings, {
894
+ provider: "xai.chat",
895
+ url: ({ path }) => `${baseURL}${path}`,
896
+ headers: getHeaders,
897
+ fetch: options.fetch,
898
+ defaultObjectGenerationMode: structuredOutputs ? "json" : "tool",
899
+ errorStructure: xaiErrorStructure,
900
+ supportsStructuredOutputs: structuredOutputs,
901
+ includeUsage: true
902
+ });
903
+ };
904
+ const createImageModel = (modelId, settings = {}) => {
905
+ return new OpenAICompatibleImageModel(modelId, settings, {
906
+ provider: "xai.image",
907
+ url: ({ path }) => `${baseURL}${path}`,
908
+ headers: getHeaders,
909
+ fetch: options.fetch,
910
+ errorStructure: xaiErrorStructure
911
+ });
912
+ };
913
+ const provider = (modelId, settings) => createLanguageModel(modelId, settings);
914
+ provider.languageModel = createLanguageModel;
915
+ provider.chat = createLanguageModel;
916
+ provider.textEmbeddingModel = (modelId) => {
917
+ throw new chunkLPM6BBAX_cjs.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
918
+ };
919
+ provider.imageModel = createImageModel;
920
+ provider.image = createImageModel;
921
+ return provider;
922
+ }
923
+ var xai = createXai();
924
+
925
+ exports.createXai = createXai;
926
+ exports.xai = xai;
927
+ //# sourceMappingURL=dist-G2BYZJOC.cjs.map
928
+ //# sourceMappingURL=dist-G2BYZJOC.cjs.map