@mastra/server 1.72.0-alpha.0 → 1.72.0-alpha.10

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 (142) hide show
  1. package/dist/{a2a-CwxSk6H0.cjs → a2a-CAQVpVxH.cjs} +23 -3
  2. package/dist/a2a-CAQVpVxH.cjs.map +1 -0
  3. package/dist/{a2a-DQOqoU_q.js → a2a-D2BffGsK.js} +23 -3
  4. package/dist/a2a-D2BffGsK.js.map +1 -0
  5. package/dist/{agent-builder-BGTZux5y.js → agent-builder-BlD120ac.js} +2 -2
  6. package/dist/{agent-builder-BGTZux5y.js.map → agent-builder-BlD120ac.js.map} +1 -1
  7. package/dist/{agent-builder-D-LAj4SD.cjs → agent-builder-CvwtAD7k.cjs} +2 -2
  8. package/dist/{agent-builder-D-LAj4SD.cjs.map → agent-builder-CvwtAD7k.cjs.map} +1 -1
  9. package/dist/{api-schema-manifest-Maxewnw7.cjs → api-schema-manifest-CaZU5zVt.cjs} +2 -2
  10. package/dist/{api-schema-manifest-Maxewnw7.cjs.map → api-schema-manifest-CaZU5zVt.cjs.map} +1 -1
  11. package/dist/{api-schema-manifest-DJiUahwo.js → api-schema-manifest-wF1O8MCU.js} +2 -2
  12. package/dist/{api-schema-manifest-DJiUahwo.js.map → api-schema-manifest-wF1O8MCU.js.map} +1 -1
  13. package/dist/{channels-DMw4LEA-.cjs → channels-DJkXEpTr.cjs} +18 -7
  14. package/dist/channels-DJkXEpTr.cjs.map +1 -0
  15. package/dist/{channels-xqChW6Vw.js → channels-DzaCNtXe.js} +18 -7
  16. package/dist/channels-DzaCNtXe.js.map +1 -0
  17. package/dist/{dist-Cfr6t0cK.cjs → dist-CRMvLG_8.cjs} +746 -366
  18. package/dist/dist-CRMvLG_8.cjs.map +1 -0
  19. package/dist/{dist-ABdCIqbD.js → dist-CYk5xS3y.js} +746 -366
  20. package/dist/dist-CYk5xS3y.js.map +1 -0
  21. package/dist/docs/SKILL.md +1 -1
  22. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  23. package/dist/docs/references/reference-observability-tracing-trace-query.md +37 -16
  24. package/dist/{editor-builder-BrkDnCEd.js → editor-builder-DJMAKDR5.js} +3 -2
  25. package/dist/editor-builder-DJMAKDR5.js.map +1 -0
  26. package/dist/{editor-builder-DIpISGSI.cjs → editor-builder-DrDs-t9i.cjs} +3 -2
  27. package/dist/editor-builder-DrDs-t9i.cjs.map +1 -0
  28. package/dist/{observability-new-endpoints-Ct0CSLE4.cjs → observability-new-endpoints-7Zd6uEZf.cjs} +111 -3
  29. package/dist/observability-new-endpoints-7Zd6uEZf.cjs.map +1 -0
  30. package/dist/{observability-new-endpoints-DqS6dcR5.js → observability-new-endpoints-lNC3o66-.js} +107 -5
  31. package/dist/observability-new-endpoints-lNC3o66-.js.map +1 -0
  32. package/dist/route-builder-2yrD15TL.cjs.map +1 -1
  33. package/dist/route-builder-lBil8Cvo.js.map +1 -1
  34. package/dist/{routes-D6sAEgtj.js → routes-B6soWZap.js} +6 -5
  35. package/dist/routes-B6soWZap.js.map +1 -0
  36. package/dist/{routes-C9CmwhbC.cjs → routes-x4As7pym.cjs} +6 -5
  37. package/dist/routes-x4As7pym.cjs.map +1 -0
  38. package/dist/schema-e0VHpMt0-BS9KHnuT.cjs.map +1 -1
  39. package/dist/schema-e0VHpMt0-CvPvLS06.js.map +1 -1
  40. package/dist/server/handlers/a2a.cjs +1 -1
  41. package/dist/server/handlers/a2a.d.ts.map +1 -1
  42. package/dist/server/handlers/a2a.js +1 -1
  43. package/dist/server/handlers/agent-builder.cjs +3 -3
  44. package/dist/server/handlers/agent-builder.d.ts +4 -2
  45. package/dist/server/handlers/agent-builder.d.ts.map +1 -1
  46. package/dist/server/handlers/agent-builder.js +3 -3
  47. package/dist/server/handlers/agent-controller.cjs +2 -1
  48. package/dist/server/handlers/agent-controller.cjs.map +1 -1
  49. package/dist/server/handlers/agent-controller.d.ts.map +1 -1
  50. package/dist/server/handlers/agent-controller.js +2 -1
  51. package/dist/server/handlers/agent-controller.js.map +1 -1
  52. package/dist/server/handlers/agents.cjs +49 -20
  53. package/dist/server/handlers/agents.cjs.map +1 -1
  54. package/dist/server/handlers/agents.d.ts.map +1 -1
  55. package/dist/server/handlers/agents.js +49 -20
  56. package/dist/server/handlers/agents.js.map +1 -1
  57. package/dist/server/handlers/channels.cjs +1 -1
  58. package/dist/server/handlers/channels.d.ts.map +1 -1
  59. package/dist/server/handlers/channels.js +1 -1
  60. package/dist/server/handlers/editor-builder.cjs +1 -1
  61. package/dist/server/handlers/editor-builder.d.ts.map +1 -1
  62. package/dist/server/handlers/editor-builder.js +1 -1
  63. package/dist/server/handlers/favorites-enrichment.cjs +1 -1
  64. package/dist/server/handlers/favorites-enrichment.js +1 -1
  65. package/dist/server/handlers/observability-new-endpoints.cjs +2 -1
  66. package/dist/server/handlers/observability-new-endpoints.d.ts +100 -0
  67. package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
  68. package/dist/server/handlers/observability-new-endpoints.js +2 -2
  69. package/dist/server/handlers/observability-shared.cjs +46 -0
  70. package/dist/server/handlers/observability-shared.cjs.map +1 -1
  71. package/dist/server/handlers/observability-shared.d.ts +13 -0
  72. package/dist/server/handlers/observability-shared.d.ts.map +1 -1
  73. package/dist/server/handlers/observability-shared.js +42 -1
  74. package/dist/server/handlers/observability-shared.js.map +1 -1
  75. package/dist/server/handlers/observability.cjs +3 -1
  76. package/dist/server/handlers/observability.cjs.map +1 -1
  77. package/dist/server/handlers/observability.js +3 -2
  78. package/dist/server/handlers/observability.js.map +1 -1
  79. package/dist/server/handlers/stored-agent-favorites.cjs +1 -1
  80. package/dist/server/handlers/stored-agent-favorites.js +1 -1
  81. package/dist/server/handlers/stored-agents.cjs +6 -3
  82. package/dist/server/handlers/stored-agents.cjs.map +1 -1
  83. package/dist/server/handlers/stored-agents.d.ts.map +1 -1
  84. package/dist/server/handlers/stored-agents.js +6 -3
  85. package/dist/server/handlers/stored-agents.js.map +1 -1
  86. package/dist/server/handlers/stored-skill-favorites.cjs +1 -1
  87. package/dist/server/handlers/stored-skill-favorites.js +1 -1
  88. package/dist/server/handlers/stored-skills.cjs +1 -1
  89. package/dist/server/handlers/stored-skills.js +1 -1
  90. package/dist/server/handlers/system.cjs +2 -2
  91. package/dist/server/handlers/system.d.ts +2 -0
  92. package/dist/server/handlers/system.d.ts.map +1 -1
  93. package/dist/server/handlers/system.js +2 -2
  94. package/dist/server/handlers/workflows.cjs +28 -4
  95. package/dist/server/handlers/workflows.cjs.map +1 -1
  96. package/dist/server/handlers/workflows.d.ts +5 -2
  97. package/dist/server/handlers/workflows.d.ts.map +1 -1
  98. package/dist/server/handlers/workflows.js +28 -4
  99. package/dist/server/handlers/workflows.js.map +1 -1
  100. package/dist/server/handlers.cjs +1 -1
  101. package/dist/server/handlers.js +1 -1
  102. package/dist/server/schemas/index.cjs +3 -3
  103. package/dist/server/schemas/index.js +3 -3
  104. package/dist/server/schemas/system.d.ts +2 -0
  105. package/dist/server/schemas/system.d.ts.map +1 -1
  106. package/dist/server/schemas/workflows.d.ts +2 -1
  107. package/dist/server/schemas/workflows.d.ts.map +1 -1
  108. package/dist/server/server-adapter/index.cjs +1 -1
  109. package/dist/server/server-adapter/index.js +1 -1
  110. package/dist/server/server-adapter/routes/agent-builder.d.ts +4 -2
  111. package/dist/server/server-adapter/routes/agent-builder.d.ts.map +1 -1
  112. package/dist/server/server-adapter/routes/observability.d.ts +97 -0
  113. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
  114. package/dist/server/server-adapter/routes/system.d.ts +2 -0
  115. package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
  116. package/dist/server/server-adapter/routes/workflows.d.ts +4 -2
  117. package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -1
  118. package/dist/{system-BE5tDMHq.js → system-6qFm79mm.js} +2 -1
  119. package/dist/system-6qFm79mm.js.map +1 -0
  120. package/dist/{system-BlGYb2fu.cjs → system-CskEzH1o.cjs} +2 -1
  121. package/dist/system-CskEzH1o.cjs.map +1 -0
  122. package/dist/{workflows-CvJ4c4_p.js → workflows-BEdLrZQZ.js} +3 -2
  123. package/dist/workflows-BEdLrZQZ.js.map +1 -0
  124. package/dist/{workflows-Cv6MGw9d.cjs → workflows-BdoErlkd.cjs} +3 -2
  125. package/dist/workflows-BdoErlkd.cjs.map +1 -0
  126. package/package.json +7 -7
  127. package/dist/a2a-CwxSk6H0.cjs.map +0 -1
  128. package/dist/a2a-DQOqoU_q.js.map +0 -1
  129. package/dist/channels-DMw4LEA-.cjs.map +0 -1
  130. package/dist/channels-xqChW6Vw.js.map +0 -1
  131. package/dist/dist-ABdCIqbD.js.map +0 -1
  132. package/dist/dist-Cfr6t0cK.cjs.map +0 -1
  133. package/dist/editor-builder-BrkDnCEd.js.map +0 -1
  134. package/dist/editor-builder-DIpISGSI.cjs.map +0 -1
  135. package/dist/observability-new-endpoints-Ct0CSLE4.cjs.map +0 -1
  136. package/dist/observability-new-endpoints-DqS6dcR5.js.map +0 -1
  137. package/dist/routes-C9CmwhbC.cjs.map +0 -1
  138. package/dist/routes-D6sAEgtj.js.map +0 -1
  139. package/dist/system-BE5tDMHq.js.map +0 -1
  140. package/dist/system-BlGYb2fu.cjs.map +0 -1
  141. package/dist/workflows-Cv6MGw9d.cjs.map +0 -1
  142. package/dist/workflows-CvJ4c4_p.js.map +0 -1
@@ -125,10 +125,13 @@ function hasSuspendedToolCall(snapshot, toolCallId) {
125
125
  };
126
126
  return visit(snapshot.context);
127
127
  }
128
- async function validateDurableToolCallAccess({ mastra, agent, runId, toolCallId, requestContext }) {
128
+ function getDurableLoopWorkflowName(agent) {
129
+ return agent.durableLoopWorkflowName ?? _mastra_core_agent_durable.DurableStepIds.AGENTIC_LOOP;
130
+ }
131
+ async function validateDurableToolCallAccess({ mastra, agent, runId, toolCallId, requestContext, threadId }) {
129
132
  if (!(0, _mastra_core_agent.isDurableAgentLike)(agent)) return;
130
133
  const workflowRun = await (await mastra.getStorage()?.getStore("workflows"))?.getWorkflowRunById({
131
- workflowName: _mastra_core_agent_durable.DurableStepIds.AGENTIC_LOOP,
134
+ workflowName: getDurableLoopWorkflowName(agent),
132
135
  runId
133
136
  });
134
137
  if (!workflowRun) throw new require_http_exception.HTTPException(403, { message: "Access denied: durable run belongs to a different resource" });
@@ -148,7 +151,9 @@ async function validateDurableToolCallAccess({ mastra, agent, runId, toolCallId,
148
151
  const effectiveResourceId = require_utils$1.getEffectiveResourceId(requestContext, void 0);
149
152
  const [persistedResourceId] = persistedResourceIds;
150
153
  if (persistedResourceIds.size > 1 || persistedResourceId && persistedResourceId !== effectiveResourceId) throw new require_http_exception.HTTPException(403, { message: "Access denied: durable run belongs to a different resource" });
151
- if (!snapshot || snapshot.status !== "suspended" || input?.agentId !== agent.id || !hasSuspendedToolCall(snapshot, toolCallId)) throw new require_http_exception.HTTPException(403, { message: "Access denied: tool call is not suspended on this durable run" });
154
+ const persistedThreadId = input?.state?.threadId ?? input?.messageListState?.memoryInfo?.threadId;
155
+ if (threadId && persistedThreadId !== threadId) throw new require_http_exception.HTTPException(403, { message: "Access denied: durable run belongs to a different thread" });
156
+ if (!snapshot || snapshot.status !== "suspended" || input?.agentId !== agent.id || toolCallId !== void 0 && !hasSuspendedToolCall(snapshot, toolCallId)) throw new require_http_exception.HTTPException(403, { message: "Access denied: tool call is not suspended on this durable run" });
152
157
  }
153
158
  /**
154
159
  * Providers whose apiKeyEnvVar entries are aliases for the same credential (any one
@@ -1095,35 +1100,43 @@ async function buildProvidersList(mastra) {
1095
1100
  const blockExternalProviders = process.env.AUTO_BLOCK_EXTERNAL_PROVIDERS === "true" || process.env.AUTO_BLOCK_EXTERNAL_PROVIDERS === "1";
1096
1101
  const defaultGatewayIds = new Set(_mastra_core_llm.defaultGateways.map((gateway) => gateway.id));
1097
1102
  if (!blockExternalProviders) for (const [id, provider] of Object.entries(_mastra_core_llm.PROVIDER_REGISTRY)) allProviders[id] = provider;
1098
- if (mastra) {
1099
- const allGateways = mastra.listGateways();
1100
- if (allGateways) for (const gateway of Object.values(allGateways)) {
1101
- if (gateway.id === "models.dev") continue;
1102
- if (blockExternalProviders && defaultGatewayIds.has(gateway.id)) continue;
1103
- try {
1104
- const gatewayProviders = await gateway.fetchProviders();
1105
- for (const [providerId, config] of Object.entries(gatewayProviders)) {
1106
- const prefixedId = providerId === gateway.id ? gateway.id : `${gateway.id}/${providerId}`;
1107
- if (!(prefixedId in allProviders)) allProviders[prefixedId] = config;
1108
- }
1109
- } catch (error) {
1110
- console.warn(`Failed to fetch providers from gateway "${gateway.id}":`, error);
1103
+ const gateways = mastra ? Object.values(mastra.listGateways() ?? {}) : [];
1104
+ for (const gateway of gateways) {
1105
+ if (gateway.id === "models.dev") continue;
1106
+ if (blockExternalProviders && defaultGatewayIds.has(gateway.id)) continue;
1107
+ try {
1108
+ const gatewayProviders = await gateway.fetchProviders();
1109
+ for (const [providerId, config] of Object.entries(gatewayProviders)) {
1110
+ const prefixedId = providerId === gateway.id ? gateway.id : `${gateway.id}/${providerId}`;
1111
+ if (!(prefixedId in allProviders)) allProviders[prefixedId] = config;
1111
1112
  }
1113
+ } catch (error) {
1114
+ console.warn(`Failed to fetch providers from gateway "${gateway.id}":`, error);
1112
1115
  }
1113
1116
  }
1114
1117
  return Object.entries(allProviders).map(([id, provider]) => {
1115
1118
  return {
1116
1119
  id,
1117
1120
  name: provider.name,
1118
- label: provider.label || provider.name,
1119
- description: provider.description || "",
1121
+ label: readStringField(provider, "label") || provider.name,
1122
+ description: readStringField(provider, "description") || "",
1120
1123
  envVar: provider.apiKeyEnvVar,
1121
- connected: isProviderConnected(id, allProviders),
1124
+ connected: isProviderConnected(id, allProviders) || isClaimedByGateway(id, provider.models, gateways),
1122
1125
  docUrl: provider.docUrl,
1123
1126
  models: [...provider.models]
1124
1127
  };
1125
1128
  });
1126
1129
  }
1130
+ function isClaimedByGateway(providerId, models, gateways) {
1131
+ const [firstModel] = models;
1132
+ if (!firstModel) return false;
1133
+ const routerId = `${providerId}/${firstModel}`;
1134
+ return gateways.some((gateway) => gateway.shouldEnable?.() !== false && gateway.handlesModel?.(routerId) === true);
1135
+ }
1136
+ function readStringField(source, field) {
1137
+ const value = source[field];
1138
+ return typeof value === "string" ? value : void 0;
1139
+ }
1127
1140
  const GET_PROVIDERS_ROUTE = require_route_builder.createRoute({
1128
1141
  method: "GET",
1129
1142
  path: "/agents/providers",
@@ -2016,6 +2029,14 @@ const RESUME_STREAM_ROUTE = require_route_builder.createRoute({
2016
2029
  ...effectiveResourceId ? { resource: effectiveResourceId } : {},
2017
2030
  ...effectiveThreadId ? { thread: effectiveThreadId } : {}
2018
2031
  };
2032
+ await validateDurableToolCallAccess({
2033
+ mastra,
2034
+ agent,
2035
+ runId,
2036
+ toolCallId,
2037
+ requestContext: serverRequestContext,
2038
+ threadId: effectiveThreadId
2039
+ });
2019
2040
  await require_utils$1.validateRunOwnership(await (await mastra.getStorage()?.getStore("workflows"))?.getWorkflowRunById({
2020
2041
  workflowName: "agentic-loop",
2021
2042
  runId
@@ -2068,7 +2089,7 @@ const RECOVER_ROUTE = require_route_builder.createRoute({
2068
2089
  });
2069
2090
  if (!(0, _mastra_core_agent.isDurableAgentLike)(agent)) throw new require_http_exception.HTTPException(400, { message: "Agent does not support recover. Only durable agents (createDurableAgent) can recover runs." });
2070
2091
  await require_utils$1.validateRunOwnership(await (await mastra.getStorage()?.getStore("workflows"))?.getWorkflowRunById({
2071
- workflowName: _mastra_core_agent_durable.DurableStepIds.AGENTIC_LOOP,
2092
+ workflowName: getDurableLoopWorkflowName(agent),
2072
2093
  runId
2073
2094
  }), require_utils$1.getEffectiveResourceId(serverRequestContext, void 0));
2074
2095
  return (await agent.recover(runId, { abortSignal })).fullStream;
@@ -2128,6 +2149,14 @@ const RESUME_STREAM_UNTIL_IDLE_ROUTE = require_route_builder.createRoute({
2128
2149
  ...effectiveResourceId ? { resource: effectiveResourceId } : {},
2129
2150
  ...effectiveThreadId ? { thread: effectiveThreadId } : {}
2130
2151
  };
2152
+ await validateDurableToolCallAccess({
2153
+ mastra,
2154
+ agent,
2155
+ runId,
2156
+ toolCallId,
2157
+ requestContext: serverRequestContext,
2158
+ threadId: effectiveThreadId
2159
+ });
2131
2160
  await require_utils$1.validateRunOwnership(await (await mastra.getStorage()?.getStore("workflows"))?.getWorkflowRunById({
2132
2161
  workflowName: "agentic-loop",
2133
2162
  runId