@mastra/core 1.0.0-beta.1 → 1.0.0-beta.3

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 (287) hide show
  1. package/CHANGELOG.md +171 -0
  2. package/dist/agent/agent-legacy.d.ts +2 -2
  3. package/dist/agent/agent-legacy.d.ts.map +1 -1
  4. package/dist/agent/agent.d.ts +1 -1
  5. package/dist/agent/agent.d.ts.map +1 -1
  6. package/dist/agent/agent.types.d.ts +3 -2
  7. package/dist/agent/agent.types.d.ts.map +1 -1
  8. package/dist/agent/index.cjs +9 -9
  9. package/dist/agent/index.js +2 -2
  10. package/dist/agent/message-list/index.cjs +3 -3
  11. package/dist/agent/message-list/index.d.ts.map +1 -1
  12. package/dist/agent/message-list/index.js +1 -1
  13. package/dist/agent/message-list/prompt/convert-file.d.ts +1 -1
  14. package/dist/agent/message-list/prompt/convert-file.d.ts.map +1 -1
  15. package/dist/agent/message-list/prompt/download-assets.d.ts.map +1 -1
  16. package/dist/agent/types.d.ts +1 -0
  17. package/dist/agent/types.d.ts.map +1 -1
  18. package/dist/agent/utils.d.ts.map +1 -1
  19. package/dist/agent/workflows/prepare-stream/index.d.ts +2 -1
  20. package/dist/agent/workflows/prepare-stream/index.d.ts.map +1 -1
  21. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts +3 -1
  22. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts.map +1 -1
  23. package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts +2 -1
  24. package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts.map +1 -1
  25. package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts +2 -1
  26. package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts.map +1 -1
  27. package/dist/agent/workflows/prepare-stream/stream-step.d.ts +3 -1
  28. package/dist/agent/workflows/prepare-stream/stream-step.d.ts.map +1 -1
  29. package/dist/chunk-3PSWNGBF.js +3 -0
  30. package/dist/{chunk-ZV5CC35D.js.map → chunk-3PSWNGBF.js.map} +1 -1
  31. package/dist/{chunk-IQO7ANVS.cjs → chunk-3VOUB4ZU.cjs} +10 -9
  32. package/dist/chunk-3VOUB4ZU.cjs.map +1 -0
  33. package/dist/{chunk-H6CZGPZD.js → chunk-4DWZ4Z6H.js} +157 -24
  34. package/dist/chunk-4DWZ4Z6H.js.map +1 -0
  35. package/dist/{chunk-ET6UOTTU.cjs → chunk-4IKJAKCD.cjs} +40 -4
  36. package/dist/chunk-4IKJAKCD.cjs.map +1 -0
  37. package/dist/{chunk-MA7TEM62.cjs → chunk-4RSHBKDJ.cjs} +244 -4
  38. package/dist/chunk-4RSHBKDJ.cjs.map +1 -0
  39. package/dist/{chunk-MV7KHWUT.js → chunk-5CWWU22H.js} +25 -4
  40. package/dist/chunk-5CWWU22H.js.map +1 -0
  41. package/dist/{chunk-JV2KH24V.js → chunk-BAMR7HKO.js} +18 -13
  42. package/dist/chunk-BAMR7HKO.js.map +1 -0
  43. package/dist/{chunk-JUBFO5J3.js → chunk-CKGIPST2.js} +829 -92
  44. package/dist/chunk-CKGIPST2.js.map +1 -0
  45. package/dist/{chunk-4CDL2QJT.js → chunk-D6EDHNGV.js} +53 -16
  46. package/dist/chunk-D6EDHNGV.js.map +1 -0
  47. package/dist/{chunk-CD56CXVE.cjs → chunk-EZVRSZMK.cjs} +13 -12
  48. package/dist/chunk-EZVRSZMK.cjs.map +1 -0
  49. package/dist/{chunk-ECFXGXWO.cjs → chunk-G36A2JRR.cjs} +18 -13
  50. package/dist/chunk-G36A2JRR.cjs.map +1 -0
  51. package/dist/{chunk-VOQ3ULMT.js → chunk-G3OOCXAI.js} +243 -3
  52. package/dist/chunk-G3OOCXAI.js.map +1 -0
  53. package/dist/{chunk-I4CXL4SR.js → chunk-GRGPQ32U.js} +5 -4
  54. package/dist/chunk-GRGPQ32U.js.map +1 -0
  55. package/dist/{chunk-WM6CK2F3.cjs → chunk-HBJPYQRN.cjs} +57 -19
  56. package/dist/chunk-HBJPYQRN.cjs.map +1 -0
  57. package/dist/{chunk-GGYKYORQ.cjs → chunk-JTXVR2RA.cjs} +27 -6
  58. package/dist/chunk-JTXVR2RA.cjs.map +1 -0
  59. package/dist/{chunk-XEVG546F.js → chunk-JXESKY4A.js} +3 -3
  60. package/dist/{chunk-XEVG546F.js.map → chunk-JXESKY4A.js.map} +1 -1
  61. package/dist/{chunk-7AHYOMHJ.js → chunk-KEURQGCQ.js} +40 -5
  62. package/dist/chunk-KEURQGCQ.js.map +1 -0
  63. package/dist/{chunk-JPGVRWWL.js → chunk-KOSW5PP5.js} +8 -2
  64. package/dist/chunk-KOSW5PP5.js.map +1 -0
  65. package/dist/chunk-MCUX2D5Q.js +420 -0
  66. package/dist/chunk-MCUX2D5Q.js.map +1 -0
  67. package/dist/chunk-N4SJ4YX7.cjs +424 -0
  68. package/dist/chunk-N4SJ4YX7.cjs.map +1 -0
  69. package/dist/{chunk-VOY2RXOC.cjs → chunk-O6NA3Z43.cjs} +6 -6
  70. package/dist/{chunk-VOY2RXOC.cjs.map → chunk-O6NA3Z43.cjs.map} +1 -1
  71. package/dist/{chunk-CINNK34N.js → chunk-OQF4H5Y2.js} +6 -5
  72. package/dist/chunk-OQF4H5Y2.js.map +1 -0
  73. package/dist/{chunk-MSWTA73A.cjs → chunk-OWX2PUFH.cjs} +866 -126
  74. package/dist/chunk-OWX2PUFH.cjs.map +1 -0
  75. package/dist/chunk-PE3V7GUL.cjs +4 -0
  76. package/dist/{chunk-LJFJTTZQ.cjs.map → chunk-PE3V7GUL.cjs.map} +1 -1
  77. package/dist/{chunk-HDJFSJCK.js → chunk-T3WZCEC4.js} +4 -3
  78. package/dist/chunk-T3WZCEC4.js.map +1 -0
  79. package/dist/{chunk-W7UH2PWL.js → chunk-VU6DVS7J.js} +179 -282
  80. package/dist/chunk-VU6DVS7J.js.map +1 -0
  81. package/dist/{chunk-DNEURYF3.cjs → chunk-VZGBVYXA.cjs} +175 -42
  82. package/dist/chunk-VZGBVYXA.cjs.map +1 -0
  83. package/dist/{chunk-2ZVKF4HP.cjs → chunk-XRIVPHXV.cjs} +184 -285
  84. package/dist/chunk-XRIVPHXV.cjs.map +1 -0
  85. package/dist/{chunk-LWBQ4P4N.cjs → chunk-YQ7NLZZ3.cjs} +54 -53
  86. package/dist/chunk-YQ7NLZZ3.cjs.map +1 -0
  87. package/dist/{chunk-CB575O6L.cjs → chunk-ZPMFINU2.cjs} +8 -2
  88. package/dist/chunk-ZPMFINU2.cjs.map +1 -0
  89. package/dist/evals/base.d.ts.map +1 -1
  90. package/dist/evals/index.cjs +4 -4
  91. package/dist/evals/index.js +1 -1
  92. package/dist/evals/scoreTraces/index.cjs +5 -4
  93. package/dist/evals/scoreTraces/index.cjs.map +1 -1
  94. package/dist/evals/scoreTraces/index.js +3 -2
  95. package/dist/evals/scoreTraces/index.js.map +1 -1
  96. package/dist/evals/scoreTraces/scoreTracesWorkflow.d.ts.map +1 -1
  97. package/dist/index.cjs +2 -2
  98. package/dist/index.js +1 -1
  99. package/dist/integration/index.cjs +2 -2
  100. package/dist/integration/index.js +1 -1
  101. package/dist/llm/index.cjs +26 -10
  102. package/dist/llm/index.d.ts +1 -0
  103. package/dist/llm/index.d.ts.map +1 -1
  104. package/dist/llm/index.js +5 -1
  105. package/dist/llm/model/aisdk/v5/model.d.ts +47 -0
  106. package/dist/llm/model/aisdk/v5/model.d.ts.map +1 -0
  107. package/dist/llm/model/gateways/base.d.ts +8 -0
  108. package/dist/llm/model/gateways/base.d.ts.map +1 -1
  109. package/dist/llm/model/gateways/models-dev.d.ts +1 -0
  110. package/dist/llm/model/gateways/models-dev.d.ts.map +1 -1
  111. package/dist/llm/model/gateways/netlify.d.ts +2 -1
  112. package/dist/llm/model/gateways/netlify.d.ts.map +1 -1
  113. package/dist/llm/model/is-v2-model.d.ts +3 -0
  114. package/dist/llm/model/is-v2-model.d.ts.map +1 -0
  115. package/dist/llm/model/model-method-from-agent.d.ts +4 -0
  116. package/dist/llm/model/model-method-from-agent.d.ts.map +1 -0
  117. package/dist/llm/model/model.loop.d.ts +2 -2
  118. package/dist/llm/model/model.loop.d.ts.map +1 -1
  119. package/dist/llm/model/model.loop.types.d.ts +2 -0
  120. package/dist/llm/model/model.loop.types.d.ts.map +1 -1
  121. package/dist/llm/model/provider-registry.d.ts +11 -1
  122. package/dist/llm/model/provider-registry.d.ts.map +1 -1
  123. package/dist/llm/model/provider-types.generated.d.ts +56 -7
  124. package/dist/llm/model/registry-generator.d.ts.map +1 -1
  125. package/dist/llm/model/resolve-model.d.ts +1 -1
  126. package/dist/llm/model/resolve-model.d.ts.map +1 -1
  127. package/dist/llm/model/router.d.ts +12 -5
  128. package/dist/llm/model/router.d.ts.map +1 -1
  129. package/dist/llm/model/shared.types.d.ts +10 -4
  130. package/dist/llm/model/shared.types.d.ts.map +1 -1
  131. package/dist/loop/index.cjs +2 -2
  132. package/dist/loop/index.js +1 -1
  133. package/dist/loop/network/index.d.ts.map +1 -1
  134. package/dist/loop/test-utils/MastraLanguageModelV2Mock.d.ts +37 -0
  135. package/dist/loop/test-utils/MastraLanguageModelV2Mock.d.ts.map +1 -0
  136. package/dist/loop/test-utils/fullStream.d.ts.map +1 -1
  137. package/dist/loop/test-utils/generateText.d.ts.map +1 -1
  138. package/dist/loop/test-utils/options.d.ts.map +1 -1
  139. package/dist/loop/test-utils/resultObject.d.ts.map +1 -1
  140. package/dist/loop/test-utils/streamObject.d.ts.map +1 -1
  141. package/dist/loop/test-utils/textStream.d.ts.map +1 -1
  142. package/dist/loop/test-utils/toUIMessageStream.d.ts.map +1 -1
  143. package/dist/loop/test-utils/tools.d.ts.map +1 -1
  144. package/dist/loop/test-utils/utils.d.ts +1 -1
  145. package/dist/loop/test-utils/utils.d.ts.map +1 -1
  146. package/dist/loop/types.d.ts +8 -3
  147. package/dist/loop/types.d.ts.map +1 -1
  148. package/dist/loop/workflows/agentic-execution/index.d.ts +12 -12
  149. package/dist/loop/workflows/agentic-execution/index.d.ts.map +1 -1
  150. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +9 -9
  151. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
  152. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts +4 -4
  153. package/dist/loop/workflows/agentic-loop/index.d.ts +13 -12
  154. package/dist/loop/workflows/agentic-loop/index.d.ts.map +1 -1
  155. package/dist/loop/workflows/run-state.d.ts +2 -2
  156. package/dist/loop/workflows/run-state.d.ts.map +1 -1
  157. package/dist/loop/workflows/schema.d.ts +4 -4
  158. package/dist/loop/workflows/stream.d.ts.map +1 -1
  159. package/dist/mastra/index.cjs +2 -2
  160. package/dist/mastra/index.d.ts +127 -3
  161. package/dist/mastra/index.d.ts.map +1 -1
  162. package/dist/mastra/index.js +1 -1
  163. package/dist/memory/index.cjs +8 -8
  164. package/dist/memory/index.js +4 -4
  165. package/dist/models-dev-GCVENVWA.js +3 -0
  166. package/dist/{models-dev-DNBKXHT4.js.map → models-dev-GCVENVWA.js.map} +1 -1
  167. package/dist/models-dev-TIBJR6IG.cjs +12 -0
  168. package/dist/{models-dev-YBEEQIX6.cjs.map → models-dev-TIBJR6IG.cjs.map} +1 -1
  169. package/dist/netlify-NTSNNT6F.cjs +12 -0
  170. package/dist/{netlify-GWNGSIRZ.cjs.map → netlify-NTSNNT6F.cjs.map} +1 -1
  171. package/dist/netlify-O5NJW7CF.js +3 -0
  172. package/dist/{netlify-7G2L5VSH.js.map → netlify-O5NJW7CF.js.map} +1 -1
  173. package/dist/processors/index.cjs +11 -11
  174. package/dist/processors/index.js +1 -1
  175. package/dist/provider-registry-74GMFZKT.js +3 -0
  176. package/dist/provider-registry-74GMFZKT.js.map +1 -0
  177. package/dist/provider-registry-BZP3DIIV.cjs +40 -0
  178. package/dist/provider-registry-BZP3DIIV.cjs.map +1 -0
  179. package/dist/provider-registry.json +140 -18
  180. package/dist/{registry-generator-MK63POJO.cjs → registry-generator-JPCV47SC.cjs} +6 -4
  181. package/dist/registry-generator-JPCV47SC.cjs.map +1 -0
  182. package/dist/{registry-generator-H4YNODDH.js → registry-generator-XD4FPZTU.js} +6 -4
  183. package/dist/registry-generator-XD4FPZTU.js.map +1 -0
  184. package/dist/relevance/index.cjs +2 -2
  185. package/dist/relevance/index.js +1 -1
  186. package/dist/server/index.cjs +2 -1
  187. package/dist/server/index.cjs.map +1 -1
  188. package/dist/server/index.d.ts +4 -0
  189. package/dist/server/index.d.ts.map +1 -1
  190. package/dist/server/index.js +2 -1
  191. package/dist/server/index.js.map +1 -1
  192. package/dist/storage/domains/workflows/inmemory.d.ts +1 -1
  193. package/dist/storage/domains/workflows/inmemory.d.ts.map +1 -1
  194. package/dist/storage/index.cjs +29 -29
  195. package/dist/storage/index.js +1 -1
  196. package/dist/storage/types.d.ts +2 -1
  197. package/dist/storage/types.d.ts.map +1 -1
  198. package/dist/stream/RunOutput.d.ts +1 -1
  199. package/dist/stream/RunOutput.d.ts.map +1 -1
  200. package/dist/stream/aisdk/v5/execute.d.ts +6 -3
  201. package/dist/stream/aisdk/v5/execute.d.ts.map +1 -1
  202. package/dist/stream/aisdk/v5/output.d.ts.map +1 -1
  203. package/dist/stream/base/input.d.ts +1 -1
  204. package/dist/stream/base/output.d.ts.map +1 -1
  205. package/dist/stream/index.cjs +11 -11
  206. package/dist/stream/index.js +2 -2
  207. package/dist/stream/types.d.ts +4 -3
  208. package/dist/stream/types.d.ts.map +1 -1
  209. package/dist/test-utils/llm-mock.cjs +2 -2
  210. package/dist/test-utils/llm-mock.js +1 -1
  211. package/dist/tools/index.cjs +4 -4
  212. package/dist/tools/index.js +1 -1
  213. package/dist/tools/is-vercel-tool.cjs +2 -2
  214. package/dist/tools/is-vercel-tool.js +1 -1
  215. package/dist/tools/tool-builder/builder.d.ts.map +1 -1
  216. package/dist/tools/tool.d.ts.map +1 -1
  217. package/dist/tools/types.d.ts +1 -0
  218. package/dist/tools/types.d.ts.map +1 -1
  219. package/dist/tools/validation.d.ts +12 -0
  220. package/dist/tools/validation.d.ts.map +1 -1
  221. package/dist/utils.cjs +25 -21
  222. package/dist/utils.d.ts +4 -1
  223. package/dist/utils.d.ts.map +1 -1
  224. package/dist/utils.js +1 -1
  225. package/dist/workflows/default.d.ts +24 -8
  226. package/dist/workflows/default.d.ts.map +1 -1
  227. package/dist/workflows/evented/execution-engine.d.ts +3 -1
  228. package/dist/workflows/evented/execution-engine.d.ts.map +1 -1
  229. package/dist/workflows/evented/index.cjs +10 -10
  230. package/dist/workflows/evented/index.js +1 -1
  231. package/dist/workflows/evented/step-executor.d.ts.map +1 -1
  232. package/dist/workflows/evented/workflow-event-processor/index.d.ts +5 -4
  233. package/dist/workflows/evented/workflow-event-processor/index.d.ts.map +1 -1
  234. package/dist/workflows/evented/workflow-event-processor/loop.d.ts +1 -1
  235. package/dist/workflows/evented/workflow-event-processor/loop.d.ts.map +1 -1
  236. package/dist/workflows/evented/workflow-event-processor/parallel.d.ts +2 -2
  237. package/dist/workflows/evented/workflow-event-processor/parallel.d.ts.map +1 -1
  238. package/dist/workflows/evented/workflow-event-processor/sleep.d.ts +2 -2
  239. package/dist/workflows/evented/workflow-event-processor/sleep.d.ts.map +1 -1
  240. package/dist/workflows/evented/workflow.d.ts +2 -1
  241. package/dist/workflows/evented/workflow.d.ts.map +1 -1
  242. package/dist/workflows/execution-engine.d.ts +4 -2
  243. package/dist/workflows/execution-engine.d.ts.map +1 -1
  244. package/dist/workflows/index.cjs +28 -16
  245. package/dist/workflows/index.js +1 -1
  246. package/dist/workflows/step.d.ts +2 -1
  247. package/dist/workflows/step.d.ts.map +1 -1
  248. package/dist/workflows/types.d.ts +64 -7
  249. package/dist/workflows/types.d.ts.map +1 -1
  250. package/dist/workflows/utils.d.ts +20 -0
  251. package/dist/workflows/utils.d.ts.map +1 -1
  252. package/dist/workflows/workflow.d.ts +109 -40
  253. package/dist/workflows/workflow.d.ts.map +1 -1
  254. package/package.json +12 -20
  255. package/src/llm/model/provider-types.generated.d.ts +56 -7
  256. package/dist/chunk-2ZVKF4HP.cjs.map +0 -1
  257. package/dist/chunk-4CDL2QJT.js.map +0 -1
  258. package/dist/chunk-7AHYOMHJ.js.map +0 -1
  259. package/dist/chunk-CB575O6L.cjs.map +0 -1
  260. package/dist/chunk-CD56CXVE.cjs.map +0 -1
  261. package/dist/chunk-CINNK34N.js.map +0 -1
  262. package/dist/chunk-DNEURYF3.cjs.map +0 -1
  263. package/dist/chunk-ECFXGXWO.cjs.map +0 -1
  264. package/dist/chunk-ET6UOTTU.cjs.map +0 -1
  265. package/dist/chunk-GGYKYORQ.cjs.map +0 -1
  266. package/dist/chunk-H6CZGPZD.js.map +0 -1
  267. package/dist/chunk-HDJFSJCK.js.map +0 -1
  268. package/dist/chunk-I4CXL4SR.js.map +0 -1
  269. package/dist/chunk-IQO7ANVS.cjs.map +0 -1
  270. package/dist/chunk-JPGVRWWL.js.map +0 -1
  271. package/dist/chunk-JUBFO5J3.js.map +0 -1
  272. package/dist/chunk-JV2KH24V.js.map +0 -1
  273. package/dist/chunk-LJFJTTZQ.cjs +0 -4
  274. package/dist/chunk-LWBQ4P4N.cjs.map +0 -1
  275. package/dist/chunk-MA7TEM62.cjs.map +0 -1
  276. package/dist/chunk-MSWTA73A.cjs.map +0 -1
  277. package/dist/chunk-MV7KHWUT.js.map +0 -1
  278. package/dist/chunk-VOQ3ULMT.js.map +0 -1
  279. package/dist/chunk-W7UH2PWL.js.map +0 -1
  280. package/dist/chunk-WM6CK2F3.cjs.map +0 -1
  281. package/dist/chunk-ZV5CC35D.js +0 -3
  282. package/dist/models-dev-DNBKXHT4.js +0 -3
  283. package/dist/models-dev-YBEEQIX6.cjs +0 -12
  284. package/dist/netlify-7G2L5VSH.js +0 -3
  285. package/dist/netlify-GWNGSIRZ.cjs +0 -12
  286. package/dist/registry-generator-H4YNODDH.js.map +0 -1
  287. package/dist/registry-generator-MK63POJO.cjs.map +0 -1
@@ -1,13 +1,9 @@
1
- import { ModelsDevGateway, parseModelRouterId } from './chunk-HDJFSJCK.js';
2
- import { NetlifyGateway } from './chunk-I4CXL4SR.js';
3
- import { createOpenAICompatible, createOpenAI, createGoogleGenerativeAI } from './chunk-JPGVRWWL.js';
4
- import { MastraError } from './chunk-JJ5O45LH.js';
5
- import { RequestContext } from './chunk-GRBGQ2GE.js';
6
1
  import fs from 'fs';
7
2
  import { createRequire } from 'module';
8
3
  import os from 'os';
9
4
  import path from 'path';
10
- import { createHash } from 'crypto';
5
+
6
+ // src/llm/model/provider-registry.ts
11
7
 
12
8
  // src/llm/model/provider-registry.json
13
9
  var provider_registry_default = {
@@ -639,7 +635,12 @@ var provider_registry_default = {
639
635
  apiKeyEnvVar: "BASETEN_API_KEY",
640
636
  apiKeyHeader: "Authorization",
641
637
  name: "Baseten",
642
- models: ["Qwen/Qwen3-Coder-480B-A35B-Instruct", "moonshotai/Kimi-K2-Instruct-0905", "zai-org/GLM-4.6"],
638
+ models: [
639
+ "Qwen/Qwen3-Coder-480B-A35B-Instruct",
640
+ "moonshotai/Kimi-K2-Instruct-0905",
641
+ "moonshotai/Kimi-K2-Thinking",
642
+ "zai-org/GLM-4.6"
643
+ ],
643
644
  docUrl: "https://docs.baseten.co/development/model-apis/overview",
644
645
  gateway: "models.dev"
645
646
  },
@@ -673,7 +674,10 @@ var provider_registry_default = {
673
674
  apiKeyHeader: "Authorization",
674
675
  name: "OpenCode Zen",
675
676
  models: [
676
- "an-gd4",
677
+ "alpha-doubao-seed-code",
678
+ "alpha-gd4",
679
+ "alpha-kimi-k2-thinking",
680
+ "alpha-minimax-m2",
677
681
  "big-pickle",
678
682
  "claude-3-5-haiku",
679
683
  "claude-haiku-4-5",
@@ -683,9 +687,11 @@ var provider_registry_default = {
683
687
  "glm-4.6",
684
688
  "gpt-5",
685
689
  "gpt-5-codex",
690
+ "gpt-5-nano",
691
+ "gpt-5.1",
692
+ "gpt-5.1-codex",
686
693
  "grok-code",
687
694
  "kimi-k2",
688
- "minimax-m2",
689
695
  "qwen3-coder"
690
696
  ],
691
697
  docUrl: "https://opencode.ai/docs/zen",
@@ -715,6 +721,15 @@ var provider_registry_default = {
715
721
  docUrl: "https://fastrouter.ai/models",
716
722
  gateway: "models.dev"
717
723
  },
724
+ minimax: {
725
+ url: "https://api.minimax.io/anthropic/v1",
726
+ apiKeyEnvVar: "MINIMAX_API_KEY",
727
+ apiKeyHeader: "Authorization",
728
+ name: "Minimax",
729
+ models: ["MiniMax-M2"],
730
+ docUrl: "https://platform.minimax.io/docs/guides/quickstart",
731
+ gateway: "models.dev"
732
+ },
718
733
  google: {
719
734
  apiKeyEnvVar: "GOOGLE_GENERATIVE_AI_API_KEY",
720
735
  name: "Google",
@@ -738,6 +753,7 @@ var provider_registry_default = {
738
753
  "gemini-2.5-pro-preview-05-06",
739
754
  "gemini-2.5-pro-preview-06-05",
740
755
  "gemini-2.5-pro-preview-tts",
756
+ "gemini-3-pro-preview",
741
757
  "gemini-embedding-001",
742
758
  "gemini-flash-latest",
743
759
  "gemini-flash-lite-latest",
@@ -798,6 +814,10 @@ var provider_registry_default = {
798
814
  "gpt-5-mini",
799
815
  "gpt-5-nano",
800
816
  "gpt-5-pro",
817
+ "gpt-5.1",
818
+ "gpt-5.1-chat-latest",
819
+ "gpt-5.1-codex",
820
+ "gpt-5.1-codex-mini",
801
821
  "o1",
802
822
  "o1-mini",
803
823
  "o1-preview",
@@ -872,13 +892,14 @@ var provider_registry_default = {
872
892
  "google/gemma-3-27b-it",
873
893
  "google/gemma-3n-e4b-it",
874
894
  "google/gemma-3n-e4b-it:free",
895
+ "kwaipilot/kat-coder-pro:free",
875
896
  "meta-llama/llama-3.2-11b-vision-instruct",
876
897
  "meta-llama/llama-3.3-70b-instruct:free",
877
898
  "meta-llama/llama-4-scout:free",
878
899
  "microsoft/mai-ds-r1:free",
879
900
  "minimax/minimax-01",
880
901
  "minimax/minimax-m1",
881
- "minimax/minimax-m2:free",
902
+ "minimax/minimax-m2",
882
903
  "mistralai/codestral-2508",
883
904
  "mistralai/devstral-medium-2507",
884
905
  "mistralai/devstral-small-2505",
@@ -911,6 +932,10 @@ var provider_registry_default = {
911
932
  "openai/gpt-5-mini",
912
933
  "openai/gpt-5-nano",
913
934
  "openai/gpt-5-pro",
935
+ "openai/gpt-5.1",
936
+ "openai/gpt-5.1-chat",
937
+ "openai/gpt-5.1-codex",
938
+ "openai/gpt-5.1-codex-mini",
914
939
  "openai/gpt-oss-120b",
915
940
  "openai/gpt-oss-120b:exacto",
916
941
  "openai/gpt-oss-20b",
@@ -919,6 +944,8 @@ var provider_registry_default = {
919
944
  "openrouter/horizon-alpha",
920
945
  "openrouter/horizon-beta",
921
946
  "openrouter/polaris-alpha",
947
+ "openrouter/sherlock-dash-alpha",
948
+ "openrouter/sherlock-think-alpha",
922
949
  "openrouter/sonoma-dusk-alpha",
923
950
  "openrouter/sonoma-sky-alpha",
924
951
  "qwen/qwen-2.5-coder-32b-instruct",
@@ -977,7 +1004,10 @@ var provider_registry_default = {
977
1004
  "inclusionai/lint-1t",
978
1005
  "inclusionai/ring-1t",
979
1006
  "kuaishou/kat-coder-pro-v1",
1007
+ "minimax/minimax-m2",
980
1008
  "moonshotai/kimi-k2-0905",
1009
+ "moonshotai/kimi-k2-thinking",
1010
+ "moonshotai/kimi-k2-thinking-turbo",
981
1011
  "openai/gpt-5",
982
1012
  "openai/gpt-5-codex",
983
1013
  "qwen/qwen3-coder-plus",
@@ -991,6 +1021,31 @@ var provider_registry_default = {
991
1021
  docUrl: "https://docs.zenmux.ai",
992
1022
  gateway: "models.dev"
993
1023
  },
1024
+ ovhcloud: {
1025
+ url: "https://oai.endpoints.kepler.ai.cloud.ovh.net/v1",
1026
+ apiKeyEnvVar: "OVHCLOUD_API_KEY",
1027
+ apiKeyHeader: "Authorization",
1028
+ name: "OVHcloud AI Endpoints",
1029
+ models: [
1030
+ "deepseek-r1-distill-llama-70b",
1031
+ "gpt-oss-120b",
1032
+ "gpt-oss-20b",
1033
+ "llama-3.1-8b-instruct",
1034
+ "llava-next-mistral-7b",
1035
+ "meta-llama-3_1-70b-instruct",
1036
+ "meta-llama-3_3-70b-instruct",
1037
+ "mistral-7b-instruct-v0.3",
1038
+ "mistral-nemo-instruct-2407",
1039
+ "mistral-small-3.2-24b-instruct-2506",
1040
+ "mixtral-8x7b-instruct-v0.1",
1041
+ "qwen2.5-coder-32b-instruct",
1042
+ "qwen2.5-vl-72b-instruct",
1043
+ "qwen3-32b",
1044
+ "qwen3-coder-30b-a3b-instruct"
1045
+ ],
1046
+ docUrl: "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog//",
1047
+ gateway: "models.dev"
1048
+ },
994
1049
  iflowcn: {
995
1050
  url: "https://apis.iflow.cn/v1",
996
1051
  apiKeyEnvVar: "IFLOW_API_KEY",
@@ -1004,6 +1059,7 @@ var provider_registry_default = {
1004
1059
  "glm-4.6",
1005
1060
  "kimi-k2",
1006
1061
  "kimi-k2-0905",
1062
+ "minimax-m2",
1007
1063
  "qwen3-235b",
1008
1064
  "qwen3-235b-a22b-instruct",
1009
1065
  "qwen3-235b-a22b-thinking-2507",
@@ -1130,9 +1186,11 @@ var provider_registry_default = {
1130
1186
  name: "Requesty",
1131
1187
  models: [
1132
1188
  "anthropic/claude-3-7-sonnet",
1133
- "anthropic/claude-4-sonnet-20250522",
1189
+ "anthropic/claude-haiku-4-5",
1134
1190
  "anthropic/claude-opus-4",
1135
- "anthropic/claude-opus-4-1-20250805",
1191
+ "anthropic/claude-opus-4-1",
1192
+ "anthropic/claude-sonnet-4",
1193
+ "anthropic/claude-sonnet-4-5",
1136
1194
  "google/gemini-2.5-flash",
1137
1195
  "google/gemini-2.5-pro",
1138
1196
  "openai/gpt-4.1",
@@ -1141,7 +1199,9 @@ var provider_registry_default = {
1141
1199
  "openai/gpt-5",
1142
1200
  "openai/gpt-5-mini",
1143
1201
  "openai/gpt-5-nano",
1144
- "openai/o4-mini"
1202
+ "openai/o4-mini",
1203
+ "xai/grok-4",
1204
+ "xai/grok-4-fast"
1145
1205
  ],
1146
1206
  docUrl: "https://requesty.ai/solution/llm-routing/models",
1147
1207
  gateway: "models.dev"
@@ -1285,9 +1345,7 @@ var provider_registry_default = {
1285
1345
  gateway: "netlify",
1286
1346
  models: [
1287
1347
  "anthropic/claude-3-5-haiku-20241022",
1288
- "anthropic/claude-3-5-haiku-latest",
1289
1348
  "anthropic/claude-3-7-sonnet-20250219",
1290
- "anthropic/claude-3-7-sonnet-latest",
1291
1349
  "anthropic/claude-3-haiku-20240307",
1292
1350
  "anthropic/claude-haiku-4-5-20251001",
1293
1351
  "anthropic/claude-opus-4-1-20250805",
@@ -1297,11 +1355,13 @@ var provider_registry_default = {
1297
1355
  "gemini/gemini-2.0-flash",
1298
1356
  "gemini/gemini-2.0-flash-lite",
1299
1357
  "gemini/gemini-2.5-flash",
1358
+ "gemini/gemini-2.5-flash-image",
1300
1359
  "gemini/gemini-2.5-flash-image-preview",
1301
1360
  "gemini/gemini-2.5-flash-lite",
1302
1361
  "gemini/gemini-2.5-flash-lite-preview-09-2025",
1303
1362
  "gemini/gemini-2.5-flash-preview-09-2025",
1304
1363
  "gemini/gemini-2.5-pro",
1364
+ "gemini/gemini-3-pro-preview",
1305
1365
  "gemini/gemini-flash-latest",
1306
1366
  "gemini/gemini-flash-lite-latest",
1307
1367
  "openai/codex-mini-latest",
@@ -1311,10 +1371,15 @@ var provider_registry_default = {
1311
1371
  "openai/gpt-4o",
1312
1372
  "openai/gpt-4o-mini",
1313
1373
  "openai/gpt-5",
1374
+ "openai/gpt-5-2025-08-07",
1314
1375
  "openai/gpt-5-codex",
1315
1376
  "openai/gpt-5-mini",
1377
+ "openai/gpt-5-mini-2025-08-07",
1316
1378
  "openai/gpt-5-nano",
1317
1379
  "openai/gpt-5-pro",
1380
+ "openai/gpt-5.1",
1381
+ "openai/gpt-5.1-2025-11-13",
1382
+ "openai/gpt-5.1-codex",
1318
1383
  "openai/o3",
1319
1384
  "openai/o3-mini",
1320
1385
  "openai/o4-mini"
@@ -1788,7 +1853,12 @@ var provider_registry_default = {
1788
1853
  "moonshotai/Kimi-K2-Instruct",
1789
1854
  "openai/gpt-oss-120b"
1790
1855
  ],
1791
- baseten: ["Qwen/Qwen3-Coder-480B-A35B-Instruct", "moonshotai/Kimi-K2-Instruct-0905", "zai-org/GLM-4.6"],
1856
+ baseten: [
1857
+ "Qwen/Qwen3-Coder-480B-A35B-Instruct",
1858
+ "moonshotai/Kimi-K2-Instruct-0905",
1859
+ "moonshotai/Kimi-K2-Thinking",
1860
+ "zai-org/GLM-4.6"
1861
+ ],
1792
1862
  huggingface: [
1793
1863
  "MiniMaxAI/MiniMax-M2",
1794
1864
  "Qwen/Qwen3-235B-A22B-Thinking-2507",
@@ -1806,7 +1876,10 @@ var provider_registry_default = {
1806
1876
  "zai-org/GLM-4.6"
1807
1877
  ],
1808
1878
  opencode: [
1809
- "an-gd4",
1879
+ "alpha-doubao-seed-code",
1880
+ "alpha-gd4",
1881
+ "alpha-kimi-k2-thinking",
1882
+ "alpha-minimax-m2",
1810
1883
  "big-pickle",
1811
1884
  "claude-3-5-haiku",
1812
1885
  "claude-haiku-4-5",
@@ -1816,9 +1889,11 @@ var provider_registry_default = {
1816
1889
  "glm-4.6",
1817
1890
  "gpt-5",
1818
1891
  "gpt-5-codex",
1892
+ "gpt-5-nano",
1893
+ "gpt-5.1",
1894
+ "gpt-5.1-codex",
1819
1895
  "grok-code",
1820
1896
  "kimi-k2",
1821
- "minimax-m2",
1822
1897
  "qwen3-coder"
1823
1898
  ],
1824
1899
  fastrouter: [
@@ -1837,6 +1912,7 @@ var provider_registry_default = {
1837
1912
  "qwen/qwen3-coder",
1838
1913
  "x-ai/grok-4"
1839
1914
  ],
1915
+ minimax: ["MiniMax-M2"],
1840
1916
  google: [
1841
1917
  "gemini-1.5-flash",
1842
1918
  "gemini-1.5-flash-8b",
@@ -1857,6 +1933,7 @@ var provider_registry_default = {
1857
1933
  "gemini-2.5-pro-preview-05-06",
1858
1934
  "gemini-2.5-pro-preview-06-05",
1859
1935
  "gemini-2.5-pro-preview-tts",
1936
+ "gemini-3-pro-preview",
1860
1937
  "gemini-embedding-001",
1861
1938
  "gemini-flash-latest",
1862
1939
  "gemini-flash-lite-latest",
@@ -1895,6 +1972,10 @@ var provider_registry_default = {
1895
1972
  "gpt-5-mini",
1896
1973
  "gpt-5-nano",
1897
1974
  "gpt-5-pro",
1975
+ "gpt-5.1",
1976
+ "gpt-5.1-chat-latest",
1977
+ "gpt-5.1-codex",
1978
+ "gpt-5.1-codex-mini",
1898
1979
  "o1",
1899
1980
  "o1-mini",
1900
1981
  "o1-preview",
@@ -1946,13 +2027,14 @@ var provider_registry_default = {
1946
2027
  "google/gemma-3-27b-it",
1947
2028
  "google/gemma-3n-e4b-it",
1948
2029
  "google/gemma-3n-e4b-it:free",
2030
+ "kwaipilot/kat-coder-pro:free",
1949
2031
  "meta-llama/llama-3.2-11b-vision-instruct",
1950
2032
  "meta-llama/llama-3.3-70b-instruct:free",
1951
2033
  "meta-llama/llama-4-scout:free",
1952
2034
  "microsoft/mai-ds-r1:free",
1953
2035
  "minimax/minimax-01",
1954
2036
  "minimax/minimax-m1",
1955
- "minimax/minimax-m2:free",
2037
+ "minimax/minimax-m2",
1956
2038
  "mistralai/codestral-2508",
1957
2039
  "mistralai/devstral-medium-2507",
1958
2040
  "mistralai/devstral-small-2505",
@@ -1985,6 +2067,10 @@ var provider_registry_default = {
1985
2067
  "openai/gpt-5-mini",
1986
2068
  "openai/gpt-5-nano",
1987
2069
  "openai/gpt-5-pro",
2070
+ "openai/gpt-5.1",
2071
+ "openai/gpt-5.1-chat",
2072
+ "openai/gpt-5.1-codex",
2073
+ "openai/gpt-5.1-codex-mini",
1988
2074
  "openai/gpt-oss-120b",
1989
2075
  "openai/gpt-oss-120b:exacto",
1990
2076
  "openai/gpt-oss-20b",
@@ -1993,6 +2079,8 @@ var provider_registry_default = {
1993
2079
  "openrouter/horizon-alpha",
1994
2080
  "openrouter/horizon-beta",
1995
2081
  "openrouter/polaris-alpha",
2082
+ "openrouter/sherlock-dash-alpha",
2083
+ "openrouter/sherlock-think-alpha",
1996
2084
  "openrouter/sonoma-dusk-alpha",
1997
2085
  "openrouter/sonoma-sky-alpha",
1998
2086
  "qwen/qwen-2.5-coder-32b-instruct",
@@ -2043,7 +2131,10 @@ var provider_registry_default = {
2043
2131
  "inclusionai/lint-1t",
2044
2132
  "inclusionai/ring-1t",
2045
2133
  "kuaishou/kat-coder-pro-v1",
2134
+ "minimax/minimax-m2",
2046
2135
  "moonshotai/kimi-k2-0905",
2136
+ "moonshotai/kimi-k2-thinking",
2137
+ "moonshotai/kimi-k2-thinking-turbo",
2047
2138
  "openai/gpt-5",
2048
2139
  "openai/gpt-5-codex",
2049
2140
  "qwen/qwen3-coder-plus",
@@ -2054,6 +2145,23 @@ var provider_registry_default = {
2054
2145
  "z-ai/glm-4.5-air",
2055
2146
  "z-ai/glm-4.6"
2056
2147
  ],
2148
+ ovhcloud: [
2149
+ "deepseek-r1-distill-llama-70b",
2150
+ "gpt-oss-120b",
2151
+ "gpt-oss-20b",
2152
+ "llama-3.1-8b-instruct",
2153
+ "llava-next-mistral-7b",
2154
+ "meta-llama-3_1-70b-instruct",
2155
+ "meta-llama-3_3-70b-instruct",
2156
+ "mistral-7b-instruct-v0.3",
2157
+ "mistral-nemo-instruct-2407",
2158
+ "mistral-small-3.2-24b-instruct-2506",
2159
+ "mixtral-8x7b-instruct-v0.1",
2160
+ "qwen2.5-coder-32b-instruct",
2161
+ "qwen2.5-vl-72b-instruct",
2162
+ "qwen3-32b",
2163
+ "qwen3-coder-30b-a3b-instruct"
2164
+ ],
2057
2165
  iflowcn: [
2058
2166
  "deepseek-r1",
2059
2167
  "deepseek-v3",
@@ -2062,6 +2170,7 @@ var provider_registry_default = {
2062
2170
  "glm-4.6",
2063
2171
  "kimi-k2",
2064
2172
  "kimi-k2-0905",
2173
+ "minimax-m2",
2065
2174
  "qwen3-235b",
2066
2175
  "qwen3-235b-a22b-instruct",
2067
2176
  "qwen3-235b-a22b-thinking-2507",
@@ -2132,9 +2241,11 @@ var provider_registry_default = {
2132
2241
  ],
2133
2242
  requesty: [
2134
2243
  "anthropic/claude-3-7-sonnet",
2135
- "anthropic/claude-4-sonnet-20250522",
2244
+ "anthropic/claude-haiku-4-5",
2136
2245
  "anthropic/claude-opus-4",
2137
- "anthropic/claude-opus-4-1-20250805",
2246
+ "anthropic/claude-opus-4-1",
2247
+ "anthropic/claude-sonnet-4",
2248
+ "anthropic/claude-sonnet-4-5",
2138
2249
  "google/gemini-2.5-flash",
2139
2250
  "google/gemini-2.5-pro",
2140
2251
  "openai/gpt-4.1",
@@ -2143,7 +2254,9 @@ var provider_registry_default = {
2143
2254
  "openai/gpt-5",
2144
2255
  "openai/gpt-5-mini",
2145
2256
  "openai/gpt-5-nano",
2146
- "openai/o4-mini"
2257
+ "openai/o4-mini",
2258
+ "xai/grok-4",
2259
+ "xai/grok-4-fast"
2147
2260
  ],
2148
2261
  morph: ["auto", "morph-v3-fast", "morph-v3-large"],
2149
2262
  lmstudio: ["openai/gpt-oss-20b", "qwen/qwen3-30b-a3b-2507", "qwen/qwen3-coder-30b"],
@@ -2217,9 +2330,7 @@ var provider_registry_default = {
2217
2330
  cerebras: ["gpt-oss-120b", "qwen-3-235b-a22b-instruct-2507", "qwen-3-coder-480b", "zai-glm-4.6"],
2218
2331
  netlify: [
2219
2332
  "anthropic/claude-3-5-haiku-20241022",
2220
- "anthropic/claude-3-5-haiku-latest",
2221
2333
  "anthropic/claude-3-7-sonnet-20250219",
2222
- "anthropic/claude-3-7-sonnet-latest",
2223
2334
  "anthropic/claude-3-haiku-20240307",
2224
2335
  "anthropic/claude-haiku-4-5-20251001",
2225
2336
  "anthropic/claude-opus-4-1-20250805",
@@ -2229,11 +2340,13 @@ var provider_registry_default = {
2229
2340
  "gemini/gemini-2.0-flash",
2230
2341
  "gemini/gemini-2.0-flash-lite",
2231
2342
  "gemini/gemini-2.5-flash",
2343
+ "gemini/gemini-2.5-flash-image",
2232
2344
  "gemini/gemini-2.5-flash-image-preview",
2233
2345
  "gemini/gemini-2.5-flash-lite",
2234
2346
  "gemini/gemini-2.5-flash-lite-preview-09-2025",
2235
2347
  "gemini/gemini-2.5-flash-preview-09-2025",
2236
2348
  "gemini/gemini-2.5-pro",
2349
+ "gemini/gemini-3-pro-preview",
2237
2350
  "gemini/gemini-flash-latest",
2238
2351
  "gemini/gemini-flash-lite-latest",
2239
2352
  "openai/codex-mini-latest",
@@ -2243,10 +2356,15 @@ var provider_registry_default = {
2243
2356
  "openai/gpt-4o",
2244
2357
  "openai/gpt-4o-mini",
2245
2358
  "openai/gpt-5",
2359
+ "openai/gpt-5-2025-08-07",
2246
2360
  "openai/gpt-5-codex",
2247
2361
  "openai/gpt-5-mini",
2362
+ "openai/gpt-5-mini-2025-08-07",
2248
2363
  "openai/gpt-5-nano",
2249
2364
  "openai/gpt-5-pro",
2365
+ "openai/gpt-5.1",
2366
+ "openai/gpt-5.1-2025-11-13",
2367
+ "openai/gpt-5.1-codex",
2250
2368
  "openai/o3",
2251
2369
  "openai/o3-mini",
2252
2370
  "openai/o4-mini"
@@ -2397,7 +2515,7 @@ var PROVIDER_REGISTRY = new Proxy({}, {
2397
2515
  return void 0;
2398
2516
  }
2399
2517
  });
2400
- new Proxy({}, {
2518
+ var PROVIDER_MODELS = new Proxy({}, {
2401
2519
  get(_target, prop) {
2402
2520
  const registry = GatewayRegistry.getInstance();
2403
2521
  const models = registry.getModels();
@@ -2446,12 +2564,26 @@ function getProviderConfig(providerId) {
2446
2564
  const registry = GatewayRegistry.getInstance();
2447
2565
  return registry.getProviderConfig(providerId);
2448
2566
  }
2567
+ function isProviderRegistered(providerId) {
2568
+ const registry = GatewayRegistry.getInstance();
2569
+ return registry.isProviderRegistered(providerId);
2570
+ }
2571
+ function getRegisteredProviders() {
2572
+ const registry = GatewayRegistry.getInstance();
2573
+ const providers = registry.getProviders();
2574
+ return Object.keys(providers);
2575
+ }
2576
+ function isValidModelId(modelId) {
2577
+ const { provider } = parseModelString(modelId);
2578
+ return provider !== null && isProviderRegistered(provider);
2579
+ }
2449
2580
  var GatewayRegistry = class _GatewayRegistry {
2450
2581
  static instance = null;
2451
2582
  lastRefreshTime = null;
2452
2583
  refreshInterval = null;
2453
2584
  isRefreshing = false;
2454
2585
  useDynamicLoading;
2586
+ customGateways = [];
2455
2587
  constructor(options = {}) {
2456
2588
  const isDev2 = process.env.MASTRA_DEV === "true" || process.env.MASTRA_DEV === "1";
2457
2589
  this.useDynamicLoading = options.useDynamicLoading ?? isDev2;
@@ -2465,6 +2597,19 @@ var GatewayRegistry = class _GatewayRegistry {
2465
2597
  }
2466
2598
  return _GatewayRegistry.instance;
2467
2599
  }
2600
+ /**
2601
+ * Register custom gateways for type generation
2602
+ * @param gateways - Array of custom gateway instances
2603
+ */
2604
+ registerCustomGateways(gateways) {
2605
+ this.customGateways = gateways;
2606
+ }
2607
+ /**
2608
+ * Get all registered custom gateways
2609
+ */
2610
+ getCustomGateways() {
2611
+ return this.customGateways;
2612
+ }
2468
2613
  /**
2469
2614
  * Sync providers from all gateways
2470
2615
  * Requires dynamic loading to be enabled (useDynamicLoading=true).
@@ -2480,11 +2625,12 @@ var GatewayRegistry = class _GatewayRegistry {
2480
2625
  }
2481
2626
  this.isRefreshing = true;
2482
2627
  try {
2483
- const { ModelsDevGateway: ModelsDevGateway2 } = await import('./models-dev-DNBKXHT4.js');
2484
- const { NetlifyGateway: NetlifyGateway2 } = await import('./netlify-7G2L5VSH.js');
2485
- const { fetchProvidersFromGateways, writeRegistryFiles } = await import('./registry-generator-H4YNODDH.js');
2486
- const gateways2 = [new ModelsDevGateway2({}), new NetlifyGateway2()];
2487
- const { providers, models } = await fetchProvidersFromGateways(gateways2);
2628
+ const { ModelsDevGateway } = await import('./models-dev-GCVENVWA.js');
2629
+ const { NetlifyGateway } = await import('./netlify-O5NJW7CF.js');
2630
+ const { fetchProvidersFromGateways, writeRegistryFiles } = await import('./registry-generator-XD4FPZTU.js');
2631
+ const defaultGateways = [new ModelsDevGateway({}), new NetlifyGateway()];
2632
+ const gateways = [...defaultGateways, ...this.customGateways];
2633
+ const { providers, models } = await fetchProvidersFromGateways(gateways);
2488
2634
  const packageRoot = getPackageRoot();
2489
2635
  try {
2490
2636
  fs.mkdirSync(CACHE_DIR(), { recursive: true });
@@ -2597,255 +2743,6 @@ if (autoRefreshEnabled) {
2597
2743
  GatewayRegistry.getInstance({ useDynamicLoading: isDev }).startAutoRefresh();
2598
2744
  }
2599
2745
 
2600
- // src/llm/model/gateways/index.ts
2601
- function findGatewayForModel(gatewayId, gateways2) {
2602
- const prefixedGateway = gateways2.find((g) => g.prefix && gatewayId.startsWith(`${g.prefix}/`));
2603
- if (prefixedGateway) {
2604
- return prefixedGateway;
2605
- }
2606
- const unprefixedGateways = gateways2.filter((g) => !g.prefix);
2607
- for (const gateway of unprefixedGateways) {
2608
- return gateway;
2609
- }
2610
- throw new MastraError({
2611
- id: "MODEL_ROUTER_NO_GATEWAY_FOUND",
2612
- category: "USER",
2613
- domain: "MODEL_ROUTER",
2614
- text: `No Mastra model router gateway found for model id ${gatewayId}`
2615
- });
2616
- }
2617
-
2618
- // src/llm/model/router.ts
2619
- function getStaticProvidersByGateway(name) {
2620
- return Object.fromEntries(Object.entries(PROVIDER_REGISTRY).filter(([_provider, config]) => config.gateway === name));
2621
- }
2622
- var gateways = [new NetlifyGateway(), new ModelsDevGateway(getStaticProvidersByGateway(`models.dev`))];
2623
- var ModelRouterLanguageModel = class _ModelRouterLanguageModel {
2624
- specificationVersion = "v2";
2625
- defaultObjectGenerationMode = "json";
2626
- supportsStructuredOutputs = true;
2627
- supportsImageUrls = true;
2628
- supportedUrls = {};
2629
- modelId;
2630
- provider;
2631
- config;
2632
- gateway;
2633
- constructor(config) {
2634
- let normalizedConfig;
2635
- if (typeof config === "string") {
2636
- normalizedConfig = { id: config };
2637
- } else if ("providerId" in config && "modelId" in config) {
2638
- normalizedConfig = {
2639
- id: `${config.providerId}/${config.modelId}`,
2640
- url: config.url,
2641
- apiKey: config.apiKey,
2642
- headers: config.headers
2643
- };
2644
- } else {
2645
- normalizedConfig = {
2646
- id: config.id,
2647
- url: config.url,
2648
- apiKey: config.apiKey,
2649
- headers: config.headers
2650
- };
2651
- }
2652
- const parsedConfig = {
2653
- ...normalizedConfig,
2654
- routerId: normalizedConfig.id
2655
- };
2656
- this.gateway = findGatewayForModel(normalizedConfig.id, gateways);
2657
- const parsed = parseModelRouterId(normalizedConfig.id, this.gateway.prefix);
2658
- this.provider = parsed.providerId || "openai-compatible";
2659
- if (parsed.providerId && parsed.modelId !== normalizedConfig.id) {
2660
- parsedConfig.id = parsed.modelId;
2661
- }
2662
- this.modelId = parsedConfig.id;
2663
- this.config = parsedConfig;
2664
- }
2665
- async doGenerate() {
2666
- throw new Error(
2667
- "doGenerate is not supported by Mastra model router. Mastra only uses streaming (doStream) for all LLM calls."
2668
- );
2669
- }
2670
- async doStream(options) {
2671
- let apiKey;
2672
- try {
2673
- if (this.config.url) {
2674
- apiKey = this.config.apiKey || "";
2675
- } else {
2676
- apiKey = this.config.apiKey || await this.gateway.getApiKey(this.config.routerId);
2677
- }
2678
- } catch (error) {
2679
- return {
2680
- stream: new ReadableStream({
2681
- start(controller) {
2682
- controller.enqueue({
2683
- type: "error",
2684
- error
2685
- });
2686
- }
2687
- })
2688
- };
2689
- }
2690
- const model = await this.resolveLanguageModel({
2691
- apiKey,
2692
- ...parseModelRouterId(this.config.routerId, this.gateway.prefix)
2693
- });
2694
- return model.doStream(options);
2695
- }
2696
- async resolveLanguageModel({
2697
- modelId,
2698
- providerId,
2699
- apiKey
2700
- }) {
2701
- const key = createHash("sha256").update(this.gateway.name + modelId + providerId + apiKey + (this.config.url || "")).digest("hex");
2702
- if (_ModelRouterLanguageModel.modelInstances.has(key)) return _ModelRouterLanguageModel.modelInstances.get(key);
2703
- if (this.config.url) {
2704
- const modelInstance2 = createOpenAICompatible({
2705
- name: providerId,
2706
- apiKey,
2707
- baseURL: this.config.url,
2708
- headers: this.config.headers,
2709
- supportsStructuredOutputs: true
2710
- }).chatModel(modelId);
2711
- _ModelRouterLanguageModel.modelInstances.set(key, modelInstance2);
2712
- return modelInstance2;
2713
- }
2714
- const modelInstance = await this.gateway.resolveLanguageModel({ modelId, providerId, apiKey });
2715
- _ModelRouterLanguageModel.modelInstances.set(key, modelInstance);
2716
- return modelInstance;
2717
- }
2718
- static modelInstances = /* @__PURE__ */ new Map();
2719
- };
2720
-
2721
- // src/llm/model/resolve-model.ts
2722
- function isOpenAICompatibleObjectConfig(modelConfig) {
2723
- if (typeof modelConfig === "object" && "specificationVersion" in modelConfig) return false;
2724
- if (typeof modelConfig === "object" && !("model" in modelConfig)) {
2725
- if ("id" in modelConfig) return true;
2726
- if ("providerId" in modelConfig && "modelId" in modelConfig) return true;
2727
- }
2728
- return false;
2729
- }
2730
- async function resolveModelConfig(modelConfig, requestContext = new RequestContext(), mastra) {
2731
- if (typeof modelConfig === "object" && "specificationVersion" in modelConfig) {
2732
- return modelConfig;
2733
- }
2734
- if (typeof modelConfig === "string" || isOpenAICompatibleObjectConfig(modelConfig)) {
2735
- return new ModelRouterLanguageModel(modelConfig);
2736
- }
2737
- if (typeof modelConfig === "function") {
2738
- const fromDynamic = await modelConfig({ requestContext, mastra });
2739
- if (typeof fromDynamic === "string" || isOpenAICompatibleObjectConfig(fromDynamic)) {
2740
- return new ModelRouterLanguageModel(fromDynamic);
2741
- }
2742
- return fromDynamic;
2743
- }
2744
- throw new Error("Invalid model configuration provided");
2745
- }
2746
-
2747
- // src/llm/model/embedding-router.ts
2748
- var ModelRouterEmbeddingModel = class {
2749
- specificationVersion = "v2";
2750
- modelId;
2751
- provider;
2752
- maxEmbeddingsPerCall = 2048;
2753
- supportsParallelCalls = true;
2754
- providerModel;
2755
- constructor(config) {
2756
- let normalizedConfig;
2757
- if (typeof config === "string") {
2758
- const parts = config.split("/");
2759
- if (parts.length !== 2) {
2760
- throw new Error(`Invalid model string format: "${config}". Expected format: "provider/model"`);
2761
- }
2762
- const [providerId, modelId] = parts;
2763
- normalizedConfig = { providerId, modelId };
2764
- } else if ("providerId" in config && "modelId" in config) {
2765
- normalizedConfig = {
2766
- providerId: config.providerId,
2767
- modelId: config.modelId,
2768
- url: config.url,
2769
- apiKey: config.apiKey,
2770
- headers: config.headers
2771
- };
2772
- } else {
2773
- const parts = config.id.split("/");
2774
- if (parts.length !== 2) {
2775
- throw new Error(`Invalid model string format: "${config.id}". Expected format: "provider/model"`);
2776
- }
2777
- const [providerId, modelId] = parts;
2778
- normalizedConfig = {
2779
- providerId,
2780
- modelId,
2781
- url: config.url,
2782
- apiKey: config.apiKey,
2783
- headers: config.headers
2784
- };
2785
- }
2786
- this.provider = normalizedConfig.providerId;
2787
- this.modelId = normalizedConfig.modelId;
2788
- if (normalizedConfig.url) {
2789
- const apiKey = normalizedConfig.apiKey || "";
2790
- this.providerModel = createOpenAICompatible({
2791
- name: normalizedConfig.providerId,
2792
- apiKey,
2793
- baseURL: normalizedConfig.url,
2794
- headers: normalizedConfig.headers
2795
- }).textEmbeddingModel(normalizedConfig.modelId);
2796
- } else {
2797
- const registry = GatewayRegistry.getInstance();
2798
- const providerConfig = registry.getProviderConfig(normalizedConfig.providerId);
2799
- if (!providerConfig) {
2800
- throw new Error(`Unknown provider: ${normalizedConfig.providerId}`);
2801
- }
2802
- let apiKey = normalizedConfig.apiKey;
2803
- if (!apiKey) {
2804
- const apiKeyEnvVar = providerConfig.apiKeyEnvVar;
2805
- if (Array.isArray(apiKeyEnvVar)) {
2806
- for (const envVar of apiKeyEnvVar) {
2807
- apiKey = process.env[envVar];
2808
- if (apiKey) break;
2809
- }
2810
- } else {
2811
- apiKey = process.env[apiKeyEnvVar];
2812
- }
2813
- }
2814
- if (!apiKey) {
2815
- const envVarDisplay = Array.isArray(providerConfig.apiKeyEnvVar) ? providerConfig.apiKeyEnvVar.join(" or ") : providerConfig.apiKeyEnvVar;
2816
- throw new Error(`API key not found for provider ${normalizedConfig.providerId}. Set ${envVarDisplay}`);
2817
- }
2818
- if (normalizedConfig.providerId === "openai") {
2819
- this.providerModel = createOpenAI({ apiKey }).textEmbeddingModel(
2820
- normalizedConfig.modelId
2821
- );
2822
- } else if (normalizedConfig.providerId === "google") {
2823
- this.providerModel = createGoogleGenerativeAI({ apiKey }).textEmbedding(
2824
- normalizedConfig.modelId
2825
- );
2826
- } else {
2827
- if (!providerConfig.url) {
2828
- throw new Error(`Provider ${normalizedConfig.providerId} does not have a URL configured`);
2829
- }
2830
- this.providerModel = createOpenAICompatible({
2831
- name: normalizedConfig.providerId,
2832
- apiKey,
2833
- baseURL: providerConfig.url
2834
- }).textEmbeddingModel(normalizedConfig.modelId);
2835
- }
2836
- }
2837
- if (this.providerModel.maxEmbeddingsPerCall !== void 0) {
2838
- this.maxEmbeddingsPerCall = this.providerModel.maxEmbeddingsPerCall;
2839
- }
2840
- if (this.providerModel.supportsParallelCalls !== void 0) {
2841
- this.supportsParallelCalls = this.providerModel.supportsParallelCalls;
2842
- }
2843
- }
2844
- async doEmbed(args) {
2845
- return this.providerModel.doEmbed(args);
2846
- }
2847
- };
2848
-
2849
- export { ModelRouterEmbeddingModel, ModelRouterLanguageModel, PROVIDER_REGISTRY, getProviderConfig, parseModelString, resolveModelConfig };
2850
- //# sourceMappingURL=chunk-W7UH2PWL.js.map
2851
- //# sourceMappingURL=chunk-W7UH2PWL.js.map
2746
+ export { GatewayRegistry, PROVIDER_MODELS, PROVIDER_REGISTRY, getProviderConfig, getRegisteredProviders, isProviderRegistered, isValidModelId, parseModelString };
2747
+ //# sourceMappingURL=chunk-VU6DVS7J.js.map
2748
+ //# sourceMappingURL=chunk-VU6DVS7J.js.map