@mastra/server 0.0.0-redis-cloud-transporter-20250508194049 → 0.0.0-refactor-agent-information-for-recomposable-ui-20251112151814

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 (270) hide show
  1. package/CHANGELOG.md +4878 -0
  2. package/LICENSE.md +11 -42
  3. package/README.md +1 -6
  4. package/dist/chunk-2IS5WICF.js +23036 -0
  5. package/dist/chunk-2IS5WICF.js.map +1 -0
  6. package/dist/chunk-2PLXW4ZX.cjs +2777 -0
  7. package/dist/chunk-2PLXW4ZX.cjs.map +1 -0
  8. package/dist/chunk-2YZH5PH6.cjs +200 -0
  9. package/dist/chunk-2YZH5PH6.cjs.map +1 -0
  10. package/dist/chunk-3AMNUUZF.js +124 -0
  11. package/dist/chunk-3AMNUUZF.js.map +1 -0
  12. package/dist/chunk-3F52QCI4.js +192 -0
  13. package/dist/chunk-3F52QCI4.js.map +1 -0
  14. package/dist/chunk-4JF5WXPL.js +502 -0
  15. package/dist/chunk-4JF5WXPL.js.map +1 -0
  16. package/dist/{chunk-FV45V6WC.cjs → chunk-64ITUOXI.cjs} +3 -7
  17. package/dist/chunk-64ITUOXI.cjs.map +1 -0
  18. package/dist/{chunk-TRDNDNGQ.js → chunk-6QWQZI4Q.js} +4 -7
  19. package/dist/chunk-6QWQZI4Q.js.map +1 -0
  20. package/dist/chunk-73PAWDM5.js +83 -0
  21. package/dist/chunk-73PAWDM5.js.map +1 -0
  22. package/dist/chunk-A24TSVEZ.cjs +130 -0
  23. package/dist/chunk-A24TSVEZ.cjs.map +1 -0
  24. package/dist/chunk-A2NPD5N6.cjs +517 -0
  25. package/dist/chunk-A2NPD5N6.cjs.map +1 -0
  26. package/dist/chunk-B3Z6J745.js +122 -0
  27. package/dist/chunk-B3Z6J745.js.map +1 -0
  28. package/dist/chunk-BTWIR2B7.cjs +28 -0
  29. package/dist/chunk-BTWIR2B7.cjs.map +1 -0
  30. package/dist/chunk-D7T74TVR.js +129 -0
  31. package/dist/chunk-D7T74TVR.js.map +1 -0
  32. package/dist/chunk-EHACNWDL.cjs +681 -0
  33. package/dist/chunk-EHACNWDL.cjs.map +1 -0
  34. package/dist/chunk-FPBYKMIS.js +477 -0
  35. package/dist/chunk-FPBYKMIS.js.map +1 -0
  36. package/dist/chunk-GLAZTMX3.cjs +128 -0
  37. package/dist/chunk-GLAZTMX3.cjs.map +1 -0
  38. package/dist/chunk-GU4EWMZB.cjs +769 -0
  39. package/dist/chunk-GU4EWMZB.cjs.map +1 -0
  40. package/dist/chunk-ID6JYDNL.cjs +23075 -0
  41. package/dist/chunk-ID6JYDNL.cjs.map +1 -0
  42. package/dist/chunk-KF3RI45U.cjs +172 -0
  43. package/dist/chunk-KF3RI45U.cjs.map +1 -0
  44. package/dist/chunk-KJIDZQRA.cjs +485 -0
  45. package/dist/chunk-KJIDZQRA.cjs.map +1 -0
  46. package/dist/{chunk-4JINXASC.js → chunk-KWH5QBXP.js} +7 -4
  47. package/dist/chunk-KWH5QBXP.js.map +1 -0
  48. package/dist/chunk-LF2ZLOFP.js +767 -0
  49. package/dist/chunk-LF2ZLOFP.js.map +1 -0
  50. package/dist/chunk-LPM6BBAX.cjs +1043 -0
  51. package/dist/chunk-LPM6BBAX.cjs.map +1 -0
  52. package/dist/chunk-ND5OKOMT.js +165 -0
  53. package/dist/chunk-ND5OKOMT.js.map +1 -0
  54. package/dist/chunk-O7I5CWRX.cjs +44 -0
  55. package/dist/chunk-O7I5CWRX.cjs.map +1 -0
  56. package/dist/chunk-PPMIB3FQ.cjs +88 -0
  57. package/dist/chunk-PPMIB3FQ.cjs.map +1 -0
  58. package/dist/chunk-PR4QN5HX.js +39 -0
  59. package/dist/chunk-PR4QN5HX.js.map +1 -0
  60. package/dist/chunk-QU6N55W6.cjs +256 -0
  61. package/dist/chunk-QU6N55W6.cjs.map +1 -0
  62. package/dist/chunk-RQK4FQUD.js +1012 -0
  63. package/dist/chunk-RQK4FQUD.js.map +1 -0
  64. package/dist/{chunk-M56ECCHK.cjs → chunk-S54HNARD.cjs} +22 -19
  65. package/dist/chunk-S54HNARD.cjs.map +1 -0
  66. package/dist/chunk-SHWNNZBL.js +254 -0
  67. package/dist/chunk-SHWNNZBL.js.map +1 -0
  68. package/dist/{chunk-L7XE5QTW.js → chunk-SZIFSF4T.js} +11 -2
  69. package/dist/chunk-SZIFSF4T.js.map +1 -0
  70. package/dist/chunk-TOCYBDP2.js +46 -0
  71. package/dist/chunk-TOCYBDP2.js.map +1 -0
  72. package/dist/chunk-UXGQZUYZ.js +16 -0
  73. package/dist/chunk-UXGQZUYZ.js.map +1 -0
  74. package/dist/chunk-V5WWQN7P.cjs +18 -0
  75. package/dist/chunk-V5WWQN7P.cjs.map +1 -0
  76. package/dist/chunk-W2KMU354.cjs +133 -0
  77. package/dist/chunk-W2KMU354.cjs.map +1 -0
  78. package/dist/chunk-X3MICMI2.cjs +620 -0
  79. package/dist/chunk-X3MICMI2.cjs.map +1 -0
  80. package/dist/chunk-X6C7BUWN.cjs +48 -0
  81. package/dist/chunk-X6C7BUWN.cjs.map +1 -0
  82. package/dist/chunk-Z2O5YVHY.js +661 -0
  83. package/dist/chunk-Z2O5YVHY.js.map +1 -0
  84. package/dist/chunk-ZJ6KEY6H.js +600 -0
  85. package/dist/chunk-ZJ6KEY6H.js.map +1 -0
  86. package/dist/chunk-ZULZ2752.js +2774 -0
  87. package/dist/chunk-ZULZ2752.js.map +1 -0
  88. package/dist/dist-4MVGNSRL.cjs +1150 -0
  89. package/dist/dist-4MVGNSRL.cjs.map +1 -0
  90. package/dist/dist-FZYCV3VB.cjs +940 -0
  91. package/dist/dist-FZYCV3VB.cjs.map +1 -0
  92. package/dist/dist-G2BYZJOC.cjs +928 -0
  93. package/dist/dist-G2BYZJOC.cjs.map +1 -0
  94. package/dist/dist-P4MXBQ3U.cjs +16 -0
  95. package/dist/dist-P4MXBQ3U.cjs.map +1 -0
  96. package/dist/dist-PQZUVLPC.js +937 -0
  97. package/dist/dist-PQZUVLPC.js.map +1 -0
  98. package/dist/dist-R7WYX6LC.js +925 -0
  99. package/dist/dist-R7WYX6LC.js.map +1 -0
  100. package/dist/dist-RFMYFILX.cjs +764 -0
  101. package/dist/dist-RFMYFILX.cjs.map +1 -0
  102. package/dist/dist-X7XR3M3Z.js +1147 -0
  103. package/dist/dist-X7XR3M3Z.js.map +1 -0
  104. package/dist/dist-XVBSOGFK.js +761 -0
  105. package/dist/dist-XVBSOGFK.js.map +1 -0
  106. package/dist/dist-YREX2TJT.js +3 -0
  107. package/dist/dist-YREX2TJT.js.map +1 -0
  108. package/dist/index.cjs +6 -0
  109. package/dist/index.cjs.map +1 -0
  110. package/dist/index.d.ts +1 -0
  111. package/dist/index.d.ts.map +1 -0
  112. package/dist/index.js +5 -0
  113. package/dist/index.js.map +1 -0
  114. package/dist/server/a2a/protocol.d.ts +8 -0
  115. package/dist/server/a2a/protocol.d.ts.map +1 -0
  116. package/dist/server/a2a/store.cjs +25 -0
  117. package/dist/server/a2a/store.cjs.map +1 -0
  118. package/dist/server/a2a/store.d.ts +14 -0
  119. package/dist/server/a2a/store.d.ts.map +1 -0
  120. package/dist/server/a2a/store.js +23 -0
  121. package/dist/server/a2a/store.js.map +1 -0
  122. package/dist/server/a2a/tasks.d.ts +20 -0
  123. package/dist/server/a2a/tasks.d.ts.map +1 -0
  124. package/dist/server/handlers/a2a.cjs +32 -0
  125. package/dist/server/handlers/a2a.cjs.map +1 -0
  126. package/dist/server/handlers/a2a.d.ts +68 -0
  127. package/dist/server/handlers/a2a.d.ts.map +1 -0
  128. package/dist/server/handlers/a2a.js +3 -0
  129. package/dist/server/handlers/a2a.js.map +1 -0
  130. package/dist/server/handlers/agent-builder.cjs +80 -0
  131. package/dist/server/handlers/agent-builder.cjs.map +1 -0
  132. package/dist/server/handlers/agent-builder.d.ts +85 -0
  133. package/dist/server/handlers/agent-builder.d.ts.map +1 -0
  134. package/dist/server/handlers/agent-builder.js +3 -0
  135. package/dist/server/handlers/agent-builder.js.map +1 -0
  136. package/dist/server/handlers/agents.cjs +60 -10
  137. package/dist/server/handlers/agents.cjs.map +1 -0
  138. package/dist/server/handlers/agents.d.ts +194 -6
  139. package/dist/server/handlers/agents.d.ts.map +1 -0
  140. package/dist/server/handlers/agents.js +3 -1
  141. package/dist/server/handlers/agents.js.map +1 -0
  142. package/dist/server/handlers/error.cjs +4 -2
  143. package/dist/server/handlers/error.cjs.map +1 -0
  144. package/dist/server/handlers/error.d.ts +2 -1
  145. package/dist/server/handlers/error.d.ts.map +1 -0
  146. package/dist/server/handlers/error.js +3 -1
  147. package/dist/server/handlers/error.js.map +1 -0
  148. package/dist/server/handlers/logs.cjs +9 -7
  149. package/dist/server/handlers/logs.cjs.map +1 -0
  150. package/dist/server/handlers/logs.d.ts +34 -3
  151. package/dist/server/handlers/logs.d.ts.map +1 -0
  152. package/dist/server/handlers/logs.js +3 -1
  153. package/dist/server/handlers/logs.js.map +1 -0
  154. package/dist/server/handlers/memory.cjs +34 -12
  155. package/dist/server/handlers/memory.cjs.map +1 -0
  156. package/dist/server/handlers/memory.d.ts +112 -8
  157. package/dist/server/handlers/memory.d.ts.map +1 -0
  158. package/dist/server/handlers/memory.js +3 -1
  159. package/dist/server/handlers/memory.js.map +1 -0
  160. package/dist/server/handlers/observability.cjs +24 -0
  161. package/dist/server/handlers/observability.cjs.map +1 -0
  162. package/dist/server/handlers/observability.d.ts +49 -0
  163. package/dist/server/handlers/observability.d.ts.map +1 -0
  164. package/dist/server/handlers/observability.js +3 -0
  165. package/dist/server/handlers/observability.js.map +1 -0
  166. package/dist/server/handlers/scores.cjs +32 -0
  167. package/dist/server/handlers/scores.cjs.map +1 -0
  168. package/dist/server/handlers/scores.d.ts +152 -0
  169. package/dist/server/handlers/scores.d.ts.map +1 -0
  170. package/dist/server/handlers/scores.js +3 -0
  171. package/dist/server/handlers/scores.js.map +1 -0
  172. package/dist/server/handlers/tools.cjs +12 -6
  173. package/dist/server/handlers/tools.cjs.map +1 -0
  174. package/dist/server/handlers/tools.d.ts +25 -4
  175. package/dist/server/handlers/tools.d.ts.map +1 -0
  176. package/dist/server/handlers/tools.js +3 -1
  177. package/dist/server/handlers/tools.js.map +1 -0
  178. package/dist/server/handlers/utils.cjs +8 -2
  179. package/dist/server/handlers/utils.cjs.map +1 -0
  180. package/dist/server/handlers/utils.d.ts +8 -1
  181. package/dist/server/handlers/utils.d.ts.map +1 -0
  182. package/dist/server/handlers/utils.js +3 -1
  183. package/dist/server/handlers/utils.js.map +1 -0
  184. package/dist/server/handlers/vector.cjs +9 -7
  185. package/dist/server/handlers/vector.cjs.map +1 -0
  186. package/dist/server/handlers/vector.d.ts +51 -6
  187. package/dist/server/handlers/vector.d.ts.map +1 -0
  188. package/dist/server/handlers/vector.js +3 -1
  189. package/dist/server/handlers/vector.js.map +1 -0
  190. package/dist/server/handlers/voice.cjs +10 -4
  191. package/dist/server/handlers/voice.cjs.map +1 -0
  192. package/dist/server/handlers/voice.d.ts +41 -3
  193. package/dist/server/handlers/voice.d.ts.map +1 -0
  194. package/dist/server/handlers/voice.js +3 -1
  195. package/dist/server/handlers/voice.js.map +1 -0
  196. package/dist/server/handlers/workflows.cjs +50 -16
  197. package/dist/server/handlers/workflows.cjs.map +1 -0
  198. package/dist/server/handlers/workflows.d.ts +88 -10
  199. package/dist/server/handlers/workflows.d.ts.map +1 -0
  200. package/dist/server/handlers/workflows.js +3 -1
  201. package/dist/server/handlers/workflows.js.map +1 -0
  202. package/dist/server/handlers.cjs +37 -30
  203. package/dist/server/handlers.cjs.map +1 -0
  204. package/dist/server/handlers.d.ts +12 -10
  205. package/dist/server/handlers.d.ts.map +1 -0
  206. package/dist/server/handlers.js +13 -10
  207. package/dist/server/handlers.js.map +1 -0
  208. package/dist/server/http-exception.d.ts +82 -0
  209. package/dist/server/http-exception.d.ts.map +1 -0
  210. package/dist/server/types.d.ts +10 -0
  211. package/dist/server/types.d.ts.map +1 -0
  212. package/dist/server/utils.d.ts +45 -0
  213. package/dist/server/utils.d.ts.map +1 -0
  214. package/dist/token-375W3LEI.cjs +64 -0
  215. package/dist/token-375W3LEI.cjs.map +1 -0
  216. package/dist/token-C3IMNCC4.js +62 -0
  217. package/dist/token-C3IMNCC4.js.map +1 -0
  218. package/dist/token-util-CV3RRG6K.cjs +9 -0
  219. package/dist/token-util-CV3RRG6K.cjs.map +1 -0
  220. package/dist/token-util-E5QO2RCL.js +7 -0
  221. package/dist/token-util-E5QO2RCL.js.map +1 -0
  222. package/package.json +46 -19
  223. package/dist/_tsup-dts-rollup.d.cts +0 -670
  224. package/dist/_tsup-dts-rollup.d.ts +0 -670
  225. package/dist/chunk-2FJURXCL.cjs +0 -213
  226. package/dist/chunk-3AHQ5RGN.js +0 -11
  227. package/dist/chunk-3EJZQ6TQ.js +0 -49
  228. package/dist/chunk-3XTEV33Q.js +0 -317
  229. package/dist/chunk-55HTWX4C.cjs +0 -93
  230. package/dist/chunk-5JNVY6DU.js +0 -120
  231. package/dist/chunk-5SWCVTNL.cjs +0 -5579
  232. package/dist/chunk-5YGDYMRB.cjs +0 -147
  233. package/dist/chunk-6Q7UXAYJ.cjs +0 -198
  234. package/dist/chunk-AMVOS7YB.cjs +0 -141
  235. package/dist/chunk-BPL2CBLV.js +0 -137
  236. package/dist/chunk-CHFORQ7J.cjs +0 -329
  237. package/dist/chunk-D3G23FP3.cjs +0 -126
  238. package/dist/chunk-GVBJ5I2S.js +0 -190
  239. package/dist/chunk-M2RXDCPV.cjs +0 -324
  240. package/dist/chunk-OMN3UI6X.js +0 -5576
  241. package/dist/chunk-OWNA6I2H.js +0 -312
  242. package/dist/chunk-Q6SHQECN.js +0 -88
  243. package/dist/chunk-QJ3AHN64.js +0 -141
  244. package/dist/chunk-QN4KF3BH.cjs +0 -18
  245. package/dist/chunk-RBQASTUP.js +0 -203
  246. package/dist/chunk-SKBVVI24.cjs +0 -54
  247. package/dist/chunk-ZLBRQFDD.cjs +0 -13
  248. package/dist/index.d.cts +0 -1
  249. package/dist/server/handlers/agents.d.cts +0 -6
  250. package/dist/server/handlers/error.d.cts +0 -1
  251. package/dist/server/handlers/logs.d.cts +0 -3
  252. package/dist/server/handlers/memory.d.cts +0 -8
  253. package/dist/server/handlers/network.cjs +0 -22
  254. package/dist/server/handlers/network.d.cts +0 -4
  255. package/dist/server/handlers/network.d.ts +0 -4
  256. package/dist/server/handlers/network.js +0 -1
  257. package/dist/server/handlers/telemetry.cjs +0 -14
  258. package/dist/server/handlers/telemetry.d.cts +0 -2
  259. package/dist/server/handlers/telemetry.d.ts +0 -2
  260. package/dist/server/handlers/telemetry.js +0 -1
  261. package/dist/server/handlers/tools.d.cts +0 -4
  262. package/dist/server/handlers/utils.d.cts +0 -1
  263. package/dist/server/handlers/vNextWorkflows.cjs +0 -46
  264. package/dist/server/handlers/vNextWorkflows.d.cts +0 -10
  265. package/dist/server/handlers/vNextWorkflows.d.ts +0 -10
  266. package/dist/server/handlers/vNextWorkflows.js +0 -1
  267. package/dist/server/handlers/vector.d.cts +0 -6
  268. package/dist/server/handlers/voice.d.cts +0 -3
  269. package/dist/server/handlers/workflows.d.cts +0 -10
  270. package/dist/server/handlers.d.cts +0 -10
@@ -0,0 +1,172 @@
1
+ 'use strict';
2
+
3
+ var chunkGU4EWMZB_cjs = require('./chunk-GU4EWMZB.cjs');
4
+ var chunkBTWIR2B7_cjs = require('./chunk-BTWIR2B7.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 tools = require('@mastra/core/tools');
9
+ var zodToJson = require('@mastra/core/utils/zod-to-json');
10
+
11
+ // src/server/handlers/tools.ts
12
+ var tools_exports = {};
13
+ chunkO7I5CWRX_cjs.__export(tools_exports, {
14
+ executeAgentToolHandler: () => executeAgentToolHandler,
15
+ executeToolHandler: () => executeToolHandler,
16
+ getAgentToolHandler: () => getAgentToolHandler,
17
+ getToolByIdHandler: () => getToolByIdHandler,
18
+ listToolsHandler: () => listToolsHandler
19
+ });
20
+ async function listToolsHandler({ tools }) {
21
+ try {
22
+ if (!tools) {
23
+ return {};
24
+ }
25
+ const serializedTools = Object.entries(tools).reduce(
26
+ (acc, [id, _tool]) => {
27
+ const tool = _tool;
28
+ acc[id] = {
29
+ ...tool,
30
+ inputSchema: tool.inputSchema ? chunkGU4EWMZB_cjs.stringify(zodToJson.zodToJsonSchema(tool.inputSchema)) : void 0,
31
+ outputSchema: tool.outputSchema ? chunkGU4EWMZB_cjs.stringify(zodToJson.zodToJsonSchema(tool.outputSchema)) : void 0
32
+ };
33
+ return acc;
34
+ },
35
+ {}
36
+ );
37
+ return serializedTools;
38
+ } catch (error) {
39
+ return chunkV5WWQN7P_cjs.handleError(error, "Error getting tools");
40
+ }
41
+ }
42
+ async function getToolByIdHandler({ tools, toolId }) {
43
+ try {
44
+ const tool = Object.values(tools || {}).find((tool2) => tool2.id === toolId);
45
+ if (!tool) {
46
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Tool not found" });
47
+ }
48
+ const serializedTool = {
49
+ ...tool,
50
+ inputSchema: tool.inputSchema ? chunkGU4EWMZB_cjs.stringify(zodToJson.zodToJsonSchema(tool.inputSchema)) : void 0,
51
+ outputSchema: tool.outputSchema ? chunkGU4EWMZB_cjs.stringify(zodToJson.zodToJsonSchema(tool.outputSchema)) : void 0
52
+ };
53
+ return serializedTool;
54
+ } catch (error) {
55
+ return chunkV5WWQN7P_cjs.handleError(error, "Error getting tool");
56
+ }
57
+ }
58
+ function executeToolHandler(tools$1) {
59
+ return async ({
60
+ mastra,
61
+ runId,
62
+ toolId,
63
+ data,
64
+ requestContext
65
+ }) => {
66
+ try {
67
+ if (!toolId) {
68
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Tool ID is required" });
69
+ }
70
+ const tool = Object.values(tools$1 || {}).find((tool2) => tool2.id === toolId);
71
+ if (!tool) {
72
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Tool not found" });
73
+ }
74
+ if (!tool?.execute) {
75
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Tool is not executable" });
76
+ }
77
+ chunkBTWIR2B7_cjs.validateBody({ data });
78
+ if (tools.isVercelTool(tool)) {
79
+ const result2 = await tool.execute(data);
80
+ return result2;
81
+ }
82
+ const result = await tool.execute(data, {
83
+ mastra,
84
+ requestContext,
85
+ // TODO: Pass proper tracing context when server API supports tracing
86
+ tracingContext: { currentSpan: void 0 },
87
+ ...runId ? {
88
+ workflow: {
89
+ runId,
90
+ suspend: async () => {
91
+ }
92
+ }
93
+ } : {}
94
+ });
95
+ return result;
96
+ } catch (error) {
97
+ return chunkV5WWQN7P_cjs.handleError(error, "Error executing tool");
98
+ }
99
+ };
100
+ }
101
+ async function getAgentToolHandler({
102
+ mastra,
103
+ agentId,
104
+ toolId,
105
+ requestContext
106
+ }) {
107
+ try {
108
+ const agent = agentId ? mastra.getAgentById(agentId) : null;
109
+ if (!agent) {
110
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Agent not found" });
111
+ }
112
+ const agentTools = await agent.listTools({ requestContext });
113
+ const tool = Object.values(agentTools || {}).find((tool2) => tool2.id === toolId);
114
+ if (!tool) {
115
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Tool not found" });
116
+ }
117
+ const serializedTool = {
118
+ ...tool,
119
+ inputSchema: tool.inputSchema ? chunkGU4EWMZB_cjs.stringify(zodToJson.zodToJsonSchema(tool.inputSchema)) : void 0,
120
+ outputSchema: tool.outputSchema ? chunkGU4EWMZB_cjs.stringify(zodToJson.zodToJsonSchema(tool.outputSchema)) : void 0
121
+ };
122
+ return serializedTool;
123
+ } catch (error) {
124
+ return chunkV5WWQN7P_cjs.handleError(error, "Error getting agent tool");
125
+ }
126
+ }
127
+ async function executeAgentToolHandler({
128
+ mastra,
129
+ agentId,
130
+ toolId,
131
+ data,
132
+ requestContext
133
+ }) {
134
+ try {
135
+ const agent = agentId ? mastra.getAgentById(agentId) : null;
136
+ if (!agent) {
137
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Tool not found" });
138
+ }
139
+ const agentTools = await agent.listTools({ requestContext });
140
+ const tool = Object.values(agentTools || {}).find((tool2) => tool2.id === toolId);
141
+ if (!tool) {
142
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Tool not found" });
143
+ }
144
+ if (!tool?.execute) {
145
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Tool is not executable" });
146
+ }
147
+ const result = await tool.execute(data, {
148
+ mastra,
149
+ requestContext,
150
+ // TODO: Pass proper tracing context when server API supports tracing
151
+ tracingContext: { currentSpan: void 0 },
152
+ agent: {
153
+ messages: [],
154
+ toolCallId: "",
155
+ suspend: async () => {
156
+ }
157
+ }
158
+ });
159
+ return result;
160
+ } catch (error) {
161
+ return chunkV5WWQN7P_cjs.handleError(error, "Error executing tool");
162
+ }
163
+ }
164
+
165
+ exports.executeAgentToolHandler = executeAgentToolHandler;
166
+ exports.executeToolHandler = executeToolHandler;
167
+ exports.getAgentToolHandler = getAgentToolHandler;
168
+ exports.getToolByIdHandler = getToolByIdHandler;
169
+ exports.listToolsHandler = listToolsHandler;
170
+ exports.tools_exports = tools_exports;
171
+ //# sourceMappingURL=chunk-KF3RI45U.cjs.map
172
+ //# sourceMappingURL=chunk-KF3RI45U.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/tools.ts"],"names":["__export","stringify","zodToJsonSchema","handleError","tool","HTTPException","tools","validateBody","isVercelTool","result"],"mappings":"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","file":"chunk-KF3RI45U.cjs","sourcesContent":["import type { RequestContext } from '@mastra/core/di';\nimport type { ToolAction, VercelTool } from '@mastra/core/tools';\nimport { isVercelTool } from '@mastra/core/tools';\nimport { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';\nimport { stringify } from 'superjson';\nimport { HTTPException } from '../http-exception';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\ninterface ToolsContext extends Context {\n tools?: Record<string, ToolAction | VercelTool>;\n toolId?: string;\n runId?: string;\n}\n\n// Tool handlers\nexport async function listToolsHandler({ tools }: Pick<ToolsContext, 'tools'>) {\n try {\n if (!tools) {\n return {};\n }\n\n const serializedTools = Object.entries(tools).reduce(\n (acc, [id, _tool]) => {\n const tool = _tool as any;\n acc[id] = {\n ...tool,\n inputSchema: tool.inputSchema ? stringify(zodToJsonSchema(tool.inputSchema)) : undefined,\n outputSchema: tool.outputSchema ? stringify(zodToJsonSchema(tool.outputSchema)) : undefined,\n };\n return acc;\n },\n {} as Record<string, any>,\n );\n\n return serializedTools;\n } catch (error) {\n return handleError(error, 'Error getting tools');\n }\n}\n\nexport async function getToolByIdHandler({ tools, toolId }: Pick<ToolsContext, 'tools' | 'toolId'>) {\n try {\n const tool = Object.values(tools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n const serializedTool = {\n ...tool,\n inputSchema: tool.inputSchema ? stringify(zodToJsonSchema(tool.inputSchema)) : undefined,\n outputSchema: tool.outputSchema ? stringify(zodToJsonSchema(tool.outputSchema)) : undefined,\n };\n\n return serializedTool;\n } catch (error) {\n return handleError(error, 'Error getting tool');\n }\n}\n\nexport function executeToolHandler(tools: ToolsContext['tools']) {\n return async ({\n mastra,\n runId,\n toolId,\n data,\n requestContext,\n }: Pick<ToolsContext, 'mastra' | 'toolId' | 'runId'> & {\n data?: unknown;\n requestContext: RequestContext;\n }) => {\n try {\n if (!toolId) {\n throw new HTTPException(400, { message: 'Tool ID is required' });\n }\n\n const tool = Object.values(tools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n validateBody({ data });\n\n if (isVercelTool(tool)) {\n const result = await (tool as any).execute(data);\n return result;\n }\n\n const result = await tool.execute(data!, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n ...(runId\n ? {\n workflow: {\n runId,\n suspend: async () => {},\n },\n }\n : {}),\n });\n return result;\n } catch (error) {\n return handleError(error, 'Error executing tool');\n }\n };\n}\n\nexport async function getAgentToolHandler({\n mastra,\n agentId,\n toolId,\n requestContext,\n}: Pick<ToolsContext, 'mastra' | 'toolId'> & {\n agentId?: string;\n requestContext: RequestContext;\n}) {\n try {\n const agent = agentId ? mastra.getAgentById(agentId) : null;\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n const serializedTool = {\n ...tool,\n inputSchema: tool.inputSchema ? stringify(zodToJsonSchema(tool.inputSchema)) : undefined,\n outputSchema: tool.outputSchema ? stringify(zodToJsonSchema(tool.outputSchema)) : undefined,\n };\n\n return serializedTool;\n } catch (error) {\n return handleError(error, 'Error getting agent tool');\n }\n}\n\nexport async function executeAgentToolHandler({\n mastra,\n agentId,\n toolId,\n data,\n requestContext,\n}: Pick<ToolsContext, 'mastra' | 'toolId'> & {\n agentId?: string;\n data: any;\n requestContext: RequestContext;\n}) {\n try {\n const agent = agentId ? mastra.getAgentById(agentId) : null;\n if (!agent) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n // if (isVercelTool(tool)) {\n // const result = await (tool as any).execute(data);\n // return result;\n // }\n\n const result = await tool.execute(data, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n agent: {\n messages: [],\n toolCallId: '',\n suspend: async () => {},\n },\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing tool');\n }\n}\n"]}
@@ -0,0 +1,485 @@
1
+ 'use strict';
2
+
3
+ var chunkW2KMU354_cjs = require('./chunk-W2KMU354.cjs');
4
+ var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
5
+ var a2a = require('@mastra/core/a2a');
6
+ var zod = require('zod');
7
+
8
+ // src/server/handlers/a2a.ts
9
+ var a2a_exports = {};
10
+ chunkO7I5CWRX_cjs.__export(a2a_exports, {
11
+ getAgentCardByIdHandler: () => getAgentCardByIdHandler,
12
+ getAgentExecutionHandler: () => getAgentExecutionHandler,
13
+ handleMessageSend: () => handleMessageSend,
14
+ handleMessageStream: () => handleMessageStream,
15
+ handleTaskCancel: () => handleTaskCancel,
16
+ handleTaskGet: () => handleTaskGet
17
+ });
18
+ function normalizeError(error, reqId, taskId, logger) {
19
+ let a2aError;
20
+ if (error instanceof a2a.MastraA2AError) {
21
+ a2aError = error;
22
+ } else if (error instanceof Error) {
23
+ a2aError = a2a.MastraA2AError.internalError(error.message, { stack: error.stack });
24
+ } else {
25
+ a2aError = a2a.MastraA2AError.internalError("An unknown error occurred.", error);
26
+ }
27
+ if (taskId && !a2aError.taskId) {
28
+ a2aError.taskId = taskId;
29
+ }
30
+ logger?.error(`Error processing request (Task: ${a2aError.taskId ?? "N/A"}, ReqID: ${reqId ?? "N/A"}):`, a2aError);
31
+ return createErrorResponse(reqId, a2aError.toJSONRPCError());
32
+ }
33
+ function createErrorResponse(id, error) {
34
+ return {
35
+ jsonrpc: "2.0",
36
+ id,
37
+ // Can be null if request ID was invalid/missing
38
+ error
39
+ };
40
+ }
41
+ function createSuccessResponse(id, result) {
42
+ if (!id) {
43
+ throw a2a.MastraA2AError.internalError("Cannot create success response for null ID.");
44
+ }
45
+ return {
46
+ jsonrpc: "2.0",
47
+ id,
48
+ result
49
+ };
50
+ }
51
+ function convertToCoreMessage(message) {
52
+ return {
53
+ role: message.role === "user" ? "user" : "assistant",
54
+ content: message.parts.map((msg) => convertToCoreMessagePart(msg))
55
+ };
56
+ }
57
+ function convertToCoreMessagePart(part) {
58
+ switch (part.kind) {
59
+ case "text":
60
+ return {
61
+ type: "text",
62
+ text: part.text
63
+ };
64
+ case "file":
65
+ return {
66
+ type: "file",
67
+ data: "uri" in part.file ? new URL(part.file.uri) : part.file.bytes,
68
+ mimeType: part.file.mimeType
69
+ };
70
+ case "data":
71
+ throw new Error("Data parts are not supported in core messages");
72
+ }
73
+ }
74
+
75
+ // src/server/a2a/tasks.ts
76
+ function isTaskStatusUpdate(update) {
77
+ return "state" in update && !("parts" in update);
78
+ }
79
+ function isArtifactUpdate(update) {
80
+ return "kind" in update && update.kind === "artifact-update";
81
+ }
82
+ function applyUpdateToTask(current, update) {
83
+ let newTask = structuredClone(current);
84
+ if (isTaskStatusUpdate(update)) {
85
+ newTask.status = {
86
+ ...newTask.status,
87
+ // Keep existing properties if not overwritten
88
+ ...update,
89
+ // Apply updates
90
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
91
+ };
92
+ } else if (isArtifactUpdate(update)) {
93
+ if (!newTask.artifacts) {
94
+ newTask.artifacts = [];
95
+ } else {
96
+ newTask.artifacts = [...newTask.artifacts];
97
+ }
98
+ const artifact = update.artifact;
99
+ const existingIndex = newTask.artifacts.findIndex((a) => a.name === artifact.name);
100
+ const existingArtifact = newTask.artifacts[existingIndex];
101
+ if (existingArtifact) {
102
+ if (update.append) {
103
+ const appendedArtifact = JSON.parse(JSON.stringify(existingArtifact));
104
+ appendedArtifact.parts.push(...artifact.parts);
105
+ if (artifact.metadata) {
106
+ appendedArtifact.metadata = {
107
+ ...appendedArtifact.metadata || {},
108
+ ...artifact.metadata
109
+ };
110
+ }
111
+ if (artifact.description) appendedArtifact.description = artifact.description;
112
+ newTask.artifacts[existingIndex] = appendedArtifact;
113
+ } else {
114
+ newTask.artifacts[existingIndex] = { ...artifact };
115
+ }
116
+ } else {
117
+ newTask.artifacts.push({ ...artifact });
118
+ }
119
+ }
120
+ return newTask;
121
+ }
122
+ async function loadOrCreateTask({
123
+ agentId,
124
+ taskId,
125
+ taskStore,
126
+ message,
127
+ contextId,
128
+ metadata,
129
+ logger
130
+ }) {
131
+ const data = await taskStore.load({ agentId, taskId });
132
+ if (!data) {
133
+ const initialTask = {
134
+ id: taskId,
135
+ contextId: contextId || crypto.randomUUID(),
136
+ status: {
137
+ state: "submitted",
138
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
139
+ message: void 0
140
+ },
141
+ artifacts: [],
142
+ history: [message],
143
+ metadata,
144
+ kind: "task"
145
+ };
146
+ logger?.info(`[Task ${taskId}] Created new task.`);
147
+ await taskStore.save({ agentId, data: initialTask });
148
+ return initialTask;
149
+ }
150
+ logger?.info(`[Task ${taskId}] Loaded existing task.`);
151
+ let updatedData = data;
152
+ updatedData.history = [...data.history || [], message];
153
+ const { status } = data;
154
+ const finalStates = ["completed", "failed", "canceled"];
155
+ if (finalStates.includes(status.state)) {
156
+ logger?.warn(`[Task ${taskId}] Received message for task in final state ${status.state}. Restarting.`);
157
+ updatedData = applyUpdateToTask(updatedData, {
158
+ state: "submitted",
159
+ message: void 0
160
+ });
161
+ } else if (status.state === "input-required") {
162
+ logger?.info(`[Task ${taskId}] Changing state from 'input-required' to 'working'.`);
163
+ updatedData = applyUpdateToTask(updatedData, { state: "working" });
164
+ } else if (status.state === "working") {
165
+ logger?.warn(`[Task ${taskId}] Received message while already 'working'. Proceeding.`);
166
+ }
167
+ await taskStore.save({ agentId, data: updatedData });
168
+ return updatedData;
169
+ }
170
+ function createTaskContext({
171
+ task,
172
+ userMessage,
173
+ history,
174
+ activeCancellations
175
+ }) {
176
+ return {
177
+ task: structuredClone(task),
178
+ userMessage,
179
+ history: structuredClone(history),
180
+ isCancelled: () => activeCancellations.has(task.id)
181
+ };
182
+ }
183
+
184
+ // src/server/handlers/a2a.ts
185
+ var messageSendParamsSchema = zod.z.object({
186
+ message: zod.z.object({
187
+ role: zod.z.enum(["user", "agent"]),
188
+ parts: zod.z.array(
189
+ zod.z.object({
190
+ kind: zod.z.enum(["text"]),
191
+ text: zod.z.string()
192
+ })
193
+ ),
194
+ kind: zod.z.literal("message"),
195
+ messageId: zod.z.string(),
196
+ contextId: zod.z.string().optional(),
197
+ taskId: zod.z.string().optional(),
198
+ referenceTaskIds: zod.z.array(zod.z.string()).optional(),
199
+ extensions: zod.z.array(zod.z.string()).optional(),
200
+ metadata: zod.z.record(zod.z.any()).optional()
201
+ })
202
+ });
203
+ async function getAgentCardByIdHandler({
204
+ mastra,
205
+ agentId,
206
+ executionUrl = `/a2a/${agentId}`,
207
+ provider = {
208
+ organization: "Mastra",
209
+ url: "https://mastra.ai"
210
+ },
211
+ version = "1.0",
212
+ requestContext
213
+ }) {
214
+ const agent = mastra.getAgent(agentId);
215
+ if (!agent) {
216
+ throw new Error(`Agent with ID ${agentId} not found`);
217
+ }
218
+ const [instructions, tools] = await Promise.all([
219
+ agent.getInstructions({ requestContext }),
220
+ agent.listTools({ requestContext })
221
+ ]);
222
+ const agentCard = {
223
+ name: agent.id || agentId,
224
+ description: chunkW2KMU354_cjs.convertInstructionsToString(instructions),
225
+ url: executionUrl,
226
+ provider,
227
+ version,
228
+ capabilities: {
229
+ streaming: true,
230
+ // All agents support streaming
231
+ pushNotifications: false,
232
+ stateTransitionHistory: false
233
+ },
234
+ defaultInputModes: ["text"],
235
+ defaultOutputModes: ["text"],
236
+ // Convert agent tools to skills format for A2A protocol
237
+ skills: Object.entries(tools).map(([toolId, tool]) => ({
238
+ id: toolId,
239
+ name: toolId,
240
+ description: tool.description || `Tool: ${toolId}`,
241
+ // Optional fields
242
+ tags: ["tool"]
243
+ }))
244
+ };
245
+ return agentCard;
246
+ }
247
+ function validateMessageSendParams(params) {
248
+ try {
249
+ messageSendParamsSchema.parse(params);
250
+ } catch (error) {
251
+ if (error instanceof zod.z.ZodError) {
252
+ throw a2a.MastraA2AError.invalidParams(error.errors[0].message);
253
+ }
254
+ throw error;
255
+ }
256
+ }
257
+ async function handleMessageSend({
258
+ requestId,
259
+ params,
260
+ taskStore,
261
+ agent,
262
+ agentId,
263
+ logger,
264
+ requestContext
265
+ }) {
266
+ validateMessageSendParams(params);
267
+ const { message, metadata } = params;
268
+ const { contextId } = message;
269
+ const taskId = message.taskId || crypto.randomUUID();
270
+ let currentData = await loadOrCreateTask({
271
+ taskId,
272
+ taskStore,
273
+ agentId,
274
+ message,
275
+ contextId,
276
+ metadata
277
+ });
278
+ createTaskContext({
279
+ task: currentData,
280
+ userMessage: message,
281
+ history: currentData.history || [],
282
+ activeCancellations: taskStore.activeCancellations
283
+ });
284
+ try {
285
+ const { text } = await agent.generate([convertToCoreMessage(message)], {
286
+ runId: taskId,
287
+ requestContext
288
+ });
289
+ currentData = applyUpdateToTask(currentData, {
290
+ state: "completed",
291
+ message: {
292
+ messageId: crypto.randomUUID(),
293
+ role: "agent",
294
+ parts: [
295
+ {
296
+ kind: "text",
297
+ text
298
+ }
299
+ ],
300
+ kind: "message"
301
+ }
302
+ });
303
+ await taskStore.save({ agentId, data: currentData });
304
+ } catch (handlerError) {
305
+ const failureStatusUpdate = {
306
+ state: "failed",
307
+ message: {
308
+ messageId: crypto.randomUUID(),
309
+ role: "agent",
310
+ parts: [
311
+ {
312
+ kind: "text",
313
+ text: `Handler failed: ${handlerError instanceof Error ? handlerError.message : String(handlerError)}`
314
+ }
315
+ ],
316
+ kind: "message"
317
+ }
318
+ };
319
+ currentData = applyUpdateToTask(currentData, failureStatusUpdate);
320
+ try {
321
+ await taskStore.save({ agentId, data: currentData });
322
+ } catch (saveError) {
323
+ logger?.error(`Failed to save task ${currentData.id} after handler error:`, saveError?.message);
324
+ }
325
+ return normalizeError(handlerError, requestId, currentData.id, logger);
326
+ }
327
+ return createSuccessResponse(requestId, currentData);
328
+ }
329
+ async function handleTaskGet({
330
+ requestId,
331
+ taskStore,
332
+ agentId,
333
+ taskId
334
+ }) {
335
+ const task = await taskStore.load({ agentId, taskId });
336
+ if (!task) {
337
+ throw a2a.MastraA2AError.taskNotFound(taskId);
338
+ }
339
+ return createSuccessResponse(requestId, task);
340
+ }
341
+ async function* handleMessageStream({
342
+ requestId,
343
+ params,
344
+ taskStore,
345
+ agent,
346
+ agentId,
347
+ logger,
348
+ requestContext
349
+ }) {
350
+ yield createSuccessResponse(requestId, {
351
+ state: "working",
352
+ message: {
353
+ messageId: crypto.randomUUID(),
354
+ kind: "message",
355
+ role: "agent",
356
+ parts: [{ kind: "text", text: "Generating response..." }]
357
+ }
358
+ });
359
+ let result;
360
+ try {
361
+ result = await handleMessageSend({
362
+ requestId,
363
+ params,
364
+ taskStore,
365
+ agent,
366
+ agentId,
367
+ requestContext,
368
+ logger
369
+ });
370
+ } catch (err) {
371
+ if (!(err instanceof a2a.MastraA2AError)) {
372
+ throw err;
373
+ }
374
+ result = createErrorResponse(requestId, err.toJSONRPCError());
375
+ }
376
+ yield result;
377
+ }
378
+ async function handleTaskCancel({
379
+ requestId,
380
+ taskStore,
381
+ agentId,
382
+ taskId,
383
+ logger
384
+ }) {
385
+ let data = await taskStore.load({
386
+ agentId,
387
+ taskId
388
+ });
389
+ if (!data) {
390
+ throw a2a.MastraA2AError.taskNotFound(taskId);
391
+ }
392
+ const finalStates = ["completed", "failed", "canceled"];
393
+ if (finalStates.includes(data.status.state)) {
394
+ logger?.info(`Task ${taskId} already in final state ${data.status.state}, cannot cancel.`);
395
+ return createSuccessResponse(requestId, data);
396
+ }
397
+ taskStore.activeCancellations.add(taskId);
398
+ const cancelUpdate = {
399
+ state: "canceled",
400
+ message: {
401
+ role: "agent",
402
+ parts: [{ kind: "text", text: "Task cancelled by request." }],
403
+ kind: "message",
404
+ messageId: crypto.randomUUID()
405
+ }
406
+ };
407
+ data = applyUpdateToTask(data, cancelUpdate);
408
+ await taskStore.save({ agentId, data });
409
+ taskStore.activeCancellations.delete(taskId);
410
+ return createSuccessResponse(requestId, data);
411
+ }
412
+ async function getAgentExecutionHandler({
413
+ requestId,
414
+ mastra,
415
+ agentId,
416
+ requestContext,
417
+ method,
418
+ params,
419
+ taskStore,
420
+ logger
421
+ }) {
422
+ const agent = mastra.getAgent(agentId);
423
+ let taskId;
424
+ try {
425
+ taskId = "id" in params ? params.id : params.message?.taskId || "No task ID provided";
426
+ switch (method) {
427
+ case "message/send": {
428
+ const result2 = await handleMessageSend({
429
+ requestId,
430
+ params,
431
+ taskStore,
432
+ agent,
433
+ agentId,
434
+ requestContext
435
+ });
436
+ return result2;
437
+ }
438
+ case "message/stream":
439
+ const result = await handleMessageStream({
440
+ requestId,
441
+ taskStore,
442
+ params,
443
+ agent,
444
+ agentId,
445
+ requestContext
446
+ });
447
+ return result;
448
+ case "tasks/get": {
449
+ const result2 = await handleTaskGet({
450
+ requestId,
451
+ taskStore,
452
+ agentId,
453
+ taskId
454
+ });
455
+ return result2;
456
+ }
457
+ case "tasks/cancel": {
458
+ const result2 = await handleTaskCancel({
459
+ requestId,
460
+ taskStore,
461
+ agentId,
462
+ taskId
463
+ });
464
+ return result2;
465
+ }
466
+ default:
467
+ throw a2a.MastraA2AError.methodNotFound(method);
468
+ }
469
+ } catch (error) {
470
+ if (error instanceof a2a.MastraA2AError && taskId && !error.taskId) {
471
+ error.taskId = taskId;
472
+ }
473
+ return normalizeError(error, requestId, taskId, logger);
474
+ }
475
+ }
476
+
477
+ exports.a2a_exports = a2a_exports;
478
+ exports.getAgentCardByIdHandler = getAgentCardByIdHandler;
479
+ exports.getAgentExecutionHandler = getAgentExecutionHandler;
480
+ exports.handleMessageSend = handleMessageSend;
481
+ exports.handleMessageStream = handleMessageStream;
482
+ exports.handleTaskCancel = handleTaskCancel;
483
+ exports.handleTaskGet = handleTaskGet;
484
+ //# sourceMappingURL=chunk-KJIDZQRA.cjs.map
485
+ //# sourceMappingURL=chunk-KJIDZQRA.cjs.map