@mastra/server 0.0.0-message-list-update-20250715150321 → 0.0.0-monorepo-binary-20251013210052

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 (279) hide show
  1. package/CHANGELOG.md +4009 -0
  2. package/README.md +0 -5
  3. package/dist/chunk-2PLXW4ZX.cjs +2777 -0
  4. package/dist/chunk-2PLXW4ZX.cjs.map +1 -0
  5. package/dist/chunk-2S4IMB6E.cjs +130 -0
  6. package/dist/chunk-2S4IMB6E.cjs.map +1 -0
  7. package/dist/chunk-3LGGSMCC.cjs +256 -0
  8. package/dist/chunk-3LGGSMCC.cjs.map +1 -0
  9. package/dist/chunk-3LTO44EP.cjs +570 -0
  10. package/dist/chunk-3LTO44EP.cjs.map +1 -0
  11. package/dist/chunk-3SNGNFUJ.cjs +128 -0
  12. package/dist/chunk-3SNGNFUJ.cjs.map +1 -0
  13. package/dist/{chunk-RSEO4XPX.js → chunk-4QCXUEAT.js} +11 -2
  14. package/dist/chunk-4QCXUEAT.js.map +1 -0
  15. package/dist/chunk-5BNQIYQN.js +189 -0
  16. package/dist/chunk-5BNQIYQN.js.map +1 -0
  17. package/dist/{chunk-RG473F6Y.js → chunk-67GYDFSB.js} +24 -5
  18. package/dist/chunk-67GYDFSB.js.map +1 -0
  19. package/dist/chunk-6BMOC6SA.cjs +48 -0
  20. package/dist/chunk-6BMOC6SA.cjs.map +1 -0
  21. package/dist/{chunk-G7KH752Y.cjs → chunk-6ZR275MD.cjs} +28 -8
  22. package/dist/chunk-6ZR275MD.cjs.map +1 -0
  23. package/dist/{chunk-2KZFMI6P.cjs → chunk-7NADHFD2.cjs} +2 -0
  24. package/dist/chunk-7NADHFD2.cjs.map +1 -0
  25. package/dist/{chunk-4D66QEKC.js → chunk-ABRFV4XP.js} +5 -3
  26. package/dist/chunk-ABRFV4XP.js.map +1 -0
  27. package/dist/{chunk-LRCAAFUA.js → chunk-AHB4JCIQ.js} +50 -12
  28. package/dist/chunk-AHB4JCIQ.js.map +1 -0
  29. package/dist/chunk-BATEJLED.js +124 -0
  30. package/dist/chunk-BATEJLED.js.map +1 -0
  31. package/dist/chunk-BZLZFHAT.cjs +682 -0
  32. package/dist/chunk-BZLZFHAT.cjs.map +1 -0
  33. package/dist/{chunk-LF7P5PLR.js → chunk-CY4TP3FK.js} +3 -1
  34. package/dist/chunk-CY4TP3FK.js.map +1 -0
  35. package/dist/{chunk-H7DMHBKY.js → chunk-DB63UMTV.js} +249 -87
  36. package/dist/chunk-DB63UMTV.js.map +1 -0
  37. package/dist/chunk-DTBJ3D22.js +19480 -0
  38. package/dist/chunk-DTBJ3D22.js.map +1 -0
  39. package/dist/{chunk-7TP2LX5L.cjs → chunk-EP3JQDPD.cjs} +20 -18
  40. package/dist/chunk-EP3JQDPD.cjs.map +1 -0
  41. package/dist/chunk-G4PUALCE.cjs +28 -0
  42. package/dist/chunk-G4PUALCE.cjs.map +1 -0
  43. package/dist/chunk-GU4EWMZB.cjs +769 -0
  44. package/dist/chunk-GU4EWMZB.cjs.map +1 -0
  45. package/dist/chunk-H2CO44WB.js +46 -0
  46. package/dist/chunk-H2CO44WB.js.map +1 -0
  47. package/dist/{chunk-GHC4YV6R.js → chunk-HPXAM2PG.js} +109 -136
  48. package/dist/chunk-HPXAM2PG.js.map +1 -0
  49. package/dist/{chunk-JMLYCXMK.cjs → chunk-I3C4ODGV.cjs} +48 -45
  50. package/dist/chunk-I3C4ODGV.cjs.map +1 -0
  51. package/dist/chunk-JSLAYFEW.js +662 -0
  52. package/dist/chunk-JSLAYFEW.js.map +1 -0
  53. package/dist/chunk-KQZPT7AO.js +254 -0
  54. package/dist/chunk-KQZPT7AO.js.map +1 -0
  55. package/dist/chunk-LF2ZLOFP.js +767 -0
  56. package/dist/chunk-LF2ZLOFP.js.map +1 -0
  57. package/dist/{chunk-5PQQ42EZ.js → chunk-LLUOPR3J.js} +13 -10
  58. package/dist/chunk-LLUOPR3J.js.map +1 -0
  59. package/dist/chunk-LNT5N7XW.cjs +197 -0
  60. package/dist/chunk-LNT5N7XW.cjs.map +1 -0
  61. package/dist/chunk-LPM6BBAX.cjs +1043 -0
  62. package/dist/chunk-LPM6BBAX.cjs.map +1 -0
  63. package/dist/{chunk-LCM566I4.js → chunk-MMROOK5J.js} +2 -0
  64. package/dist/chunk-MMROOK5J.js.map +1 -0
  65. package/dist/chunk-MQDBNHBT.cjs +680 -0
  66. package/dist/chunk-MQDBNHBT.cjs.map +1 -0
  67. package/dist/{chunk-WNVFNNWN.js → chunk-MYR4PVGN.js} +5 -3
  68. package/dist/chunk-MYR4PVGN.js.map +1 -0
  69. package/dist/chunk-O7I5CWRX.cjs +44 -0
  70. package/dist/chunk-O7I5CWRX.cjs.map +1 -0
  71. package/dist/chunk-OEOGYAQC.js +553 -0
  72. package/dist/chunk-OEOGYAQC.js.map +1 -0
  73. package/dist/chunk-PR4QN5HX.js +39 -0
  74. package/dist/chunk-PR4QN5HX.js.map +1 -0
  75. package/dist/{chunk-KHZKYUNR.js → chunk-QQXMIP6C.js} +23 -13
  76. package/dist/chunk-QQXMIP6C.js.map +1 -0
  77. package/dist/{chunk-PZQDCRPV.cjs → chunk-RE4RPXT2.cjs} +4 -2
  78. package/dist/chunk-RE4RPXT2.cjs.map +1 -0
  79. package/dist/chunk-RQK4FQUD.js +1012 -0
  80. package/dist/chunk-RQK4FQUD.js.map +1 -0
  81. package/dist/chunk-SBWOUCO3.cjs +19516 -0
  82. package/dist/chunk-SBWOUCO3.cjs.map +1 -0
  83. package/dist/{chunk-SDPGVWQJ.cjs → chunk-TOP25AIO.cjs} +110 -137
  84. package/dist/chunk-TOP25AIO.cjs.map +1 -0
  85. package/dist/chunk-TRGAMKHX.cjs +167 -0
  86. package/dist/chunk-TRGAMKHX.cjs.map +1 -0
  87. package/dist/chunk-VY4ENABS.cjs +135 -0
  88. package/dist/chunk-VY4ENABS.cjs.map +1 -0
  89. package/dist/{chunk-QGX47B5D.cjs → chunk-XN74I6VW.cjs} +11 -9
  90. package/dist/chunk-XN74I6VW.cjs.map +1 -0
  91. package/dist/chunk-YWOK4F5A.js +131 -0
  92. package/dist/chunk-YWOK4F5A.js.map +1 -0
  93. package/dist/chunk-ZULZ2752.js +2774 -0
  94. package/dist/chunk-ZULZ2752.js.map +1 -0
  95. package/dist/dist-4MVGNSRL.cjs +1150 -0
  96. package/dist/dist-4MVGNSRL.cjs.map +1 -0
  97. package/dist/dist-FZYCV3VB.cjs +940 -0
  98. package/dist/dist-FZYCV3VB.cjs.map +1 -0
  99. package/dist/dist-G2BYZJOC.cjs +928 -0
  100. package/dist/dist-G2BYZJOC.cjs.map +1 -0
  101. package/dist/dist-P4MXBQ3U.cjs +16 -0
  102. package/dist/dist-P4MXBQ3U.cjs.map +1 -0
  103. package/dist/dist-PQZUVLPC.js +937 -0
  104. package/dist/dist-PQZUVLPC.js.map +1 -0
  105. package/dist/dist-R7WYX6LC.js +925 -0
  106. package/dist/dist-R7WYX6LC.js.map +1 -0
  107. package/dist/dist-RFMYFILX.cjs +764 -0
  108. package/dist/dist-RFMYFILX.cjs.map +1 -0
  109. package/dist/dist-X7XR3M3Z.js +1147 -0
  110. package/dist/dist-X7XR3M3Z.js.map +1 -0
  111. package/dist/dist-XVBSOGFK.js +761 -0
  112. package/dist/dist-XVBSOGFK.js.map +1 -0
  113. package/dist/dist-YREX2TJT.js +3 -0
  114. package/dist/dist-YREX2TJT.js.map +1 -0
  115. package/dist/index.cjs +6 -0
  116. package/dist/index.cjs.map +1 -0
  117. package/dist/index.d.ts +1 -0
  118. package/dist/index.d.ts.map +1 -0
  119. package/dist/index.js +5 -0
  120. package/dist/index.js.map +1 -0
  121. package/dist/server/a2a/protocol.d.ts +8 -0
  122. package/dist/server/a2a/protocol.d.ts.map +1 -0
  123. package/dist/server/a2a/store.cjs +25 -0
  124. package/dist/server/a2a/store.cjs.map +1 -0
  125. package/dist/server/a2a/store.d.ts +14 -0
  126. package/dist/server/a2a/store.d.ts.map +1 -0
  127. package/dist/server/a2a/store.js +23 -0
  128. package/dist/server/a2a/store.js.map +1 -0
  129. package/dist/server/a2a/tasks.d.ts +20 -0
  130. package/dist/server/a2a/tasks.d.ts.map +1 -0
  131. package/dist/server/handlers/a2a.cjs +13 -11
  132. package/dist/server/handlers/a2a.cjs.map +1 -0
  133. package/dist/server/handlers/a2a.d.ts +68 -6
  134. package/dist/server/handlers/a2a.d.ts.map +1 -0
  135. package/dist/server/handlers/a2a.js +3 -1
  136. package/dist/server/handlers/a2a.js.map +1 -0
  137. package/dist/server/handlers/agent-builder.cjs +68 -0
  138. package/dist/server/handlers/agent-builder.cjs.map +1 -0
  139. package/dist/server/handlers/agent-builder.d.ts +94 -0
  140. package/dist/server/handlers/agent-builder.d.ts.map +1 -0
  141. package/dist/server/handlers/agent-builder.js +3 -0
  142. package/dist/server/handlers/agent-builder.js.map +1 -0
  143. package/dist/server/handlers/agents.cjs +57 -7
  144. package/dist/server/handlers/agents.cjs.map +1 -0
  145. package/dist/server/handlers/agents.d.ts +204 -6
  146. package/dist/server/handlers/agents.d.ts.map +1 -0
  147. package/dist/server/handlers/agents.js +3 -1
  148. package/dist/server/handlers/agents.js.map +1 -0
  149. package/dist/server/handlers/error.cjs +4 -2
  150. package/dist/server/handlers/error.cjs.map +1 -0
  151. package/dist/server/handlers/error.d.ts +2 -1
  152. package/dist/server/handlers/error.d.ts.map +1 -0
  153. package/dist/server/handlers/error.js +3 -1
  154. package/dist/server/handlers/error.js.map +1 -0
  155. package/dist/server/handlers/legacyWorkflows.cjs +13 -11
  156. package/dist/server/handlers/legacyWorkflows.cjs.map +1 -0
  157. package/dist/server/handlers/legacyWorkflows.d.ts +59 -10
  158. package/dist/server/handlers/legacyWorkflows.d.ts.map +1 -0
  159. package/dist/server/handlers/legacyWorkflows.js +3 -1
  160. package/dist/server/handlers/legacyWorkflows.js.map +1 -0
  161. package/dist/server/handlers/logs.cjs +6 -4
  162. package/dist/server/handlers/logs.cjs.map +1 -0
  163. package/dist/server/handlers/logs.d.ts +34 -3
  164. package/dist/server/handlers/logs.d.ts.map +1 -0
  165. package/dist/server/handlers/logs.js +3 -1
  166. package/dist/server/handlers/logs.js.map +1 -0
  167. package/dist/server/handlers/memory.cjs +33 -11
  168. package/dist/server/handlers/memory.cjs.map +1 -0
  169. package/dist/server/handlers/memory.d.ts +118 -10
  170. package/dist/server/handlers/memory.d.ts.map +1 -0
  171. package/dist/server/handlers/memory.js +3 -1
  172. package/dist/server/handlers/memory.js.map +1 -0
  173. package/dist/server/handlers/observability.cjs +24 -0
  174. package/dist/server/handlers/observability.cjs.map +1 -0
  175. package/dist/server/handlers/observability.d.ts +49 -0
  176. package/dist/server/handlers/observability.d.ts.map +1 -0
  177. package/dist/server/handlers/observability.js +3 -0
  178. package/dist/server/handlers/observability.js.map +1 -0
  179. package/dist/server/handlers/scores.cjs +32 -0
  180. package/dist/server/handlers/scores.cjs.map +1 -0
  181. package/dist/server/handlers/scores.d.ts +251 -0
  182. package/dist/server/handlers/scores.d.ts.map +1 -0
  183. package/dist/server/handlers/scores.js +3 -0
  184. package/dist/server/handlers/scores.js.map +1 -0
  185. package/dist/server/handlers/telemetry.cjs +9 -3
  186. package/dist/server/handlers/telemetry.cjs.map +1 -0
  187. package/dist/server/handlers/telemetry.d.ts +33 -2
  188. package/dist/server/handlers/telemetry.d.ts.map +1 -0
  189. package/dist/server/handlers/telemetry.js +3 -1
  190. package/dist/server/handlers/telemetry.js.map +1 -0
  191. package/dist/server/handlers/tools.cjs +11 -5
  192. package/dist/server/handlers/tools.cjs.map +1 -0
  193. package/dist/server/handlers/tools.d.ts +25 -4
  194. package/dist/server/handlers/tools.d.ts.map +1 -0
  195. package/dist/server/handlers/tools.js +3 -1
  196. package/dist/server/handlers/tools.js.map +1 -0
  197. package/dist/server/handlers/utils.cjs +8 -2
  198. package/dist/server/handlers/utils.cjs.map +1 -0
  199. package/dist/server/handlers/utils.d.ts +8 -1
  200. package/dist/server/handlers/utils.d.ts.map +1 -0
  201. package/dist/server/handlers/utils.js +3 -1
  202. package/dist/server/handlers/utils.js.map +1 -0
  203. package/dist/server/handlers/vector.cjs +9 -7
  204. package/dist/server/handlers/vector.cjs.map +1 -0
  205. package/dist/server/handlers/vector.d.ts +51 -6
  206. package/dist/server/handlers/vector.d.ts.map +1 -0
  207. package/dist/server/handlers/vector.js +3 -1
  208. package/dist/server/handlers/vector.js.map +1 -0
  209. package/dist/server/handlers/voice.cjs +7 -5
  210. package/dist/server/handlers/voice.cjs.map +1 -0
  211. package/dist/server/handlers/voice.d.ts +41 -4
  212. package/dist/server/handlers/voice.d.ts.map +1 -0
  213. package/dist/server/handlers/voice.js +3 -1
  214. package/dist/server/handlers/voice.js.map +1 -0
  215. package/dist/server/handlers/workflows.cjs +33 -15
  216. package/dist/server/handlers/workflows.cjs.map +1 -0
  217. package/dist/server/handlers/workflows.d.ts +91 -14
  218. package/dist/server/handlers/workflows.d.ts.map +1 -0
  219. package/dist/server/handlers/workflows.js +3 -1
  220. package/dist/server/handlers/workflows.js.map +1 -0
  221. package/dist/server/handlers.cjs +44 -32
  222. package/dist/server/handlers.cjs.map +1 -0
  223. package/dist/server/handlers.d.ts +14 -11
  224. package/dist/server/handlers.d.ts.map +1 -0
  225. package/dist/server/handlers.js +15 -11
  226. package/dist/server/handlers.js.map +1 -0
  227. package/dist/server/http-exception.d.ts +87 -0
  228. package/dist/server/http-exception.d.ts.map +1 -0
  229. package/dist/server/types.d.ts +10 -0
  230. package/dist/server/types.d.ts.map +1 -0
  231. package/dist/server/utils.d.ts +44 -0
  232. package/dist/server/utils.d.ts.map +1 -0
  233. package/dist/token-352SFL4N.js +62 -0
  234. package/dist/token-352SFL4N.js.map +1 -0
  235. package/dist/token-JT637FZG.cjs +64 -0
  236. package/dist/token-JT637FZG.cjs.map +1 -0
  237. package/dist/token-util-75OQWZ4W.js +7 -0
  238. package/dist/token-util-75OQWZ4W.js.map +1 -0
  239. package/dist/token-util-WGALAXWM.cjs +9 -0
  240. package/dist/token-util-WGALAXWM.cjs.map +1 -0
  241. package/package.json +37 -14
  242. package/dist/_tsup-dts-rollup.d.cts +0 -1107
  243. package/dist/_tsup-dts-rollup.d.ts +0 -1107
  244. package/dist/chunk-2SLFAFTR.cjs +0 -148
  245. package/dist/chunk-3CNDE7QY.cjs +0 -308
  246. package/dist/chunk-75ZPJI57.cjs +0 -9
  247. package/dist/chunk-B2PAS2IB.cjs +0 -514
  248. package/dist/chunk-BK4XT6EG.js +0 -270
  249. package/dist/chunk-CCGRCYWJ.cjs +0 -18
  250. package/dist/chunk-CRCR3ZUK.js +0 -142
  251. package/dist/chunk-FRVBFMO2.cjs +0 -128
  252. package/dist/chunk-KOHWJYJT.js +0 -296
  253. package/dist/chunk-LI436ITD.cjs +0 -2042
  254. package/dist/chunk-LZ3VJXSO.cjs +0 -278
  255. package/dist/chunk-MEGCYGBU.js +0 -2039
  256. package/dist/chunk-MLKGABMK.js +0 -7
  257. package/dist/chunk-RHSWAXKB.cjs +0 -118
  258. package/dist/index.d.cts +0 -1
  259. package/dist/server/handlers/a2a.d.cts +0 -6
  260. package/dist/server/handlers/agents.d.cts +0 -6
  261. package/dist/server/handlers/error.d.cts +0 -1
  262. package/dist/server/handlers/legacyWorkflows.d.cts +0 -10
  263. package/dist/server/handlers/logs.d.cts +0 -3
  264. package/dist/server/handlers/memory.d.cts +0 -10
  265. package/dist/server/handlers/network.cjs +0 -22
  266. package/dist/server/handlers/network.d.cts +0 -4
  267. package/dist/server/handlers/network.d.ts +0 -4
  268. package/dist/server/handlers/network.js +0 -1
  269. package/dist/server/handlers/telemetry.d.cts +0 -2
  270. package/dist/server/handlers/tools.d.cts +0 -4
  271. package/dist/server/handlers/utils.d.cts +0 -1
  272. package/dist/server/handlers/vNextNetwork.cjs +0 -218
  273. package/dist/server/handlers/vNextNetwork.d.cts +0 -6
  274. package/dist/server/handlers/vNextNetwork.d.ts +0 -6
  275. package/dist/server/handlers/vNextNetwork.js +0 -211
  276. package/dist/server/handlers/vector.d.cts +0 -6
  277. package/dist/server/handlers/voice.d.cts +0 -4
  278. package/dist/server/handlers/workflows.d.cts +0 -14
  279. package/dist/server/handlers.d.cts +0 -11
@@ -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