@mastra/ai-sdk 1.10.7 → 1.11.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat-route.d.ts +16 -7
- package/dist/chat-route.d.ts.map +1 -1
- package/dist/convert-streams.d.ts +4 -4
- package/dist/convert-streams.d.ts.map +1 -1
- package/dist/helpers.d.ts.map +1 -1
- package/dist/index.cjs +34 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +34 -15
- package/dist/index.js.map +1 -1
- package/dist/public-types.d.ts +8 -0
- package/dist/public-types.d.ts.map +1 -1
- package/dist/transformers.d.ts +4 -2
- package/dist/transformers.d.ts.map +1 -1
- package/package.json +8 -8
package/dist/index.js
CHANGED
|
@@ -13670,7 +13670,8 @@ function convertMastraChunkToAISDKBase({ chunk, mode = "stream", normalizeWarnin
|
|
|
13670
13670
|
providerExecuted: chunk.payload.providerExecuted,
|
|
13671
13671
|
toolName: chunk.payload.toolName,
|
|
13672
13672
|
input: hasTransformedToolPayload(displayInputTransform) ? displayInputTransform.transformed : chunk.payload.args,
|
|
13673
|
-
...chunk.payload.observability ? { observability: chunk.payload.observability } : {}
|
|
13673
|
+
...chunk.payload.observability ? { observability: chunk.payload.observability } : {},
|
|
13674
|
+
...chunk.payload.toolMetadata ? { toolMetadata: chunk.payload.toolMetadata } : {}
|
|
13674
13675
|
};
|
|
13675
13676
|
case "tool-call-approval": return {
|
|
13676
13677
|
type: "data-tool-call-approval",
|
|
@@ -13730,7 +13731,8 @@ function convertMastraChunkToAISDKBase({ chunk, mode = "stream", normalizeWarnin
|
|
|
13730
13731
|
dynamic: !!chunk.payload.dynamic,
|
|
13731
13732
|
providerMetadata: chunk.payload.providerMetadata,
|
|
13732
13733
|
providerExecuted: chunk.payload.providerExecuted,
|
|
13733
|
-
...chunk.payload.observability ? { observability: chunk.payload.observability } : {}
|
|
13734
|
+
...chunk.payload.observability ? { observability: chunk.payload.observability } : {},
|
|
13735
|
+
...chunk.payload.toolMetadata ? { toolMetadata: chunk.payload.toolMetadata } : {}
|
|
13734
13736
|
};
|
|
13735
13737
|
case "tool-call-input-streaming-end": return {
|
|
13736
13738
|
type: "tool-input-end",
|
|
@@ -14024,13 +14026,17 @@ function convertFullStreamChunkToUIMessageStream({ part, messageMetadataValue, s
|
|
|
14024
14026
|
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
|
14025
14027
|
};
|
|
14026
14028
|
return;
|
|
14027
|
-
case "tool-input-start":
|
|
14028
|
-
|
|
14029
|
-
|
|
14030
|
-
|
|
14031
|
-
|
|
14032
|
-
|
|
14033
|
-
|
|
14029
|
+
case "tool-input-start": {
|
|
14030
|
+
const toolMetadata = part.toolMetadata;
|
|
14031
|
+
return {
|
|
14032
|
+
type: "tool-input-start",
|
|
14033
|
+
toolCallId: part.id,
|
|
14034
|
+
toolName: part.toolName,
|
|
14035
|
+
...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
|
|
14036
|
+
...part.dynamic != null ? { dynamic: part.dynamic } : {},
|
|
14037
|
+
...toolMetadata != null ? { toolMetadata } : {}
|
|
14038
|
+
};
|
|
14039
|
+
}
|
|
14034
14040
|
case "tool-input-delta": return {
|
|
14035
14041
|
type: "tool-input-delta",
|
|
14036
14042
|
toolCallId: part.id,
|
|
@@ -14038,6 +14044,7 @@ function convertFullStreamChunkToUIMessageStream({ part, messageMetadataValue, s
|
|
|
14038
14044
|
};
|
|
14039
14045
|
case "tool-call": {
|
|
14040
14046
|
const observability = part.observability;
|
|
14047
|
+
const toolMetadata = part.toolMetadata;
|
|
14041
14048
|
return {
|
|
14042
14049
|
type: "tool-input-available",
|
|
14043
14050
|
toolCallId: part.toolCallId,
|
|
@@ -14046,7 +14053,10 @@ function convertFullStreamChunkToUIMessageStream({ part, messageMetadataValue, s
|
|
|
14046
14053
|
...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
|
|
14047
14054
|
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},
|
|
14048
14055
|
...part.dynamic != null ? { dynamic: part.dynamic } : {},
|
|
14049
|
-
...observability != null
|
|
14056
|
+
...observability != null || toolMetadata != null ? { toolMetadata: {
|
|
14057
|
+
...toolMetadata,
|
|
14058
|
+
...observability != null ? { __mastraObservability: observability } : {}
|
|
14059
|
+
} } : {}
|
|
14050
14060
|
};
|
|
14051
14061
|
}
|
|
14052
14062
|
case "tool-approval-request": return {
|
|
@@ -14258,7 +14268,10 @@ function createAgentStreamToAISDKTransformer(convertMastraChunkToAISDK, { lastMe
|
|
|
14258
14268
|
part: p,
|
|
14259
14269
|
sendReasoning,
|
|
14260
14270
|
sendSources,
|
|
14261
|
-
messageMetadataValue: p ? messageMetadata?.({
|
|
14271
|
+
messageMetadataValue: p ? messageMetadata?.({
|
|
14272
|
+
part: p,
|
|
14273
|
+
traceId: chunk.traceId
|
|
14274
|
+
}) : void 0,
|
|
14262
14275
|
sendStart,
|
|
14263
14276
|
sendFinish,
|
|
14264
14277
|
responseMessageId: lastMessageId,
|
|
@@ -15423,7 +15436,7 @@ function extractV6NativeApprovals(messages) {
|
|
|
15423
15436
|
/** Streams exact approval targets sequentially as one v6/v7 UI-message response. */
|
|
15424
15437
|
function streamV6ApprovalResumes(args) {
|
|
15425
15438
|
const { agent, approvals, baseOptions, structuredOutput, messages, lastMessageId } = args;
|
|
15426
|
-
const { sendStart, sendFinish, sendReasoning, sendSources, onError, messageMetadata, experimentalTransform } = args;
|
|
15439
|
+
const { sendStart, sendFinish, sendReasoning, sendSources, includeSubAgentMetadata, onError, messageMetadata, experimentalTransform } = args;
|
|
15427
15440
|
return (args.version === "v7" ? createUIMessageStream : createUIMessageStream$1)({
|
|
15428
15441
|
originalMessages: messages,
|
|
15429
15442
|
onError,
|
|
@@ -15447,6 +15460,7 @@ function streamV6ApprovalResumes(args) {
|
|
|
15447
15460
|
sendFinish,
|
|
15448
15461
|
sendReasoning,
|
|
15449
15462
|
sendSources,
|
|
15463
|
+
includeSubAgentMetadata,
|
|
15450
15464
|
experimentalTransform,
|
|
15451
15465
|
onError,
|
|
15452
15466
|
messageMetadata
|
|
@@ -15493,7 +15507,7 @@ const CREDENTIAL_HEADER_NAMES = /* @__PURE__ */ new Set([
|
|
|
15493
15507
|
"x-goog-api-key",
|
|
15494
15508
|
"cookie"
|
|
15495
15509
|
]);
|
|
15496
|
-
async function handleChatStream({ mastra, agentId, agentVersion, params, defaultOptions, experimentalTransform, version = "v5", sendStart = true, sendFinish = true, sendReasoning = false, sendSources = false, onError, messageMetadata }) {
|
|
15510
|
+
async function handleChatStream({ mastra, agentId, agentVersion, params, defaultOptions, experimentalTransform, version = "v5", sendStart = true, sendFinish = true, sendReasoning = false, sendSources = false, includeSubAgentMetadata = true, onError, messageMetadata }) {
|
|
15497
15511
|
const { messages, resumeData, runId, requestContext, trigger, ...rest } = params;
|
|
15498
15512
|
if (resumeData && !runId) throw new Error("runId is required when resumeData is provided");
|
|
15499
15513
|
const baseAgent = mastra.getAgentById(agentId);
|
|
@@ -15545,6 +15559,7 @@ async function handleChatStream({ mastra, agentId, agentVersion, params, default
|
|
|
15545
15559
|
sendFinish,
|
|
15546
15560
|
sendReasoning,
|
|
15547
15561
|
sendSources,
|
|
15562
|
+
includeSubAgentMetadata,
|
|
15548
15563
|
onError,
|
|
15549
15564
|
experimentalTransform: effectiveExperimentalTransform,
|
|
15550
15565
|
messageMetadata
|
|
@@ -15568,6 +15583,7 @@ async function handleChatStream({ mastra, agentId, agentVersion, params, default
|
|
|
15568
15583
|
sendFinish,
|
|
15569
15584
|
sendReasoning,
|
|
15570
15585
|
sendSources,
|
|
15586
|
+
includeSubAgentMetadata,
|
|
15571
15587
|
experimentalTransform: effectiveExperimentalTransform,
|
|
15572
15588
|
onError,
|
|
15573
15589
|
messageMetadata
|
|
@@ -15584,6 +15600,7 @@ async function handleChatStream({ mastra, agentId, agentVersion, params, default
|
|
|
15584
15600
|
sendFinish,
|
|
15585
15601
|
sendReasoning,
|
|
15586
15602
|
sendSources,
|
|
15603
|
+
includeSubAgentMetadata,
|
|
15587
15604
|
experimentalTransform: effectiveExperimentalTransform,
|
|
15588
15605
|
onError,
|
|
15589
15606
|
messageMetadata
|
|
@@ -15604,9 +15621,10 @@ async function handleChatStream({ mastra, agentId, agentVersion, params, default
|
|
|
15604
15621
|
* @param {boolean} [options.sendFinish=true] - Whether to send finish events in the stream
|
|
15605
15622
|
* @param {boolean} [options.sendReasoning=false] - Whether to include reasoning steps in the stream
|
|
15606
15623
|
* @param {boolean} [options.sendSources=false] - Whether to include source citations in the stream
|
|
15624
|
+
* @param {boolean} [options.includeSubAgentMetadata=true] - Whether to emit `data-tool-agent` / `data-tool-agent-step` parts with sub-agent progress
|
|
15607
15625
|
* @param {number} [options.heartbeatMs] - Target interval for periodic SSE comment heartbeats. Already-buffered source events and stream lifecycle signals take priority. Values up to 0 disable heartbeats. `NaN`, positive infinity, and values above 2,147,483,647 throw a `RangeError`.
|
|
15608
15626
|
* @param {(error: unknown) => string} [options.onError] - Custom error serializer streamed to the client. When omitted, errors are passed through a default serializer that strips sensitive fields (e.g. `APICallError.requestBodyValues`, which holds the system prompt) before they reach the client.
|
|
15609
|
-
* @param {Function} [options.messageMetadata] - Maps stream parts to metadata attached to AI SDK start and finish message parts.
|
|
15627
|
+
* @param {Function} [options.messageMetadata] - Maps stream parts to metadata attached to AI SDK start and finish message parts. Receives `{ part, traceId }`.
|
|
15610
15628
|
*
|
|
15611
15629
|
* @returns {ReturnType<typeof registerApiRoute>} A registered API route handler
|
|
15612
15630
|
*
|
|
@@ -15638,7 +15656,7 @@ async function handleChatStream({ mastra, agentId, agentVersion, params, default
|
|
|
15638
15656
|
* - If both `agent` and `:agentId` are present, a warning is logged and the fixed `agent` takes precedence
|
|
15639
15657
|
* - Request context from the incoming request overrides `defaultOptions.requestContext` if both are present
|
|
15640
15658
|
*/
|
|
15641
|
-
function chatRoute({ path = "/chat/:agentId", agent, defaultOptions, experimentalTransform, version = "v5", agentVersion, sendStart = true, sendFinish = true, sendReasoning = false, sendSources = false, heartbeatMs, onError, messageMetadata }) {
|
|
15659
|
+
function chatRoute({ path = "/chat/:agentId", agent, defaultOptions, experimentalTransform, version = "v5", agentVersion, sendStart = true, sendFinish = true, sendReasoning = false, sendSources = false, includeSubAgentMetadata = true, heartbeatMs, onError, messageMetadata }) {
|
|
15642
15660
|
if (!agent && !path.includes("/:agentId")) throw new Error("Path must include :agentId to route to the correct agent or pass the agent explicitly");
|
|
15643
15661
|
assertValidHeartbeatMs(heartbeatMs);
|
|
15644
15662
|
return registerApiRoute(path, {
|
|
@@ -15767,6 +15785,7 @@ function chatRoute({ path = "/chat/:agentId", agent, defaultOptions, experimenta
|
|
|
15767
15785
|
sendFinish,
|
|
15768
15786
|
sendReasoning,
|
|
15769
15787
|
sendSources,
|
|
15788
|
+
includeSubAgentMetadata,
|
|
15770
15789
|
onError
|
|
15771
15790
|
};
|
|
15772
15791
|
let response;
|