@mastra/server 1.0.0-beta.4 → 1.0.0-beta.6

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 +74 -0
  2. package/dist/chunk-2NW6POYK.cjs +89 -0
  3. package/dist/chunk-2NW6POYK.cjs.map +1 -0
  4. package/dist/chunk-4W2SM6CG.js +294 -0
  5. package/dist/chunk-4W2SM6CG.js.map +1 -0
  6. package/dist/chunk-5772SXSK.cjs +1065 -0
  7. package/dist/chunk-5772SXSK.cjs.map +1 -0
  8. package/dist/chunk-5W4RPVTK.cjs +49 -0
  9. package/dist/chunk-5W4RPVTK.cjs.map +1 -0
  10. package/dist/chunk-777BJH4Z.cjs +801 -0
  11. package/dist/chunk-777BJH4Z.cjs.map +1 -0
  12. package/dist/chunk-7MKJBWFB.js +328 -0
  13. package/dist/chunk-7MKJBWFB.js.map +1 -0
  14. package/dist/chunk-B4UYPCEY.js +1022 -0
  15. package/dist/chunk-B4UYPCEY.js.map +1 -0
  16. package/dist/chunk-C36PTNGG.js +310 -0
  17. package/dist/chunk-C36PTNGG.js.map +1 -0
  18. package/dist/chunk-CLRYA4BH.cjs +125 -0
  19. package/dist/chunk-CLRYA4BH.cjs.map +1 -0
  20. package/dist/{chunk-FPBYKMIS.js → chunk-CQDHE64H.js} +213 -24
  21. package/dist/chunk-CQDHE64H.js.map +1 -0
  22. package/dist/{chunk-TOCYBDP2.js → chunk-ER3QM7DD.js} +4 -4
  23. package/dist/{chunk-TOCYBDP2.js.map → chunk-ER3QM7DD.js.map} +1 -1
  24. package/dist/chunk-FCCK5TSS.js +116 -0
  25. package/dist/chunk-FCCK5TSS.js.map +1 -0
  26. package/dist/chunk-FPCGLPLJ.cjs +297 -0
  27. package/dist/chunk-FPCGLPLJ.cjs.map +1 -0
  28. package/dist/{chunk-D7T74TVR.js → chunk-G7BPNX2V.js} +4 -3
  29. package/dist/chunk-G7BPNX2V.js.map +1 -0
  30. package/dist/chunk-H2RMXG2Q.cjs +167 -0
  31. package/dist/chunk-H2RMXG2Q.cjs.map +1 -0
  32. package/dist/chunk-IO7XB4XH.cjs +23258 -0
  33. package/dist/chunk-IO7XB4XH.cjs.map +1 -0
  34. package/dist/chunk-MK6GBMKE.js +23216 -0
  35. package/dist/chunk-MK6GBMKE.js.map +1 -0
  36. package/dist/chunk-MWQQRVQC.cjs +259 -0
  37. package/dist/chunk-MWQQRVQC.cjs.map +1 -0
  38. package/dist/chunk-ORJBWSYB.js +196 -0
  39. package/dist/chunk-ORJBWSYB.js.map +1 -0
  40. package/dist/chunk-OSLIOPFU.js +777 -0
  41. package/dist/chunk-OSLIOPFU.js.map +1 -0
  42. package/dist/chunk-PKRHEXX7.js +74 -0
  43. package/dist/chunk-PKRHEXX7.js.map +1 -0
  44. package/dist/chunk-QCW6WANZ.cjs +296 -0
  45. package/dist/chunk-QCW6WANZ.cjs.map +1 -0
  46. package/dist/chunk-QS23OV2B.cjs +916 -0
  47. package/dist/chunk-QS23OV2B.cjs.map +1 -0
  48. package/dist/chunk-R4M3BSUG.js +226 -0
  49. package/dist/chunk-R4M3BSUG.js.map +1 -0
  50. package/dist/{chunk-KJIDZQRA.cjs → chunk-SNPELBJA.cjs} +219 -24
  51. package/dist/chunk-SNPELBJA.cjs.map +1 -0
  52. package/dist/chunk-SWIK2QSP.cjs +346 -0
  53. package/dist/chunk-SWIK2QSP.cjs.map +1 -0
  54. package/dist/chunk-SXVANU23.js +164 -0
  55. package/dist/chunk-SXVANU23.js.map +1 -0
  56. package/dist/chunk-TIX6M3ZD.js +354 -0
  57. package/dist/chunk-TIX6M3ZD.js.map +1 -0
  58. package/dist/chunk-TOUBNMVI.cjs +322 -0
  59. package/dist/chunk-TOUBNMVI.cjs.map +1 -0
  60. package/dist/chunk-TT25WHVT.cjs +368 -0
  61. package/dist/chunk-TT25WHVT.cjs.map +1 -0
  62. package/dist/chunk-UPY7WWRA.cjs +205 -0
  63. package/dist/chunk-UPY7WWRA.cjs.map +1 -0
  64. package/dist/{chunk-W2KMU354.cjs → chunk-UZ6CYAOG.cjs} +4 -3
  65. package/dist/chunk-UZ6CYAOG.cjs.map +1 -0
  66. package/dist/{chunk-QU6N55W6.cjs → chunk-V272B7RM.cjs} +11 -12
  67. package/dist/chunk-V272B7RM.cjs.map +1 -0
  68. package/dist/chunk-VJVDLNFK.js +286 -0
  69. package/dist/chunk-VJVDLNFK.js.map +1 -0
  70. package/dist/chunk-WISPJOEJ.js +887 -0
  71. package/dist/chunk-WISPJOEJ.js.map +1 -0
  72. package/dist/chunk-XMKZWHVG.js +204 -0
  73. package/dist/chunk-XMKZWHVG.js.map +1 -0
  74. package/dist/{chunk-X6C7BUWN.cjs → chunk-XQPJ63ZD.cjs} +4 -4
  75. package/dist/{chunk-X6C7BUWN.cjs.map → chunk-XQPJ63ZD.cjs.map} +1 -1
  76. package/dist/chunk-XWGAT2DA.js +44 -0
  77. package/dist/chunk-XWGAT2DA.js.map +1 -0
  78. package/dist/{chunk-SHWNNZBL.js → chunk-YP34EWWK.js} +9 -10
  79. package/dist/chunk-YP34EWWK.js.map +1 -0
  80. package/dist/chunk-Z4GN2JAO.cjs +211 -0
  81. package/dist/chunk-Z4GN2JAO.cjs.map +1 -0
  82. package/dist/server/auth/defaults.d.ts +3 -0
  83. package/dist/server/auth/defaults.d.ts.map +1 -0
  84. package/dist/server/auth/helpers.d.ts +14 -0
  85. package/dist/server/auth/helpers.d.ts.map +1 -0
  86. package/dist/server/auth/index.cjs +137 -0
  87. package/dist/server/auth/index.cjs.map +1 -0
  88. package/dist/server/auth/index.d.ts +3 -0
  89. package/dist/server/auth/index.d.ts.map +1 -0
  90. package/dist/server/auth/index.js +127 -0
  91. package/dist/server/auth/index.js.map +1 -0
  92. package/dist/server/handlers/a2a.cjs +15 -7
  93. package/dist/server/handlers/a2a.d.ts +482 -0
  94. package/dist/server/handlers/a2a.d.ts.map +1 -1
  95. package/dist/server/handlers/a2a.js +1 -1
  96. package/dist/server/handlers/agent-builder.cjs +37 -37
  97. package/dist/server/handlers/agent-builder.d.ts +615 -77
  98. package/dist/server/handlers/agent-builder.d.ts.map +1 -1
  99. package/dist/server/handlers/agent-builder.js +1 -1
  100. package/dist/server/handlers/agents.cjs +53 -37
  101. package/dist/server/handlers/agents.d.ts +3271 -125
  102. package/dist/server/handlers/agents.d.ts.map +1 -1
  103. package/dist/server/handlers/agents.js +1 -1
  104. package/dist/server/handlers/logs.cjs +7 -7
  105. package/dist/server/handlers/logs.d.ts +135 -27
  106. package/dist/server/handlers/logs.d.ts.map +1 -1
  107. package/dist/server/handlers/logs.js +1 -1
  108. package/dist/server/handlers/mcp.cjs +40 -0
  109. package/dist/server/handlers/mcp.cjs.map +1 -0
  110. package/dist/server/handlers/mcp.d.ts +108 -0
  111. package/dist/server/handlers/mcp.d.ts.map +1 -0
  112. package/dist/server/handlers/mcp.js +3 -0
  113. package/dist/server/handlers/mcp.js.map +1 -0
  114. package/dist/server/handlers/memory.cjs +65 -29
  115. package/dist/server/handlers/memory.d.ts +932 -96
  116. package/dist/server/handlers/memory.d.ts.map +1 -1
  117. package/dist/server/handlers/memory.js +1 -1
  118. package/dist/server/handlers/observability.cjs +21 -5
  119. package/dist/server/handlers/observability.d.ts +119 -12
  120. package/dist/server/handlers/observability.d.ts.map +1 -1
  121. package/dist/server/handlers/observability.js +1 -1
  122. package/dist/server/handlers/scores.cjs +13 -13
  123. package/dist/server/handlers/scores.d.ts +110 -141
  124. package/dist/server/handlers/scores.d.ts.map +1 -1
  125. package/dist/server/handlers/scores.js +1 -1
  126. package/dist/server/handlers/test-utils.cjs +15 -0
  127. package/dist/server/handlers/test-utils.cjs.map +1 -0
  128. package/dist/server/handlers/test-utils.d.ts +6 -0
  129. package/dist/server/handlers/test-utils.d.ts.map +1 -0
  130. package/dist/server/handlers/test-utils.js +13 -0
  131. package/dist/server/handlers/test-utils.js.map +1 -0
  132. package/dist/server/handlers/tools.cjs +11 -11
  133. package/dist/server/handlers/tools.d.ts +69 -23
  134. package/dist/server/handlers/tools.d.ts.map +1 -1
  135. package/dist/server/handlers/tools.js +1 -1
  136. package/dist/server/handlers/utils.cjs +11 -3
  137. package/dist/server/handlers/utils.d.ts +5 -0
  138. package/dist/server/handlers/utils.d.ts.map +1 -1
  139. package/dist/server/handlers/utils.js +1 -1
  140. package/dist/server/handlers/vector.cjs +31 -7
  141. package/dist/server/handlers/vector.d.ts +93 -9
  142. package/dist/server/handlers/vector.d.ts.map +1 -1
  143. package/dist/server/handlers/vector.js +1 -1
  144. package/dist/server/handlers/voice.cjs +21 -9
  145. package/dist/server/handlers/voice.d.ts +81 -40
  146. package/dist/server/handlers/voice.d.ts.map +1 -1
  147. package/dist/server/handlers/voice.js +1 -1
  148. package/dist/server/handlers/workflows.cjs +65 -37
  149. package/dist/server/handlers/workflows.d.ts +934 -79
  150. package/dist/server/handlers/workflows.d.ts.map +1 -1
  151. package/dist/server/handlers/workflows.js +1 -1
  152. package/dist/server/handlers.cjs +36 -31
  153. package/dist/server/handlers.d.ts +1 -0
  154. package/dist/server/handlers.d.ts.map +1 -1
  155. package/dist/server/handlers.js +12 -11
  156. package/dist/server/schemas/a2a.d.ts +786 -0
  157. package/dist/server/schemas/a2a.d.ts.map +1 -0
  158. package/dist/server/schemas/agent-builder.d.ts +204 -0
  159. package/dist/server/schemas/agent-builder.d.ts.map +1 -0
  160. package/dist/server/schemas/agents.d.ts +1375 -0
  161. package/dist/server/schemas/agents.d.ts.map +1 -0
  162. package/dist/server/schemas/common.d.ts +165 -0
  163. package/dist/server/schemas/common.d.ts.map +1 -0
  164. package/dist/server/schemas/logs.d.ts +124 -0
  165. package/dist/server/schemas/logs.d.ts.map +1 -0
  166. package/dist/server/schemas/mcp.d.ts +293 -0
  167. package/dist/server/schemas/mcp.d.ts.map +1 -0
  168. package/dist/server/schemas/memory.d.ts +998 -0
  169. package/dist/server/schemas/memory.d.ts.map +1 -0
  170. package/dist/server/schemas/observability.d.ts +402 -0
  171. package/dist/server/schemas/observability.d.ts.map +1 -0
  172. package/dist/server/schemas/scores.d.ts +259 -0
  173. package/dist/server/schemas/scores.d.ts.map +1 -0
  174. package/dist/server/schemas/vectors.d.ts +107 -0
  175. package/dist/server/schemas/vectors.d.ts.map +1 -0
  176. package/dist/server/schemas/workflows.d.ts +617 -0
  177. package/dist/server/schemas/workflows.d.ts.map +1 -0
  178. package/dist/server/server-adapter/index.cjs +472 -0
  179. package/dist/server/server-adapter/index.cjs.map +1 -0
  180. package/dist/server/server-adapter/index.d.ts +95 -0
  181. package/dist/server/server-adapter/index.d.ts.map +1 -0
  182. package/dist/server/server-adapter/index.js +457 -0
  183. package/dist/server/server-adapter/index.js.map +1 -0
  184. package/dist/server/server-adapter/openapi-utils.d.ts +59 -0
  185. package/dist/server/server-adapter/openapi-utils.d.ts.map +1 -0
  186. package/dist/server/server-adapter/redact.d.ts +26 -0
  187. package/dist/server/server-adapter/redact.d.ts.map +1 -0
  188. package/dist/server/server-adapter/routes/a2a.d.ts +3 -0
  189. package/dist/server/server-adapter/routes/a2a.d.ts.map +1 -0
  190. package/dist/server/server-adapter/routes/agent-builder.d.ts +3 -0
  191. package/dist/server/server-adapter/routes/agent-builder.d.ts.map +1 -0
  192. package/dist/server/server-adapter/routes/agents.d.ts +3 -0
  193. package/dist/server/server-adapter/routes/agents.d.ts.map +1 -0
  194. package/dist/server/server-adapter/routes/index.d.ts +50 -0
  195. package/dist/server/server-adapter/routes/index.d.ts.map +1 -0
  196. package/dist/server/server-adapter/routes/legacy.d.ts +7 -0
  197. package/dist/server/server-adapter/routes/legacy.d.ts.map +1 -0
  198. package/dist/server/server-adapter/routes/logs.d.ts +3 -0
  199. package/dist/server/server-adapter/routes/logs.d.ts.map +1 -0
  200. package/dist/server/server-adapter/routes/mcp.d.ts +9 -0
  201. package/dist/server/server-adapter/routes/mcp.d.ts.map +1 -0
  202. package/dist/server/server-adapter/routes/memory.d.ts +3 -0
  203. package/dist/server/server-adapter/routes/memory.d.ts.map +1 -0
  204. package/dist/server/server-adapter/routes/observability.d.ts +3 -0
  205. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -0
  206. package/dist/server/server-adapter/routes/route-builder.d.ts +52 -0
  207. package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -0
  208. package/dist/server/server-adapter/routes/scorers.d.ts +3 -0
  209. package/dist/server/server-adapter/routes/scorers.d.ts.map +1 -0
  210. package/dist/server/server-adapter/routes/stream-types.d.ts +10 -0
  211. package/dist/server/server-adapter/routes/stream-types.d.ts.map +1 -0
  212. package/dist/server/server-adapter/routes/tools.d.ts +3 -0
  213. package/dist/server/server-adapter/routes/tools.d.ts.map +1 -0
  214. package/dist/server/server-adapter/routes/vectors.d.ts +3 -0
  215. package/dist/server/server-adapter/routes/vectors.d.ts.map +1 -0
  216. package/dist/server/server-adapter/routes/workflows.d.ts +3 -0
  217. package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -0
  218. package/dist/server/utils.d.ts.map +1 -1
  219. package/dist/token-GVZ7HRD7.js +62 -0
  220. package/dist/{token-C3IMNCC4.js.map → token-GVZ7HRD7.js.map} +1 -1
  221. package/dist/{token-C3IMNCC4.js → token-JGA3ZWAN.js} +5 -6
  222. package/dist/token-JGA3ZWAN.js.map +1 -0
  223. package/dist/token-VFONFWVS.cjs +64 -0
  224. package/dist/{token-375W3LEI.cjs.map → token-VFONFWVS.cjs.map} +1 -1
  225. package/dist/{token-375W3LEI.cjs → token-ZOD6YIQ3.cjs} +7 -8
  226. package/dist/token-ZOD6YIQ3.cjs.map +1 -0
  227. package/dist/token-util-7R2ZFIXO.js +7 -0
  228. package/dist/{token-util-E5QO2RCL.js.map → token-util-7R2ZFIXO.js.map} +1 -1
  229. package/dist/token-util-BLJZJDBZ.cjs +9 -0
  230. package/dist/{token-util-CV3RRG6K.cjs.map → token-util-BLJZJDBZ.cjs.map} +1 -1
  231. package/dist/token-util-VGZUWSNR.cjs +9 -0
  232. package/dist/token-util-VGZUWSNR.cjs.map +1 -0
  233. package/dist/token-util-VKTPZLSE.js +7 -0
  234. package/dist/token-util-VKTPZLSE.js.map +1 -0
  235. package/package.json +30 -7
  236. package/dist/chunk-2YZH5PH6.cjs +0 -200
  237. package/dist/chunk-2YZH5PH6.cjs.map +0 -1
  238. package/dist/chunk-3AMNUUZF.js +0 -124
  239. package/dist/chunk-3AMNUUZF.js.map +0 -1
  240. package/dist/chunk-3F52QCI4.js +0 -192
  241. package/dist/chunk-3F52QCI4.js.map +0 -1
  242. package/dist/chunk-4G5QBFEW.cjs +0 -681
  243. package/dist/chunk-4G5QBFEW.cjs.map +0 -1
  244. package/dist/chunk-73PAWDM5.js +0 -83
  245. package/dist/chunk-73PAWDM5.js.map +0 -1
  246. package/dist/chunk-7HVY3D64.cjs +0 -22955
  247. package/dist/chunk-7HVY3D64.cjs.map +0 -1
  248. package/dist/chunk-A24TSVEZ.cjs +0 -130
  249. package/dist/chunk-A24TSVEZ.cjs.map +0 -1
  250. package/dist/chunk-B3Z6J745.js +0 -122
  251. package/dist/chunk-B3Z6J745.js.map +0 -1
  252. package/dist/chunk-BTWIR2B7.cjs +0 -28
  253. package/dist/chunk-BTWIR2B7.cjs.map +0 -1
  254. package/dist/chunk-D7T74TVR.js.map +0 -1
  255. package/dist/chunk-FPBYKMIS.js.map +0 -1
  256. package/dist/chunk-GLAZTMX3.cjs +0 -128
  257. package/dist/chunk-GLAZTMX3.cjs.map +0 -1
  258. package/dist/chunk-KF3RI45U.cjs +0 -172
  259. package/dist/chunk-KF3RI45U.cjs.map +0 -1
  260. package/dist/chunk-KJIDZQRA.cjs.map +0 -1
  261. package/dist/chunk-KWH5QBXP.js +0 -123
  262. package/dist/chunk-KWH5QBXP.js.map +0 -1
  263. package/dist/chunk-ND5OKOMT.js +0 -165
  264. package/dist/chunk-ND5OKOMT.js.map +0 -1
  265. package/dist/chunk-PPMIB3FQ.cjs +0 -88
  266. package/dist/chunk-PPMIB3FQ.cjs.map +0 -1
  267. package/dist/chunk-QU6N55W6.cjs.map +0 -1
  268. package/dist/chunk-S54HNARD.cjs +0 -131
  269. package/dist/chunk-S54HNARD.cjs.map +0 -1
  270. package/dist/chunk-SHWNNZBL.js.map +0 -1
  271. package/dist/chunk-SZIFSF4T.js +0 -25
  272. package/dist/chunk-SZIFSF4T.js.map +0 -1
  273. package/dist/chunk-U7GLIXYO.cjs +0 -534
  274. package/dist/chunk-U7GLIXYO.cjs.map +0 -1
  275. package/dist/chunk-UGXW2KPL.js +0 -661
  276. package/dist/chunk-UGXW2KPL.js.map +0 -1
  277. package/dist/chunk-V6JYJS7O.js +0 -518
  278. package/dist/chunk-V6JYJS7O.js.map +0 -1
  279. package/dist/chunk-VEVU6EUO.js +0 -22916
  280. package/dist/chunk-VEVU6EUO.js.map +0 -1
  281. package/dist/chunk-W2KMU354.cjs.map +0 -1
  282. package/dist/chunk-X3MICMI2.cjs +0 -620
  283. package/dist/chunk-X3MICMI2.cjs.map +0 -1
  284. package/dist/chunk-ZJ6KEY6H.js +0 -600
  285. package/dist/chunk-ZJ6KEY6H.js.map +0 -1
  286. package/dist/token-util-CV3RRG6K.cjs +0 -9
  287. package/dist/token-util-E5QO2RCL.js +0 -7
@@ -0,0 +1,346 @@
1
+ 'use strict';
2
+
3
+ var chunk2NW6POYK_cjs = require('./chunk-2NW6POYK.cjs');
4
+ var chunkH2RMXG2Q_cjs = require('./chunk-H2RMXG2Q.cjs');
5
+ var chunkV5WWQN7P_cjs = require('./chunk-V5WWQN7P.cjs');
6
+ var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
7
+ var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
8
+ var z = require('zod');
9
+
10
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
+
12
+ var z__default = /*#__PURE__*/_interopDefault(z);
13
+
14
+ // src/server/handlers/vector.ts
15
+ var vector_exports = {};
16
+ chunkO7I5CWRX_cjs.__export(vector_exports, {
17
+ CREATE_INDEX_ROUTE: () => CREATE_INDEX_ROUTE,
18
+ DELETE_INDEX_ROUTE: () => DELETE_INDEX_ROUTE,
19
+ DESCRIBE_INDEX_ROUTE: () => DESCRIBE_INDEX_ROUTE,
20
+ LIST_INDEXES_ROUTE: () => LIST_INDEXES_ROUTE,
21
+ QUERY_VECTORS_ROUTE: () => QUERY_VECTORS_ROUTE,
22
+ UPSERT_VECTORS_ROUTE: () => UPSERT_VECTORS_ROUTE,
23
+ createIndex: () => createIndex,
24
+ deleteIndex: () => deleteIndex,
25
+ describeIndex: () => describeIndex,
26
+ listIndexes: () => listIndexes,
27
+ queryVectors: () => queryVectors,
28
+ upsertVectors: () => upsertVectors
29
+ });
30
+ var vectorNamePathParams = z__default.default.object({
31
+ vectorName: z__default.default.string().describe("Name of the vector store")
32
+ });
33
+ var vectorIndexPathParams = vectorNamePathParams.extend({
34
+ indexName: z__default.default.string().describe("Name of the index")
35
+ });
36
+ var indexBodyBaseSchema = z__default.default.object({
37
+ indexName: z__default.default.string()
38
+ });
39
+ var upsertVectorsBodySchema = indexBodyBaseSchema.extend({
40
+ vectors: z__default.default.array(z__default.default.array(z__default.default.number())),
41
+ metadata: z__default.default.array(z__default.default.record(z__default.default.string(), z__default.default.any())).optional(),
42
+ ids: z__default.default.array(z__default.default.string()).optional()
43
+ });
44
+ var createIndexBodySchema = indexBodyBaseSchema.extend({
45
+ dimension: z__default.default.number(),
46
+ metric: z__default.default.enum(["cosine", "euclidean", "dotproduct"]).optional()
47
+ });
48
+ var queryVectorsBodySchema = indexBodyBaseSchema.extend({
49
+ queryVector: z__default.default.array(z__default.default.number()),
50
+ topK: z__default.default.number().optional(),
51
+ filter: z__default.default.record(z__default.default.string(), z__default.default.any()).optional(),
52
+ includeVector: z__default.default.boolean().optional()
53
+ });
54
+ var upsertVectorsResponseSchema = z__default.default.object({
55
+ ids: z__default.default.array(z__default.default.string())
56
+ });
57
+ var createIndexResponseSchema = chunk2NW6POYK_cjs.successResponseSchema;
58
+ var queryVectorsResponseSchema = z__default.default.array(z__default.default.unknown());
59
+ var listIndexesResponseSchema = z__default.default.array(z__default.default.string());
60
+ var describeIndexResponseSchema = z__default.default.object({
61
+ dimension: z__default.default.number(),
62
+ count: z__default.default.number(),
63
+ metric: z__default.default.string().optional()
64
+ });
65
+ var deleteIndexResponseSchema = chunk2NW6POYK_cjs.successResponseSchema;
66
+
67
+ // src/server/handlers/vector.ts
68
+ function getVector(mastra, vectorName) {
69
+ if (!vectorName) {
70
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Vector name is required" });
71
+ }
72
+ const vector = mastra.getVector(vectorName);
73
+ if (!vector) {
74
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: `Vector store ${vectorName} not found` });
75
+ }
76
+ return vector;
77
+ }
78
+ async function upsertVectors({
79
+ mastra,
80
+ vectorName,
81
+ indexName,
82
+ vectors,
83
+ metadata,
84
+ ids
85
+ }) {
86
+ try {
87
+ if (!indexName || !vectors || !Array.isArray(vectors)) {
88
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Invalid request index. indexName and vectors array are required." });
89
+ }
90
+ const vector = getVector(mastra, vectorName);
91
+ const result = await vector.upsert({ indexName, vectors, metadata, ids });
92
+ return { ids: result };
93
+ } catch (error) {
94
+ return chunkV5WWQN7P_cjs.handleError(error, "Error upserting vectors");
95
+ }
96
+ }
97
+ async function createIndex({
98
+ mastra,
99
+ vectorName,
100
+ indexName,
101
+ dimension,
102
+ metric
103
+ }) {
104
+ try {
105
+ if (!indexName || typeof dimension !== "number" || dimension <= 0) {
106
+ throw new chunk64ITUOXI_cjs.HTTPException(400, {
107
+ message: "Invalid request index, indexName and positive dimension number are required."
108
+ });
109
+ }
110
+ if (metric && !["cosine", "euclidean", "dotproduct"].includes(metric)) {
111
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Invalid metric. Must be one of: cosine, euclidean, dotproduct" });
112
+ }
113
+ const vector = getVector(mastra, vectorName);
114
+ await vector.createIndex({ indexName, dimension, metric });
115
+ return { success: true };
116
+ } catch (error) {
117
+ return chunkV5WWQN7P_cjs.handleError(error, "Error creating index");
118
+ }
119
+ }
120
+ async function queryVectors({
121
+ mastra,
122
+ vectorName,
123
+ indexName,
124
+ queryVector,
125
+ topK,
126
+ filter,
127
+ includeVector
128
+ }) {
129
+ try {
130
+ if (!indexName || !queryVector || !Array.isArray(queryVector)) {
131
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Invalid request query. indexName and queryVector array are required." });
132
+ }
133
+ const vector = getVector(mastra, vectorName);
134
+ const results = await vector.query({ indexName, queryVector, topK, filter, includeVector });
135
+ return results;
136
+ } catch (error) {
137
+ return chunkV5WWQN7P_cjs.handleError(error, "Error querying vectors");
138
+ }
139
+ }
140
+ async function listIndexes({ mastra, vectorName }) {
141
+ try {
142
+ const vector = getVector(mastra, vectorName);
143
+ const indexes = await vector.listIndexes();
144
+ return indexes.filter(Boolean);
145
+ } catch (error) {
146
+ return chunkV5WWQN7P_cjs.handleError(error, "Error listing indexes");
147
+ }
148
+ }
149
+ async function describeIndex({
150
+ mastra,
151
+ vectorName,
152
+ indexName
153
+ }) {
154
+ try {
155
+ if (!indexName) {
156
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Index name is required" });
157
+ }
158
+ const vector = getVector(mastra, vectorName);
159
+ const stats = await vector.describeIndex({ indexName });
160
+ return {
161
+ dimension: stats.dimension,
162
+ count: stats.count,
163
+ metric: stats.metric?.toLowerCase()
164
+ };
165
+ } catch (error) {
166
+ return chunkV5WWQN7P_cjs.handleError(error, "Error describing index");
167
+ }
168
+ }
169
+ async function deleteIndex({
170
+ mastra,
171
+ vectorName,
172
+ indexName
173
+ }) {
174
+ try {
175
+ if (!indexName) {
176
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Index name is required" });
177
+ }
178
+ const vector = getVector(mastra, vectorName);
179
+ await vector.deleteIndex({ indexName });
180
+ return { success: true };
181
+ } catch (error) {
182
+ return chunkV5WWQN7P_cjs.handleError(error, "Error deleting index");
183
+ }
184
+ }
185
+ var UPSERT_VECTORS_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
186
+ method: "POST",
187
+ path: "/api/vector/:vectorName/upsert",
188
+ responseType: "json",
189
+ pathParamSchema: vectorNamePathParams,
190
+ bodySchema: upsertVectorsBodySchema,
191
+ responseSchema: upsertVectorsResponseSchema,
192
+ summary: "Upsert vectors",
193
+ description: "Inserts or updates vectors in the specified index",
194
+ tags: ["Vectors"],
195
+ handler: async ({ mastra, vectorName, ...params }) => {
196
+ try {
197
+ const { indexName, vectors, metadata, ids } = params;
198
+ if (!indexName || !vectors || !Array.isArray(vectors)) {
199
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Invalid request index. indexName and vectors array are required." });
200
+ }
201
+ const vector = getVector(mastra, vectorName);
202
+ const result = await vector.upsert({ indexName, vectors, metadata, ids });
203
+ return { ids: result };
204
+ } catch (error) {
205
+ return chunkV5WWQN7P_cjs.handleError(error, "Error upserting vectors");
206
+ }
207
+ }
208
+ });
209
+ var CREATE_INDEX_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
210
+ method: "POST",
211
+ path: "/api/vector/:vectorName/create-index",
212
+ responseType: "json",
213
+ pathParamSchema: vectorNamePathParams,
214
+ bodySchema: createIndexBodySchema,
215
+ responseSchema: createIndexResponseSchema,
216
+ summary: "Create index",
217
+ description: "Creates a new vector index with the specified dimension and metric",
218
+ tags: ["Vectors"],
219
+ handler: async ({ mastra, vectorName, ...params }) => {
220
+ try {
221
+ const { indexName, dimension, metric } = params;
222
+ if (!indexName || typeof dimension !== "number" || dimension <= 0) {
223
+ throw new chunk64ITUOXI_cjs.HTTPException(400, {
224
+ message: "Invalid request index, indexName and positive dimension number are required."
225
+ });
226
+ }
227
+ if (metric && !["cosine", "euclidean", "dotproduct"].includes(metric)) {
228
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Invalid metric. Must be one of: cosine, euclidean, dotproduct" });
229
+ }
230
+ const vector = getVector(mastra, vectorName);
231
+ await vector.createIndex({ indexName, dimension, metric });
232
+ return { success: true };
233
+ } catch (error) {
234
+ return chunkV5WWQN7P_cjs.handleError(error, "Error creating index");
235
+ }
236
+ }
237
+ });
238
+ var QUERY_VECTORS_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
239
+ method: "POST",
240
+ path: "/api/vector/:vectorName/query",
241
+ responseType: "json",
242
+ pathParamSchema: vectorNamePathParams,
243
+ bodySchema: queryVectorsBodySchema,
244
+ responseSchema: queryVectorsResponseSchema,
245
+ summary: "Query vectors",
246
+ description: "Performs a similarity search on the vector index",
247
+ tags: ["Vectors"],
248
+ handler: async ({ mastra, vectorName, ...params }) => {
249
+ try {
250
+ const { indexName, queryVector, topK, filter, includeVector } = params;
251
+ if (!indexName || !queryVector || !Array.isArray(queryVector)) {
252
+ throw new chunk64ITUOXI_cjs.HTTPException(400, {
253
+ message: "Invalid request query. indexName and queryVector array are required."
254
+ });
255
+ }
256
+ const vector = getVector(mastra, vectorName);
257
+ const results = await vector.query({ indexName, queryVector, topK, filter, includeVector });
258
+ return results;
259
+ } catch (error) {
260
+ return chunkV5WWQN7P_cjs.handleError(error, "Error querying vectors");
261
+ }
262
+ }
263
+ });
264
+ var LIST_INDEXES_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
265
+ method: "GET",
266
+ path: "/api/vector/:vectorName/indexes",
267
+ responseType: "json",
268
+ pathParamSchema: vectorNamePathParams,
269
+ responseSchema: listIndexesResponseSchema,
270
+ summary: "List indexes",
271
+ description: "Returns a list of all indexes in the vector store",
272
+ tags: ["Vectors"],
273
+ handler: async ({ mastra, vectorName }) => {
274
+ try {
275
+ const vector = getVector(mastra, vectorName);
276
+ const indexes = await vector.listIndexes();
277
+ return indexes.filter(Boolean);
278
+ } catch (error) {
279
+ return chunkV5WWQN7P_cjs.handleError(error, "Error listing indexes");
280
+ }
281
+ }
282
+ });
283
+ var DESCRIBE_INDEX_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
284
+ method: "GET",
285
+ path: "/api/vector/:vectorName/indexes/:indexName",
286
+ responseType: "json",
287
+ pathParamSchema: vectorIndexPathParams,
288
+ responseSchema: describeIndexResponseSchema,
289
+ summary: "Describe index",
290
+ description: "Returns statistics and metadata for a specific index",
291
+ tags: ["Vectors"],
292
+ handler: async ({ mastra, vectorName, indexName }) => {
293
+ try {
294
+ if (!indexName) {
295
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Index name is required" });
296
+ }
297
+ const vector = getVector(mastra, vectorName);
298
+ const stats = await vector.describeIndex({ indexName });
299
+ return {
300
+ dimension: stats.dimension,
301
+ count: stats.count,
302
+ metric: stats.metric?.toLowerCase()
303
+ };
304
+ } catch (error) {
305
+ return chunkV5WWQN7P_cjs.handleError(error, "Error describing index");
306
+ }
307
+ }
308
+ });
309
+ var DELETE_INDEX_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
310
+ method: "DELETE",
311
+ path: "/api/vector/:vectorName/indexes/:indexName",
312
+ responseType: "json",
313
+ pathParamSchema: vectorIndexPathParams,
314
+ responseSchema: deleteIndexResponseSchema,
315
+ summary: "Delete index",
316
+ description: "Deletes a vector index and all its data",
317
+ tags: ["Vectors"],
318
+ handler: async ({ mastra, vectorName, indexName }) => {
319
+ try {
320
+ if (!indexName) {
321
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Index name is required" });
322
+ }
323
+ const vector = getVector(mastra, vectorName);
324
+ await vector.deleteIndex({ indexName });
325
+ return { success: true };
326
+ } catch (error) {
327
+ return chunkV5WWQN7P_cjs.handleError(error, "Error deleting index");
328
+ }
329
+ }
330
+ });
331
+
332
+ exports.CREATE_INDEX_ROUTE = CREATE_INDEX_ROUTE;
333
+ exports.DELETE_INDEX_ROUTE = DELETE_INDEX_ROUTE;
334
+ exports.DESCRIBE_INDEX_ROUTE = DESCRIBE_INDEX_ROUTE;
335
+ exports.LIST_INDEXES_ROUTE = LIST_INDEXES_ROUTE;
336
+ exports.QUERY_VECTORS_ROUTE = QUERY_VECTORS_ROUTE;
337
+ exports.UPSERT_VECTORS_ROUTE = UPSERT_VECTORS_ROUTE;
338
+ exports.createIndex = createIndex;
339
+ exports.deleteIndex = deleteIndex;
340
+ exports.describeIndex = describeIndex;
341
+ exports.listIndexes = listIndexes;
342
+ exports.queryVectors = queryVectors;
343
+ exports.upsertVectors = upsertVectors;
344
+ exports.vector_exports = vector_exports;
345
+ //# sourceMappingURL=chunk-SWIK2QSP.cjs.map
346
+ //# sourceMappingURL=chunk-SWIK2QSP.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/vector.ts","../src/server/schemas/vectors.ts"],"names":["__export","z","successResponseSchema","HTTPException","handleError","createRoute"],"mappings":"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","file":"chunk-SWIK2QSP.cjs","sourcesContent":["import type { MastraVector, QueryResult, IndexStats } from '@mastra/core/vector';\nimport { HTTPException } from '../http-exception';\nimport {\n vectorNamePathParams,\n vectorIndexPathParams,\n upsertVectorsBodySchema,\n upsertVectorsResponseSchema,\n createIndexBodySchema,\n createIndexResponseSchema,\n queryVectorsBodySchema,\n queryVectorsResponseSchema,\n listIndexesResponseSchema,\n describeIndexResponseSchema,\n deleteIndexResponseSchema,\n} from '../schemas/vectors';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\n\ninterface VectorContext extends Context {\n vectorName?: string;\n}\n\ninterface UpsertRequest {\n indexName: string;\n vectors: number[][];\n metadata?: Record<string, any>[];\n ids?: string[];\n}\n\ninterface CreateIndexRequest {\n indexName: string;\n dimension: number;\n metric?: 'cosine' | 'euclidean' | 'dotproduct';\n}\n\ninterface QueryRequest {\n indexName: string;\n queryVector: number[];\n topK?: number;\n filter?: Record<string, any>;\n includeVector?: boolean;\n}\n\nfunction getVector(mastra: Context['mastra'], vectorName?: string): MastraVector {\n if (!vectorName) {\n throw new HTTPException(400, { message: 'Vector name is required' });\n }\n\n const vector = mastra.getVector(vectorName);\n if (!vector) {\n throw new HTTPException(404, { message: `Vector store ${vectorName} not found` });\n }\n\n return vector;\n}\n\n// Upsert vectors\nexport async function upsertVectors({\n mastra,\n vectorName,\n indexName,\n vectors,\n metadata,\n ids,\n}: VectorContext & UpsertRequest) {\n try {\n if (!indexName || !vectors || !Array.isArray(vectors)) {\n throw new HTTPException(400, { message: 'Invalid request index. indexName and vectors array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const result = await vector.upsert({ indexName, vectors, metadata, ids });\n return { ids: result };\n } catch (error) {\n return handleError(error, 'Error upserting vectors');\n }\n}\n\n// Create index\nexport async function createIndex({\n mastra,\n vectorName,\n indexName,\n dimension,\n metric,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & CreateIndexRequest) {\n try {\n if (!indexName || typeof dimension !== 'number' || dimension <= 0) {\n throw new HTTPException(400, {\n message: 'Invalid request index, indexName and positive dimension number are required.',\n });\n }\n\n if (metric && !['cosine', 'euclidean', 'dotproduct'].includes(metric)) {\n throw new HTTPException(400, { message: 'Invalid metric. Must be one of: cosine, euclidean, dotproduct' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.createIndex({ indexName, dimension, metric });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error creating index');\n }\n}\n\n// Query vectors\nexport async function queryVectors({\n mastra,\n vectorName,\n indexName,\n queryVector,\n topK,\n filter,\n includeVector,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & QueryRequest) {\n try {\n if (!indexName || !queryVector || !Array.isArray(queryVector)) {\n throw new HTTPException(400, { message: 'Invalid request query. indexName and queryVector array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const results: QueryResult[] = await vector.query({ indexName, queryVector, topK, filter, includeVector });\n return results;\n } catch (error) {\n return handleError(error, 'Error querying vectors');\n }\n}\n\n// List indexes\nexport async function listIndexes({ mastra, vectorName }: Pick<VectorContext, 'mastra' | 'vectorName'>) {\n try {\n const vector = getVector(mastra, vectorName);\n\n const indexes = await vector.listIndexes();\n return indexes.filter(Boolean);\n } catch (error) {\n return handleError(error, 'Error listing indexes');\n }\n}\n\n// Describe index\nexport async function describeIndex({\n mastra,\n vectorName,\n indexName,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { indexName?: string }) {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n const stats: IndexStats = await vector.describeIndex({ indexName });\n\n return {\n dimension: stats.dimension,\n count: stats.count,\n metric: stats.metric?.toLowerCase(),\n };\n } catch (error) {\n return handleError(error, 'Error describing index');\n }\n}\n\n// Delete index\nexport async function deleteIndex({\n mastra,\n vectorName,\n indexName,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { indexName?: string }) {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.deleteIndex({ indexName });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error deleting index');\n }\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const UPSERT_VECTORS_ROUTE = createRoute({\n method: 'POST',\n path: '/api/vector/:vectorName/upsert',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: upsertVectorsBodySchema,\n responseSchema: upsertVectorsResponseSchema,\n summary: 'Upsert vectors',\n description: 'Inserts or updates vectors in the specified index',\n tags: ['Vectors'],\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, vectors, metadata, ids } = params;\n\n if (!indexName || !vectors || !Array.isArray(vectors)) {\n throw new HTTPException(400, { message: 'Invalid request index. indexName and vectors array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const result = await vector.upsert({ indexName, vectors, metadata, ids });\n return { ids: result };\n } catch (error) {\n return handleError(error, 'Error upserting vectors');\n }\n },\n});\n\nexport const CREATE_INDEX_ROUTE = createRoute({\n method: 'POST',\n path: '/api/vector/:vectorName/create-index',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: createIndexBodySchema,\n responseSchema: createIndexResponseSchema,\n summary: 'Create index',\n description: 'Creates a new vector index with the specified dimension and metric',\n tags: ['Vectors'],\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, dimension, metric } = params;\n\n if (!indexName || typeof dimension !== 'number' || dimension <= 0) {\n throw new HTTPException(400, {\n message: 'Invalid request index, indexName and positive dimension number are required.',\n });\n }\n\n if (metric && !['cosine', 'euclidean', 'dotproduct'].includes(metric)) {\n throw new HTTPException(400, { message: 'Invalid metric. Must be one of: cosine, euclidean, dotproduct' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.createIndex({ indexName, dimension, metric });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error creating index');\n }\n },\n});\n\nexport const QUERY_VECTORS_ROUTE = createRoute({\n method: 'POST',\n path: '/api/vector/:vectorName/query',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: queryVectorsBodySchema,\n responseSchema: queryVectorsResponseSchema,\n summary: 'Query vectors',\n description: 'Performs a similarity search on the vector index',\n tags: ['Vectors'],\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, queryVector, topK, filter, includeVector } = params;\n\n if (!indexName || !queryVector || !Array.isArray(queryVector)) {\n throw new HTTPException(400, {\n message: 'Invalid request query. indexName and queryVector array are required.',\n });\n }\n\n const vector = getVector(mastra, vectorName);\n const results: QueryResult[] = await vector.query({ indexName, queryVector, topK, filter, includeVector });\n return results;\n } catch (error) {\n return handleError(error, 'Error querying vectors');\n }\n },\n});\n\nexport const LIST_INDEXES_ROUTE = createRoute({\n method: 'GET',\n path: '/api/vector/:vectorName/indexes',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n responseSchema: listIndexesResponseSchema,\n summary: 'List indexes',\n description: 'Returns a list of all indexes in the vector store',\n tags: ['Vectors'],\n handler: async ({ mastra, vectorName }) => {\n try {\n const vector = getVector(mastra, vectorName);\n const indexes = await vector.listIndexes();\n return indexes.filter(Boolean);\n } catch (error) {\n return handleError(error, 'Error listing indexes');\n }\n },\n});\n\nexport const DESCRIBE_INDEX_ROUTE = createRoute({\n method: 'GET',\n path: '/api/vector/:vectorName/indexes/:indexName',\n responseType: 'json',\n pathParamSchema: vectorIndexPathParams,\n responseSchema: describeIndexResponseSchema,\n summary: 'Describe index',\n description: 'Returns statistics and metadata for a specific index',\n tags: ['Vectors'],\n handler: async ({ mastra, vectorName, indexName }) => {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n const stats: IndexStats = await vector.describeIndex({ indexName: indexName });\n\n return {\n dimension: stats.dimension,\n count: stats.count,\n metric: stats.metric?.toLowerCase(),\n };\n } catch (error) {\n return handleError(error, 'Error describing index');\n }\n },\n});\n\nexport const DELETE_INDEX_ROUTE = createRoute({\n method: 'DELETE',\n path: '/api/vector/:vectorName/indexes/:indexName',\n responseType: 'json',\n pathParamSchema: vectorIndexPathParams,\n responseSchema: deleteIndexResponseSchema,\n summary: 'Delete index',\n description: 'Deletes a vector index and all its data',\n tags: ['Vectors'],\n handler: async ({ mastra, vectorName, indexName }) => {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.deleteIndex({ indexName: indexName });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error deleting index');\n }\n },\n});\n","import z from 'zod';\nimport { successResponseSchema } from './common';\n\n// Path parameter schemas\nexport const vectorNamePathParams = z.object({\n vectorName: z.string().describe('Name of the vector store'),\n});\n\nexport const vectorIndexPathParams = vectorNamePathParams.extend({\n indexName: z.string().describe('Name of the index'),\n});\n\n// Body schemas\n// Base schema for operations that require an index name\nconst indexBodyBaseSchema = z.object({\n indexName: z.string(),\n});\n\nexport const upsertVectorsBodySchema = indexBodyBaseSchema.extend({\n vectors: z.array(z.array(z.number())),\n metadata: z.array(z.record(z.string(), z.any())).optional(),\n ids: z.array(z.string()).optional(),\n});\n\nexport const createIndexBodySchema = indexBodyBaseSchema.extend({\n dimension: z.number(),\n metric: z.enum(['cosine', 'euclidean', 'dotproduct']).optional(),\n});\n\nexport const queryVectorsBodySchema = indexBodyBaseSchema.extend({\n queryVector: z.array(z.number()),\n topK: z.number().optional(),\n filter: z.record(z.string(), z.any()).optional(),\n includeVector: z.boolean().optional(),\n});\n\n// Response schemas\nexport const upsertVectorsResponseSchema = z.object({\n ids: z.array(z.string()),\n});\n\nexport const createIndexResponseSchema = successResponseSchema;\n\nexport const queryVectorsResponseSchema = z.array(z.unknown()); // QueryResult[]\n\nexport const listIndexesResponseSchema = z.array(z.string());\n\nexport const describeIndexResponseSchema = z.object({\n dimension: z.number(),\n count: z.number(),\n metric: z.string().optional(),\n});\n\nexport const deleteIndexResponseSchema = successResponseSchema;\n"]}
@@ -0,0 +1,164 @@
1
+ import { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';
2
+
3
+ // src/server/server-adapter/openapi-utils.ts
4
+ function generateRouteOpenAPI({
5
+ method,
6
+ path,
7
+ summary,
8
+ description,
9
+ tags = [],
10
+ pathParamSchema,
11
+ queryParamSchema,
12
+ bodySchema,
13
+ responseSchema,
14
+ deprecated
15
+ }) {
16
+ const route = {
17
+ summary: summary || `${method} ${path}`,
18
+ description,
19
+ tags,
20
+ deprecated,
21
+ responses: {
22
+ 200: {
23
+ description: "Successful response"
24
+ }
25
+ }
26
+ };
27
+ if (pathParamSchema || queryParamSchema) {
28
+ route.requestParams = {};
29
+ if (pathParamSchema) {
30
+ route.requestParams.path = pathParamSchema;
31
+ }
32
+ if (queryParamSchema) {
33
+ route.requestParams.query = queryParamSchema;
34
+ }
35
+ }
36
+ if (bodySchema) {
37
+ route.requestBody = {
38
+ content: {
39
+ "application/json": {
40
+ schema: bodySchema
41
+ }
42
+ }
43
+ };
44
+ }
45
+ if (responseSchema) {
46
+ route.responses[200] = {
47
+ description: "Successful response",
48
+ content: {
49
+ "application/json": {
50
+ schema: responseSchema
51
+ }
52
+ }
53
+ };
54
+ }
55
+ return route;
56
+ }
57
+ function convertZodToJsonSchema(spec) {
58
+ const converted = {
59
+ summary: spec.summary,
60
+ description: spec.description,
61
+ tags: spec.tags,
62
+ responses: {}
63
+ };
64
+ const parameters = [];
65
+ if (spec.requestParams?.path) {
66
+ const pathSchema = zodToJsonSchema(spec.requestParams.path, "openApi3", "none");
67
+ const properties = pathSchema.properties || {};
68
+ Object.entries(properties).forEach(([name, schema]) => {
69
+ parameters.push({
70
+ name,
71
+ in: "path",
72
+ required: true,
73
+ description: schema.description || `The ${name} parameter`,
74
+ schema
75
+ });
76
+ });
77
+ }
78
+ if (spec.requestParams?.query) {
79
+ const querySchema = zodToJsonSchema(spec.requestParams.query, "openApi3", "none");
80
+ const properties = querySchema.properties || {};
81
+ const required = querySchema.required || [];
82
+ Object.entries(properties).forEach(([name, schema]) => {
83
+ parameters.push({
84
+ name,
85
+ in: "query",
86
+ required: required.includes(name),
87
+ description: schema.description || `Query parameter: ${name}`,
88
+ schema
89
+ });
90
+ });
91
+ }
92
+ if (parameters.length > 0) {
93
+ converted.parameters = parameters;
94
+ }
95
+ if (spec.requestBody?.content?.["application/json"]?.schema) {
96
+ converted.requestBody = {
97
+ required: true,
98
+ content: {
99
+ "application/json": {
100
+ schema: zodToJsonSchema(spec.requestBody.content["application/json"].schema, "openApi3", "none")
101
+ }
102
+ }
103
+ };
104
+ }
105
+ Object.entries(spec.responses).forEach(([statusCode, response]) => {
106
+ converted.responses[statusCode] = {
107
+ description: response.description
108
+ };
109
+ if (response.content?.["application/json"]?.schema) {
110
+ converted.responses[statusCode].content = {
111
+ "application/json": {
112
+ schema: zodToJsonSchema(response.content["application/json"].schema, "openApi3", "none")
113
+ }
114
+ };
115
+ }
116
+ });
117
+ return converted;
118
+ }
119
+ function generateOpenAPIDocument(routes, info) {
120
+ const paths = {};
121
+ routes.forEach((route) => {
122
+ if (!route.openapi) return;
123
+ const openapiPath = route.path.replace(/:(\w+)/g, "{$1}");
124
+ if (!paths[openapiPath]) {
125
+ paths[openapiPath] = {};
126
+ }
127
+ paths[openapiPath][route.method.toLowerCase()] = convertZodToJsonSchema(route.openapi);
128
+ });
129
+ return {
130
+ openapi: "3.1.0",
131
+ info: {
132
+ title: info.title,
133
+ version: info.version,
134
+ description: info.description
135
+ },
136
+ paths
137
+ };
138
+ }
139
+
140
+ // src/server/server-adapter/routes/route-builder.ts
141
+ function createRoute(config) {
142
+ const { summary, description, tags, deprecated, ...baseRoute } = config;
143
+ const openapi = config.method !== "ALL" ? generateRouteOpenAPI({
144
+ method: config.method,
145
+ path: config.path,
146
+ summary,
147
+ description,
148
+ tags,
149
+ pathParamSchema: config.pathParamSchema,
150
+ queryParamSchema: config.queryParamSchema,
151
+ bodySchema: config.bodySchema,
152
+ responseSchema: config.responseSchema,
153
+ deprecated
154
+ }) : void 0;
155
+ return {
156
+ ...baseRoute,
157
+ openapi,
158
+ deprecated
159
+ };
160
+ }
161
+
162
+ export { createRoute, generateOpenAPIDocument };
163
+ //# sourceMappingURL=chunk-SXVANU23.js.map
164
+ //# sourceMappingURL=chunk-SXVANU23.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/server-adapter/openapi-utils.ts","../src/server/server-adapter/routes/route-builder.ts"],"names":[],"mappings":"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","file":"chunk-SXVANU23.js","sourcesContent":["import { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';\nimport type { ZodSchema } from 'zod';\nimport type { ServerRoute } from './routes';\n\ninterface RouteOpenAPIConfig {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n path: string;\n summary?: string;\n description?: string;\n tags?: string[];\n pathParamSchema?: ZodSchema;\n queryParamSchema?: ZodSchema;\n bodySchema?: ZodSchema;\n responseSchema?: ZodSchema;\n deprecated?: boolean;\n}\n\ninterface OpenAPIRoute {\n summary?: string;\n description?: string;\n tags?: string[];\n deprecated?: boolean;\n requestParams?: {\n path?: ZodSchema;\n query?: ZodSchema;\n };\n requestBody?: {\n content: {\n 'application/json': {\n schema: ZodSchema;\n };\n };\n };\n responses: {\n [statusCode: string]: {\n description: string;\n content?: {\n 'application/json': {\n schema: ZodSchema;\n };\n };\n };\n };\n}\n\n/**\n * Generates OpenAPI specification for a single route\n * Extracts path parameters, query parameters, request body, and response schemas\n */\nexport function generateRouteOpenAPI({\n method,\n path,\n summary,\n description,\n tags = [],\n pathParamSchema,\n queryParamSchema,\n bodySchema,\n responseSchema,\n deprecated,\n}: RouteOpenAPIConfig): OpenAPIRoute {\n const route: OpenAPIRoute = {\n summary: summary || `${method} ${path}`,\n description,\n tags,\n deprecated,\n responses: {\n 200: {\n description: 'Successful response',\n },\n },\n };\n\n // Add path and query parameters\n if (pathParamSchema || queryParamSchema) {\n route.requestParams = {};\n\n if (pathParamSchema) {\n route.requestParams.path = pathParamSchema;\n }\n\n if (queryParamSchema) {\n route.requestParams.query = queryParamSchema;\n }\n }\n\n // Add request body with raw Zod schema\n if (bodySchema) {\n route.requestBody = {\n content: {\n 'application/json': {\n schema: bodySchema,\n },\n },\n };\n }\n\n // Add response schema with raw Zod schema\n if (responseSchema) {\n route.responses[200] = {\n description: 'Successful response',\n content: {\n 'application/json': {\n schema: responseSchema,\n },\n },\n };\n }\n\n return route;\n}\n\n/**\n * Converts an OpenAPI route spec with Zod schemas to one with JSON Schema\n */\nfunction convertZodToJsonSchema(spec: OpenAPIRoute): any {\n const converted: any = {\n summary: spec.summary,\n description: spec.description,\n tags: spec.tags,\n responses: {},\n };\n\n const parameters: any[] = [];\n\n // Convert path parameters\n if (spec.requestParams?.path) {\n const pathSchema = zodToJsonSchema(spec.requestParams.path, 'openApi3', 'none') as any;\n const properties = pathSchema.properties || {};\n\n Object.entries(properties).forEach(([name, schema]) => {\n parameters.push({\n name,\n in: 'path',\n required: true,\n description: (schema as any).description || `The ${name} parameter`,\n schema,\n });\n });\n }\n\n // Convert query parameters\n if (spec.requestParams?.query) {\n const querySchema = zodToJsonSchema(spec.requestParams.query, 'openApi3', 'none') as any;\n const properties = querySchema.properties || {};\n const required = querySchema.required || [];\n\n Object.entries(properties).forEach(([name, schema]) => {\n parameters.push({\n name,\n in: 'query',\n required: required.includes(name),\n description: (schema as any).description || `Query parameter: ${name}`,\n schema,\n });\n });\n }\n\n if (parameters.length > 0) {\n converted.parameters = parameters;\n }\n\n // Convert request body\n if (spec.requestBody?.content?.['application/json']?.schema) {\n converted.requestBody = {\n required: true,\n content: {\n 'application/json': {\n schema: zodToJsonSchema(spec.requestBody.content['application/json'].schema, 'openApi3', 'none'),\n },\n },\n };\n }\n\n // Convert response schemas\n Object.entries(spec.responses).forEach(([statusCode, response]) => {\n converted.responses[statusCode] = {\n description: response.description,\n };\n\n if (response.content?.['application/json']?.schema) {\n converted.responses[statusCode].content = {\n 'application/json': {\n schema: zodToJsonSchema(response.content['application/json'].schema, 'openApi3', 'none'),\n },\n };\n }\n });\n\n return converted;\n}\n\n/**\n * Generates a complete OpenAPI 3.1.0 document from server routes\n * @param routes - Array of ServerRoute objects with OpenAPI specifications\n * @param info - API metadata (title, version, description)\n * @returns Complete OpenAPI 3.1.0 document\n */\nexport function generateOpenAPIDocument(\n routes: ServerRoute[],\n info: { title: string; version: string; description?: string },\n): any {\n const paths: Record<string, any> = {};\n\n // Build paths object from routes\n // Convert Express-style :param to OpenAPI-style {param}\n routes.forEach(route => {\n if (!route.openapi) return;\n\n const openapiPath = route.path.replace(/:(\\w+)/g, '{$1}');\n if (!paths[openapiPath]) {\n paths[openapiPath] = {};\n }\n\n // Convert Zod schemas to JSON Schema\n paths[openapiPath][route.method.toLowerCase()] = convertZodToJsonSchema(route.openapi);\n });\n\n return {\n openapi: '3.1.0',\n info: {\n title: info.title,\n version: info.version,\n description: info.description,\n },\n paths,\n };\n}\n","import type z from 'zod';\nimport { generateRouteOpenAPI } from '../openapi-utils';\nimport type { InferParams, ResponseType, ServerRoute, ServerRouteHandler } from './index';\n\ninterface RouteConfig<\n TPathSchema extends z.ZodTypeAny | undefined = undefined,\n TQuerySchema extends z.ZodTypeAny | undefined = undefined,\n TBodySchema extends z.ZodTypeAny | undefined = undefined,\n TResponseSchema extends z.ZodTypeAny | undefined = undefined,\n TResponseType extends ResponseType = 'json',\n> {\n method: ServerRoute['method'];\n path: string;\n responseType: TResponseType;\n streamFormat?: 'sse' | 'stream'; // Only used when responseType is 'stream'\n handler: ServerRouteHandler<\n InferParams<TPathSchema, TQuerySchema, TBodySchema>,\n TResponseSchema extends z.ZodTypeAny ? z.infer<TResponseSchema> : unknown,\n TResponseType\n >;\n pathParamSchema?: TPathSchema;\n queryParamSchema?: TQuerySchema;\n bodySchema?: TBodySchema;\n responseSchema?: TResponseSchema;\n summary?: string;\n description?: string;\n tags?: string[];\n deprecated?: boolean;\n maxBodySize?: number;\n}\n\n/**\n * Creates a server route with auto-generated OpenAPI specification and type-safe handler inference.\n *\n * The handler parameters are automatically inferred from the provided schemas:\n * - pathParamSchema: Infers path parameter types (e.g., :agentId)\n * - queryParamSchema: Infers query parameter types\n * - bodySchema: Infers request body types\n * - Runtime context (mastra, requestContext, tools, taskStore) is always available\n *\n * @param config - Route configuration including schemas, handler, and metadata\n * @returns Complete ServerRoute with OpenAPI spec\n *\n * @example\n * ```typescript\n * export const getAgentRoute = createRoute({\n * method: 'GET',\n * path: '/api/agents/:agentId',\n * responseType: 'json',\n * pathParamSchema: z.object({ agentId: z.string() }),\n * responseSchema: serializedAgentSchema,\n * handler: async ({ agentId, mastra, requestContext }) => {\n * // agentId is typed as string\n * // mastra, requestContext, tools, taskStore are always available\n * return mastra.getAgentById(agentId);\n * },\n * summary: 'Get agent by ID',\n * description: 'Returns details for a specific agent',\n * tags: ['Agents'],\n * });\n * ```\n */\nexport function createRoute<\n TPathSchema extends z.ZodTypeAny | undefined = undefined,\n TQuerySchema extends z.ZodTypeAny | undefined = undefined,\n TBodySchema extends z.ZodTypeAny | undefined = undefined,\n TResponseSchema extends z.ZodTypeAny | undefined = undefined,\n TResponseType extends ResponseType = 'json',\n>(\n config: RouteConfig<TPathSchema, TQuerySchema, TBodySchema, TResponseSchema, TResponseType>,\n): ServerRoute<\n InferParams<TPathSchema, TQuerySchema, TBodySchema>,\n TResponseSchema extends z.ZodTypeAny ? z.infer<TResponseSchema> : unknown,\n TResponseType\n> {\n const { summary, description, tags, deprecated, ...baseRoute } = config;\n\n // Generate OpenAPI specification from the route config\n // Skip OpenAPI generation for 'ALL' method as it doesn't map to OpenAPI\n const openapi =\n config.method !== 'ALL'\n ? generateRouteOpenAPI({\n method: config.method as 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH',\n path: config.path,\n summary,\n description,\n tags,\n pathParamSchema: config.pathParamSchema,\n queryParamSchema: config.queryParamSchema,\n bodySchema: config.bodySchema,\n responseSchema: config.responseSchema,\n deprecated,\n })\n : undefined;\n\n return {\n ...baseRoute,\n openapi: openapi as any,\n deprecated,\n };\n}\n"]}