@mastra/core 0.19.0 → 0.19.1-alpha.1

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 (164) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/agent/agent.d.ts +2 -2
  3. package/dist/agent/agent.d.ts.map +1 -1
  4. package/dist/agent/index.cjs +11 -11
  5. package/dist/agent/index.js +2 -2
  6. package/dist/agent/input-processor/index.cjs +6 -6
  7. package/dist/agent/input-processor/index.js +1 -1
  8. package/dist/ai-tracing/index.cjs +32 -32
  9. package/dist/ai-tracing/index.js +1 -1
  10. package/dist/cache/index.cjs +3 -3
  11. package/dist/cache/index.js +1 -1
  12. package/dist/{chunk-4VNAMG7K.cjs → chunk-2C5AQMP5.cjs} +6 -6
  13. package/dist/{chunk-4VNAMG7K.cjs.map → chunk-2C5AQMP5.cjs.map} +1 -1
  14. package/dist/{chunk-JKLLXBOY.js → chunk-2EMOWXLL.js} +9 -9
  15. package/dist/{chunk-JKLLXBOY.js.map → chunk-2EMOWXLL.js.map} +1 -1
  16. package/dist/{chunk-EPMJYNEK.cjs → chunk-2F4RLQ5V.cjs} +4 -4
  17. package/dist/{chunk-EPMJYNEK.cjs.map → chunk-2F4RLQ5V.cjs.map} +1 -1
  18. package/dist/{chunk-HNBU4PI7.cjs → chunk-3I3NRXSD.cjs} +4 -4
  19. package/dist/{chunk-HNBU4PI7.cjs.map → chunk-3I3NRXSD.cjs.map} +1 -1
  20. package/dist/{chunk-SQQMX4VC.cjs → chunk-4PRV2Y55.cjs} +6 -6
  21. package/dist/{chunk-SQQMX4VC.cjs.map → chunk-4PRV2Y55.cjs.map} +1 -1
  22. package/dist/{chunk-7E4ESNZS.cjs → chunk-576KDLXN.cjs} +5 -5
  23. package/dist/{chunk-7E4ESNZS.cjs.map → chunk-576KDLXN.cjs.map} +1 -1
  24. package/dist/{chunk-PG6ZNDSR.cjs → chunk-57UPIDGK.cjs} +19 -19
  25. package/dist/{chunk-PG6ZNDSR.cjs.map → chunk-57UPIDGK.cjs.map} +1 -1
  26. package/dist/{chunk-5BQOHHCI.js → chunk-5QUE7HZF.js} +4 -4
  27. package/dist/{chunk-5BQOHHCI.js.map → chunk-5QUE7HZF.js.map} +1 -1
  28. package/dist/{chunk-CQ73JM2N.cjs → chunk-62I4SVWU.cjs} +10 -10
  29. package/dist/{chunk-CQ73JM2N.cjs.map → chunk-62I4SVWU.cjs.map} +1 -1
  30. package/dist/{chunk-COC64XPP.js → chunk-7CJKBCDL.js} +8 -8
  31. package/dist/{chunk-COC64XPP.js.map → chunk-7CJKBCDL.js.map} +1 -1
  32. package/dist/chunk-7J5DS33F.js +3 -0
  33. package/dist/chunk-7J5DS33F.js.map +1 -0
  34. package/dist/{chunk-RAXBZZKS.js → chunk-A7REAXWA.js} +3 -3
  35. package/dist/{chunk-RAXBZZKS.js.map → chunk-A7REAXWA.js.map} +1 -1
  36. package/dist/{chunk-DRVSEV5Y.cjs → chunk-BBTR6DPH.cjs} +8 -8
  37. package/dist/{chunk-DRVSEV5Y.cjs.map → chunk-BBTR6DPH.cjs.map} +1 -1
  38. package/dist/{chunk-FV3SA5TI.js → chunk-BMBWTBCL.js} +3 -3
  39. package/dist/{chunk-FV3SA5TI.js.map → chunk-BMBWTBCL.js.map} +1 -1
  40. package/dist/{chunk-NHJVMZIL.cjs → chunk-CC4KO56Z.cjs} +19 -19
  41. package/dist/{chunk-NHJVMZIL.cjs.map → chunk-CC4KO56Z.cjs.map} +1 -1
  42. package/dist/{chunk-N4PK4MOG.js → chunk-D2ZPF2AK.js} +4 -4
  43. package/dist/{chunk-N4PK4MOG.js.map → chunk-D2ZPF2AK.js.map} +1 -1
  44. package/dist/{chunk-3PQNUWJM.js → chunk-EQV2PPN2.js} +2 -4
  45. package/dist/chunk-EQV2PPN2.js.map +1 -0
  46. package/dist/chunk-FUVNHPNL.cjs +4 -0
  47. package/dist/chunk-FUVNHPNL.cjs.map +1 -0
  48. package/dist/{chunk-F6EJEELE.cjs → chunk-HJQ7ANDX.cjs} +6 -6
  49. package/dist/{chunk-F6EJEELE.cjs.map → chunk-HJQ7ANDX.cjs.map} +1 -1
  50. package/dist/{chunk-2GHLV754.cjs → chunk-HV5ND4KF.cjs} +4 -4
  51. package/dist/{chunk-2GHLV754.cjs.map → chunk-HV5ND4KF.cjs.map} +1 -1
  52. package/dist/{chunk-HQPFM22N.cjs → chunk-IB27A3HF.cjs} +16 -16
  53. package/dist/{chunk-HQPFM22N.cjs.map → chunk-IB27A3HF.cjs.map} +1 -1
  54. package/dist/{chunk-BCWRUNMS.cjs → chunk-K3UPABLX.cjs} +38 -38
  55. package/dist/{chunk-BCWRUNMS.cjs.map → chunk-K3UPABLX.cjs.map} +1 -1
  56. package/dist/{chunk-XG3SFWOH.js → chunk-KK5LUATU.js} +3 -3
  57. package/dist/{chunk-XG3SFWOH.js.map → chunk-KK5LUATU.js.map} +1 -1
  58. package/dist/{chunk-VWO3JJXC.js → chunk-LYRPXSHB.js} +4 -4
  59. package/dist/{chunk-VWO3JJXC.js.map → chunk-LYRPXSHB.js.map} +1 -1
  60. package/dist/{chunk-IAXAPVOP.js → chunk-M24QFL6S.js} +4 -4
  61. package/dist/{chunk-IAXAPVOP.js.map → chunk-M24QFL6S.js.map} +1 -1
  62. package/dist/{chunk-5HCVPQTD.js → chunk-M4AX46DS.js} +3 -3
  63. package/dist/{chunk-5HCVPQTD.js.map → chunk-M4AX46DS.js.map} +1 -1
  64. package/dist/{chunk-3WFH6YRI.js → chunk-M635OK6I.js} +4 -4
  65. package/dist/{chunk-3WFH6YRI.js.map → chunk-M635OK6I.js.map} +1 -1
  66. package/dist/{chunk-UTEH2LCJ.cjs → chunk-NLBX7Q47.cjs} +19 -19
  67. package/dist/{chunk-UTEH2LCJ.cjs.map → chunk-NLBX7Q47.cjs.map} +1 -1
  68. package/dist/{chunk-2DGWSOVQ.js → chunk-NMSLDMQ6.js} +3 -3
  69. package/dist/{chunk-2DGWSOVQ.js.map → chunk-NMSLDMQ6.js.map} +1 -1
  70. package/dist/{chunk-PJ6HF3KW.js → chunk-NVMKTP4N.js} +3 -3
  71. package/dist/{chunk-PJ6HF3KW.js.map → chunk-NVMKTP4N.js.map} +1 -1
  72. package/dist/{chunk-4BEHJSL6.js → chunk-QFKTSGBI.js} +3 -3
  73. package/dist/{chunk-4BEHJSL6.js.map → chunk-QFKTSGBI.js.map} +1 -1
  74. package/dist/{chunk-LZBVDMVQ.cjs → chunk-QMDJVXFQ.cjs} +19 -19
  75. package/dist/{chunk-LZBVDMVQ.cjs.map → chunk-QMDJVXFQ.cjs.map} +1 -1
  76. package/dist/{chunk-TIBULEK6.cjs → chunk-SZD4WTRW.cjs} +717 -275
  77. package/dist/chunk-SZD4WTRW.cjs.map +1 -0
  78. package/dist/{chunk-OBIF7QD5.js → chunk-T2CUZA2P.js} +3 -3
  79. package/dist/{chunk-OBIF7QD5.js.map → chunk-T2CUZA2P.js.map} +1 -1
  80. package/dist/{chunk-WHFNGECY.js → chunk-T3JFFQH2.js} +3 -2
  81. package/dist/chunk-T3JFFQH2.js.map +1 -0
  82. package/dist/{chunk-BUY5X7DT.js → chunk-TJHEGJNW.js} +4 -4
  83. package/dist/{chunk-BUY5X7DT.js.map → chunk-TJHEGJNW.js.map} +1 -1
  84. package/dist/{chunk-KTCBGNCZ.cjs → chunk-UU5L5GDY.cjs} +2 -4
  85. package/dist/chunk-UU5L5GDY.cjs.map +1 -0
  86. package/dist/{chunk-S7UXT3V4.cjs → chunk-WM4VQWOZ.cjs} +3 -2
  87. package/dist/chunk-WM4VQWOZ.cjs.map +1 -0
  88. package/dist/{chunk-RNIY63FP.cjs → chunk-WMGV4CS3.cjs} +59 -59
  89. package/dist/{chunk-RNIY63FP.cjs.map → chunk-WMGV4CS3.cjs.map} +1 -1
  90. package/dist/{chunk-5M6ZTQJN.js → chunk-X6PLOE2T.js} +717 -275
  91. package/dist/chunk-X6PLOE2T.js.map +1 -0
  92. package/dist/error/index.cjs +5 -5
  93. package/dist/error/index.d.ts +2 -1
  94. package/dist/error/index.d.ts.map +1 -1
  95. package/dist/error/index.js +1 -1
  96. package/dist/eval/index.cjs +3 -3
  97. package/dist/eval/index.js +1 -1
  98. package/dist/index.cjs +66 -66
  99. package/dist/index.js +15 -15
  100. package/dist/llm/index.cjs +5 -5
  101. package/dist/llm/index.d.ts +1 -0
  102. package/dist/llm/index.d.ts.map +1 -1
  103. package/dist/llm/index.js +1 -1
  104. package/dist/llm/model/gateway-resolver.d.ts +9 -0
  105. package/dist/llm/model/gateway-resolver.d.ts.map +1 -0
  106. package/dist/llm/model/gateways/base.d.ts +5 -4
  107. package/dist/llm/model/gateways/base.d.ts.map +1 -1
  108. package/dist/llm/model/gateways/index.d.ts +1 -0
  109. package/dist/llm/model/gateways/index.d.ts.map +1 -1
  110. package/dist/llm/model/gateways/models-dev.d.ts +3 -2
  111. package/dist/llm/model/gateways/models-dev.d.ts.map +1 -1
  112. package/dist/llm/model/gateways/netlify.d.ts +15 -0
  113. package/dist/llm/model/gateways/netlify.d.ts.map +1 -0
  114. package/dist/llm/model/openai-compatible.d.ts +8 -3
  115. package/dist/llm/model/openai-compatible.d.ts.map +1 -1
  116. package/dist/llm/model/provider-registry.generated.d.ts +8 -370
  117. package/dist/llm/model/provider-registry.generated.d.ts.map +1 -1
  118. package/dist/loop/index.cjs +2 -2
  119. package/dist/loop/index.js +1 -1
  120. package/dist/mastra/index.cjs +2 -2
  121. package/dist/mastra/index.js +1 -1
  122. package/dist/memory/index.cjs +4 -4
  123. package/dist/memory/index.js +1 -1
  124. package/dist/network/vNext/index.cjs +29 -29
  125. package/dist/network/vNext/index.js +2 -2
  126. package/dist/processors/index.cjs +10 -10
  127. package/dist/processors/index.js +1 -1
  128. package/dist/relevance/index.cjs +4 -4
  129. package/dist/relevance/index.js +1 -1
  130. package/dist/scores/index.cjs +9 -9
  131. package/dist/scores/index.js +2 -2
  132. package/dist/scores/scoreTraces/index.cjs +13 -13
  133. package/dist/scores/scoreTraces/index.js +4 -4
  134. package/dist/server/index.cjs +7 -7
  135. package/dist/server/index.js +2 -2
  136. package/dist/storage/index.cjs +25 -25
  137. package/dist/storage/index.js +4 -4
  138. package/dist/stream/index.cjs +4 -4
  139. package/dist/stream/index.js +1 -1
  140. package/dist/telemetry/index.cjs +7 -7
  141. package/dist/telemetry/index.js +1 -1
  142. package/dist/test-utils/llm-mock.cjs +2 -2
  143. package/dist/test-utils/llm-mock.js +1 -1
  144. package/dist/tts/index.cjs +2 -2
  145. package/dist/tts/index.js +1 -1
  146. package/dist/utils.cjs +17 -17
  147. package/dist/utils.js +1 -1
  148. package/dist/vector/index.cjs +4 -4
  149. package/dist/vector/index.js +1 -1
  150. package/dist/voice/index.cjs +4 -4
  151. package/dist/voice/index.js +1 -1
  152. package/dist/workflows/evented/index.cjs +10 -10
  153. package/dist/workflows/evented/index.js +1 -1
  154. package/dist/workflows/index.cjs +12 -12
  155. package/dist/workflows/index.js +1 -1
  156. package/dist/workflows/legacy/index.cjs +22 -22
  157. package/dist/workflows/legacy/index.js +1 -1
  158. package/package.json +3 -3
  159. package/dist/chunk-3PQNUWJM.js.map +0 -1
  160. package/dist/chunk-5M6ZTQJN.js.map +0 -1
  161. package/dist/chunk-KTCBGNCZ.cjs.map +0 -1
  162. package/dist/chunk-S7UXT3V4.cjs.map +0 -1
  163. package/dist/chunk-TIBULEK6.cjs.map +0 -1
  164. package/dist/chunk-WHFNGECY.js.map +0 -1
@@ -1,92 +1,92 @@
1
1
  'use strict';
2
2
 
3
- var chunkRNIY63FP_cjs = require('../../chunk-RNIY63FP.cjs');
3
+ var chunkWMGV4CS3_cjs = require('../../chunk-WMGV4CS3.cjs');
4
4
 
5
5
 
6
6
 
7
7
  Object.defineProperty(exports, "LegacyStep", {
8
8
  enumerable: true,
9
- get: function () { return chunkRNIY63FP_cjs.LegacyStep; }
9
+ get: function () { return chunkWMGV4CS3_cjs.LegacyStep; }
10
10
  });
11
11
  Object.defineProperty(exports, "LegacyWorkflow", {
12
12
  enumerable: true,
13
- get: function () { return chunkRNIY63FP_cjs.LegacyWorkflow; }
13
+ get: function () { return chunkWMGV4CS3_cjs.LegacyWorkflow; }
14
14
  });
15
15
  Object.defineProperty(exports, "WhenConditionReturnValue", {
16
16
  enumerable: true,
17
- get: function () { return chunkRNIY63FP_cjs.WhenConditionReturnValue; }
17
+ get: function () { return chunkWMGV4CS3_cjs.WhenConditionReturnValue; }
18
18
  });
19
19
  Object.defineProperty(exports, "agentToStep", {
20
20
  enumerable: true,
21
- get: function () { return chunkRNIY63FP_cjs.agentToStep; }
21
+ get: function () { return chunkWMGV4CS3_cjs.agentToStep; }
22
22
  });
23
23
  Object.defineProperty(exports, "getActivePathsAndStatus", {
24
24
  enumerable: true,
25
- get: function () { return chunkRNIY63FP_cjs.getActivePathsAndStatus; }
25
+ get: function () { return chunkWMGV4CS3_cjs.getActivePathsAndStatus; }
26
26
  });
27
27
  Object.defineProperty(exports, "getResultActivePaths", {
28
28
  enumerable: true,
29
- get: function () { return chunkRNIY63FP_cjs.getResultActivePaths; }
29
+ get: function () { return chunkWMGV4CS3_cjs.getResultActivePaths; }
30
30
  });
31
31
  Object.defineProperty(exports, "getStepResult", {
32
32
  enumerable: true,
33
- get: function () { return chunkRNIY63FP_cjs.getStepResult2; }
33
+ get: function () { return chunkWMGV4CS3_cjs.getStepResult2; }
34
34
  });
35
35
  Object.defineProperty(exports, "getSuspendedPaths", {
36
36
  enumerable: true,
37
- get: function () { return chunkRNIY63FP_cjs.getSuspendedPaths; }
37
+ get: function () { return chunkWMGV4CS3_cjs.getSuspendedPaths; }
38
38
  });
39
39
  Object.defineProperty(exports, "isAgent", {
40
40
  enumerable: true,
41
- get: function () { return chunkRNIY63FP_cjs.isAgent; }
41
+ get: function () { return chunkWMGV4CS3_cjs.isAgent; }
42
42
  });
43
43
  Object.defineProperty(exports, "isConditionalKey", {
44
44
  enumerable: true,
45
- get: function () { return chunkRNIY63FP_cjs.isConditionalKey; }
45
+ get: function () { return chunkWMGV4CS3_cjs.isConditionalKey; }
46
46
  });
47
47
  Object.defineProperty(exports, "isErrorEvent", {
48
48
  enumerable: true,
49
- get: function () { return chunkRNIY63FP_cjs.isErrorEvent; }
49
+ get: function () { return chunkWMGV4CS3_cjs.isErrorEvent; }
50
50
  });
51
51
  Object.defineProperty(exports, "isFinalState", {
52
52
  enumerable: true,
53
- get: function () { return chunkRNIY63FP_cjs.isFinalState; }
53
+ get: function () { return chunkWMGV4CS3_cjs.isFinalState; }
54
54
  });
55
55
  Object.defineProperty(exports, "isLimboState", {
56
56
  enumerable: true,
57
- get: function () { return chunkRNIY63FP_cjs.isLimboState; }
57
+ get: function () { return chunkWMGV4CS3_cjs.isLimboState; }
58
58
  });
59
59
  Object.defineProperty(exports, "isTransitionEvent", {
60
60
  enumerable: true,
61
- get: function () { return chunkRNIY63FP_cjs.isTransitionEvent; }
61
+ get: function () { return chunkWMGV4CS3_cjs.isTransitionEvent; }
62
62
  });
63
63
  Object.defineProperty(exports, "isVariableReference", {
64
64
  enumerable: true,
65
- get: function () { return chunkRNIY63FP_cjs.isVariableReference; }
65
+ get: function () { return chunkWMGV4CS3_cjs.isVariableReference; }
66
66
  });
67
67
  Object.defineProperty(exports, "isWorkflow", {
68
68
  enumerable: true,
69
- get: function () { return chunkRNIY63FP_cjs.isWorkflow; }
69
+ get: function () { return chunkWMGV4CS3_cjs.isWorkflow; }
70
70
  });
71
71
  Object.defineProperty(exports, "mergeChildValue", {
72
72
  enumerable: true,
73
- get: function () { return chunkRNIY63FP_cjs.mergeChildValue; }
73
+ get: function () { return chunkWMGV4CS3_cjs.mergeChildValue; }
74
74
  });
75
75
  Object.defineProperty(exports, "recursivelyCheckForFinalState", {
76
76
  enumerable: true,
77
- get: function () { return chunkRNIY63FP_cjs.recursivelyCheckForFinalState; }
77
+ get: function () { return chunkWMGV4CS3_cjs.recursivelyCheckForFinalState; }
78
78
  });
79
79
  Object.defineProperty(exports, "resolveVariables", {
80
80
  enumerable: true,
81
- get: function () { return chunkRNIY63FP_cjs.resolveVariables; }
81
+ get: function () { return chunkWMGV4CS3_cjs.resolveVariables; }
82
82
  });
83
83
  Object.defineProperty(exports, "updateStepInHierarchy", {
84
84
  enumerable: true,
85
- get: function () { return chunkRNIY63FP_cjs.updateStepInHierarchy; }
85
+ get: function () { return chunkWMGV4CS3_cjs.updateStepInHierarchy; }
86
86
  });
87
87
  Object.defineProperty(exports, "workflowToStep", {
88
88
  enumerable: true,
89
- get: function () { return chunkRNIY63FP_cjs.workflowToStep; }
89
+ get: function () { return chunkWMGV4CS3_cjs.workflowToStep; }
90
90
  });
91
91
  //# sourceMappingURL=index.cjs.map
92
92
  //# sourceMappingURL=index.cjs.map
@@ -1,3 +1,3 @@
1
- export { LegacyStep, LegacyWorkflow, WhenConditionReturnValue, agentToStep, getActivePathsAndStatus, getResultActivePaths, getStepResult2 as getStepResult, getSuspendedPaths, isAgent, isConditionalKey, isErrorEvent, isFinalState, isLimboState, isTransitionEvent, isVariableReference, isWorkflow, mergeChildValue, recursivelyCheckForFinalState, resolveVariables, updateStepInHierarchy, workflowToStep } from '../../chunk-JKLLXBOY.js';
1
+ export { LegacyStep, LegacyWorkflow, WhenConditionReturnValue, agentToStep, getActivePathsAndStatus, getResultActivePaths, getStepResult2 as getStepResult, getSuspendedPaths, isAgent, isConditionalKey, isErrorEvent, isFinalState, isLimboState, isTransitionEvent, isVariableReference, isWorkflow, mergeChildValue, recursivelyCheckForFinalState, resolveVariables, updateStepInHierarchy, workflowToStep } from '../../chunk-2EMOWXLL.js';
2
2
  //# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/core",
3
- "version": "0.19.0",
3
+ "version": "0.19.1-alpha.1",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -239,8 +239,8 @@
239
239
  "typescript": "^5.8.3",
240
240
  "vitest": "^3.2.4",
241
241
  "zod": "^3.25.76",
242
- "@internal/types-builder": "0.0.18",
243
- "@internal/lint": "0.0.43"
242
+ "@internal/lint": "0.0.43",
243
+ "@internal/types-builder": "0.0.18"
244
244
  },
245
245
  "engines": {
246
246
  "node": ">=20"
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cache/base.ts","../src/cache/inmemory.ts"],"names":[],"mappings":";;;;AAEO,IAAe,iBAAA,GAAf,cAAyC,UAAA,CAAW;AAAA,EACzD,WAAA,CAAY,EAAE,IAAA,EAAK,EAAqB;AACtC,IAAA,KAAA,CAAM;AAAA,MACJ,SAAA,EAAW,cAAA;AAAA,MACX;AAAA,KACD,CAAA;AAAA,EACH;AAeF;;;ACpBO,IAAM,mBAAA,GAAN,cAAkC,iBAAA,CAAkB;AAAA,EACjD,KAAA,GAAmC,IAAI,QAAA,CAAS;AAAA,IACtD,GAAA,EAAK,GAAA;AAAA,IACL,GAAA,EAAK,MAAO,EAAA,GAAK;AAAA,GAClB,CAAA;AAAA,EAED,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,EAAE,IAAA,EAAM,qBAAA,EAAuB,CAAA;AAAA,EACvC;AAAA,EAEA,MAAM,IAAI,GAAA,EAA+B;AACvC,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,GAAA,CAAI,GAAA,EAAa,KAAA,EAA+B;AACpD,IAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,WAAW,GAAA,EAA8B;AAC7C,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACxB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,gBAAA,CAAkB,CAAA;AAAA,IAC1C;AACA,IAAA,OAAO,IAAA,CAAK,MAAA;AAAA,EACd;AAAA,EAEA,MAAM,QAAA,CAAS,GAAA,EAAa,KAAA,EAA+B;AACzD,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACvB,MAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AAAA,IACjB,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,CAAC,KAAK,CAAC,CAAA;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,MAAM,UAAA,CAAW,GAAA,EAAa,IAAA,EAAc,KAAa,EAAA,EAAwB;AAC/E,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AAEvB,MAAA,MAAM,QAAA,GAAW,EAAA,KAAO,EAAA,GAAK,MAAA,GAAY,EAAA,GAAK,CAAA;AAC9C,MAAA,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAA;AAAA,IAClC;AACA,IAAA,OAAO,EAAC;AAAA,EACV;AAAA,EAEA,MAAM,OAAO,GAAA,EAA4B;AACvC,IAAA,IAAA,CAAK,KAAA,CAAM,OAAO,GAAG,CAAA;AAAA,EACvB;AAAA,EAEA,MAAM,KAAA,GAAuB;AAC3B,IAAA,IAAA,CAAK,MAAM,KAAA,EAAM;AAAA,EACnB;AACF","file":"chunk-3PQNUWJM.js","sourcesContent":["import { MastraBase } from '../base';\n\nexport abstract class MastraServerCache extends MastraBase {\n constructor({ name }: { name: string }) {\n super({\n component: 'SERVER_CACHE',\n name,\n });\n }\n\n abstract get(key: string): Promise<unknown>;\n\n abstract listLength(key: string): Promise<number>;\n\n abstract set(key: string, value: unknown): Promise<void>;\n\n abstract listPush(key: string, value: unknown): Promise<void>;\n\n abstract listFromTo(key: string, from: number, to?: number): Promise<unknown[]>;\n\n abstract delete(key: string): Promise<void>;\n\n abstract clear(): Promise<void>;\n}\n","import TTLCache from '@isaacs/ttlcache';\nimport { MastraServerCache } from './base';\n\nexport class InMemoryServerCache extends MastraServerCache {\n private cache: TTLCache<string, unknown> = new TTLCache({\n max: 1000,\n ttl: 1000 * 60 * 5,\n });\n\n constructor() {\n super({ name: 'InMemoryServerCache' });\n }\n\n async get(key: string): Promise<unknown> {\n return this.cache.get(key);\n }\n\n async set(key: string, value: unknown): Promise<void> {\n this.cache.set(key, value);\n }\n\n async listLength(key: string): Promise<number> {\n const list = this.cache.get(key) as unknown[];\n if (!Array.isArray(list)) {\n throw new Error(`${key} is not an array`);\n }\n return list.length;\n }\n\n async listPush(key: string, value: unknown): Promise<void> {\n const list = this.cache.get(key) as unknown[];\n if (Array.isArray(list)) {\n list.push(value);\n } else {\n this.cache.set(key, [value]);\n }\n }\n\n async listFromTo(key: string, from: number, to: number = -1): Promise<unknown[]> {\n const list = this.cache.get(key) as unknown[];\n if (Array.isArray(list)) {\n // Make 'to' inclusive like Redis LRANGE - add 1 unless it's -1\n const endIndex = to === -1 ? undefined : to + 1;\n return list.slice(from, endIndex);\n }\n return [];\n }\n\n async delete(key: string): Promise<void> {\n this.cache.delete(key);\n }\n\n async clear(): Promise<void> {\n this.cache.clear();\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/llm/model/provider-registry.generated.ts","../src/llm/model/openai-compatible.ts"],"names":["providerConfig","buffer"],"mappings":"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","file":"chunk-5M6ZTQJN.js","sourcesContent":["/**\n * THIS FILE IS AUTO-GENERATED - DO NOT EDIT\n * Generated from model gateway providers\n */\n\n/**\n * Provider configurations for OpenAI-compatible APIs\n */\nexport const PROVIDER_REGISTRY = {\n 'moonshotai-cn': {\n url: 'https://api.moonshot.cn/v1/chat/completions',\n apiKeyEnvVar: 'MOONSHOT_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Moonshot AI (China)',\n models: ['kimi-k2-0711-preview', 'kimi-k2-0905-preview', 'kimi-k2-turbo-preview'],\n docUrl: 'https://platform.moonshot.cn/docs/api/chat',\n },\n lucidquery: {\n url: 'https://lucidquery.com/api/v1/chat/completions',\n apiKeyEnvVar: 'LUCIDQUERY_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'LucidQuery AI',\n models: ['lucidnova-rf1-100b', 'lucidquery-nexus-coder'],\n docUrl: 'https://lucidquery.com/api/docs',\n },\n moonshotai: {\n url: 'https://api.moonshot.ai/v1/chat/completions',\n apiKeyEnvVar: 'MOONSHOT_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Moonshot AI',\n models: ['kimi-k2-0711-preview', 'kimi-k2-0905-preview', 'kimi-k2-turbo-preview'],\n docUrl: 'https://platform.moonshot.ai/docs/api/chat',\n },\n 'zai-coding-plan': {\n url: 'https://api.z.ai/api/coding/paas/v4/chat/completions',\n apiKeyEnvVar: 'ZHIPU_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Z.AI Coding Plan',\n models: ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n docUrl: 'https://docs.z.ai/devpack/overview',\n },\n alibaba: {\n url: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions',\n apiKeyEnvVar: 'DASHSCOPE_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Alibaba',\n models: ['qwen3-coder-plus'],\n docUrl: 'https://www.alibabacloud.com/help/en/model-studio/models',\n },\n xai: {\n url: 'https://api.x.ai/v1/chat/completions',\n apiKeyEnvVar: 'XAI_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'xAI',\n models: [\n 'grok-2',\n 'grok-2-1212',\n 'grok-2-latest',\n 'grok-2-vision',\n 'grok-2-vision-1212',\n 'grok-2-vision-latest',\n 'grok-3',\n 'grok-3-fast',\n 'grok-3-fast-latest',\n 'grok-3-latest',\n 'grok-3-mini',\n 'grok-3-mini-fast',\n 'grok-3-mini-fast-latest',\n 'grok-3-mini-latest',\n 'grok-4',\n 'grok-4-fast',\n 'grok-4-fast-non-reasoning',\n 'grok-beta',\n 'grok-code-fast-1',\n 'grok-vision-beta',\n ],\n docUrl: 'https://docs.x.ai/docs/models',\n },\n nvidia: {\n url: 'https://integrate.api.nvidia.com/v1/chat/completions',\n apiKeyEnvVar: 'NVIDIA_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Nvidia',\n models: [\n 'black-forest-labs/flux.1-dev',\n 'deepseek-ai/deepseek-v3.1',\n 'google/gemma-3-27b-it',\n 'microsoft/phi-4-mini-instruct',\n 'moonshotai/kimi-k2-instruct',\n 'nvidia/cosmos-nemotron-34b',\n 'nvidia/llama-3.1-nemotron-ultra-253b-v1',\n 'nvidia/nemoretriever-ocr-v1',\n 'nvidia/parakeet-tdt-0.6b-v2',\n 'openai/gpt-oss-120b',\n 'openai/whisper-large-v3',\n 'qwen/qwen3-235b-a22b',\n 'qwen/qwen3-coder-480b-a35b-instruct',\n ],\n docUrl: 'https://docs.api.nvidia.com/nim/',\n },\n upstage: {\n url: 'https://api.upstage.ai/chat/completions',\n apiKeyEnvVar: 'UPSTAGE_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Upstage',\n models: ['solar-mini', 'solar-pro2'],\n docUrl: 'https://developers.upstage.ai/docs/apis/chat',\n },\n groq: {\n url: 'https://api.groq.com/openai/v1/chat/completions',\n apiKeyEnvVar: 'GROQ_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Groq',\n models: [\n 'deepseek-r1-distill-llama-70b',\n 'gemma2-9b-it',\n 'llama-3.1-8b-instant',\n 'llama-3.3-70b-versatile',\n 'llama-guard-3-8b',\n 'llama3-70b-8192',\n 'llama3-8b-8192',\n 'meta-llama/llama-4-maverick-17b-128e-instruct',\n 'meta-llama/llama-4-scout-17b-16e-instruct',\n 'meta-llama/llama-guard-4-12b',\n 'mistral-saba-24b',\n 'moonshotai/kimi-k2-instruct',\n 'moonshotai/kimi-k2-instruct-0905',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'qwen-qwq-32b',\n 'qwen/qwen3-32b',\n ],\n docUrl: 'https://console.groq.com/docs/models',\n },\n 'github-copilot': {\n url: 'https://api.githubcopilot.com/chat/completions',\n apiKeyEnvVar: 'GITHUB_TOKEN',\n apiKeyHeader: 'Authorization',\n name: 'GitHub Copilot',\n models: [\n 'claude-3.5-sonnet',\n 'claude-3.7-sonnet',\n 'claude-3.7-sonnet-thought',\n 'claude-opus-4',\n 'claude-opus-41',\n 'claude-sonnet-4',\n 'claude-sonnet-4.5',\n 'gemini-2.0-flash-001',\n 'gemini-2.5-pro',\n 'gpt-4.1',\n 'gpt-4o',\n 'gpt-5',\n 'gpt-5-codex',\n 'gpt-5-mini',\n 'grok-code-fast-1',\n 'o3',\n 'o3-mini',\n 'o4-mini',\n ],\n docUrl: 'https://docs.github.com/en/copilot',\n },\n mistral: {\n url: 'https://api.mistral.ai/v1/chat/completions',\n apiKeyEnvVar: 'MISTRAL_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Mistral',\n models: [\n 'codestral-latest',\n 'devstral-medium-2507',\n 'devstral-small-2505',\n 'devstral-small-2507',\n 'magistral-medium-latest',\n 'magistral-small',\n 'ministral-3b-latest',\n 'ministral-8b-latest',\n 'mistral-large-latest',\n 'mistral-medium-2505',\n 'mistral-medium-2508',\n 'mistral-medium-latest',\n 'mistral-nemo',\n 'mistral-small-latest',\n 'open-mistral-7b',\n 'open-mixtral-8x22b',\n 'open-mixtral-8x7b',\n 'pixtral-12b',\n 'pixtral-large-latest',\n ],\n docUrl: 'https://docs.mistral.ai/getting-started/models/',\n },\n vercel: {\n url: 'https://ai-gateway.vercel.sh/v1/chat/completions',\n apiKeyEnvVar: 'AI_GATEWAY_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Vercel AI Gateway',\n models: [\n 'amazon/nova-lite',\n 'amazon/nova-micro',\n 'amazon/nova-pro',\n 'anthropic/claude-3-5-haiku',\n 'anthropic/claude-3-haiku',\n 'anthropic/claude-3-opus',\n 'anthropic/claude-3.5-sonnet',\n 'anthropic/claude-3.7-sonnet',\n 'anthropic/claude-4-1-opus',\n 'anthropic/claude-4-opus',\n 'anthropic/claude-4-sonnet',\n 'anthropic/claude-4.5-sonnet',\n 'cerebras/qwen3-coder',\n 'deepseek/deepseek-r1',\n 'deepseek/deepseek-r1-distill-llama-70b',\n 'google/gemini-2.0-flash',\n 'google/gemini-2.0-flash-lite',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'meta/llama-3.3-70b',\n 'meta/llama-4-maverick',\n 'meta/llama-4-scout',\n 'mistral/codestral',\n 'mistral/magistral-medium',\n 'mistral/magistral-small',\n 'mistral/ministral-3b',\n 'mistral/ministral-8b',\n 'mistral/mistral-large',\n 'mistral/mistral-small',\n 'mistral/mixtral-8x22b-instruct',\n 'mistral/pixtral-12b',\n 'mistral/pixtral-large',\n 'moonshotai/kimi-k2',\n 'morph/morph-v3-fast',\n 'morph/morph-v3-large',\n 'openai/gpt-4-turbo',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4.1-nano',\n 'openai/gpt-4o',\n 'openai/gpt-4o-mini',\n 'openai/gpt-5',\n 'openai/gpt-5-codex',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'openai/o1',\n 'openai/o3',\n 'openai/o3-mini',\n 'openai/o4-mini',\n 'vercel/v0-1.0-md',\n 'vercel/v0-1.5-md',\n 'xai/grok-2',\n 'xai/grok-2-vision',\n 'xai/grok-3',\n 'xai/grok-3-fast',\n 'xai/grok-3-mini',\n 'xai/grok-3-mini-fast',\n 'xai/grok-4',\n 'xai/grok-4-fast',\n 'xai/grok-4-fast-non-reasoning',\n 'xai/grok-code-fast-1',\n ],\n docUrl: 'https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway',\n },\n deepseek: {\n url: 'https://api.deepseek.com/chat/completions',\n apiKeyEnvVar: 'DEEPSEEK_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'DeepSeek',\n models: ['deepseek-chat', 'deepseek-reasoner'],\n docUrl: 'https://platform.deepseek.com/api-docs/pricing',\n },\n 'alibaba-cn': {\n url: 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions',\n apiKeyEnvVar: 'DASHSCOPE_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Alibaba (China)',\n models: ['qwen3-coder-plus'],\n docUrl: 'https://www.alibabacloud.com/help/en/model-studio/models',\n },\n venice: {\n url: 'https://api.venice.ai/api/v1/chat/completions',\n apiKeyEnvVar: 'VENICE_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Venice AI',\n models: [\n 'deepseek-coder-v2-lite',\n 'deepseek-r1-671b',\n 'dolphin-2.9.2-qwen2-72b',\n 'llama-3.1-405b',\n 'llama-3.2-3b',\n 'llama-3.3-70b',\n 'mistral-31-24b',\n 'qwen-2.5-coder-32b',\n 'qwen-2.5-qwq-32b',\n 'qwen-2.5-vl',\n 'qwen3-235b',\n 'qwen3-4b',\n 'venice-uncensored',\n ],\n docUrl: 'https://docs.venice.ai',\n },\n chutes: {\n url: 'https://llm.chutes.ai/v1/chat/completions',\n apiKeyEnvVar: 'CHUTES_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Chutes',\n models: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-30B-A3B',\n 'Qwen/Qwen3-30B-A3B-Instruct-2507',\n 'Qwen/Qwen3-30B-A3B-Thinking-2507',\n 'Qwen/Qwen3-Coder-30B-A3B-Instruct',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8',\n 'Qwen/Qwen3-Next-80B-A3B-Instruct',\n 'Qwen/Qwen3-Next-80B-A3B-Thinking',\n 'chutesai/Devstral-Small-2505',\n 'chutesai/Mistral-Small-3.2-24B-Instruct-2506',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/DeepSeek-R1-0528-Qwen3-8B',\n 'deepseek-ai/DeepSeek-R1-Distill-Llama-70B',\n 'deepseek-ai/DeepSeek-V3-0324',\n 'deepseek-ai/DeepSeek-V3.1',\n 'deepseek-ai/DeepSeek-V3.1-Terminus',\n 'deepseek-ai/DeepSeek-V3.1-turbo',\n 'deepseek-ai/DeepSeek-V3.1:THINKING',\n 'meituan-longcat/LongCat-Flash-Chat-FP8',\n 'moonshotai/Kimi-Dev-72B',\n 'moonshotai/Kimi-K2-Instruct-0905',\n 'moonshotai/Kimi-K2-Instruct-75k',\n 'moonshotai/Kimi-VL-A3B-Thinking',\n 'openai/gpt-oss-120b',\n 'tngtech/DeepSeek-R1T-Chimera',\n 'tngtech/DeepSeek-TNG-R1T2-Chimera',\n 'zai-org/GLM-4.5-Air',\n 'zai-org/GLM-4.5-FP8',\n 'zai-org/GLM-4.5-turbo',\n ],\n docUrl: 'https://llm.chutes.ai/v1/models',\n },\n cortecs: {\n url: 'https://api.cortecs.ai/v1/chat/completions',\n apiKeyEnvVar: 'CORTECS_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Cortecs',\n models: [\n 'claude-sonnet-4',\n 'deepseek-v3-0324',\n 'gemini-2.5-pro',\n 'gpt-4.1',\n 'gpt-oss-120b',\n 'kimi-k2-instruct',\n 'llama-3.1-405b-instruct',\n 'nova-pro-v1',\n 'qwen3-32b',\n 'qwen3-coder-480b-a35b-instruct',\n ],\n docUrl: 'https://api.cortecs.ai/v1/models',\n },\n 'github-models': {\n url: 'https://models.github.ai/inference/chat/completions',\n apiKeyEnvVar: 'GITHUB_TOKEN',\n apiKeyHeader: 'Authorization',\n name: 'GitHub Models',\n models: [\n 'ai21-labs/ai21-jamba-1.5-large',\n 'ai21-labs/ai21-jamba-1.5-mini',\n 'cohere/cohere-command-a',\n 'cohere/cohere-command-r',\n 'cohere/cohere-command-r-08-2024',\n 'cohere/cohere-command-r-plus',\n 'cohere/cohere-command-r-plus-08-2024',\n 'core42/jais-30b-chat',\n 'deepseek/deepseek-r1',\n 'deepseek/deepseek-r1-0528',\n 'deepseek/deepseek-v3-0324',\n 'meta/llama-3.2-11b-vision-instruct',\n 'meta/llama-3.2-90b-vision-instruct',\n 'meta/llama-3.3-70b-instruct',\n 'meta/llama-4-maverick-17b-128e-instruct-fp8',\n 'meta/llama-4-scout-17b-16e-instruct',\n 'meta/meta-llama-3-70b-instruct',\n 'meta/meta-llama-3-8b-instruct',\n 'meta/meta-llama-3.1-405b-instruct',\n 'meta/meta-llama-3.1-70b-instruct',\n 'meta/meta-llama-3.1-8b-instruct',\n 'microsoft/mai-ds-r1',\n 'microsoft/phi-3-medium-128k-instruct',\n 'microsoft/phi-3-medium-4k-instruct',\n 'microsoft/phi-3-mini-128k-instruct',\n 'microsoft/phi-3-mini-4k-instruct',\n 'microsoft/phi-3-small-128k-instruct',\n 'microsoft/phi-3-small-8k-instruct',\n 'microsoft/phi-3.5-mini-instruct',\n 'microsoft/phi-3.5-moe-instruct',\n 'microsoft/phi-3.5-vision-instruct',\n 'microsoft/phi-4',\n 'microsoft/phi-4-mini-instruct',\n 'microsoft/phi-4-mini-reasoning',\n 'microsoft/phi-4-multimodal-instruct',\n 'microsoft/phi-4-reasoning',\n 'mistral-ai/codestral-2501',\n 'mistral-ai/ministral-3b',\n 'mistral-ai/mistral-large-2411',\n 'mistral-ai/mistral-medium-2505',\n 'mistral-ai/mistral-nemo',\n 'mistral-ai/mistral-small-2503',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4.1-nano',\n 'openai/gpt-4o',\n 'openai/gpt-4o-mini',\n 'openai/o1',\n 'openai/o1-mini',\n 'openai/o1-preview',\n 'openai/o3',\n 'openai/o3-mini',\n 'openai/o4-mini',\n 'xai/grok-3',\n 'xai/grok-3-mini',\n ],\n docUrl: 'https://docs.github.com/en/github-models',\n },\n togetherai: {\n url: 'https://api.together.xyz/v1/chat/completions',\n apiKeyEnvVar: 'TOGETHER_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Together AI',\n models: [\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8',\n 'deepseek-ai/DeepSeek-R1',\n 'deepseek-ai/DeepSeek-V3',\n 'meta-llama/Llama-3.3-70B-Instruct-Turbo',\n 'moonshotai/Kimi-K2-Instruct',\n 'openai/gpt-oss-120b',\n ],\n docUrl: 'https://docs.together.ai/docs/serverless-models',\n },\n baseten: {\n url: 'https://inference.baseten.co/v1/chat/completions',\n apiKeyEnvVar: 'BASETEN_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Baseten',\n models: ['Qwen3/Qwen3-Coder-480B-A35B-Instruct', 'moonshotai/Kimi-K2-Instruct-0905'],\n docUrl: 'https://docs.baseten.co/development/model-apis/overview',\n },\n huggingface: {\n url: 'https://router.huggingface.co/v1/chat/completions',\n apiKeyEnvVar: 'HF_TOKEN',\n apiKeyHeader: 'Authorization',\n name: 'Hugging Face',\n models: [\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'Qwen/Qwen3-Next-80B-A3B-Instruct',\n 'Qwen/Qwen3-Next-80B-A3B-Thinking',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/Deepseek-V3-0324',\n 'moonshotai/Kimi-K2-Instruct',\n 'moonshotai/Kimi-K2-Instruct-0905',\n 'zai-org/GLM-4.5',\n 'zai-org/GLM-4.5-Air',\n ],\n docUrl: 'https://huggingface.co/docs/inference-providers',\n },\n opencode: {\n url: 'https://opencode.ai/zen/v1/chat/completions',\n apiKeyEnvVar: 'OPENCODE_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'opencode zen',\n models: [\n 'claude-3-5-haiku',\n 'claude-opus-4-1',\n 'claude-sonnet-4',\n 'claude-sonnet-4-5',\n 'code-supernova',\n 'gpt-5',\n 'gpt-5-codex',\n 'grok-code',\n 'kimi-k2',\n 'qwen3-coder',\n 'qwen3-max',\n ],\n docUrl: 'https://opencode.ai/docs',\n },\n fastrouter: {\n url: 'https://go.fastrouter.ai/api/v1/chat/completions',\n apiKeyEnvVar: 'FASTROUTER_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'FastRouter',\n models: [\n 'anthropic/claude-opus-4.1',\n 'anthropic/claude-sonnet-4',\n 'deepseek-ai/deepseek-r1-distill-llama-70b',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'moonshotai/kimi-k2',\n 'openai/gpt-4.1',\n 'openai/gpt-5',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'qwen/qwen3-coder',\n 'x-ai/grok-4',\n ],\n docUrl: 'https://fastrouter.ai/models',\n },\n google: {\n url: 'https://generativelanguage.googleapis.com/v1beta/chat/completions',\n apiKeyEnvVar: 'GOOGLE_GENERATIVE_AI_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Google',\n models: [\n 'gemini-1.5-flash',\n 'gemini-1.5-flash-8b',\n 'gemini-1.5-pro',\n 'gemini-2.0-flash',\n 'gemini-2.0-flash-lite',\n 'gemini-2.5-flash',\n 'gemini-2.5-flash-lite',\n 'gemini-2.5-flash-lite-preview-06-17',\n 'gemini-2.5-flash-lite-preview-09-2025',\n 'gemini-2.5-flash-preview-04-17',\n 'gemini-2.5-flash-preview-05-20',\n 'gemini-2.5-flash-preview-09-2025',\n 'gemini-2.5-pro',\n 'gemini-2.5-pro-preview-05-06',\n 'gemini-2.5-pro-preview-06-05',\n 'gemini-flash-latest',\n 'gemini-flash-lite-latest',\n 'gemini-live-2.5-flash-preview-native-audio',\n ],\n docUrl: 'https://ai.google.dev/gemini-api/docs/pricing',\n },\n inception: {\n url: 'https://api.inceptionlabs.ai/v1/chat/completions',\n apiKeyEnvVar: 'INCEPTION_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Inception',\n models: ['mercury', 'mercury-coder'],\n docUrl: 'https://platform.inceptionlabs.ai/docs',\n },\n wandb: {\n url: 'https://api.inference.wandb.ai/v1/chat/completions',\n apiKeyEnvVar: 'WANDB_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Weights & Biases',\n models: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/DeepSeek-V3-0324',\n 'meta-llama/Llama-3.1-8B-Instruct',\n 'meta-llama/Llama-3.3-70B-Instruct',\n 'meta-llama/Llama-4-Scout-17B-16E-Instruct',\n 'microsoft/Phi-4-mini-instruct',\n 'moonshotai/Kimi-K2-Instruct',\n ],\n docUrl: 'https://weave-docs.wandb.ai/guides/integrations/inference/',\n },\n openai: {\n url: 'https://api.openai.com/v1/chat/completions',\n apiKeyEnvVar: 'OPENAI_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'OpenAI',\n models: [\n 'codex-mini-latest',\n 'gpt-3.5-turbo',\n 'gpt-4',\n 'gpt-4-turbo',\n 'gpt-4.1',\n 'gpt-4.1-mini',\n 'gpt-4.1-nano',\n 'gpt-4o',\n 'gpt-4o-2024-05-13',\n 'gpt-4o-2024-08-06',\n 'gpt-4o-2024-11-20',\n 'gpt-4o-mini',\n 'gpt-5',\n 'gpt-5-chat-latest',\n 'gpt-5-codex',\n 'gpt-5-mini',\n 'gpt-5-nano',\n 'o1',\n 'o1-mini',\n 'o1-preview',\n 'o1-pro',\n 'o3',\n 'o3-deep-research',\n 'o3-mini',\n 'o3-pro',\n 'o4-mini',\n 'o4-mini-deep-research',\n ],\n docUrl: 'https://platform.openai.com/docs/models',\n },\n 'zhipuai-coding-plan': {\n url: 'https://open.bigmodel.cn/api/coding/paas/v4/chat/completions',\n apiKeyEnvVar: 'ZHIPU_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Zhipu AI Coding Plan',\n models: ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n docUrl: 'https://docs.bigmodel.cn/cn/coding-plan/overview',\n },\n perplexity: {\n url: 'https://api.perplexity.ai/chat/completions',\n apiKeyEnvVar: 'PERPLEXITY_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Perplexity',\n models: ['sonar', 'sonar-pro', 'sonar-reasoning', 'sonar-reasoning-pro'],\n docUrl: 'https://docs.perplexity.ai',\n },\n openrouter: {\n url: 'https://openrouter.ai/api/v1/chat/completions',\n apiKeyEnvVar: 'OPENROUTER_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'OpenRouter',\n models: [\n 'anthropic/claude-3.5-haiku',\n 'anthropic/claude-3.7-sonnet',\n 'anthropic/claude-opus-4',\n 'anthropic/claude-opus-4.1',\n 'anthropic/claude-sonnet-4',\n 'anthropic/claude-sonnet-4.5',\n 'cognitivecomputations/dolphin3.0-mistral-24b',\n 'cognitivecomputations/dolphin3.0-r1-mistral-24b',\n 'deepseek/deepseek-chat-v3-0324',\n 'deepseek/deepseek-chat-v3.1',\n 'deepseek/deepseek-r1-0528-qwen3-8b:free',\n 'deepseek/deepseek-r1-0528:free',\n 'deepseek/deepseek-r1-distill-llama-70b',\n 'deepseek/deepseek-r1-distill-qwen-14b',\n 'deepseek/deepseek-r1:free',\n 'deepseek/deepseek-v3-base:free',\n 'deepseek/deepseek-v3.1-terminus',\n 'featherless/qwerky-72b',\n 'google/gemini-2.0-flash-001',\n 'google/gemini-2.0-flash-exp:free',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'google/gemini-2.5-pro-preview-05-06',\n 'google/gemini-2.5-pro-preview-06-05',\n 'google/gemma-2-9b-it:free',\n 'google/gemma-3-12b-it',\n 'google/gemma-3-27b-it',\n 'google/gemma-3n-e4b-it',\n 'google/gemma-3n-e4b-it:free',\n 'meta-llama/llama-3.2-11b-vision-instruct',\n 'meta-llama/llama-3.3-70b-instruct:free',\n 'meta-llama/llama-4-scout:free',\n 'microsoft/mai-ds-r1:free',\n 'mistralai/codestral-2508',\n 'mistralai/devstral-medium-2507',\n 'mistralai/devstral-small-2505',\n 'mistralai/devstral-small-2505:free',\n 'mistralai/devstral-small-2507',\n 'mistralai/mistral-7b-instruct:free',\n 'mistralai/mistral-medium-3',\n 'mistralai/mistral-medium-3.1',\n 'mistralai/mistral-nemo:free',\n 'mistralai/mistral-small-3.1-24b-instruct',\n 'mistralai/mistral-small-3.2-24b-instruct',\n 'mistralai/mistral-small-3.2-24b-instruct:free',\n 'moonshotai/kimi-dev-72b:free',\n 'moonshotai/kimi-k2',\n 'moonshotai/kimi-k2-0905',\n 'moonshotai/kimi-k2:free',\n 'nousresearch/deephermes-3-llama-3-8b-preview',\n 'nousresearch/hermes-4-405b',\n 'nousresearch/hermes-4-70b',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4o-mini',\n 'openai/gpt-5',\n 'openai/gpt-5-chat',\n 'openai/gpt-5-codex',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'openai/o4-mini',\n 'openrouter/cypher-alpha:free',\n 'openrouter/horizon-alpha',\n 'openrouter/horizon-beta',\n 'openrouter/sonoma-dusk-alpha',\n 'openrouter/sonoma-sky-alpha',\n 'qwen/qwen-2.5-coder-32b-instruct',\n 'qwen/qwen2.5-vl-32b-instruct:free',\n 'qwen/qwen2.5-vl-72b-instruct',\n 'qwen/qwen2.5-vl-72b-instruct:free',\n 'qwen/qwen3-14b:free',\n 'qwen/qwen3-235b-a22b-07-25',\n 'qwen/qwen3-235b-a22b-07-25:free',\n 'qwen/qwen3-235b-a22b-thinking-2507',\n 'qwen/qwen3-235b-a22b:free',\n 'qwen/qwen3-30b-a3b-instruct-2507',\n 'qwen/qwen3-30b-a3b:free',\n 'qwen/qwen3-32b:free',\n 'qwen/qwen3-8b:free',\n 'qwen/qwen3-coder',\n 'qwen/qwen3-coder:free',\n 'qwen/qwen3-max',\n 'qwen/qwen3-next-80b-a3b-instruct',\n 'qwen/qwq-32b:free',\n 'rekaai/reka-flash-3',\n 'sarvamai/sarvam-m:free',\n 'thudm/glm-z1-32b:free',\n 'tngtech/deepseek-r1t2-chimera:free',\n 'x-ai/grok-3',\n 'x-ai/grok-3-beta',\n 'x-ai/grok-3-mini',\n 'x-ai/grok-3-mini-beta',\n 'x-ai/grok-4',\n 'x-ai/grok-4-fast',\n 'x-ai/grok-4-fast:free',\n 'x-ai/grok-code-fast-1',\n 'z-ai/glm-4.5',\n 'z-ai/glm-4.5-air',\n 'z-ai/glm-4.5-air:free',\n 'z-ai/glm-4.5v',\n ],\n docUrl: 'https://openrouter.ai/models',\n },\n synthetic: {\n url: 'https://api.synthetic.new/v1/chat/completions',\n apiKeyEnvVar: 'SYNTHETIC_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Synthetic',\n models: [\n 'hf:Qwen/Qwen2.5-Coder-32B-Instruct',\n 'hf:Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'hf:Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'hf:Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'hf:deepseek-ai/DeepSeek-R1',\n 'hf:deepseek-ai/DeepSeek-R1-0528',\n 'hf:deepseek-ai/DeepSeek-V3',\n 'hf:deepseek-ai/DeepSeek-V3-0324',\n 'hf:deepseek-ai/DeepSeek-V3.1',\n 'hf:deepseek-ai/DeepSeek-V3.1-Terminus',\n 'hf:meta-llama/Llama-3.1-405B-Instruct',\n 'hf:meta-llama/Llama-3.1-70B-Instruct',\n 'hf:meta-llama/Llama-3.1-8B-Instruct',\n 'hf:meta-llama/Llama-3.3-70B-Instruct',\n 'hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8',\n 'hf:meta-llama/Llama-4-Scout-17B-16E-Instruct',\n 'hf:moonshotai/Kimi-K2-Instruct',\n 'hf:moonshotai/Kimi-K2-Instruct-0905',\n 'hf:openai/gpt-oss-120b',\n 'hf:zai-org/GLM-4.5',\n ],\n docUrl: 'https://synthetic.new/pricing',\n },\n deepinfra: {\n url: 'https://api.deepinfra.com/v1/openai/chat/completions',\n apiKeyEnvVar: 'DEEPINFRA_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Deep Infra',\n models: [\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo',\n 'moonshotai/Kimi-K2-Instruct',\n 'zai-org/GLM-4.5',\n ],\n docUrl: 'https://deepinfra.com/models',\n },\n zhipuai: {\n url: 'https://open.bigmodel.cn/api/paas/v4/chat/completions',\n apiKeyEnvVar: 'ZHIPU_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Zhipu AI',\n models: ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n docUrl: 'https://docs.z.ai/guides/overview/pricing',\n },\n submodel: {\n url: 'https://llm.submodel.ai/v1/chat/completions',\n apiKeyEnvVar: 'SUBMODEL_INSTAGEN_ACCESS_KEY',\n apiKeyHeader: 'Authorization',\n name: 'submodel',\n models: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/DeepSeek-V3-0324',\n 'deepseek-ai/DeepSeek-V3.1',\n 'openai/gpt-oss-120b',\n 'zai-org/GLM-4.5-Air',\n 'zai-org/GLM-4.5-FP8',\n ],\n docUrl: 'https://submodel.gitbook.io',\n },\n zai: {\n url: 'https://api.z.ai/api/paas/v4/chat/completions',\n apiKeyEnvVar: 'ZHIPU_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Z.AI',\n models: ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n docUrl: 'https://docs.z.ai/guides/overview/pricing',\n },\n inference: {\n url: 'https://inference.net/v1/chat/completions',\n apiKeyEnvVar: 'INFERENCE_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Inference',\n models: [\n 'google/gemma-3',\n 'meta/llama-3.1-8b-instruct',\n 'meta/llama-3.2-11b-vision-instruct',\n 'meta/llama-3.2-1b-instruct',\n 'meta/llama-3.2-3b-instruct',\n 'mistral/mistral-nemo-12b-instruct',\n 'osmosis/osmosis-structure-0.6b',\n 'qwen/qwen-2.5-7b-vision-instruct',\n 'qwen/qwen3-embedding-4b',\n ],\n docUrl: 'https://inference.net/models',\n },\n requesty: {\n url: 'https://router.requesty.ai/v1/chat/completions',\n apiKeyEnvVar: 'REQUESTY_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Requesty',\n models: [\n 'anthropic/claude-3-7-sonnet',\n 'anthropic/claude-4-sonnet-20250522',\n 'anthropic/claude-opus-4',\n 'anthropic/claude-opus-4-1-20250805',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4o-mini',\n 'openai/gpt-5',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/o4-mini',\n ],\n docUrl: 'https://requesty.ai/solution/llm-routing/models',\n },\n morph: {\n url: 'https://api.morphllm.com/v1/chat/completions',\n apiKeyEnvVar: 'MORPH_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Morph',\n models: ['auto', 'morph-v3-fast', 'morph-v3-large'],\n docUrl: 'https://docs.morphllm.com/api-reference/introduction',\n },\n lmstudio: {\n url: 'http://127.0.0.1:1234/v1/chat/completions',\n apiKeyEnvVar: 'LMSTUDIO_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'LMStudio',\n models: ['openai/gpt-oss-20b', 'qwen/qwen3-30b-a3b-2507', 'qwen/qwen3-coder-30b'],\n docUrl: 'https://lmstudio.ai/models',\n },\n anthropic: {\n url: 'https://api.anthropic.com/v1/chat/completions',\n apiKeyEnvVar: 'ANTHROPIC_API_KEY',\n apiKeyHeader: 'x-api-key',\n name: 'Anthropic',\n models: [\n 'claude-3-5-haiku-20241022',\n 'claude-3-5-sonnet-20240620',\n 'claude-3-5-sonnet-20241022',\n 'claude-3-7-sonnet-20250219',\n 'claude-3-haiku-20240307',\n 'claude-3-opus-20240229',\n 'claude-3-sonnet-20240229',\n 'claude-opus-4-1-20250805',\n 'claude-opus-4-20250514',\n 'claude-sonnet-4-20250514',\n 'claude-sonnet-4-5-20250929',\n ],\n docUrl: 'https://docs.anthropic.com/en/docs/about-claude/models',\n },\n 'fireworks-ai': {\n url: 'https://api.fireworks.ai/inference/v1/chat/completions',\n apiKeyEnvVar: 'FIREWORKS_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Fireworks AI',\n models: [\n 'accounts/fireworks/models/deepseek-r1-0528',\n 'accounts/fireworks/models/deepseek-v3-0324',\n 'accounts/fireworks/models/deepseek-v3p1',\n 'accounts/fireworks/models/glm-4p5',\n 'accounts/fireworks/models/glm-4p5-air',\n 'accounts/fireworks/models/gpt-oss-120b',\n 'accounts/fireworks/models/gpt-oss-20b',\n 'accounts/fireworks/models/kimi-k2-instruct',\n 'accounts/fireworks/models/qwen3-235b-a22b',\n 'accounts/fireworks/models/qwen3-coder-480b-a35b-instruct',\n ],\n docUrl: 'https://fireworks.ai/docs/',\n },\n modelscope: {\n url: 'https://api-inference.modelscope.cn/v1/chat/completions',\n apiKeyEnvVar: 'MODELSCOPE_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'ModelScope',\n models: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-30B-A3B-Instruct-2507',\n 'Qwen/Qwen3-30B-A3B-Thinking-2507',\n 'Qwen/Qwen3-Coder-30B-A3B-Instruct',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'ZhipuAI/GLM-4.5',\n ],\n docUrl: 'https://modelscope.cn/docs/model-service/API-Inference/intro',\n },\n llama: {\n url: 'https://api.llama.com/compat/v1/chat/completions',\n apiKeyEnvVar: 'LLAMA_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Llama',\n models: [\n 'cerebras-llama-4-maverick-17b-128e-instruct',\n 'cerebras-llama-4-scout-17b-16e-instruct',\n 'groq-llama-4-maverick-17b-128e-instruct',\n 'llama-3.3-70b-instruct',\n 'llama-3.3-8b-instruct',\n 'llama-4-maverick-17b-128e-instruct-fp8',\n 'llama-4-scout-17b-16e-instruct-fp8',\n ],\n docUrl: 'https://llama.developer.meta.com/docs/models',\n },\n cerebras: {\n url: 'https://api.cerebras.ai/v1/chat/completions',\n apiKeyEnvVar: 'CEREBRAS_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Cerebras',\n models: ['gpt-oss-120b', 'qwen-3-235b-a22b-instruct-2507', 'qwen-3-coder-480b'],\n docUrl: 'https://inference-docs.cerebras.ai/models/overview',\n },\n} as const;\n\n/**\n * Available models per provider\n */\nexport const PROVIDER_MODELS = {\n 'moonshotai-cn': ['kimi-k2-0711-preview', 'kimi-k2-0905-preview', 'kimi-k2-turbo-preview'],\n lucidquery: ['lucidnova-rf1-100b', 'lucidquery-nexus-coder'],\n moonshotai: ['kimi-k2-0711-preview', 'kimi-k2-0905-preview', 'kimi-k2-turbo-preview'],\n 'zai-coding-plan': ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n alibaba: ['qwen3-coder-plus'],\n xai: [\n 'grok-2',\n 'grok-2-1212',\n 'grok-2-latest',\n 'grok-2-vision',\n 'grok-2-vision-1212',\n 'grok-2-vision-latest',\n 'grok-3',\n 'grok-3-fast',\n 'grok-3-fast-latest',\n 'grok-3-latest',\n 'grok-3-mini',\n 'grok-3-mini-fast',\n 'grok-3-mini-fast-latest',\n 'grok-3-mini-latest',\n 'grok-4',\n 'grok-4-fast',\n 'grok-4-fast-non-reasoning',\n 'grok-beta',\n 'grok-code-fast-1',\n 'grok-vision-beta',\n ],\n nvidia: [\n 'black-forest-labs/flux.1-dev',\n 'deepseek-ai/deepseek-v3.1',\n 'google/gemma-3-27b-it',\n 'microsoft/phi-4-mini-instruct',\n 'moonshotai/kimi-k2-instruct',\n 'nvidia/cosmos-nemotron-34b',\n 'nvidia/llama-3.1-nemotron-ultra-253b-v1',\n 'nvidia/nemoretriever-ocr-v1',\n 'nvidia/parakeet-tdt-0.6b-v2',\n 'openai/gpt-oss-120b',\n 'openai/whisper-large-v3',\n 'qwen/qwen3-235b-a22b',\n 'qwen/qwen3-coder-480b-a35b-instruct',\n ],\n upstage: ['solar-mini', 'solar-pro2'],\n groq: [\n 'deepseek-r1-distill-llama-70b',\n 'gemma2-9b-it',\n 'llama-3.1-8b-instant',\n 'llama-3.3-70b-versatile',\n 'llama-guard-3-8b',\n 'llama3-70b-8192',\n 'llama3-8b-8192',\n 'meta-llama/llama-4-maverick-17b-128e-instruct',\n 'meta-llama/llama-4-scout-17b-16e-instruct',\n 'meta-llama/llama-guard-4-12b',\n 'mistral-saba-24b',\n 'moonshotai/kimi-k2-instruct',\n 'moonshotai/kimi-k2-instruct-0905',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'qwen-qwq-32b',\n 'qwen/qwen3-32b',\n ],\n 'github-copilot': [\n 'claude-3.5-sonnet',\n 'claude-3.7-sonnet',\n 'claude-3.7-sonnet-thought',\n 'claude-opus-4',\n 'claude-opus-41',\n 'claude-sonnet-4',\n 'claude-sonnet-4.5',\n 'gemini-2.0-flash-001',\n 'gemini-2.5-pro',\n 'gpt-4.1',\n 'gpt-4o',\n 'gpt-5',\n 'gpt-5-codex',\n 'gpt-5-mini',\n 'grok-code-fast-1',\n 'o3',\n 'o3-mini',\n 'o4-mini',\n ],\n mistral: [\n 'codestral-latest',\n 'devstral-medium-2507',\n 'devstral-small-2505',\n 'devstral-small-2507',\n 'magistral-medium-latest',\n 'magistral-small',\n 'ministral-3b-latest',\n 'ministral-8b-latest',\n 'mistral-large-latest',\n 'mistral-medium-2505',\n 'mistral-medium-2508',\n 'mistral-medium-latest',\n 'mistral-nemo',\n 'mistral-small-latest',\n 'open-mistral-7b',\n 'open-mixtral-8x22b',\n 'open-mixtral-8x7b',\n 'pixtral-12b',\n 'pixtral-large-latest',\n ],\n vercel: [\n 'amazon/nova-lite',\n 'amazon/nova-micro',\n 'amazon/nova-pro',\n 'anthropic/claude-3-5-haiku',\n 'anthropic/claude-3-haiku',\n 'anthropic/claude-3-opus',\n 'anthropic/claude-3.5-sonnet',\n 'anthropic/claude-3.7-sonnet',\n 'anthropic/claude-4-1-opus',\n 'anthropic/claude-4-opus',\n 'anthropic/claude-4-sonnet',\n 'anthropic/claude-4.5-sonnet',\n 'cerebras/qwen3-coder',\n 'deepseek/deepseek-r1',\n 'deepseek/deepseek-r1-distill-llama-70b',\n 'google/gemini-2.0-flash',\n 'google/gemini-2.0-flash-lite',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'meta/llama-3.3-70b',\n 'meta/llama-4-maverick',\n 'meta/llama-4-scout',\n 'mistral/codestral',\n 'mistral/magistral-medium',\n 'mistral/magistral-small',\n 'mistral/ministral-3b',\n 'mistral/ministral-8b',\n 'mistral/mistral-large',\n 'mistral/mistral-small',\n 'mistral/mixtral-8x22b-instruct',\n 'mistral/pixtral-12b',\n 'mistral/pixtral-large',\n 'moonshotai/kimi-k2',\n 'morph/morph-v3-fast',\n 'morph/morph-v3-large',\n 'openai/gpt-4-turbo',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4.1-nano',\n 'openai/gpt-4o',\n 'openai/gpt-4o-mini',\n 'openai/gpt-5',\n 'openai/gpt-5-codex',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'openai/o1',\n 'openai/o3',\n 'openai/o3-mini',\n 'openai/o4-mini',\n 'vercel/v0-1.0-md',\n 'vercel/v0-1.5-md',\n 'xai/grok-2',\n 'xai/grok-2-vision',\n 'xai/grok-3',\n 'xai/grok-3-fast',\n 'xai/grok-3-mini',\n 'xai/grok-3-mini-fast',\n 'xai/grok-4',\n 'xai/grok-4-fast',\n 'xai/grok-4-fast-non-reasoning',\n 'xai/grok-code-fast-1',\n ],\n deepseek: ['deepseek-chat', 'deepseek-reasoner'],\n 'alibaba-cn': ['qwen3-coder-plus'],\n venice: [\n 'deepseek-coder-v2-lite',\n 'deepseek-r1-671b',\n 'dolphin-2.9.2-qwen2-72b',\n 'llama-3.1-405b',\n 'llama-3.2-3b',\n 'llama-3.3-70b',\n 'mistral-31-24b',\n 'qwen-2.5-coder-32b',\n 'qwen-2.5-qwq-32b',\n 'qwen-2.5-vl',\n 'qwen3-235b',\n 'qwen3-4b',\n 'venice-uncensored',\n ],\n chutes: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-30B-A3B',\n 'Qwen/Qwen3-30B-A3B-Instruct-2507',\n 'Qwen/Qwen3-30B-A3B-Thinking-2507',\n 'Qwen/Qwen3-Coder-30B-A3B-Instruct',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8',\n 'Qwen/Qwen3-Next-80B-A3B-Instruct',\n 'Qwen/Qwen3-Next-80B-A3B-Thinking',\n 'chutesai/Devstral-Small-2505',\n 'chutesai/Mistral-Small-3.2-24B-Instruct-2506',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/DeepSeek-R1-0528-Qwen3-8B',\n 'deepseek-ai/DeepSeek-R1-Distill-Llama-70B',\n 'deepseek-ai/DeepSeek-V3-0324',\n 'deepseek-ai/DeepSeek-V3.1',\n 'deepseek-ai/DeepSeek-V3.1-Terminus',\n 'deepseek-ai/DeepSeek-V3.1-turbo',\n 'deepseek-ai/DeepSeek-V3.1:THINKING',\n 'meituan-longcat/LongCat-Flash-Chat-FP8',\n 'moonshotai/Kimi-Dev-72B',\n 'moonshotai/Kimi-K2-Instruct-0905',\n 'moonshotai/Kimi-K2-Instruct-75k',\n 'moonshotai/Kimi-VL-A3B-Thinking',\n 'openai/gpt-oss-120b',\n 'tngtech/DeepSeek-R1T-Chimera',\n 'tngtech/DeepSeek-TNG-R1T2-Chimera',\n 'zai-org/GLM-4.5-Air',\n 'zai-org/GLM-4.5-FP8',\n 'zai-org/GLM-4.5-turbo',\n ],\n cortecs: [\n 'claude-sonnet-4',\n 'deepseek-v3-0324',\n 'gemini-2.5-pro',\n 'gpt-4.1',\n 'gpt-oss-120b',\n 'kimi-k2-instruct',\n 'llama-3.1-405b-instruct',\n 'nova-pro-v1',\n 'qwen3-32b',\n 'qwen3-coder-480b-a35b-instruct',\n ],\n 'github-models': [\n 'ai21-labs/ai21-jamba-1.5-large',\n 'ai21-labs/ai21-jamba-1.5-mini',\n 'cohere/cohere-command-a',\n 'cohere/cohere-command-r',\n 'cohere/cohere-command-r-08-2024',\n 'cohere/cohere-command-r-plus',\n 'cohere/cohere-command-r-plus-08-2024',\n 'core42/jais-30b-chat',\n 'deepseek/deepseek-r1',\n 'deepseek/deepseek-r1-0528',\n 'deepseek/deepseek-v3-0324',\n 'meta/llama-3.2-11b-vision-instruct',\n 'meta/llama-3.2-90b-vision-instruct',\n 'meta/llama-3.3-70b-instruct',\n 'meta/llama-4-maverick-17b-128e-instruct-fp8',\n 'meta/llama-4-scout-17b-16e-instruct',\n 'meta/meta-llama-3-70b-instruct',\n 'meta/meta-llama-3-8b-instruct',\n 'meta/meta-llama-3.1-405b-instruct',\n 'meta/meta-llama-3.1-70b-instruct',\n 'meta/meta-llama-3.1-8b-instruct',\n 'microsoft/mai-ds-r1',\n 'microsoft/phi-3-medium-128k-instruct',\n 'microsoft/phi-3-medium-4k-instruct',\n 'microsoft/phi-3-mini-128k-instruct',\n 'microsoft/phi-3-mini-4k-instruct',\n 'microsoft/phi-3-small-128k-instruct',\n 'microsoft/phi-3-small-8k-instruct',\n 'microsoft/phi-3.5-mini-instruct',\n 'microsoft/phi-3.5-moe-instruct',\n 'microsoft/phi-3.5-vision-instruct',\n 'microsoft/phi-4',\n 'microsoft/phi-4-mini-instruct',\n 'microsoft/phi-4-mini-reasoning',\n 'microsoft/phi-4-multimodal-instruct',\n 'microsoft/phi-4-reasoning',\n 'mistral-ai/codestral-2501',\n 'mistral-ai/ministral-3b',\n 'mistral-ai/mistral-large-2411',\n 'mistral-ai/mistral-medium-2505',\n 'mistral-ai/mistral-nemo',\n 'mistral-ai/mistral-small-2503',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4.1-nano',\n 'openai/gpt-4o',\n 'openai/gpt-4o-mini',\n 'openai/o1',\n 'openai/o1-mini',\n 'openai/o1-preview',\n 'openai/o3',\n 'openai/o3-mini',\n 'openai/o4-mini',\n 'xai/grok-3',\n 'xai/grok-3-mini',\n ],\n togetherai: [\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8',\n 'deepseek-ai/DeepSeek-R1',\n 'deepseek-ai/DeepSeek-V3',\n 'meta-llama/Llama-3.3-70B-Instruct-Turbo',\n 'moonshotai/Kimi-K2-Instruct',\n 'openai/gpt-oss-120b',\n ],\n baseten: ['Qwen3/Qwen3-Coder-480B-A35B-Instruct', 'moonshotai/Kimi-K2-Instruct-0905'],\n huggingface: [\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'Qwen/Qwen3-Next-80B-A3B-Instruct',\n 'Qwen/Qwen3-Next-80B-A3B-Thinking',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/Deepseek-V3-0324',\n 'moonshotai/Kimi-K2-Instruct',\n 'moonshotai/Kimi-K2-Instruct-0905',\n 'zai-org/GLM-4.5',\n 'zai-org/GLM-4.5-Air',\n ],\n opencode: [\n 'claude-3-5-haiku',\n 'claude-opus-4-1',\n 'claude-sonnet-4',\n 'claude-sonnet-4-5',\n 'code-supernova',\n 'gpt-5',\n 'gpt-5-codex',\n 'grok-code',\n 'kimi-k2',\n 'qwen3-coder',\n 'qwen3-max',\n ],\n fastrouter: [\n 'anthropic/claude-opus-4.1',\n 'anthropic/claude-sonnet-4',\n 'deepseek-ai/deepseek-r1-distill-llama-70b',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'moonshotai/kimi-k2',\n 'openai/gpt-4.1',\n 'openai/gpt-5',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'qwen/qwen3-coder',\n 'x-ai/grok-4',\n ],\n google: [\n 'gemini-1.5-flash',\n 'gemini-1.5-flash-8b',\n 'gemini-1.5-pro',\n 'gemini-2.0-flash',\n 'gemini-2.0-flash-lite',\n 'gemini-2.5-flash',\n 'gemini-2.5-flash-lite',\n 'gemini-2.5-flash-lite-preview-06-17',\n 'gemini-2.5-flash-lite-preview-09-2025',\n 'gemini-2.5-flash-preview-04-17',\n 'gemini-2.5-flash-preview-05-20',\n 'gemini-2.5-flash-preview-09-2025',\n 'gemini-2.5-pro',\n 'gemini-2.5-pro-preview-05-06',\n 'gemini-2.5-pro-preview-06-05',\n 'gemini-flash-latest',\n 'gemini-flash-lite-latest',\n 'gemini-live-2.5-flash-preview-native-audio',\n ],\n inception: ['mercury', 'mercury-coder'],\n wandb: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/DeepSeek-V3-0324',\n 'meta-llama/Llama-3.1-8B-Instruct',\n 'meta-llama/Llama-3.3-70B-Instruct',\n 'meta-llama/Llama-4-Scout-17B-16E-Instruct',\n 'microsoft/Phi-4-mini-instruct',\n 'moonshotai/Kimi-K2-Instruct',\n ],\n openai: [\n 'codex-mini-latest',\n 'gpt-3.5-turbo',\n 'gpt-4',\n 'gpt-4-turbo',\n 'gpt-4.1',\n 'gpt-4.1-mini',\n 'gpt-4.1-nano',\n 'gpt-4o',\n 'gpt-4o-2024-05-13',\n 'gpt-4o-2024-08-06',\n 'gpt-4o-2024-11-20',\n 'gpt-4o-mini',\n 'gpt-5',\n 'gpt-5-chat-latest',\n 'gpt-5-codex',\n 'gpt-5-mini',\n 'gpt-5-nano',\n 'o1',\n 'o1-mini',\n 'o1-preview',\n 'o1-pro',\n 'o3',\n 'o3-deep-research',\n 'o3-mini',\n 'o3-pro',\n 'o4-mini',\n 'o4-mini-deep-research',\n ],\n 'zhipuai-coding-plan': ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n perplexity: ['sonar', 'sonar-pro', 'sonar-reasoning', 'sonar-reasoning-pro'],\n openrouter: [\n 'anthropic/claude-3.5-haiku',\n 'anthropic/claude-3.7-sonnet',\n 'anthropic/claude-opus-4',\n 'anthropic/claude-opus-4.1',\n 'anthropic/claude-sonnet-4',\n 'anthropic/claude-sonnet-4.5',\n 'cognitivecomputations/dolphin3.0-mistral-24b',\n 'cognitivecomputations/dolphin3.0-r1-mistral-24b',\n 'deepseek/deepseek-chat-v3-0324',\n 'deepseek/deepseek-chat-v3.1',\n 'deepseek/deepseek-r1-0528-qwen3-8b:free',\n 'deepseek/deepseek-r1-0528:free',\n 'deepseek/deepseek-r1-distill-llama-70b',\n 'deepseek/deepseek-r1-distill-qwen-14b',\n 'deepseek/deepseek-r1:free',\n 'deepseek/deepseek-v3-base:free',\n 'deepseek/deepseek-v3.1-terminus',\n 'featherless/qwerky-72b',\n 'google/gemini-2.0-flash-001',\n 'google/gemini-2.0-flash-exp:free',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'google/gemini-2.5-pro-preview-05-06',\n 'google/gemini-2.5-pro-preview-06-05',\n 'google/gemma-2-9b-it:free',\n 'google/gemma-3-12b-it',\n 'google/gemma-3-27b-it',\n 'google/gemma-3n-e4b-it',\n 'google/gemma-3n-e4b-it:free',\n 'meta-llama/llama-3.2-11b-vision-instruct',\n 'meta-llama/llama-3.3-70b-instruct:free',\n 'meta-llama/llama-4-scout:free',\n 'microsoft/mai-ds-r1:free',\n 'mistralai/codestral-2508',\n 'mistralai/devstral-medium-2507',\n 'mistralai/devstral-small-2505',\n 'mistralai/devstral-small-2505:free',\n 'mistralai/devstral-small-2507',\n 'mistralai/mistral-7b-instruct:free',\n 'mistralai/mistral-medium-3',\n 'mistralai/mistral-medium-3.1',\n 'mistralai/mistral-nemo:free',\n 'mistralai/mistral-small-3.1-24b-instruct',\n 'mistralai/mistral-small-3.2-24b-instruct',\n 'mistralai/mistral-small-3.2-24b-instruct:free',\n 'moonshotai/kimi-dev-72b:free',\n 'moonshotai/kimi-k2',\n 'moonshotai/kimi-k2-0905',\n 'moonshotai/kimi-k2:free',\n 'nousresearch/deephermes-3-llama-3-8b-preview',\n 'nousresearch/hermes-4-405b',\n 'nousresearch/hermes-4-70b',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4o-mini',\n 'openai/gpt-5',\n 'openai/gpt-5-chat',\n 'openai/gpt-5-codex',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/gpt-oss-120b',\n 'openai/gpt-oss-20b',\n 'openai/o4-mini',\n 'openrouter/cypher-alpha:free',\n 'openrouter/horizon-alpha',\n 'openrouter/horizon-beta',\n 'openrouter/sonoma-dusk-alpha',\n 'openrouter/sonoma-sky-alpha',\n 'qwen/qwen-2.5-coder-32b-instruct',\n 'qwen/qwen2.5-vl-32b-instruct:free',\n 'qwen/qwen2.5-vl-72b-instruct',\n 'qwen/qwen2.5-vl-72b-instruct:free',\n 'qwen/qwen3-14b:free',\n 'qwen/qwen3-235b-a22b-07-25',\n 'qwen/qwen3-235b-a22b-07-25:free',\n 'qwen/qwen3-235b-a22b-thinking-2507',\n 'qwen/qwen3-235b-a22b:free',\n 'qwen/qwen3-30b-a3b-instruct-2507',\n 'qwen/qwen3-30b-a3b:free',\n 'qwen/qwen3-32b:free',\n 'qwen/qwen3-8b:free',\n 'qwen/qwen3-coder',\n 'qwen/qwen3-coder:free',\n 'qwen/qwen3-max',\n 'qwen/qwen3-next-80b-a3b-instruct',\n 'qwen/qwq-32b:free',\n 'rekaai/reka-flash-3',\n 'sarvamai/sarvam-m:free',\n 'thudm/glm-z1-32b:free',\n 'tngtech/deepseek-r1t2-chimera:free',\n 'x-ai/grok-3',\n 'x-ai/grok-3-beta',\n 'x-ai/grok-3-mini',\n 'x-ai/grok-3-mini-beta',\n 'x-ai/grok-4',\n 'x-ai/grok-4-fast',\n 'x-ai/grok-4-fast:free',\n 'x-ai/grok-code-fast-1',\n 'z-ai/glm-4.5',\n 'z-ai/glm-4.5-air',\n 'z-ai/glm-4.5-air:free',\n 'z-ai/glm-4.5v',\n ],\n synthetic: [\n 'hf:Qwen/Qwen2.5-Coder-32B-Instruct',\n 'hf:Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'hf:Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'hf:Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'hf:deepseek-ai/DeepSeek-R1',\n 'hf:deepseek-ai/DeepSeek-R1-0528',\n 'hf:deepseek-ai/DeepSeek-V3',\n 'hf:deepseek-ai/DeepSeek-V3-0324',\n 'hf:deepseek-ai/DeepSeek-V3.1',\n 'hf:deepseek-ai/DeepSeek-V3.1-Terminus',\n 'hf:meta-llama/Llama-3.1-405B-Instruct',\n 'hf:meta-llama/Llama-3.1-70B-Instruct',\n 'hf:meta-llama/Llama-3.1-8B-Instruct',\n 'hf:meta-llama/Llama-3.3-70B-Instruct',\n 'hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8',\n 'hf:meta-llama/Llama-4-Scout-17B-16E-Instruct',\n 'hf:moonshotai/Kimi-K2-Instruct',\n 'hf:moonshotai/Kimi-K2-Instruct-0905',\n 'hf:openai/gpt-oss-120b',\n 'hf:zai-org/GLM-4.5',\n ],\n deepinfra: [\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo',\n 'moonshotai/Kimi-K2-Instruct',\n 'zai-org/GLM-4.5',\n ],\n zhipuai: ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n submodel: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8',\n 'deepseek-ai/DeepSeek-R1-0528',\n 'deepseek-ai/DeepSeek-V3-0324',\n 'deepseek-ai/DeepSeek-V3.1',\n 'openai/gpt-oss-120b',\n 'zai-org/GLM-4.5-Air',\n 'zai-org/GLM-4.5-FP8',\n ],\n zai: ['glm-4.5', 'glm-4.5-air', 'glm-4.5-flash', 'glm-4.5v', 'glm-4.6'],\n inference: [\n 'google/gemma-3',\n 'meta/llama-3.1-8b-instruct',\n 'meta/llama-3.2-11b-vision-instruct',\n 'meta/llama-3.2-1b-instruct',\n 'meta/llama-3.2-3b-instruct',\n 'mistral/mistral-nemo-12b-instruct',\n 'osmosis/osmosis-structure-0.6b',\n 'qwen/qwen-2.5-7b-vision-instruct',\n 'qwen/qwen3-embedding-4b',\n ],\n requesty: [\n 'anthropic/claude-3-7-sonnet',\n 'anthropic/claude-4-sonnet-20250522',\n 'anthropic/claude-opus-4',\n 'anthropic/claude-opus-4-1-20250805',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-pro',\n 'openai/gpt-4.1',\n 'openai/gpt-4.1-mini',\n 'openai/gpt-4o-mini',\n 'openai/gpt-5',\n 'openai/gpt-5-mini',\n 'openai/gpt-5-nano',\n 'openai/o4-mini',\n ],\n morph: ['auto', 'morph-v3-fast', 'morph-v3-large'],\n lmstudio: ['openai/gpt-oss-20b', 'qwen/qwen3-30b-a3b-2507', 'qwen/qwen3-coder-30b'],\n anthropic: [\n 'claude-3-5-haiku-20241022',\n 'claude-3-5-sonnet-20240620',\n 'claude-3-5-sonnet-20241022',\n 'claude-3-7-sonnet-20250219',\n 'claude-3-haiku-20240307',\n 'claude-3-opus-20240229',\n 'claude-3-sonnet-20240229',\n 'claude-opus-4-1-20250805',\n 'claude-opus-4-20250514',\n 'claude-sonnet-4-20250514',\n 'claude-sonnet-4-5-20250929',\n ],\n 'fireworks-ai': [\n 'accounts/fireworks/models/deepseek-r1-0528',\n 'accounts/fireworks/models/deepseek-v3-0324',\n 'accounts/fireworks/models/deepseek-v3p1',\n 'accounts/fireworks/models/glm-4p5',\n 'accounts/fireworks/models/glm-4p5-air',\n 'accounts/fireworks/models/gpt-oss-120b',\n 'accounts/fireworks/models/gpt-oss-20b',\n 'accounts/fireworks/models/kimi-k2-instruct',\n 'accounts/fireworks/models/qwen3-235b-a22b',\n 'accounts/fireworks/models/qwen3-coder-480b-a35b-instruct',\n ],\n modelscope: [\n 'Qwen/Qwen3-235B-A22B-Instruct-2507',\n 'Qwen/Qwen3-235B-A22B-Thinking-2507',\n 'Qwen/Qwen3-30B-A3B-Instruct-2507',\n 'Qwen/Qwen3-30B-A3B-Thinking-2507',\n 'Qwen/Qwen3-Coder-30B-A3B-Instruct',\n 'Qwen/Qwen3-Coder-480B-A35B-Instruct',\n 'ZhipuAI/GLM-4.5',\n ],\n llama: [\n 'cerebras-llama-4-maverick-17b-128e-instruct',\n 'cerebras-llama-4-scout-17b-16e-instruct',\n 'groq-llama-4-maverick-17b-128e-instruct',\n 'llama-3.3-70b-instruct',\n 'llama-3.3-8b-instruct',\n 'llama-4-maverick-17b-128e-instruct-fp8',\n 'llama-4-scout-17b-16e-instruct-fp8',\n ],\n cerebras: ['gpt-oss-120b', 'qwen-3-235b-a22b-instruct-2507', 'qwen-3-coder-480b'],\n} as const;\n\n/**\n * Type definitions for autocomplete support\n */\nexport type ProviderModels = typeof PROVIDER_MODELS;\nexport type Provider = keyof ProviderModels;\nexport type ModelForProvider<P extends Provider> = ProviderModels[P][number];\n\n/**\n * OpenAI-compatible model ID type\n * Full provider/model paths (e.g., \"openai/gpt-4o\", \"anthropic/claude-3-5-sonnet-20241022\")\n */\nexport type ModelRouterModelId = { [P in Provider]: `${P}/${ModelForProvider<P>}` }[Provider] | (string & {});\n\n/**\n * Get provider configuration by provider ID\n */\nexport function getProviderConfig(providerId: string): ProviderConfig | undefined {\n return PROVIDER_REGISTRY[providerId as keyof typeof PROVIDER_REGISTRY];\n}\n\n/**\n * Check if a provider is registered\n */\nexport function isProviderRegistered(providerId: string): boolean {\n return providerId in PROVIDER_REGISTRY;\n}\n\n/**\n * Get all registered provider IDs\n */\nexport function getRegisteredProviders(): string[] {\n return Object.keys(PROVIDER_REGISTRY);\n}\n\n/**\n * Provider configuration interface\n */\nexport interface ProviderConfig {\n url: string;\n apiKeyEnvVar: string;\n apiKeyHeader?: string;\n name: string;\n models: readonly string[];\n docUrl?: string;\n}\n\n/**\n * Parse a model string to extract provider and model ID\n * Examples:\n * \"openai/gpt-4o\" -> { provider: \"openai\", modelId: \"gpt-4o\" }\n * \"fireworks/accounts/etc/model\" -> { provider: \"fireworks\", modelId: \"accounts/etc/model\" }\n * \"gpt-4o\" -> { provider: null, modelId: \"gpt-4o\" }\n */\nexport function parseModelString(modelString: string): { provider: string | null; modelId: string } {\n const firstSlashIndex = modelString.indexOf('/');\n\n if (firstSlashIndex !== -1) {\n // Has at least one slash - extract everything before first slash as provider\n const provider = modelString.substring(0, firstSlashIndex);\n const modelId = modelString.substring(firstSlashIndex + 1);\n\n if (provider && modelId) {\n return {\n provider,\n modelId,\n };\n }\n }\n\n // No slash or invalid format\n return {\n provider: null,\n modelId: modelString,\n };\n}\n\n/**\n * Type guard to check if a string is a valid OpenAI-compatible model ID\n */\nexport function isValidModelId(modelId: string): modelId is ModelRouterModelId {\n const { provider } = parseModelString(modelId);\n return provider !== null && isProviderRegistered(provider);\n}\n","import type {\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2CallWarning,\n} from '@ai-sdk/provider-v5';\nimport { parseModelString, getProviderConfig } from './provider-registry.generated';\nimport type { ModelRouterModelId } from './provider-registry.generated';\nimport type { OpenAICompatibleConfig } from './shared.types';\n\n// Helper function to resolve API key from environment\nfunction resolveApiKey({ provider, apiKey }: { provider?: string; apiKey?: string }): string | undefined {\n if (apiKey) return apiKey;\n\n if (provider) {\n const config = getProviderConfig(provider);\n if (config?.apiKeyEnvVar) {\n return process.env[config.apiKeyEnvVar];\n }\n }\n\n return undefined;\n}\n\n// Helper function to build headers for the request\nfunction buildHeaders(\n apiKey?: string,\n apiKeyHeader?: string,\n customHeaders?: Record<string, string>,\n provider?: string,\n): Record<string, string> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...customHeaders,\n };\n\n if (apiKey) {\n // Use custom API key header if specified (e.g., 'x-api-key' for Anthropic)\n if (apiKeyHeader === 'x-api-key') {\n headers['x-api-key'] = apiKey;\n } else {\n // Default to Authorization Bearer format\n headers['Authorization'] = `Bearer ${apiKey}`;\n }\n }\n\n // Add provider-specific headers\n if (provider === 'anthropic') {\n headers['anthropic-version'] = '2023-06-01';\n }\n\n return headers;\n}\n\n// TODO: get these types from openai\ninterface OpenAIStreamChunk {\n id?: string;\n object?: string;\n created?: number;\n model?: string;\n choices?: Array<{\n index: number;\n delta?: {\n role?: string;\n content?: string | null;\n tool_calls?: Array<{\n index: number;\n id?: string;\n type?: string;\n function?: {\n name?: string;\n arguments?: string;\n };\n }>;\n };\n finish_reason?: string | null;\n }>;\n usage?: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n };\n}\n\nexport class OpenAICompatibleModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2' as const;\n readonly defaultObjectGenerationMode = 'json' as const;\n readonly supportsStructuredOutputs = true;\n readonly supportsImageUrls = true;\n readonly supportedUrls = {} as Record<string, RegExp[]>;\n\n readonly modelId: string;\n readonly provider: string;\n\n private url: string;\n private headers: Record<string, string>;\n private apiKey: string | undefined;\n\n constructor(config: ModelRouterModelId | OpenAICompatibleConfig) {\n // Parse configuration\n let parsedConfig: OpenAICompatibleConfig;\n\n if (typeof config === 'string') {\n // First check if it's a valid URL\n let isUrl = false;\n try {\n new URL(config);\n isUrl = true;\n } catch {\n // Not a URL, continue with provider parsing\n }\n\n if (isUrl) {\n // If it's a direct URL\n parsedConfig = {\n id: 'unknown',\n url: config,\n };\n this.provider = 'openai-compatible';\n } else {\n // Handle magic strings like \"openai/gpt-4o\" or \"chutes/Qwen/Qwen3-235B-A22B-Instruct-2507\"\n // For multi-slash strings, extract just the provider (first part)\n const firstSlashIndex = config.indexOf('/');\n\n if (firstSlashIndex !== -1) {\n const provider = config.substring(0, firstSlashIndex);\n const modelId = config.substring(firstSlashIndex + 1);\n\n const providerConfig = getProviderConfig(provider);\n if (!providerConfig) {\n throw new Error(`Unknown provider: ${provider}. Use a custom URL instead.`);\n }\n\n parsedConfig = {\n id: modelId,\n url: providerConfig.url,\n apiKey: resolveApiKey({ provider }),\n };\n\n this.provider = provider;\n } else {\n // No slash at all, treat as direct model ID\n throw new Error(`Invalid model string: \"${config}\". Use \"provider/model\" format or a direct URL.`);\n }\n }\n } else {\n // Handle config object\n parsedConfig = config;\n\n // Extract provider from id if present\n const parsed = parseModelString(config.id);\n\n if (!config.url && parsed.provider) {\n // Use provider preset\n const providerConfig = getProviderConfig(parsed.provider);\n if (!providerConfig) {\n throw new Error(`Unknown provider: ${parsed.provider}. Please provide a URL.`);\n }\n parsedConfig.url = providerConfig.url;\n parsedConfig.id = parsed.modelId;\n this.provider = parsed.provider;\n } else {\n this.provider = parsed.provider || 'openai-compatible';\n }\n\n // Resolve API key if not provided\n if (!parsedConfig.apiKey) {\n parsedConfig.apiKey = resolveApiKey({ provider: parsed.provider || undefined });\n }\n }\n\n // Validate we have a URL\n if (!parsedConfig.url) {\n throw new Error('URL is required for OpenAI-compatible model');\n }\n\n // Get provider config for headers\n const providerConfig = this.provider !== 'openai-compatible' ? getProviderConfig(this.provider) : undefined;\n\n // Set final properties\n this.modelId = parsedConfig.id;\n this.url = parsedConfig.url;\n this.apiKey = parsedConfig.apiKey; // Store API key for later validation\n this.headers = buildHeaders(parsedConfig.apiKey, providerConfig?.apiKeyHeader, parsedConfig.headers, this.provider);\n }\n\n private convertMessagesToOpenAI(messages: LanguageModelV2CallOptions['prompt']): any[] {\n return messages\n .map(msg => {\n if (msg.role === 'system') {\n return {\n role: 'system',\n content: msg.content,\n };\n }\n\n if (msg.role === 'user') {\n // Handle content parts\n const contentParts = msg.content\n .map(part => {\n if (part.type === 'text') {\n return { type: 'text', text: part.text };\n }\n // Note: v2 uses 'file' type with image property\n if (part.type === 'file') {\n return {\n type: 'image_url',\n image_url: { url: part.data },\n };\n }\n return null;\n })\n .filter(Boolean);\n\n // If only text parts, flatten to string\n if (contentParts.every(p => p?.type === 'text')) {\n return {\n role: 'user',\n content: contentParts.map(p => p?.text || '').join(''),\n };\n }\n\n return {\n role: 'user',\n content: contentParts,\n };\n }\n\n if (msg.role === 'assistant') {\n const textContent = msg.content\n .filter(part => part.type === 'text')\n .map(part => part.text)\n .join('');\n\n const toolCalls = msg.content\n .filter(part => part.type === 'tool-call')\n .map(part => ({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input || {}),\n },\n }));\n\n return {\n role: 'assistant',\n content: textContent || null,\n ...(toolCalls.length > 0 && { tool_calls: toolCalls }),\n };\n }\n\n if (msg.role === 'tool') {\n return msg.content.map(toolResponse => ({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: JSON.stringify(toolResponse.output),\n }));\n }\n\n return msg;\n })\n .flat();\n }\n\n private convertToolsToOpenAI(tools: LanguageModelV2CallOptions['tools']): any[] | undefined {\n if (!tools || Object.keys(tools).length === 0) return undefined;\n\n return Object.entries(tools).map(([name, tool]) => {\n if (tool.type === 'function') {\n return {\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema || {},\n },\n };\n }\n // For provider-defined tools, use minimal definition\n return {\n type: 'function',\n function: {\n name,\n description: `Provider tool: ${name}`,\n parameters: {},\n },\n };\n });\n }\n\n private mapFinishReason(reason: string | null): LanguageModelV2FinishReason {\n switch (reason) {\n case 'stop':\n return 'stop';\n case 'length':\n case 'max_tokens':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls';\n case 'content_filter':\n return 'content-filter';\n default:\n return 'unknown';\n }\n }\n\n private validateApiKey(): void {\n // Check if API key is required and missing\n if (!this.apiKey && this.provider !== 'openai-compatible') {\n // Get the provider config to find the env var name\n const providerConfig = getProviderConfig(this.provider);\n if (providerConfig?.apiKeyEnvVar) {\n throw new Error(\n `API key not found for provider \"${this.provider}\". Please set the ${providerConfig.apiKeyEnvVar} environment variable.`,\n );\n } else {\n throw new Error(\n `API key not found for provider \"${this.provider}\". Please provide an API key in the configuration.`,\n );\n }\n }\n }\n\n async doGenerate(): Promise<never> {\n throw new Error(\n 'doGenerate is not supported by OpenAICompatibleModel. ' +\n 'Mastra only uses streaming (doStream) for all LLM calls.',\n );\n }\n\n async doStream(options: LanguageModelV2CallOptions): Promise<{\n stream: ReadableStream<LanguageModelV2StreamPart>;\n request?: { body: string };\n response?: { headers: Record<string, string> };\n warnings: LanguageModelV2CallWarning[];\n }> {\n this.validateApiKey(); // Validate API key before making the request\n const { prompt, tools, toolChoice, providerOptions } = options;\n\n // TODO: real body type, not any\n const body: any = {\n messages: this.convertMessagesToOpenAI(prompt),\n model: this.modelId,\n stream: true,\n ...providerOptions,\n };\n\n const openAITools = this.convertToolsToOpenAI(tools);\n if (openAITools) {\n body.tools = openAITools;\n if (toolChoice) {\n body.tool_choice =\n toolChoice.type === 'none'\n ? 'none'\n : toolChoice.type === 'required'\n ? 'required'\n : toolChoice.type === 'auto'\n ? 'auto'\n : toolChoice.type === 'tool'\n ? { type: 'function', function: { name: toolChoice.toolName } }\n : 'auto';\n }\n }\n\n // Handle structured output\n if (options.responseFormat?.type === 'json') {\n body.response_format = {\n type: 'json_schema',\n json_schema: {\n name: 'response',\n strict: true,\n schema: options.responseFormat.schema,\n },\n };\n }\n\n const fetchArgs = {\n method: 'POST',\n headers: this.headers,\n body: JSON.stringify(body),\n signal: options.abortSignal,\n };\n const response = await fetch(this.url, fetchArgs);\n\n if (!response.ok) {\n const error = await response.text();\n\n // Check for authentication errors\n if (response.status === 401 || response.status === 403) {\n const providerConfig = getProviderConfig(this.provider);\n if (providerConfig?.apiKeyEnvVar) {\n throw new Error(\n `Authentication failed for provider \"${this.provider}\". Please ensure the ${providerConfig.apiKeyEnvVar} environment variable is set with a valid API key.`,\n );\n }\n }\n\n throw new Error(`OpenAI-compatible API error: ${response.status} - ${error}`);\n }\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error('Response body is not readable');\n }\n\n const decoder = new TextDecoder();\n let buffer = '';\n let sentStart = false;\n const toolCallBuffers = new Map<number, { id: string; name: string; args: string; sent?: boolean }>();\n const mapFinishReason = this.mapFinishReason.bind(this);\n const modelId = this.modelId; // Capture modelId for use in stream\n\n let isActiveText = false;\n\n const stream = new ReadableStream<LanguageModelV2StreamPart>({\n async start(controller) {\n try {\n // Send stream-start\n controller.enqueue({\n type: 'stream-start',\n warnings: [],\n });\n\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) {\n // Parse and send any buffered tool calls that haven't been sent yet\n for (const [_, toolCall] of toolCallBuffers) {\n if (!toolCall.sent && toolCall.id && toolCall.name && toolCall.args) {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id,\n toolName: toolCall.name,\n input: toolCall.args || '{}',\n });\n }\n }\n\n controller.close();\n break;\n }\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n if (line.trim() === '' || line.trim() === 'data: [DONE]') {\n continue;\n }\n\n if (line.startsWith('data: ')) {\n try {\n const data: OpenAIStreamChunk = JSON.parse(line.slice(6));\n\n // Send response metadata from first chunk\n if (!sentStart && data.id) {\n controller.enqueue({\n type: 'response-metadata',\n id: data.id,\n modelId: data.model || modelId,\n timestamp: new Date(data.created ? data.created * 1000 : Date.now()),\n });\n sentStart = true;\n }\n\n const choice = data.choices?.[0];\n if (!choice) continue;\n\n // Handle text delta\n if (choice.delta?.content) {\n if (!isActiveText) {\n controller.enqueue({ type: 'text-start', id: 'text-1' });\n isActiveText = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: 'text-1',\n delta: choice.delta.content,\n });\n } else if (isActiveText) {\n controller.enqueue({ type: 'text-end', id: 'text-1' });\n isActiveText = false;\n }\n\n // Handle tool call deltas\n if (choice.delta?.tool_calls) {\n for (const toolCall of choice.delta.tool_calls) {\n const index = toolCall.index;\n\n if (!toolCallBuffers.has(index)) {\n // Send tool-input-start when we first see a tool call\n if (toolCall.id && toolCall.function?.name) {\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCall.id,\n toolName: toolCall.function.name,\n });\n }\n\n toolCallBuffers.set(index, {\n id: toolCall.id || '',\n name: toolCall.function?.name || '',\n args: '',\n });\n }\n\n const buffer = toolCallBuffers.get(index)!;\n\n if (toolCall.id) {\n buffer.id = toolCall.id;\n }\n\n if (toolCall.function?.name) {\n buffer.name = toolCall.function.name;\n }\n\n if (toolCall.function?.arguments) {\n buffer.args += toolCall.function.arguments;\n controller.enqueue({\n type: 'tool-input-delta',\n id: buffer.id,\n delta: toolCall.function.arguments,\n });\n\n // Check if tool call is complete (parsable JSON)\n try {\n JSON.parse(buffer.args);\n if (buffer.id && buffer.name) {\n controller.enqueue({\n type: 'tool-input-end',\n id: buffer.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: buffer.id,\n toolName: buffer.name,\n input: buffer.args,\n });\n\n toolCallBuffers.set(index, {\n id: buffer.id,\n name: buffer.name,\n args: buffer.args,\n sent: true,\n });\n }\n } catch {\n // Not complete JSON yet, continue buffering\n }\n }\n }\n }\n\n // Handle finish\n if (choice.finish_reason) {\n // Don't send tool calls again - they've already been sent when complete\n toolCallBuffers.clear();\n\n controller.enqueue({\n type: 'finish',\n finishReason: mapFinishReason(choice.finish_reason),\n usage: data.usage\n ? {\n inputTokens: data.usage.prompt_tokens || 0,\n outputTokens: data.usage.completion_tokens || 0,\n totalTokens: data.usage.total_tokens || 0,\n }\n : {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n },\n });\n }\n } catch (e) {\n console.error('Error parsing SSE data:', e);\n }\n }\n }\n }\n } catch (error) {\n controller.error(error);\n }\n },\n });\n\n return {\n stream,\n request: { body: JSON.stringify(body) },\n response: { headers: Object.fromEntries(response.headers.entries()) },\n warnings: [],\n };\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cache/base.ts","../src/cache/inmemory.ts"],"names":["MastraBase","TTLCache"],"mappings":";;;;;;;;;;AAEO,IAAe,iBAAA,GAAf,cAAyCA,4BAAA,CAAW;AAAA,EACzD,WAAA,CAAY,EAAE,IAAA,EAAK,EAAqB;AACtC,IAAA,KAAA,CAAM;AAAA,MACJ,SAAA,EAAW,cAAA;AAAA,MACX;AAAA,KACD,CAAA;AAAA,EACH;AAeF;;;ACpBO,IAAM,mBAAA,GAAN,cAAkC,iBAAA,CAAkB;AAAA,EACjD,KAAA,GAAmC,IAAIC,yBAAA,CAAS;AAAA,IACtD,GAAA,EAAK,GAAA;AAAA,IACL,GAAA,EAAK,MAAO,EAAA,GAAK;AAAA,GAClB,CAAA;AAAA,EAED,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,EAAE,IAAA,EAAM,qBAAA,EAAuB,CAAA;AAAA,EACvC;AAAA,EAEA,MAAM,IAAI,GAAA,EAA+B;AACvC,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,GAAA,CAAI,GAAA,EAAa,KAAA,EAA+B;AACpD,IAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,WAAW,GAAA,EAA8B;AAC7C,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACxB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,gBAAA,CAAkB,CAAA;AAAA,IAC1C;AACA,IAAA,OAAO,IAAA,CAAK,MAAA;AAAA,EACd;AAAA,EAEA,MAAM,QAAA,CAAS,GAAA,EAAa,KAAA,EAA+B;AACzD,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACvB,MAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AAAA,IACjB,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,CAAC,KAAK,CAAC,CAAA;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,MAAM,UAAA,CAAW,GAAA,EAAa,IAAA,EAAc,KAAa,EAAA,EAAwB;AAC/E,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AAEvB,MAAA,MAAM,QAAA,GAAW,EAAA,KAAO,EAAA,GAAK,MAAA,GAAY,EAAA,GAAK,CAAA;AAC9C,MAAA,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAA;AAAA,IAClC;AACA,IAAA,OAAO,EAAC;AAAA,EACV;AAAA,EAEA,MAAM,OAAO,GAAA,EAA4B;AACvC,IAAA,IAAA,CAAK,KAAA,CAAM,OAAO,GAAG,CAAA;AAAA,EACvB;AAAA,EAEA,MAAM,KAAA,GAAuB;AAC3B,IAAA,IAAA,CAAK,MAAM,KAAA,EAAM;AAAA,EACnB;AACF","file":"chunk-KTCBGNCZ.cjs","sourcesContent":["import { MastraBase } from '../base';\n\nexport abstract class MastraServerCache extends MastraBase {\n constructor({ name }: { name: string }) {\n super({\n component: 'SERVER_CACHE',\n name,\n });\n }\n\n abstract get(key: string): Promise<unknown>;\n\n abstract listLength(key: string): Promise<number>;\n\n abstract set(key: string, value: unknown): Promise<void>;\n\n abstract listPush(key: string, value: unknown): Promise<void>;\n\n abstract listFromTo(key: string, from: number, to?: number): Promise<unknown[]>;\n\n abstract delete(key: string): Promise<void>;\n\n abstract clear(): Promise<void>;\n}\n","import TTLCache from '@isaacs/ttlcache';\nimport { MastraServerCache } from './base';\n\nexport class InMemoryServerCache extends MastraServerCache {\n private cache: TTLCache<string, unknown> = new TTLCache({\n max: 1000,\n ttl: 1000 * 60 * 5,\n });\n\n constructor() {\n super({ name: 'InMemoryServerCache' });\n }\n\n async get(key: string): Promise<unknown> {\n return this.cache.get(key);\n }\n\n async set(key: string, value: unknown): Promise<void> {\n this.cache.set(key, value);\n }\n\n async listLength(key: string): Promise<number> {\n const list = this.cache.get(key) as unknown[];\n if (!Array.isArray(list)) {\n throw new Error(`${key} is not an array`);\n }\n return list.length;\n }\n\n async listPush(key: string, value: unknown): Promise<void> {\n const list = this.cache.get(key) as unknown[];\n if (Array.isArray(list)) {\n list.push(value);\n } else {\n this.cache.set(key, [value]);\n }\n }\n\n async listFromTo(key: string, from: number, to: number = -1): Promise<unknown[]> {\n const list = this.cache.get(key) as unknown[];\n if (Array.isArray(list)) {\n // Make 'to' inclusive like Redis LRANGE - add 1 unless it's -1\n const endIndex = to === -1 ? undefined : to + 1;\n return list.slice(from, endIndex);\n }\n return [];\n }\n\n async delete(key: string): Promise<void> {\n this.cache.delete(key);\n }\n\n async clear(): Promise<void> {\n this.cache.clear();\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/error/utils.ts","../src/error/index.ts"],"names":["ErrorDomain","ErrorCategory"],"mappings":"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","file":"chunk-S7UXT3V4.cjs","sourcesContent":["/**\n * Safely converts an object to a string representation.\n * Uses JSON.stringify first, but falls back to String() if:\n * - JSON.stringify fails (e.g., circular references)\n * - JSON.stringify returns \"{}\" (e.g., Error objects with no enumerable properties)\n */\nexport function safeParseErrorObject(obj: unknown): string {\n if (typeof obj !== 'object' || obj === null) {\n return String(obj);\n }\n\n try {\n const stringified = JSON.stringify(obj);\n // If JSON.stringify returns \"{}\", fall back to String() for better representation\n if (stringified === '{}') {\n return String(obj);\n }\n return stringified;\n } catch {\n // Fallback to String() if JSON.stringify fails (e.g., circular references)\n return String(obj);\n }\n}\n","import { safeParseErrorObject } from './utils.js';\n\nexport enum ErrorDomain {\n TOOL = 'TOOL',\n AGENT = 'AGENT',\n MCP = 'MCP',\n AGENT_NETWORK = 'AGENT_NETWORK',\n MASTRA_SERVER = 'MASTRA_SERVER',\n MASTRA_TELEMETRY = 'MASTRA_TELEMETRY',\n MASTRA_OBSERVABILITY = 'MASTRA_OBSERVABILITY',\n MASTRA_WORKFLOW = 'MASTRA_WORKFLOW',\n MASTRA_VOICE = 'MASTRA_VOICE',\n MASTRA_VECTOR = 'MASTRA_VECTOR',\n LLM = 'LLM',\n EVAL = 'EVAL',\n SCORER = 'SCORER',\n A2A = 'A2A',\n MASTRA_INSTANCE = 'MASTRA_INSTANCE',\n MASTRA = 'MASTRA',\n DEPLOYER = 'DEPLOYER',\n STORAGE = 'STORAGE',\n}\n\nexport enum ErrorCategory {\n UNKNOWN = 'UNKNOWN',\n USER = 'USER',\n SYSTEM = 'SYSTEM',\n THIRD_PARTY = 'THIRD_PARTY',\n}\n\ntype Scalar = null | boolean | number | string;\n\ntype Json<T> = [T] extends [Scalar | undefined]\n ? Scalar\n : [T] extends [{ [x: number]: unknown }]\n ? { [K in keyof T]: Json<T[K]> }\n : never;\n\n/**\n * Defines the structure for an error's metadata.\n * This is used to create instances of MastraError.\n */\nexport interface IErrorDefinition<D, C> {\n /** Unique identifier for the error. */\n id: Uppercase<string>;\n /**\n * Optional custom error message that overrides the original error message.\n * If not provided, the original error message will be used, or 'Unknown error' if no error is provided.\n */\n text?: string;\n /**\n * Functional domain of the error (e.g., CONFIG, BUILD, API).\n */\n domain: D;\n /** Broad category of the error (e.g., USER, SYSTEM, THIRD_PARTY). */\n category: C;\n\n details?: Record<string, Json<Scalar>>;\n}\n\n/**\n * Base error class for the Mastra ecosystem.\n * It standardizes error reporting and can be extended for more specific error types.\n */\nexport class MastraBaseError<D, C> extends Error {\n public readonly id: Uppercase<string>;\n public readonly domain: D;\n public readonly category: C;\n public readonly details?: Record<string, Json<Scalar>> = {};\n public readonly message: string;\n\n constructor(\n errorDefinition: IErrorDefinition<D, C>,\n originalError?: string | Error | MastraBaseError<D, C> | unknown,\n ) {\n // Convert originalError to Error instance\n let error: Error | undefined;\n if (originalError instanceof Error) {\n error = originalError;\n } else if (originalError) {\n const errorMessage = safeParseErrorObject(originalError);\n error = new Error(errorMessage);\n }\n\n const message = errorDefinition.text ?? error?.message ?? 'Unknown error';\n\n super(message, { cause: error });\n this.id = errorDefinition.id;\n this.domain = errorDefinition.domain;\n this.category = errorDefinition.category;\n this.details = errorDefinition.details ?? {};\n this.message = message;\n\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n /**\n * Returns a structured representation of the error, useful for logging or API responses.\n */\n public toJSONDetails() {\n return {\n message: this.message,\n domain: this.domain,\n category: this.category,\n details: this.details,\n };\n }\n\n public toJSON() {\n return {\n message: this.message,\n details: this.toJSONDetails(),\n code: this.id,\n };\n }\n\n public toString() {\n return JSON.stringify(this.toJSON());\n }\n}\n\nexport class MastraError extends MastraBaseError<`${ErrorDomain}`, `${ErrorCategory}`> {}\n"]}