@mastra/server 1.0.0-beta.13 → 1.0.0-beta.15

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 (199) hide show
  1. package/CHANGELOG.md +217 -0
  2. package/dist/{chunk-S3TIWWQL.cjs → chunk-3MN73W4B.cjs} +22 -18
  3. package/dist/chunk-3MN73W4B.cjs.map +1 -0
  4. package/dist/{chunk-FYY54HZC.js → chunk-3OUPQHSX.js} +12 -8
  5. package/dist/chunk-3OUPQHSX.js.map +1 -0
  6. package/dist/{chunk-DW3WE4M4.js → chunk-3REGEJEN.js} +4 -4
  7. package/dist/{chunk-DW3WE4M4.js.map → chunk-3REGEJEN.js.map} +1 -1
  8. package/dist/chunk-3W67K7YE.js +13 -0
  9. package/dist/chunk-3W67K7YE.js.map +1 -0
  10. package/dist/{chunk-Q7NPRJRV.cjs → chunk-4EYONQIW.cjs} +9 -15
  11. package/dist/chunk-4EYONQIW.cjs.map +1 -0
  12. package/dist/{chunk-AZIH2QEC.js → chunk-5NFRDYFN.js} +9 -15
  13. package/dist/chunk-5NFRDYFN.js.map +1 -0
  14. package/dist/{chunk-3SFLFUKY.js → chunk-5NXQ6QXL.js} +4 -4
  15. package/dist/{chunk-3SFLFUKY.js.map → chunk-5NXQ6QXL.js.map} +1 -1
  16. package/dist/{chunk-C3UIIRAT.cjs → chunk-5ZYHM57F.cjs} +39 -39
  17. package/dist/{chunk-C3UIIRAT.cjs.map → chunk-5ZYHM57F.cjs.map} +1 -1
  18. package/dist/{chunk-KPSSRYGH.js → chunk-6HKMJXTF.js} +3 -3
  19. package/dist/chunk-6HKMJXTF.js.map +1 -0
  20. package/dist/{chunk-I6LR6CPC.cjs → chunk-AVOFMAUS.cjs} +10 -10
  21. package/dist/{chunk-I6LR6CPC.cjs.map → chunk-AVOFMAUS.cjs.map} +1 -1
  22. package/dist/{chunk-X43DWDXB.cjs → chunk-B35F4QEM.cjs} +22 -22
  23. package/dist/{chunk-X43DWDXB.cjs.map → chunk-B35F4QEM.cjs.map} +1 -1
  24. package/dist/{chunk-7KOS32XA.cjs → chunk-BVIEHV3I.cjs} +96 -96
  25. package/dist/{chunk-7KOS32XA.cjs.map → chunk-BVIEHV3I.cjs.map} +1 -1
  26. package/dist/{chunk-HAJOEDNB.js → chunk-CTOZHWSD.js} +32 -12
  27. package/dist/chunk-CTOZHWSD.js.map +1 -0
  28. package/dist/{chunk-XW2HXQDO.js → chunk-DUZRZLVR.js} +3 -3
  29. package/dist/{chunk-XW2HXQDO.js.map → chunk-DUZRZLVR.js.map} +1 -1
  30. package/dist/{chunk-YD5BSLPJ.js → chunk-E4ZPLXZT.js} +54 -14
  31. package/dist/chunk-E4ZPLXZT.js.map +1 -0
  32. package/dist/{chunk-EEORY4VR.js → chunk-ER232COB.js} +6281 -915
  33. package/dist/chunk-ER232COB.js.map +1 -0
  34. package/dist/{chunk-SXVANU23.js → chunk-FEEM6QFN.js} +60 -5
  35. package/dist/chunk-FEEM6QFN.js.map +1 -0
  36. package/dist/chunk-G2AMUTU4.js +250 -0
  37. package/dist/chunk-G2AMUTU4.js.map +1 -0
  38. package/dist/{chunk-BNGT3NIC.cjs → chunk-G3KUL3RL.cjs} +26 -26
  39. package/dist/{chunk-BNGT3NIC.cjs.map → chunk-G3KUL3RL.cjs.map} +1 -1
  40. package/dist/{chunk-LQSZ4FJJ.cjs → chunk-IQEVRCM6.cjs} +37 -37
  41. package/dist/{chunk-LQSZ4FJJ.cjs.map → chunk-IQEVRCM6.cjs.map} +1 -1
  42. package/dist/{chunk-PUFCKXFW.cjs → chunk-KEW7MXUS.cjs} +11 -11
  43. package/dist/{chunk-PUFCKXFW.cjs.map → chunk-KEW7MXUS.cjs.map} +1 -1
  44. package/dist/{chunk-LKTCAPBD.cjs → chunk-L2E5RUVT.cjs} +13 -13
  45. package/dist/{chunk-LKTCAPBD.cjs.map → chunk-L2E5RUVT.cjs.map} +1 -1
  46. package/dist/chunk-L7ZFPOGS.js +44 -0
  47. package/dist/chunk-L7ZFPOGS.js.map +1 -0
  48. package/dist/chunk-LJ6YRVDI.cjs +15 -0
  49. package/dist/chunk-LJ6YRVDI.cjs.map +1 -0
  50. package/dist/{chunk-KEXR53KI.js → chunk-MXJEVTGK.js} +14 -5
  51. package/dist/chunk-MXJEVTGK.js.map +1 -0
  52. package/dist/{chunk-4TDHAYN7.cjs → chunk-MZXGNP3J.cjs} +109 -69
  53. package/dist/chunk-MZXGNP3J.cjs.map +1 -0
  54. package/dist/{chunk-MQLS6Z7A.js → chunk-OCJ3BRZM.js} +4 -4
  55. package/dist/{chunk-MQLS6Z7A.js.map → chunk-OCJ3BRZM.js.map} +1 -1
  56. package/dist/{chunk-UXGQZUYZ.js → chunk-ONN5EA7E.js} +13 -3
  57. package/dist/chunk-ONN5EA7E.js.map +1 -0
  58. package/dist/chunk-PNZQCQY4.cjs +252 -0
  59. package/dist/chunk-PNZQCQY4.cjs.map +1 -0
  60. package/dist/{chunk-IEYXQTUW.cjs → chunk-Q43HGWK7.cjs} +42 -22
  61. package/dist/chunk-Q43HGWK7.cjs.map +1 -0
  62. package/dist/{chunk-4MNOLEZO.cjs → chunk-QD5JZUZR.cjs} +6357 -991
  63. package/dist/chunk-QD5JZUZR.cjs.map +1 -0
  64. package/dist/{chunk-BMYZ4DO6.cjs → chunk-R25YJP3Y.cjs} +3 -3
  65. package/dist/chunk-R25YJP3Y.cjs.map +1 -0
  66. package/dist/{chunk-6V57U52D.js → chunk-SEP5QUTR.js} +8 -8
  67. package/dist/{chunk-6V57U52D.js.map → chunk-SEP5QUTR.js.map} +1 -1
  68. package/dist/chunk-SKVOSYY5.js +178 -0
  69. package/dist/chunk-SKVOSYY5.js.map +1 -0
  70. package/dist/{chunk-V5WWQN7P.cjs → chunk-SUKFO7UM.cjs} +13 -2
  71. package/dist/chunk-SUKFO7UM.cjs.map +1 -0
  72. package/dist/{chunk-UWRAKVAJ.js → chunk-T2AYFHKB.js} +5 -5
  73. package/dist/{chunk-UWRAKVAJ.js.map → chunk-T2AYFHKB.js.map} +1 -1
  74. package/dist/chunk-T4SPG2GP.cjs +82 -0
  75. package/dist/chunk-T4SPG2GP.cjs.map +1 -0
  76. package/dist/{chunk-DRUNNM4C.js → chunk-TOGG5Q45.js} +4 -4
  77. package/dist/{chunk-DRUNNM4C.js.map → chunk-TOGG5Q45.js.map} +1 -1
  78. package/dist/{chunk-H2RMXG2Q.cjs → chunk-UKRDDBXY.cjs} +62 -4
  79. package/dist/chunk-UKRDDBXY.cjs.map +1 -0
  80. package/dist/{chunk-7O3KPUJ4.cjs → chunk-VYNS3ZKV.cjs} +16 -7
  81. package/dist/chunk-VYNS3ZKV.cjs.map +1 -0
  82. package/dist/{chunk-SRQY5IWD.js → chunk-X5KAQFOV.js} +5 -5
  83. package/dist/{chunk-SRQY5IWD.js.map → chunk-X5KAQFOV.js.map} +1 -1
  84. package/dist/chunk-XAVPSRSG.cjs +46 -0
  85. package/dist/chunk-XAVPSRSG.cjs.map +1 -0
  86. package/dist/chunk-XOUK3IYU.js +77 -0
  87. package/dist/chunk-XOUK3IYU.js.map +1 -0
  88. package/dist/chunk-XWNPRPEW.cjs +184 -0
  89. package/dist/chunk-XWNPRPEW.cjs.map +1 -0
  90. package/dist/server/handlers/a2a.cjs +9 -9
  91. package/dist/server/handlers/a2a.d.ts.map +1 -1
  92. package/dist/server/handlers/a2a.js +1 -1
  93. package/dist/server/handlers/agent-builder.cjs +19 -19
  94. package/dist/server/handlers/agent-builder.d.ts +48 -6
  95. package/dist/server/handlers/agent-builder.d.ts.map +1 -1
  96. package/dist/server/handlers/agent-builder.js +1 -1
  97. package/dist/server/handlers/agents.cjs +24 -24
  98. package/dist/server/handlers/agents.js +1 -1
  99. package/dist/server/handlers/error.cjs +6 -2
  100. package/dist/server/handlers/error.d.ts +12 -0
  101. package/dist/server/handlers/error.d.ts.map +1 -1
  102. package/dist/server/handlers/error.js +1 -1
  103. package/dist/server/handlers/logs.cjs +4 -4
  104. package/dist/server/handlers/logs.js +1 -1
  105. package/dist/server/handlers/mcp.cjs +9 -9
  106. package/dist/server/handlers/mcp.js +1 -1
  107. package/dist/server/handlers/memory.cjs +24 -24
  108. package/dist/server/handlers/memory.js +1 -1
  109. package/dist/server/handlers/observability.cjs +7 -23
  110. package/dist/server/handlers/observability.d.ts +90 -93
  111. package/dist/server/handlers/observability.d.ts.map +1 -1
  112. package/dist/server/handlers/observability.js +1 -1
  113. package/dist/server/handlers/scores.cjs +7 -7
  114. package/dist/server/handlers/scores.d.ts +7 -7
  115. package/dist/server/handlers/scores.d.ts.map +1 -1
  116. package/dist/server/handlers/scores.js +1 -1
  117. package/dist/server/handlers/stored-agents.cjs +6 -6
  118. package/dist/server/handlers/stored-agents.d.ts.map +1 -1
  119. package/dist/server/handlers/stored-agents.js +1 -1
  120. package/dist/server/handlers/system.cjs +12 -0
  121. package/dist/server/handlers/system.cjs.map +1 -0
  122. package/dist/server/handlers/system.d.ts +7 -0
  123. package/dist/server/handlers/system.d.ts.map +1 -0
  124. package/dist/server/handlers/system.js +3 -0
  125. package/dist/server/handlers/system.js.map +1 -0
  126. package/dist/server/handlers/tools.cjs +6 -6
  127. package/dist/server/handlers/tools.js +1 -1
  128. package/dist/server/handlers/vector.cjs +13 -13
  129. package/dist/server/handlers/vector.js +1 -1
  130. package/dist/server/handlers/voice.cjs +8 -8
  131. package/dist/server/handlers/voice.d.ts +6 -6
  132. package/dist/server/handlers/voice.js +1 -1
  133. package/dist/server/handlers/workflows.cjs +27 -27
  134. package/dist/server/handlers/workflows.d.ts +88 -9
  135. package/dist/server/handlers/workflows.d.ts.map +1 -1
  136. package/dist/server/handlers/workflows.js +1 -1
  137. package/dist/server/handlers.cjs +27 -27
  138. package/dist/server/handlers.js +12 -12
  139. package/dist/server/schemas/agent-builder.d.ts +12 -0
  140. package/dist/server/schemas/agent-builder.d.ts.map +1 -1
  141. package/dist/server/schemas/agents.d.ts +3 -3
  142. package/dist/server/schemas/scores.d.ts +6 -6
  143. package/dist/server/schemas/system.d.ts +36 -0
  144. package/dist/server/schemas/system.d.ts.map +1 -0
  145. package/dist/server/schemas/workflows.d.ts +59 -7
  146. package/dist/server/schemas/workflows.d.ts.map +1 -1
  147. package/dist/server/server-adapter/index.cjs +164 -147
  148. package/dist/server/server-adapter/index.cjs.map +1 -1
  149. package/dist/server/server-adapter/index.js +22 -17
  150. package/dist/server/server-adapter/index.js.map +1 -1
  151. package/dist/server/server-adapter/routes/index.d.ts +1 -1
  152. package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
  153. package/dist/server/server-adapter/routes/route-builder.d.ts +60 -1
  154. package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -1
  155. package/dist/server/server-adapter/routes/system.d.ts +12 -0
  156. package/dist/server/server-adapter/routes/system.d.ts.map +1 -0
  157. package/dist/{token-6GSAFR2W-KVDFAJ2M-SDYXODLX.cjs → token-6GSAFR2W-K2BTU23I-5WBYUIGY.cjs} +8 -8
  158. package/dist/{token-6GSAFR2W-KVDFAJ2M-SDYXODLX.cjs.map → token-6GSAFR2W-K2BTU23I-5WBYUIGY.cjs.map} +1 -1
  159. package/dist/{token-6GSAFR2W-KVDFAJ2M-LNX5VF3I.js → token-6GSAFR2W-K2BTU23I-NW33N3NU.js} +5 -5
  160. package/dist/{token-6GSAFR2W-KVDFAJ2M-LNX5VF3I.js.map → token-6GSAFR2W-K2BTU23I-NW33N3NU.js.map} +1 -1
  161. package/dist/token-6GSAFR2W-VLY2XUPA-NCSASMWN.js +61 -0
  162. package/dist/token-6GSAFR2W-VLY2XUPA-NCSASMWN.js.map +1 -0
  163. package/dist/token-6GSAFR2W-VLY2XUPA-RKITWXKR.cjs +63 -0
  164. package/dist/token-6GSAFR2W-VLY2XUPA-RKITWXKR.cjs.map +1 -0
  165. package/dist/token-util-NEHG7TUY-KSXDO2NO-J6DEINGO.cjs +10 -0
  166. package/dist/token-util-NEHG7TUY-KSXDO2NO-J6DEINGO.cjs.map +1 -0
  167. package/dist/token-util-NEHG7TUY-KSXDO2NO-WH6I3PH3.js +8 -0
  168. package/dist/token-util-NEHG7TUY-KSXDO2NO-WH6I3PH3.js.map +1 -0
  169. package/dist/token-util-NEHG7TUY-TIJ3LMSH-ANFISSXX.cjs +10 -0
  170. package/dist/{token-util-NEHG7TUY-DJYRKLRD-MFJRDVVF.cjs.map → token-util-NEHG7TUY-TIJ3LMSH-ANFISSXX.cjs.map} +1 -1
  171. package/dist/token-util-NEHG7TUY-TIJ3LMSH-SGVKOKXF.js +8 -0
  172. package/dist/{token-util-NEHG7TUY-DJYRKLRD-BSQMRUEW.js.map → token-util-NEHG7TUY-TIJ3LMSH-SGVKOKXF.js.map} +1 -1
  173. package/package.json +4 -4
  174. package/dist/chunk-4MNOLEZO.cjs.map +0 -1
  175. package/dist/chunk-4TDHAYN7.cjs.map +0 -1
  176. package/dist/chunk-7O3KPUJ4.cjs.map +0 -1
  177. package/dist/chunk-AZIH2QEC.js.map +0 -1
  178. package/dist/chunk-BMYZ4DO6.cjs.map +0 -1
  179. package/dist/chunk-EEORY4VR.js.map +0 -1
  180. package/dist/chunk-FYY54HZC.js.map +0 -1
  181. package/dist/chunk-GFF2I6UD.js +0 -354
  182. package/dist/chunk-GFF2I6UD.js.map +0 -1
  183. package/dist/chunk-H2RMXG2Q.cjs.map +0 -1
  184. package/dist/chunk-HAJOEDNB.js.map +0 -1
  185. package/dist/chunk-IEYXQTUW.cjs.map +0 -1
  186. package/dist/chunk-KEXR53KI.js.map +0 -1
  187. package/dist/chunk-KPSSRYGH.js.map +0 -1
  188. package/dist/chunk-Q7NPRJRV.cjs.map +0 -1
  189. package/dist/chunk-S3TIWWQL.cjs.map +0 -1
  190. package/dist/chunk-SXVANU23.js.map +0 -1
  191. package/dist/chunk-TYZ6ZISQ.cjs +0 -368
  192. package/dist/chunk-TYZ6ZISQ.cjs.map +0 -1
  193. package/dist/chunk-UXGQZUYZ.js.map +0 -1
  194. package/dist/chunk-V5WWQN7P.cjs.map +0 -1
  195. package/dist/chunk-YD5BSLPJ.js.map +0 -1
  196. package/dist/server/schemas/observability.d.ts +0 -402
  197. package/dist/server/schemas/observability.d.ts.map +0 -1
  198. package/dist/token-util-NEHG7TUY-DJYRKLRD-BSQMRUEW.js +0 -8
  199. package/dist/token-util-NEHG7TUY-DJYRKLRD-MFJRDVVF.cjs +0 -10
package/CHANGELOG.md CHANGED
@@ -1,5 +1,222 @@
1
1
  # @mastra/server
2
2
 
3
+ ## 1.0.0-beta.15
4
+
5
+ ### Minor Changes
6
+
7
+ - Unified observability schema with entity-based span identification ([#11132](https://github.com/mastra-ai/mastra/pull/11132))
8
+
9
+ ## What changed
10
+
11
+ Spans now use a unified identification model with `entityId`, `entityType`, and `entityName` instead of separate `agentId`, `toolId`, `workflowId` fields.
12
+
13
+ **Before:**
14
+
15
+ ```typescript
16
+ // Old span structure
17
+ span.agentId; // 'my-agent'
18
+ span.toolId; // undefined
19
+ span.workflowId; // undefined
20
+ ```
21
+
22
+ **After:**
23
+
24
+ ```typescript
25
+ // New span structure
26
+ span.entityType; // EntityType.AGENT
27
+ span.entityId; // 'my-agent'
28
+ span.entityName; // 'My Agent'
29
+ ```
30
+
31
+ ## New `listTraces()` API
32
+
33
+ Query traces with filtering, pagination, and sorting:
34
+
35
+ ```typescript
36
+ const { spans, pagination } = await storage.listTraces({
37
+ filters: {
38
+ entityType: EntityType.AGENT,
39
+ entityId: 'my-agent',
40
+ userId: 'user-123',
41
+ environment: 'production',
42
+ status: TraceStatus.SUCCESS,
43
+ startedAt: { start: new Date('2024-01-01'), end: new Date('2024-01-31') },
44
+ },
45
+ pagination: { page: 0, perPage: 50 },
46
+ orderBy: { field: 'startedAt', direction: 'DESC' },
47
+ });
48
+ ```
49
+
50
+ **Available filters:** date ranges (`startedAt`, `endedAt`), entity (`entityType`, `entityId`, `entityName`), identity (`userId`, `organizationId`), correlation IDs (`runId`, `sessionId`, `threadId`), deployment (`environment`, `source`, `serviceName`), `tags`, `metadata`, and `status`.
51
+
52
+ ## New retrieval methods
53
+ - `getSpan({ traceId, spanId })` - Get a single span
54
+ - `getRootSpan({ traceId })` - Get the root span of a trace
55
+ - `getTrace({ traceId })` - Get all spans for a trace
56
+
57
+ ## Backward compatibility
58
+
59
+ The legacy `getTraces()` method continues to work. When you pass `name: "agent run: my-agent"`, it automatically transforms to `entityId: "my-agent", entityType: AGENT`.
60
+
61
+ ## Migration
62
+
63
+ **Automatic:** SQL-based stores (PostgreSQL, LibSQL, MSSQL) automatically add new columns to existing `spans` tables on initialization. Existing data is preserved with new columns set to `NULL`.
64
+
65
+ **No action required:** Your existing code continues to work. Adopt the new fields and `listTraces()` API at your convenience.
66
+
67
+ ### Patch Changes
68
+
69
+ - Refactor storage architecture to use domain-specific stores via `getStore()` pattern ([#11361](https://github.com/mastra-ai/mastra/pull/11361))
70
+
71
+ ### Summary
72
+
73
+ This release introduces a new storage architecture that replaces passthrough methods on `MastraStorage` with domain-specific storage interfaces accessed via `getStore()`. This change reduces code duplication across storage adapters and provides a cleaner, more modular API.
74
+
75
+ ### Migration Guide
76
+
77
+ All direct method calls on storage instances should be updated to use `getStore()`:
78
+
79
+ ```typescript
80
+ // Before
81
+ const thread = await storage.getThreadById({ threadId });
82
+ await storage.persistWorkflowSnapshot({ workflowName, runId, snapshot });
83
+ await storage.createSpan(span);
84
+
85
+ // After
86
+ const memory = await storage.getStore('memory');
87
+ const thread = await memory?.getThreadById({ threadId });
88
+
89
+ const workflows = await storage.getStore('workflows');
90
+ await workflows?.persistWorkflowSnapshot({ workflowName, runId, snapshot });
91
+
92
+ const observability = await storage.getStore('observability');
93
+ await observability?.createSpan(span);
94
+ ```
95
+
96
+ ### Available Domains
97
+ - **`memory`**: Thread and message operations (`getThreadById`, `saveThread`, `saveMessages`, etc.)
98
+ - **`workflows`**: Workflow state persistence (`persistWorkflowSnapshot`, `loadWorkflowSnapshot`, `getWorkflowRunById`, etc.)
99
+ - **`scores`**: Evaluation scores (`saveScore`, `listScoresByScorerId`, etc.)
100
+ - **`observability`**: Tracing and spans (`createSpan`, `updateSpan`, `getTrace`, etc.)
101
+ - **`agents`**: Stored agent configurations (`createAgent`, `getAgentById`, `listAgents`, etc.)
102
+
103
+ ### Breaking Changes
104
+ - Passthrough methods have been removed from `MastraStorage` base class
105
+ - All storage adapters now require accessing domains via `getStore()`
106
+ - The `stores` property on storage instances is now the canonical way to access domain storage
107
+
108
+ ### Internal Changes
109
+ - Each storage adapter now initializes domain-specific stores in its constructor
110
+ - Domain stores share database connections and handle their own table initialization
111
+
112
+ - Add `/api/system/packages` endpoint that returns installed Mastra packages and versions from the dev environment ([#11211](https://github.com/mastra-ai/mastra/pull/11211))
113
+
114
+ - Add `perStep` option to workflow run methods, allowing a workflow to run just a step instead of all the workflow steps ([#11276](https://github.com/mastra-ai/mastra/pull/11276))
115
+
116
+ - Fixed voice transcription endpoint ([#11348](https://github.com/mastra-ai/mastra/pull/11348))
117
+
118
+ The voice transcription endpoint (`/api/agents/:agentId/voice/listen`) now correctly handles multipart/form-data requests for audio uploads rather than only parsing JSON request bodies.
119
+
120
+ Both Express and Hono adapters now parse multipart/form-data bodies and handle JSON-encoded form fields.
121
+
122
+ **Breaking change:** The server schema field for the transcription endpoint was renamed from `audioData` to `audio` to match the client SDK. If you are making direct API calls to the transcription endpoint (not using the SDK), you will need to update your request body to use `audio` instead of `audioData`.
123
+
124
+ - Updated dependencies [[`33a4d2e`](https://github.com/mastra-ai/mastra/commit/33a4d2e4ed8af51f69256232f00c34d6b6b51d48), [`4aaa844`](https://github.com/mastra-ai/mastra/commit/4aaa844a4f19d054490f43638a990cc57bda8d2f), [`4a1a6cb`](https://github.com/mastra-ai/mastra/commit/4a1a6cb3facad54b2bb6780b00ce91d6de1edc08), [`31d13d5`](https://github.com/mastra-ai/mastra/commit/31d13d5fdc2e2380e2e3ee3ec9fb29d2a00f265d), [`4c62166`](https://github.com/mastra-ai/mastra/commit/4c621669f4a29b1f443eca3ba70b814afa286266), [`7bcbf10`](https://github.com/mastra-ai/mastra/commit/7bcbf10133516e03df964b941f9a34e9e4ab4177), [`4353600`](https://github.com/mastra-ai/mastra/commit/43536005a65988a8eede236f69122e7f5a284ba2), [`6986fb0`](https://github.com/mastra-ai/mastra/commit/6986fb064f5db6ecc24aa655e1d26529087b43b3), [`053e979`](https://github.com/mastra-ai/mastra/commit/053e9793b28e970086b0507f7f3b76ea32c1e838), [`e26dc9c`](https://github.com/mastra-ai/mastra/commit/e26dc9c3ccfec54ae3dc3e2b2589f741f9ae60a6), [`55edf73`](https://github.com/mastra-ai/mastra/commit/55edf7302149d6c964fbb7908b43babfc2b52145), [`27c0009`](https://github.com/mastra-ai/mastra/commit/27c0009777a6073d7631b0eb7b481d94e165b5ca), [`dee388d`](https://github.com/mastra-ai/mastra/commit/dee388dde02f2e63c53385ae69252a47ab6825cc), [`3f3fc30`](https://github.com/mastra-ai/mastra/commit/3f3fc3096f24c4a26cffeecfe73085928f72aa63), [`d90ea65`](https://github.com/mastra-ai/mastra/commit/d90ea6536f7aa51c6545a4e9215b55858e98e16d), [`d171e55`](https://github.com/mastra-ai/mastra/commit/d171e559ead9f52ec728d424844c8f7b164c4510), [`10c2735`](https://github.com/mastra-ai/mastra/commit/10c27355edfdad1ee2b826b897df74125eb81fb8), [`1924cf0`](https://github.com/mastra-ai/mastra/commit/1924cf06816e5e4d4d5333065ec0f4bb02a97799), [`b339816`](https://github.com/mastra-ai/mastra/commit/b339816df0984d0243d944ac2655d6ba5f809cde)]:
125
+ - @mastra/core@1.0.0-beta.15
126
+
127
+ ## 1.0.0-beta.14
128
+
129
+ ### Patch Changes
130
+
131
+ - Add execution metadata to A2A message/send responses. The A2A protocol now returns detailed execution information including tool calls, tool results, token usage, and finish reason in the task metadata. This allows clients to inspect which tools were invoked during agent execution and access execution statistics without additional queries. ([#11241](https://github.com/mastra-ai/mastra/pull/11241))
132
+
133
+ - feat: Add field filtering and nested workflow control to workflow execution result endpoint ([#11246](https://github.com/mastra-ai/mastra/pull/11246))
134
+
135
+ Adds two optional query parameters to `/api/workflows/:workflowId/runs/:runId/execution-result` endpoint:
136
+ - `fields`: Request only specific fields (e.g., `status`, `result`, `error`)
137
+ - `withNestedWorkflows`: Control whether to fetch nested workflow data
138
+
139
+ This significantly reduces response payload size and improves response times for large workflows.
140
+
141
+ ## Server Endpoint Usage
142
+
143
+ ```http
144
+ # Get only status (minimal payload - fastest)
145
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status
146
+
147
+ # Get status and result
148
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,result
149
+
150
+ # Get all fields but without nested workflow data (faster)
151
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?withNestedWorkflows=false
152
+
153
+ # Get only specific fields without nested workflow data
154
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,steps&withNestedWorkflows=false
155
+
156
+ # Get full data (default behavior)
157
+ GET /api/workflows/:workflowId/runs/:runId/execution-result
158
+ ```
159
+
160
+ ## Client SDK Usage
161
+
162
+ ```typescript
163
+ import { MastraClient } from '@mastra/client-js';
164
+
165
+ const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
166
+ const workflow = client.getWorkflow('myWorkflow');
167
+
168
+ // Get only status (minimal payload - fastest)
169
+ const statusOnly = await workflow.runExecutionResult(runId, {
170
+ fields: ['status'],
171
+ });
172
+ console.log(statusOnly.status); // 'success' | 'failed' | 'running' | etc.
173
+
174
+ // Get status and result
175
+ const statusAndResult = await workflow.runExecutionResult(runId, {
176
+ fields: ['status', 'result'],
177
+ });
178
+
179
+ // Get all fields but without nested workflow data (faster)
180
+ const resultWithoutNested = await workflow.runExecutionResult(runId, {
181
+ withNestedWorkflows: false,
182
+ });
183
+
184
+ // Get specific fields without nested workflow data
185
+ const optimized = await workflow.runExecutionResult(runId, {
186
+ fields: ['status', 'steps'],
187
+ withNestedWorkflows: false,
188
+ });
189
+
190
+ // Get full execution result (default behavior)
191
+ const fullResult = await workflow.runExecutionResult(runId);
192
+ ```
193
+
194
+ ## Core API Changes
195
+
196
+ The `Workflow.getWorkflowRunExecutionResult` method now accepts an options object:
197
+
198
+ ```typescript
199
+ await workflow.getWorkflowRunExecutionResult(runId, {
200
+ withNestedWorkflows: false, // default: true, set to false to skip nested workflow data
201
+ fields: ['status', 'result'], // optional field filtering
202
+ });
203
+ ```
204
+
205
+ ## Inngest Compatibility
206
+
207
+ The `@mastra/inngest` package has been updated to use the new options object API. This is a non-breaking internal change - no action required from inngest workflow users.
208
+
209
+ ## Performance Impact
210
+
211
+ For workflows with large step outputs:
212
+ - Requesting only `status`: ~99% reduction in payload size
213
+ - Requesting `status,result,error`: ~95% reduction in payload size
214
+ - Using `withNestedWorkflows=false`: Avoids expensive nested workflow data fetching
215
+ - Combining both: Maximum performance optimization
216
+
217
+ - Updated dependencies [[`4f94ed8`](https://github.com/mastra-ai/mastra/commit/4f94ed8177abfde3ec536e3574883e075423350c), [`ac3cc23`](https://github.com/mastra-ai/mastra/commit/ac3cc2397d1966bc0fc2736a223abc449d3c7719), [`a86f4df`](https://github.com/mastra-ai/mastra/commit/a86f4df0407311e0d2ea49b9a541f0938810d6a9), [`029540c`](https://github.com/mastra-ai/mastra/commit/029540ca1e582fc2dd8d288ecd4a9b0f31a954ef), [`66741d1`](https://github.com/mastra-ai/mastra/commit/66741d1a99c4f42cf23a16109939e8348ac6852e), [`01b20fe`](https://github.com/mastra-ai/mastra/commit/01b20fefb7c67c2b7d79417598ef4e60256d1225), [`0dbf199`](https://github.com/mastra-ai/mastra/commit/0dbf199110f22192ce5c95b1c8148d4872b4d119), [`a7ce182`](https://github.com/mastra-ai/mastra/commit/a7ce1822a8785ce45d62dd5c911af465e144f7d7)]:
218
+ - @mastra/core@1.0.0-beta.14
219
+
3
220
  ## 1.0.0-beta.13
4
221
 
5
222
  ### Patch Changes
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkMCYD5LW7_cjs = require('./chunk-MCYD5LW7.cjs');
4
- var chunkH2RMXG2Q_cjs = require('./chunk-H2RMXG2Q.cjs');
5
- var chunkV5WWQN7P_cjs = require('./chunk-V5WWQN7P.cjs');
4
+ var chunkUKRDDBXY_cjs = require('./chunk-UKRDDBXY.cjs');
5
+ var chunkSUKFO7UM_cjs = require('./chunk-SUKFO7UM.cjs');
6
6
  var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
7
7
  var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
8
8
  var z = require('zod');
@@ -154,7 +154,7 @@ function getTraceDetails(traceIdWithSpanId) {
154
154
  ...spanId ? { spanId } : {}
155
155
  };
156
156
  }
157
- var LIST_SCORERS_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
157
+ var LIST_SCORERS_ROUTE = chunkUKRDDBXY_cjs.createRoute({
158
158
  method: "GET",
159
159
  path: "/api/scores/scorers",
160
160
  responseType: "json",
@@ -170,7 +170,7 @@ var LIST_SCORERS_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
170
170
  return scorers;
171
171
  }
172
172
  });
173
- var GET_SCORER_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
173
+ var GET_SCORER_ROUTE = chunkUKRDDBXY_cjs.createRoute({
174
174
  method: "GET",
175
175
  path: "/api/scores/scorers/:scorerId",
176
176
  responseType: "json",
@@ -191,7 +191,7 @@ var GET_SCORER_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
191
191
  return scorer;
192
192
  }
193
193
  });
194
- var LIST_SCORES_BY_RUN_ID_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
194
+ var LIST_SCORES_BY_RUN_ID_ROUTE = chunkUKRDDBXY_cjs.createRoute({
195
195
  method: "GET",
196
196
  path: "/api/scores/run/:runId",
197
197
  responseType: "json",
@@ -208,7 +208,8 @@ var LIST_SCORES_BY_RUN_ID_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
208
208
  page: page ?? 0,
209
209
  perPage: perPage ?? 10
210
210
  };
211
- const scoreResults = await mastra.getStorage()?.listScoresByRunId?.({
211
+ const scores = await mastra.getStorage()?.getStore("scores");
212
+ const scoreResults = await scores?.listScoresByRunId?.({
212
213
  runId,
213
214
  pagination
214
215
  }) || { pagination: { total: 0, page: 0, perPage: 0, hasMore: false }, scores: [] };
@@ -217,11 +218,11 @@ var LIST_SCORES_BY_RUN_ID_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
217
218
  scores: scoreResults.scores.map((score) => ({ ...score, ...getTraceDetails(score.traceId) }))
218
219
  };
219
220
  } catch (error) {
220
- return chunkV5WWQN7P_cjs.handleError(error, "Error getting scores by run id");
221
+ return chunkSUKFO7UM_cjs.handleError(error, "Error getting scores by run id");
221
222
  }
222
223
  }
223
224
  });
224
- var LIST_SCORES_BY_SCORER_ID_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
225
+ var LIST_SCORES_BY_SCORER_ID_ROUTE = chunkUKRDDBXY_cjs.createRoute({
225
226
  method: "GET",
226
227
  path: "/api/scores/scorer/:scorerId",
227
228
  responseType: "json",
@@ -235,7 +236,8 @@ var LIST_SCORES_BY_SCORER_ID_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
235
236
  try {
236
237
  const { page, perPage, entityId, entityType } = params;
237
238
  const filters = Object.fromEntries(Object.entries({ entityId, entityType }).filter(([_, v]) => v !== void 0));
238
- const scoreResults = await mastra.getStorage()?.listScoresByScorerId?.({
239
+ const scores = await mastra.getStorage()?.getStore("scores");
240
+ const scoreResults = await scores?.listScoresByScorerId?.({
239
241
  scorerId,
240
242
  pagination: { page: page ?? 0, perPage: perPage ?? 10 },
241
243
  ...filters
@@ -245,11 +247,11 @@ var LIST_SCORES_BY_SCORER_ID_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
245
247
  scores: scoreResults.scores.map((score) => ({ ...score, ...getTraceDetails(score.traceId) }))
246
248
  };
247
249
  } catch (error) {
248
- return chunkV5WWQN7P_cjs.handleError(error, "Error getting scores by scorer id");
250
+ return chunkSUKFO7UM_cjs.handleError(error, "Error getting scores by scorer id");
249
251
  }
250
252
  }
251
253
  });
252
- var LIST_SCORES_BY_ENTITY_ID_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
254
+ var LIST_SCORES_BY_ENTITY_ID_ROUTE = chunkUKRDDBXY_cjs.createRoute({
253
255
  method: "GET",
254
256
  path: "/api/scores/entity/:entityType/:entityId",
255
257
  responseType: "json",
@@ -274,7 +276,8 @@ var LIST_SCORES_BY_ENTITY_ID_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
274
276
  page: page ?? 0,
275
277
  perPage: perPage ?? 10
276
278
  };
277
- const scoreResults = await mastra.getStorage()?.listScoresByEntityId?.({
279
+ const scoresStore = await mastra.getStorage()?.getStore("scores");
280
+ const scoreResults = await scoresStore?.listScoresByEntityId?.({
278
281
  entityId: entityIdToUse,
279
282
  entityType,
280
283
  pagination
@@ -284,11 +287,11 @@ var LIST_SCORES_BY_ENTITY_ID_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
284
287
  scores: scoreResults.scores.map((score) => ({ ...score, ...getTraceDetails(score.traceId) }))
285
288
  };
286
289
  } catch (error) {
287
- return chunkV5WWQN7P_cjs.handleError(error, "Error getting scores by entity id");
290
+ return chunkSUKFO7UM_cjs.handleError(error, "Error getting scores by entity id");
288
291
  }
289
292
  }
290
293
  });
291
- var SAVE_SCORE_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
294
+ var SAVE_SCORE_ROUTE = chunkUKRDDBXY_cjs.createRoute({
292
295
  method: "POST",
293
296
  path: "/api/scores",
294
297
  responseType: "json",
@@ -300,13 +303,14 @@ var SAVE_SCORE_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
300
303
  handler: async ({ mastra, ...params }) => {
301
304
  try {
302
305
  const { score } = params;
303
- const result = await mastra.getStorage()?.saveScore?.(score);
306
+ const scoresStore = await mastra.getStorage()?.getStore("scores");
307
+ const result = await scoresStore?.saveScore?.(score);
304
308
  if (!result) {
305
309
  throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Storage not configured" });
306
310
  }
307
311
  return result;
308
312
  } catch (error) {
309
- return chunkV5WWQN7P_cjs.handleError(error, "Error saving score");
313
+ return chunkSUKFO7UM_cjs.handleError(error, "Error saving score");
310
314
  }
311
315
  }
312
316
  });
@@ -318,5 +322,5 @@ exports.LIST_SCORES_BY_RUN_ID_ROUTE = LIST_SCORES_BY_RUN_ID_ROUTE;
318
322
  exports.LIST_SCORES_BY_SCORER_ID_ROUTE = LIST_SCORES_BY_SCORER_ID_ROUTE;
319
323
  exports.SAVE_SCORE_ROUTE = SAVE_SCORE_ROUTE;
320
324
  exports.scores_exports = scores_exports;
321
- //# sourceMappingURL=chunk-S3TIWWQL.cjs.map
322
- //# sourceMappingURL=chunk-S3TIWWQL.cjs.map
325
+ //# sourceMappingURL=chunk-3MN73W4B.cjs.map
326
+ //# sourceMappingURL=chunk-3MN73W4B.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/scores.ts","../src/server/schemas/scores.ts"],"names":["__export","z","paginationInfoSchema","createRoute","runIdSchema","handleError","HTTPException"],"mappings":"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","file":"chunk-3MN73W4B.cjs","sourcesContent":["import type { MastraScorerEntry, ScoreRowData } from '@mastra/core/evals';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { StoragePagination } from '@mastra/core/storage';\nimport { HTTPException } from '../http-exception';\nimport { runIdSchema } from '../schemas/common';\nimport {\n listScorersResponseSchema,\n scorerEntrySchema,\n scorerIdPathParams,\n entityPathParams,\n listScoresByRunIdQuerySchema,\n listScoresByScorerIdQuerySchema,\n listScoresByEntityIdQuerySchema,\n saveScoreBodySchema,\n scoresWithPaginationResponseSchema,\n saveScoreResponseSchema,\n} from '../schemas/scores';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\nimport { handleError } from './error';\n\nasync function listScorersFromSystem({\n mastra,\n requestContext,\n}: Context & {\n requestContext: RequestContext;\n}) {\n const agents = mastra.listAgents();\n const workflows = mastra.listWorkflows();\n\n const scorersMap = new Map<\n string,\n MastraScorerEntry & { agentIds: string[]; agentNames: string[]; workflowIds: string[]; isRegistered: boolean }\n >();\n\n for (const [_, agent] of Object.entries(agents)) {\n const scorers =\n (await agent.listScorers({\n requestContext,\n })) || {};\n\n if (Object.keys(scorers).length > 0) {\n for (const [_scorerId, scorer] of Object.entries(scorers)) {\n const scorerId = scorer.scorer.id;\n if (scorersMap.has(scorerId)) {\n scorersMap.get(scorerId)?.agentIds.push(agent.id);\n scorersMap.get(scorerId)?.agentNames.push(agent.name);\n } else {\n scorersMap.set(scorerId, {\n workflowIds: [],\n ...scorer,\n agentNames: [agent.name],\n agentIds: [agent.id],\n isRegistered: false,\n });\n }\n }\n }\n }\n\n for (const [workflowId, workflow] of Object.entries(workflows)) {\n const scorers =\n (await workflow.listScorers({\n requestContext,\n })) || {};\n\n if (Object.keys(scorers).length > 0) {\n for (const [_scorerId, scorer] of Object.entries(scorers)) {\n const scorerName = scorer.scorer.name;\n if (scorersMap.has(scorerName)) {\n scorersMap.get(scorerName)?.workflowIds.push(workflowId);\n } else {\n scorersMap.set(scorerName, {\n agentIds: [],\n agentNames: [],\n ...scorer,\n workflowIds: [workflowId],\n isRegistered: false,\n });\n }\n }\n }\n }\n\n const registeredScorers = await mastra.listScorers();\n for (const [_scorerId, scorer] of Object.entries(registeredScorers || {})) {\n const scorerId = scorer.id;\n if (scorersMap.has(scorerId)) {\n scorersMap.get(scorerId)!.isRegistered = true;\n } else {\n scorersMap.set(scorerId, {\n scorer: scorer,\n agentIds: [],\n agentNames: [],\n workflowIds: [],\n isRegistered: true,\n });\n }\n }\n\n return Object.fromEntries(scorersMap.entries());\n}\n\n// Legacy function to get trace and span details\nfunction getTraceDetails(traceIdWithSpanId?: string) {\n if (!traceIdWithSpanId) {\n return {};\n }\n\n const [traceId, spanId] = traceIdWithSpanId.split('-');\n\n return {\n ...(traceId ? { traceId } : {}),\n ...(spanId ? { spanId } : {}),\n };\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_SCORERS_ROUTE = createRoute({\n method: 'GET',\n path: '/api/scores/scorers',\n responseType: 'json',\n responseSchema: listScorersResponseSchema,\n summary: 'List all scorers',\n description: 'Returns a list of all registered scorers with their configuration and associated agents and workflows',\n tags: ['Scoring'],\n handler: async ({ mastra, requestContext }) => {\n const scorers = await listScorersFromSystem({\n mastra,\n requestContext,\n });\n return scorers;\n },\n});\n\nexport const GET_SCORER_ROUTE = createRoute({\n method: 'GET',\n path: '/api/scores/scorers/:scorerId',\n responseType: 'json',\n pathParamSchema: scorerIdPathParams,\n responseSchema: scorerEntrySchema.nullable(),\n summary: 'Get scorer by ID',\n description: 'Returns details for a specific scorer including its configuration and associations',\n tags: ['Scoring'],\n handler: async ({ mastra, scorerId, requestContext }) => {\n const scorers = await listScorersFromSystem({\n mastra,\n requestContext,\n });\n\n const scorer = scorers[scorerId];\n\n if (!scorer) {\n return null;\n }\n\n return scorer;\n },\n});\n\nexport const LIST_SCORES_BY_RUN_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/api/scores/run/:runId',\n responseType: 'json',\n pathParamSchema: runIdSchema,\n queryParamSchema: listScoresByRunIdQuerySchema,\n responseSchema: scoresWithPaginationResponseSchema,\n summary: 'List scores by run ID',\n description: 'Returns all scores for a specific execution run',\n tags: ['Scoring'],\n handler: async ({ mastra, runId, ...params }) => {\n try {\n const { page, perPage } = params;\n const pagination: StoragePagination = {\n page: page ?? 0,\n perPage: perPage ?? 10,\n };\n const scores = await mastra.getStorage()?.getStore('scores');\n const scoreResults = (await scores?.listScoresByRunId?.({\n runId,\n pagination,\n })) || { pagination: { total: 0, page: 0, perPage: 0, hasMore: false }, scores: [] };\n return {\n pagination: scoreResults.pagination,\n scores: scoreResults.scores.map((score: ScoreRowData) => ({ ...score, ...getTraceDetails(score.traceId) })),\n };\n } catch (error) {\n return handleError(error, 'Error getting scores by run id');\n }\n },\n});\n\nexport const LIST_SCORES_BY_SCORER_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/api/scores/scorer/:scorerId',\n responseType: 'json',\n pathParamSchema: scorerIdPathParams,\n queryParamSchema: listScoresByScorerIdQuerySchema,\n responseSchema: scoresWithPaginationResponseSchema,\n summary: 'List scores by scorer ID',\n description: 'Returns all scores generated by a specific scorer',\n tags: ['Scoring'],\n handler: async ({ mastra, scorerId, ...params }) => {\n try {\n const { page, perPage, entityId, entityType } = params;\n const filters = Object.fromEntries(Object.entries({ entityId, entityType }).filter(([_, v]) => v !== undefined));\n const scores = await mastra.getStorage()?.getStore('scores');\n const scoreResults = (await scores?.listScoresByScorerId?.({\n scorerId,\n pagination: { page: page ?? 0, perPage: perPage ?? 10 },\n ...filters,\n })) || { pagination: { total: 0, page: 0, perPage: 0, hasMore: false }, scores: [] };\n return {\n pagination: scoreResults.pagination,\n scores: scoreResults.scores.map((score: ScoreRowData) => ({ ...score, ...getTraceDetails(score.traceId) })),\n };\n } catch (error) {\n return handleError(error, 'Error getting scores by scorer id');\n }\n },\n});\n\nexport const LIST_SCORES_BY_ENTITY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/api/scores/entity/:entityType/:entityId',\n responseType: 'json',\n pathParamSchema: entityPathParams,\n queryParamSchema: listScoresByEntityIdQuerySchema,\n responseSchema: scoresWithPaginationResponseSchema,\n summary: 'List scores by entity ID',\n description: 'Returns all scores for a specific entity (agent or workflow)',\n tags: ['Scoring'],\n handler: async ({ mastra, entityId, entityType, ...params }) => {\n try {\n const { page, perPage } = params;\n let entityIdToUse = entityId;\n\n if (entityType === 'AGENT') {\n const agent = mastra.getAgentById(entityId);\n entityIdToUse = agent.id;\n } else if (entityType === 'WORKFLOW') {\n const workflow = mastra.getWorkflowById(entityId);\n entityIdToUse = workflow.id;\n }\n\n const pagination: StoragePagination = {\n page: page ?? 0,\n perPage: perPage ?? 10,\n };\n\n const scoresStore = await mastra.getStorage()?.getStore('scores');\n const scoreResults = (await scoresStore?.listScoresByEntityId?.({\n entityId: entityIdToUse,\n entityType,\n pagination,\n })) || { pagination: { total: 0, page: 0, perPage: 0, hasMore: false }, scores: [] };\n\n return {\n pagination: scoreResults.pagination,\n scores: scoreResults.scores.map((score: ScoreRowData) => ({ ...score, ...getTraceDetails(score.traceId) })),\n };\n } catch (error) {\n return handleError(error, 'Error getting scores by entity id');\n }\n },\n});\n\nexport const SAVE_SCORE_ROUTE = createRoute({\n method: 'POST',\n path: '/api/scores',\n responseType: 'json',\n bodySchema: saveScoreBodySchema,\n responseSchema: saveScoreResponseSchema,\n summary: 'Save score',\n description: 'Saves a new score record to storage',\n tags: ['Scoring'],\n handler: async ({ mastra, ...params }) => {\n try {\n const { score } = params as { score: ScoreRowData };\n const scoresStore = await mastra.getStorage()?.getStore('scores');\n const result = await scoresStore?.saveScore?.(score);\n if (!result) {\n throw new HTTPException(500, { message: 'Storage not configured' });\n }\n return result;\n } catch (error) {\n return handleError(error, 'Error saving score');\n }\n },\n});\n","import z from 'zod';\nimport { paginationInfoSchema } from './common';\n\n/**\n * Schema for sampling configuration\n * Using passthrough to allow various sampling config shapes\n */\nconst scoringSamplingConfigSchema = z.object({});\n\n/**\n * Schema for MastraScorer config object\n */\nconst mastraScorerConfigSchema = z.object({\n id: z.string(),\n name: z.string().optional(),\n description: z.string(),\n type: z.unknown().optional(),\n judge: z.unknown().optional(),\n});\n\n/**\n * Schema for MastraScorer\n * Only validates public config property, uses passthrough to allow class instance\n */\nconst mastraScorerSchema = z.object({\n config: mastraScorerConfigSchema,\n});\n\n/**\n * Schema for scorer entry with associations to agents and workflows\n */\nexport const scorerEntrySchema = z.object({\n scorer: mastraScorerSchema,\n sampling: scoringSamplingConfigSchema.optional(),\n agentIds: z.array(z.string()),\n agentNames: z.array(z.string()),\n workflowIds: z.array(z.string()),\n isRegistered: z.boolean(),\n});\n\n/**\n * Response schema for list scorers endpoint\n * Returns a record of scorer ID to scorer entry with associations\n */\nexport const listScorersResponseSchema = z.record(z.string(), scorerEntrySchema);\n\n// Path parameter schemas\nexport const scorerIdPathParams = z.object({\n scorerId: z.string().describe('Unique identifier for the scorer'),\n});\n\nexport const entityPathParams = z.object({\n entityType: z.string().describe('Type of the entity (AGENT or WORKFLOW)'),\n entityId: z.string().describe('Unique identifier for the entity'),\n});\n\n// Query parameter schemas\n// HTTP query params must be flat (e.g., ?page=0&perPage=10)\n// Adapters should transform these into nested pagination objects for handlers if needed\n\nexport const listScoresByRunIdQuerySchema = z.object({\n page: z.coerce.number().optional().default(0),\n perPage: z.coerce.number().optional().default(10),\n});\n\nexport const listScoresByScorerIdQuerySchema = z.object({\n page: z.coerce.number().optional().default(0),\n perPage: z.coerce.number().optional().default(10),\n entityId: z.string().optional(),\n entityType: z.string().optional(),\n});\n\nexport const listScoresByEntityIdQuerySchema = z.object({\n page: z.coerce.number().optional().default(0),\n perPage: z.coerce.number().optional().default(10),\n});\n\n// Body schema for saving scores\nexport const saveScoreBodySchema = z.object({\n score: z.unknown(), // ScoreRowData - complex type\n});\n\n// Response schemas\nexport const scoresWithPaginationResponseSchema = z.object({\n pagination: paginationInfoSchema,\n scores: z.array(z.unknown()), // Array of score records\n});\n\nexport const saveScoreResponseSchema = z.object({\n score: z.unknown(), // ScoreRowData\n});\n"]}
@@ -1,6 +1,6 @@
1
1
  import { paginationInfoSchema, runIdSchema } from './chunk-HT4LP3BO.js';
2
- import { createRoute } from './chunk-SXVANU23.js';
3
- import { handleError } from './chunk-UXGQZUYZ.js';
2
+ import { createRoute } from './chunk-FEEM6QFN.js';
3
+ import { handleError } from './chunk-ONN5EA7E.js';
4
4
  import { HTTPException } from './chunk-6QWQZI4Q.js';
5
5
  import { __export } from './chunk-PR4QN5HX.js';
6
6
  import z from 'zod';
@@ -202,7 +202,8 @@ var LIST_SCORES_BY_RUN_ID_ROUTE = createRoute({
202
202
  page: page ?? 0,
203
203
  perPage: perPage ?? 10
204
204
  };
205
- const scoreResults = await mastra.getStorage()?.listScoresByRunId?.({
205
+ const scores = await mastra.getStorage()?.getStore("scores");
206
+ const scoreResults = await scores?.listScoresByRunId?.({
206
207
  runId,
207
208
  pagination
208
209
  }) || { pagination: { total: 0, page: 0, perPage: 0, hasMore: false }, scores: [] };
@@ -229,7 +230,8 @@ var LIST_SCORES_BY_SCORER_ID_ROUTE = createRoute({
229
230
  try {
230
231
  const { page, perPage, entityId, entityType } = params;
231
232
  const filters = Object.fromEntries(Object.entries({ entityId, entityType }).filter(([_, v]) => v !== void 0));
232
- const scoreResults = await mastra.getStorage()?.listScoresByScorerId?.({
233
+ const scores = await mastra.getStorage()?.getStore("scores");
234
+ const scoreResults = await scores?.listScoresByScorerId?.({
233
235
  scorerId,
234
236
  pagination: { page: page ?? 0, perPage: perPage ?? 10 },
235
237
  ...filters
@@ -268,7 +270,8 @@ var LIST_SCORES_BY_ENTITY_ID_ROUTE = createRoute({
268
270
  page: page ?? 0,
269
271
  perPage: perPage ?? 10
270
272
  };
271
- const scoreResults = await mastra.getStorage()?.listScoresByEntityId?.({
273
+ const scoresStore = await mastra.getStorage()?.getStore("scores");
274
+ const scoreResults = await scoresStore?.listScoresByEntityId?.({
272
275
  entityId: entityIdToUse,
273
276
  entityType,
274
277
  pagination
@@ -294,7 +297,8 @@ var SAVE_SCORE_ROUTE = createRoute({
294
297
  handler: async ({ mastra, ...params }) => {
295
298
  try {
296
299
  const { score } = params;
297
- const result = await mastra.getStorage()?.saveScore?.(score);
300
+ const scoresStore = await mastra.getStorage()?.getStore("scores");
301
+ const result = await scoresStore?.saveScore?.(score);
298
302
  if (!result) {
299
303
  throw new HTTPException(500, { message: "Storage not configured" });
300
304
  }
@@ -306,5 +310,5 @@ var SAVE_SCORE_ROUTE = createRoute({
306
310
  });
307
311
 
308
312
  export { GET_SCORER_ROUTE, LIST_SCORERS_ROUTE, LIST_SCORES_BY_ENTITY_ID_ROUTE, LIST_SCORES_BY_RUN_ID_ROUTE, LIST_SCORES_BY_SCORER_ID_ROUTE, SAVE_SCORE_ROUTE, scores_exports };
309
- //# sourceMappingURL=chunk-FYY54HZC.js.map
310
- //# sourceMappingURL=chunk-FYY54HZC.js.map
313
+ //# sourceMappingURL=chunk-3OUPQHSX.js.map
314
+ //# sourceMappingURL=chunk-3OUPQHSX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/scores.ts","../src/server/schemas/scores.ts"],"names":[],"mappings":"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","file":"chunk-3OUPQHSX.js","sourcesContent":["import type { MastraScorerEntry, ScoreRowData } from '@mastra/core/evals';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { StoragePagination } from '@mastra/core/storage';\nimport { HTTPException } from '../http-exception';\nimport { runIdSchema } from '../schemas/common';\nimport {\n listScorersResponseSchema,\n scorerEntrySchema,\n scorerIdPathParams,\n entityPathParams,\n listScoresByRunIdQuerySchema,\n listScoresByScorerIdQuerySchema,\n listScoresByEntityIdQuerySchema,\n saveScoreBodySchema,\n scoresWithPaginationResponseSchema,\n saveScoreResponseSchema,\n} from '../schemas/scores';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\nimport { handleError } from './error';\n\nasync function listScorersFromSystem({\n mastra,\n requestContext,\n}: Context & {\n requestContext: RequestContext;\n}) {\n const agents = mastra.listAgents();\n const workflows = mastra.listWorkflows();\n\n const scorersMap = new Map<\n string,\n MastraScorerEntry & { agentIds: string[]; agentNames: string[]; workflowIds: string[]; isRegistered: boolean }\n >();\n\n for (const [_, agent] of Object.entries(agents)) {\n const scorers =\n (await agent.listScorers({\n requestContext,\n })) || {};\n\n if (Object.keys(scorers).length > 0) {\n for (const [_scorerId, scorer] of Object.entries(scorers)) {\n const scorerId = scorer.scorer.id;\n if (scorersMap.has(scorerId)) {\n scorersMap.get(scorerId)?.agentIds.push(agent.id);\n scorersMap.get(scorerId)?.agentNames.push(agent.name);\n } else {\n scorersMap.set(scorerId, {\n workflowIds: [],\n ...scorer,\n agentNames: [agent.name],\n agentIds: [agent.id],\n isRegistered: false,\n });\n }\n }\n }\n }\n\n for (const [workflowId, workflow] of Object.entries(workflows)) {\n const scorers =\n (await workflow.listScorers({\n requestContext,\n })) || {};\n\n if (Object.keys(scorers).length > 0) {\n for (const [_scorerId, scorer] of Object.entries(scorers)) {\n const scorerName = scorer.scorer.name;\n if (scorersMap.has(scorerName)) {\n scorersMap.get(scorerName)?.workflowIds.push(workflowId);\n } else {\n scorersMap.set(scorerName, {\n agentIds: [],\n agentNames: [],\n ...scorer,\n workflowIds: [workflowId],\n isRegistered: false,\n });\n }\n }\n }\n }\n\n const registeredScorers = await mastra.listScorers();\n for (const [_scorerId, scorer] of Object.entries(registeredScorers || {})) {\n const scorerId = scorer.id;\n if (scorersMap.has(scorerId)) {\n scorersMap.get(scorerId)!.isRegistered = true;\n } else {\n scorersMap.set(scorerId, {\n scorer: scorer,\n agentIds: [],\n agentNames: [],\n workflowIds: [],\n isRegistered: true,\n });\n }\n }\n\n return Object.fromEntries(scorersMap.entries());\n}\n\n// Legacy function to get trace and span details\nfunction getTraceDetails(traceIdWithSpanId?: string) {\n if (!traceIdWithSpanId) {\n return {};\n }\n\n const [traceId, spanId] = traceIdWithSpanId.split('-');\n\n return {\n ...(traceId ? { traceId } : {}),\n ...(spanId ? { spanId } : {}),\n };\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_SCORERS_ROUTE = createRoute({\n method: 'GET',\n path: '/api/scores/scorers',\n responseType: 'json',\n responseSchema: listScorersResponseSchema,\n summary: 'List all scorers',\n description: 'Returns a list of all registered scorers with their configuration and associated agents and workflows',\n tags: ['Scoring'],\n handler: async ({ mastra, requestContext }) => {\n const scorers = await listScorersFromSystem({\n mastra,\n requestContext,\n });\n return scorers;\n },\n});\n\nexport const GET_SCORER_ROUTE = createRoute({\n method: 'GET',\n path: '/api/scores/scorers/:scorerId',\n responseType: 'json',\n pathParamSchema: scorerIdPathParams,\n responseSchema: scorerEntrySchema.nullable(),\n summary: 'Get scorer by ID',\n description: 'Returns details for a specific scorer including its configuration and associations',\n tags: ['Scoring'],\n handler: async ({ mastra, scorerId, requestContext }) => {\n const scorers = await listScorersFromSystem({\n mastra,\n requestContext,\n });\n\n const scorer = scorers[scorerId];\n\n if (!scorer) {\n return null;\n }\n\n return scorer;\n },\n});\n\nexport const LIST_SCORES_BY_RUN_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/api/scores/run/:runId',\n responseType: 'json',\n pathParamSchema: runIdSchema,\n queryParamSchema: listScoresByRunIdQuerySchema,\n responseSchema: scoresWithPaginationResponseSchema,\n summary: 'List scores by run ID',\n description: 'Returns all scores for a specific execution run',\n tags: ['Scoring'],\n handler: async ({ mastra, runId, ...params }) => {\n try {\n const { page, perPage } = params;\n const pagination: StoragePagination = {\n page: page ?? 0,\n perPage: perPage ?? 10,\n };\n const scores = await mastra.getStorage()?.getStore('scores');\n const scoreResults = (await scores?.listScoresByRunId?.({\n runId,\n pagination,\n })) || { pagination: { total: 0, page: 0, perPage: 0, hasMore: false }, scores: [] };\n return {\n pagination: scoreResults.pagination,\n scores: scoreResults.scores.map((score: ScoreRowData) => ({ ...score, ...getTraceDetails(score.traceId) })),\n };\n } catch (error) {\n return handleError(error, 'Error getting scores by run id');\n }\n },\n});\n\nexport const LIST_SCORES_BY_SCORER_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/api/scores/scorer/:scorerId',\n responseType: 'json',\n pathParamSchema: scorerIdPathParams,\n queryParamSchema: listScoresByScorerIdQuerySchema,\n responseSchema: scoresWithPaginationResponseSchema,\n summary: 'List scores by scorer ID',\n description: 'Returns all scores generated by a specific scorer',\n tags: ['Scoring'],\n handler: async ({ mastra, scorerId, ...params }) => {\n try {\n const { page, perPage, entityId, entityType } = params;\n const filters = Object.fromEntries(Object.entries({ entityId, entityType }).filter(([_, v]) => v !== undefined));\n const scores = await mastra.getStorage()?.getStore('scores');\n const scoreResults = (await scores?.listScoresByScorerId?.({\n scorerId,\n pagination: { page: page ?? 0, perPage: perPage ?? 10 },\n ...filters,\n })) || { pagination: { total: 0, page: 0, perPage: 0, hasMore: false }, scores: [] };\n return {\n pagination: scoreResults.pagination,\n scores: scoreResults.scores.map((score: ScoreRowData) => ({ ...score, ...getTraceDetails(score.traceId) })),\n };\n } catch (error) {\n return handleError(error, 'Error getting scores by scorer id');\n }\n },\n});\n\nexport const LIST_SCORES_BY_ENTITY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/api/scores/entity/:entityType/:entityId',\n responseType: 'json',\n pathParamSchema: entityPathParams,\n queryParamSchema: listScoresByEntityIdQuerySchema,\n responseSchema: scoresWithPaginationResponseSchema,\n summary: 'List scores by entity ID',\n description: 'Returns all scores for a specific entity (agent or workflow)',\n tags: ['Scoring'],\n handler: async ({ mastra, entityId, entityType, ...params }) => {\n try {\n const { page, perPage } = params;\n let entityIdToUse = entityId;\n\n if (entityType === 'AGENT') {\n const agent = mastra.getAgentById(entityId);\n entityIdToUse = agent.id;\n } else if (entityType === 'WORKFLOW') {\n const workflow = mastra.getWorkflowById(entityId);\n entityIdToUse = workflow.id;\n }\n\n const pagination: StoragePagination = {\n page: page ?? 0,\n perPage: perPage ?? 10,\n };\n\n const scoresStore = await mastra.getStorage()?.getStore('scores');\n const scoreResults = (await scoresStore?.listScoresByEntityId?.({\n entityId: entityIdToUse,\n entityType,\n pagination,\n })) || { pagination: { total: 0, page: 0, perPage: 0, hasMore: false }, scores: [] };\n\n return {\n pagination: scoreResults.pagination,\n scores: scoreResults.scores.map((score: ScoreRowData) => ({ ...score, ...getTraceDetails(score.traceId) })),\n };\n } catch (error) {\n return handleError(error, 'Error getting scores by entity id');\n }\n },\n});\n\nexport const SAVE_SCORE_ROUTE = createRoute({\n method: 'POST',\n path: '/api/scores',\n responseType: 'json',\n bodySchema: saveScoreBodySchema,\n responseSchema: saveScoreResponseSchema,\n summary: 'Save score',\n description: 'Saves a new score record to storage',\n tags: ['Scoring'],\n handler: async ({ mastra, ...params }) => {\n try {\n const { score } = params as { score: ScoreRowData };\n const scoresStore = await mastra.getStorage()?.getStore('scores');\n const result = await scoresStore?.saveScore?.(score);\n if (!result) {\n throw new HTTPException(500, { message: 'Storage not configured' });\n }\n return result;\n } catch (error) {\n return handleError(error, 'Error saving score');\n }\n },\n});\n","import z from 'zod';\nimport { paginationInfoSchema } from './common';\n\n/**\n * Schema for sampling configuration\n * Using passthrough to allow various sampling config shapes\n */\nconst scoringSamplingConfigSchema = z.object({});\n\n/**\n * Schema for MastraScorer config object\n */\nconst mastraScorerConfigSchema = z.object({\n id: z.string(),\n name: z.string().optional(),\n description: z.string(),\n type: z.unknown().optional(),\n judge: z.unknown().optional(),\n});\n\n/**\n * Schema for MastraScorer\n * Only validates public config property, uses passthrough to allow class instance\n */\nconst mastraScorerSchema = z.object({\n config: mastraScorerConfigSchema,\n});\n\n/**\n * Schema for scorer entry with associations to agents and workflows\n */\nexport const scorerEntrySchema = z.object({\n scorer: mastraScorerSchema,\n sampling: scoringSamplingConfigSchema.optional(),\n agentIds: z.array(z.string()),\n agentNames: z.array(z.string()),\n workflowIds: z.array(z.string()),\n isRegistered: z.boolean(),\n});\n\n/**\n * Response schema for list scorers endpoint\n * Returns a record of scorer ID to scorer entry with associations\n */\nexport const listScorersResponseSchema = z.record(z.string(), scorerEntrySchema);\n\n// Path parameter schemas\nexport const scorerIdPathParams = z.object({\n scorerId: z.string().describe('Unique identifier for the scorer'),\n});\n\nexport const entityPathParams = z.object({\n entityType: z.string().describe('Type of the entity (AGENT or WORKFLOW)'),\n entityId: z.string().describe('Unique identifier for the entity'),\n});\n\n// Query parameter schemas\n// HTTP query params must be flat (e.g., ?page=0&perPage=10)\n// Adapters should transform these into nested pagination objects for handlers if needed\n\nexport const listScoresByRunIdQuerySchema = z.object({\n page: z.coerce.number().optional().default(0),\n perPage: z.coerce.number().optional().default(10),\n});\n\nexport const listScoresByScorerIdQuerySchema = z.object({\n page: z.coerce.number().optional().default(0),\n perPage: z.coerce.number().optional().default(10),\n entityId: z.string().optional(),\n entityType: z.string().optional(),\n});\n\nexport const listScoresByEntityIdQuerySchema = z.object({\n page: z.coerce.number().optional().default(0),\n perPage: z.coerce.number().optional().default(10),\n});\n\n// Body schema for saving scores\nexport const saveScoreBodySchema = z.object({\n score: z.unknown(), // ScoreRowData - complex type\n});\n\n// Response schemas\nexport const scoresWithPaginationResponseSchema = z.object({\n pagination: paginationInfoSchema,\n scores: z.array(z.unknown()), // Array of score records\n});\n\nexport const saveScoreResponseSchema = z.object({\n score: z.unknown(), // ScoreRowData\n});\n"]}
@@ -1,6 +1,6 @@
1
- import { __commonJS, __require2, require_token_error } from './chunk-AZIH2QEC.js';
1
+ import { __commonJS, __require2, require_token_error } from './chunk-5NFRDYFN.js';
2
2
 
3
- // ../memory/dist/chunk-2CIPVDK5.js
3
+ // ../memory/dist/chunk-WC4XBMZT.js
4
4
  var require_token_io = __commonJS({
5
5
  "../../../node_modules/.pnpm/@vercel+oidc@3.0.5/node_modules/@vercel/oidc/dist/token-io.js"(exports, module) {
6
6
  var __create = Object.create;
@@ -246,5 +246,5 @@ var require_token_util = __commonJS({
246
246
  });
247
247
 
248
248
  export { require_token_util };
249
- //# sourceMappingURL=chunk-DW3WE4M4.js.map
250
- //# sourceMappingURL=chunk-DW3WE4M4.js.map
249
+ //# sourceMappingURL=chunk-3REGEJEN.js.map
250
+ //# sourceMappingURL=chunk-3REGEJEN.js.map