@mastra/ai-sdk 1.6.2-alpha.1 → 1.6.2-alpha.2
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/CHANGELOG.md +8 -0
- package/dist/index.cjs +35 -27
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +35 -27
- package/dist/index.js.map +1 -1
- package/dist/transformers.d.ts.map +1 -1
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @mastra/ai-sdk
|
|
2
2
|
|
|
3
|
+
## 1.6.2-alpha.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Fixed a crash in the AI SDK stream transformer when a supervisor agent delegates to a remote A2A agent (A2AAgent) through chatRoute() or handleChatStream. A2A sub-agent streams do not emit a start chunk and use a flat finish payload, which caused the UI stream to end with "Cannot read properties of undefined" errors. The remote agent's answer now streams to the client correctly. ([#19443](https://github.com/mastra-ai/mastra/pull/19443))
|
|
8
|
+
|
|
9
|
+
The same guard now also covers resumed sub-agent streams, which skip the start chunk as well and could crash or corrupt the delegation state on tool calls and structured output.
|
|
10
|
+
|
|
3
11
|
## 1.6.2-alpha.1
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -10846,23 +10846,26 @@ function transformAgent(payload, bufferedSteps) {
|
|
|
10846
10846
|
hasChanged = true;
|
|
10847
10847
|
break;
|
|
10848
10848
|
}
|
|
10849
|
-
case "finish":
|
|
10849
|
+
case "finish": {
|
|
10850
|
+
const finishRun = ensureAgentRunState(bufferedSteps, payload.runId);
|
|
10851
|
+
const finishPayload = payload.payload;
|
|
10850
10852
|
bufferedSteps.set(payload.runId, {
|
|
10851
|
-
...
|
|
10852
|
-
finishReason:
|
|
10853
|
-
usage:
|
|
10854
|
-
warnings:
|
|
10855
|
-
steps:
|
|
10853
|
+
...finishRun,
|
|
10854
|
+
finishReason: finishPayload.stepResult?.reason ?? finishPayload.finishReason ?? null,
|
|
10855
|
+
usage: finishPayload.output?.usage ?? finishPayload.usage,
|
|
10856
|
+
warnings: finishPayload.stepResult?.warnings,
|
|
10857
|
+
steps: finishRun.steps,
|
|
10856
10858
|
status: "finished",
|
|
10857
10859
|
response: {
|
|
10858
|
-
...
|
|
10859
|
-
...
|
|
10860
|
+
...finishRun.response,
|
|
10861
|
+
...finishPayload.response || {}
|
|
10860
10862
|
}
|
|
10861
10863
|
});
|
|
10862
10864
|
hasChanged = true;
|
|
10863
10865
|
break;
|
|
10866
|
+
}
|
|
10864
10867
|
case "text-delta": {
|
|
10865
|
-
const prevData = bufferedSteps
|
|
10868
|
+
const prevData = ensureAgentRunState(bufferedSteps, payload.runId);
|
|
10866
10869
|
bufferedSteps.set(payload.runId, {
|
|
10867
10870
|
...prevData,
|
|
10868
10871
|
text: `${prevData.text}${payload.payload.text}`
|
|
@@ -10870,38 +10873,43 @@ function transformAgent(payload, bufferedSteps) {
|
|
|
10870
10873
|
hasChanged = true;
|
|
10871
10874
|
break;
|
|
10872
10875
|
}
|
|
10873
|
-
case "reasoning-delta":
|
|
10876
|
+
case "reasoning-delta": {
|
|
10877
|
+
const reasoningRun = ensureAgentRunState(bufferedSteps, payload.runId);
|
|
10874
10878
|
bufferedSteps.set(payload.runId, {
|
|
10875
|
-
...
|
|
10876
|
-
reasoning: [...
|
|
10879
|
+
...reasoningRun,
|
|
10880
|
+
reasoning: [...reasoningRun.reasoning, payload.payload.text]
|
|
10877
10881
|
});
|
|
10878
10882
|
hasChanged = true;
|
|
10879
10883
|
break;
|
|
10880
|
-
|
|
10884
|
+
}
|
|
10885
|
+
case "source": {
|
|
10886
|
+
const sourceRun = ensureAgentRunState(bufferedSteps, payload.runId);
|
|
10881
10887
|
bufferedSteps.set(payload.runId, {
|
|
10882
|
-
...
|
|
10883
|
-
sources: [...
|
|
10888
|
+
...sourceRun,
|
|
10889
|
+
sources: [...sourceRun.sources, payload.payload]
|
|
10884
10890
|
});
|
|
10885
10891
|
hasChanged = true;
|
|
10886
10892
|
break;
|
|
10887
|
-
|
|
10893
|
+
}
|
|
10894
|
+
case "file": {
|
|
10895
|
+
const fileRun = ensureAgentRunState(bufferedSteps, payload.runId);
|
|
10888
10896
|
bufferedSteps.set(payload.runId, {
|
|
10889
|
-
...
|
|
10890
|
-
files: [...
|
|
10897
|
+
...fileRun,
|
|
10898
|
+
files: [...fileRun.files, payload.payload]
|
|
10891
10899
|
});
|
|
10892
10900
|
hasChanged = true;
|
|
10893
10901
|
break;
|
|
10894
|
-
|
|
10902
|
+
}
|
|
10903
|
+
case "tool-call": {
|
|
10904
|
+
const toolCallRun = ensureAgentRunState(bufferedSteps, payload.runId);
|
|
10895
10905
|
bufferedSteps.set(payload.runId, {
|
|
10896
|
-
...
|
|
10897
|
-
pendingToolCalls: removePendingToolCall(
|
|
10898
|
-
|
|
10899
|
-
payload.payload.toolCallId
|
|
10900
|
-
),
|
|
10901
|
-
toolCalls: [...bufferedSteps.get(payload.runId).toolCalls, payload.payload]
|
|
10906
|
+
...toolCallRun,
|
|
10907
|
+
pendingToolCalls: removePendingToolCall(toolCallRun.pendingToolCalls, payload.payload.toolCallId),
|
|
10908
|
+
toolCalls: [...toolCallRun.toolCalls, payload.payload]
|
|
10902
10909
|
});
|
|
10903
10910
|
hasChanged = true;
|
|
10904
10911
|
break;
|
|
10912
|
+
}
|
|
10905
10913
|
case "tool-result": {
|
|
10906
10914
|
const toolResultRun = ensureAgentRunState(bufferedSteps, payload.runId);
|
|
10907
10915
|
bufferedSteps.set(payload.runId, {
|
|
@@ -10914,14 +10922,14 @@ function transformAgent(payload, bufferedSteps) {
|
|
|
10914
10922
|
}
|
|
10915
10923
|
case "object-result":
|
|
10916
10924
|
bufferedSteps.set(payload.runId, {
|
|
10917
|
-
...bufferedSteps
|
|
10925
|
+
...ensureAgentRunState(bufferedSteps, payload.runId),
|
|
10918
10926
|
object: payload.object
|
|
10919
10927
|
});
|
|
10920
10928
|
hasChanged = true;
|
|
10921
10929
|
break;
|
|
10922
10930
|
case "object":
|
|
10923
10931
|
bufferedSteps.set(payload.runId, {
|
|
10924
|
-
...bufferedSteps
|
|
10932
|
+
...ensureAgentRunState(bufferedSteps, payload.runId),
|
|
10925
10933
|
object: payload.object
|
|
10926
10934
|
});
|
|
10927
10935
|
hasChanged = true;
|