@mastra/ai-sdk 1.2.1 → 1.3.0-alpha.0
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 +22 -0
- package/dist/chat-route.d.ts +1 -0
- package/dist/chat-route.d.ts.map +1 -1
- package/dist/index.cjs +60 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +60 -17
- 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,27 @@
|
|
|
1
1
|
# @mastra/ai-sdk
|
|
2
2
|
|
|
3
|
+
## 1.3.0-alpha.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Added `onError` callback to `handleChatStream()` options. This lets you intercept and sanitize stream errors before they reach the client — useful for preventing internal infrastructure details from leaking to end users. ([#14681](https://github.com/mastra-ai/mastra/pull/14681))
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
const stream = await handleChatStream({
|
|
11
|
+
mastra,
|
|
12
|
+
agentId: 'myAgent',
|
|
13
|
+
params,
|
|
14
|
+
onError: error => 'An unexpected error occurred. Please try again.',
|
|
15
|
+
});
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- Fixed toAISdkStream() crashing when resumed supervisor and subagent streams continue with nested tool results after a suspended tool call. ([#14675](https://github.com/mastra-ai/mastra/pull/14675))
|
|
21
|
+
|
|
22
|
+
- Updated dependencies [[`f16d92c`](https://github.com/mastra-ai/mastra/commit/f16d92c677a119a135cebcf7e2b9f51ada7a9df4)]:
|
|
23
|
+
- @mastra/core@1.18.0-alpha.2
|
|
24
|
+
|
|
3
25
|
## 1.2.1
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
package/dist/chat-route.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export type ChatStreamHandlerOptions<UI_MESSAGE extends SupportedUIMessage = Sup
|
|
|
20
20
|
sendFinish?: boolean;
|
|
21
21
|
sendReasoning?: boolean;
|
|
22
22
|
sendSources?: boolean;
|
|
23
|
+
onError?: (error: unknown) => string;
|
|
23
24
|
messageMetadata?: UI_MESSAGE extends V6UIMessage ? UIMessageStreamOptionsV6<UI_MESSAGE>['messageMetadata'] : UI_MESSAGE extends V5UIMessage ? UIMessageStreamOptionsV5<UI_MESSAGE>['messageMetadata'] : never;
|
|
24
25
|
};
|
|
25
26
|
type ChatStreamHandlerOptionsV5<UI_MESSAGE extends V5UIMessage = V5UIMessage, OUTPUT = undefined> = Omit<ChatStreamHandlerOptions<UI_MESSAGE, OUTPUT>, 'version' | 'messageMetadata'> & {
|
package/dist/chat-route.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-route.d.ts","sourceRoot":"","sources":["../src/chat-route.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"chat-route.d.ts","sourceRoot":"","sources":["../src/chat-route.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -12378,6 +12378,34 @@ function AgentStreamToAISDKV6Transformer({
|
|
|
12378
12378
|
onError
|
|
12379
12379
|
});
|
|
12380
12380
|
}
|
|
12381
|
+
function ensureAgentRunState(bufferedSteps, runId) {
|
|
12382
|
+
if (!bufferedSteps.has(runId)) {
|
|
12383
|
+
bufferedSteps.set(runId, {
|
|
12384
|
+
id: "",
|
|
12385
|
+
object: null,
|
|
12386
|
+
finishReason: null,
|
|
12387
|
+
usage: null,
|
|
12388
|
+
warnings: [],
|
|
12389
|
+
text: "",
|
|
12390
|
+
reasoning: [],
|
|
12391
|
+
sources: [],
|
|
12392
|
+
files: [],
|
|
12393
|
+
toolCalls: [],
|
|
12394
|
+
toolResults: [],
|
|
12395
|
+
request: {},
|
|
12396
|
+
response: {
|
|
12397
|
+
id: "",
|
|
12398
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
12399
|
+
modelId: "",
|
|
12400
|
+
messages: []
|
|
12401
|
+
},
|
|
12402
|
+
providerMetadata: void 0,
|
|
12403
|
+
steps: [],
|
|
12404
|
+
status: "running"
|
|
12405
|
+
});
|
|
12406
|
+
}
|
|
12407
|
+
return bufferedSteps.get(runId);
|
|
12408
|
+
}
|
|
12381
12409
|
function transformAgent(payload, bufferedSteps) {
|
|
12382
12410
|
let hasChanged = false;
|
|
12383
12411
|
switch (payload.type) {
|
|
@@ -12418,7 +12446,7 @@ function transformAgent(payload, bufferedSteps) {
|
|
|
12418
12446
|
});
|
|
12419
12447
|
hasChanged = true;
|
|
12420
12448
|
break;
|
|
12421
|
-
case "text-delta":
|
|
12449
|
+
case "text-delta": {
|
|
12422
12450
|
const prevData = bufferedSteps.get(payload.runId);
|
|
12423
12451
|
bufferedSteps.set(payload.runId, {
|
|
12424
12452
|
...prevData,
|
|
@@ -12426,6 +12454,7 @@ function transformAgent(payload, bufferedSteps) {
|
|
|
12426
12454
|
});
|
|
12427
12455
|
hasChanged = true;
|
|
12428
12456
|
break;
|
|
12457
|
+
}
|
|
12429
12458
|
case "reasoning-delta":
|
|
12430
12459
|
bufferedSteps.set(payload.runId, {
|
|
12431
12460
|
...bufferedSteps.get(payload.runId),
|
|
@@ -12454,13 +12483,15 @@ function transformAgent(payload, bufferedSteps) {
|
|
|
12454
12483
|
});
|
|
12455
12484
|
hasChanged = true;
|
|
12456
12485
|
break;
|
|
12457
|
-
case "tool-result":
|
|
12486
|
+
case "tool-result": {
|
|
12487
|
+
const toolResultRun = ensureAgentRunState(bufferedSteps, payload.runId);
|
|
12458
12488
|
bufferedSteps.set(payload.runId, {
|
|
12459
|
-
...
|
|
12460
|
-
toolResults: [...
|
|
12489
|
+
...toolResultRun,
|
|
12490
|
+
toolResults: [...toolResultRun.toolResults, payload.payload]
|
|
12461
12491
|
});
|
|
12462
12492
|
hasChanged = true;
|
|
12463
12493
|
break;
|
|
12494
|
+
}
|
|
12464
12495
|
case "object-result":
|
|
12465
12496
|
bufferedSteps.set(payload.runId, {
|
|
12466
12497
|
...bufferedSteps.get(payload.runId),
|
|
@@ -12475,35 +12506,44 @@ function transformAgent(payload, bufferedSteps) {
|
|
|
12475
12506
|
});
|
|
12476
12507
|
hasChanged = true;
|
|
12477
12508
|
break;
|
|
12478
|
-
case "step-finish":
|
|
12479
|
-
const
|
|
12509
|
+
case "step-finish": {
|
|
12510
|
+
const stepRun = ensureAgentRunState(bufferedSteps, payload.runId);
|
|
12480
12511
|
const stepResult = {
|
|
12481
|
-
...
|
|
12482
|
-
stepType:
|
|
12483
|
-
reasoningText:
|
|
12484
|
-
staticToolCalls:
|
|
12485
|
-
|
|
12486
|
-
|
|
12487
|
-
|
|
12512
|
+
...stepRun,
|
|
12513
|
+
stepType: stepRun.steps.length === 0 ? "initial" : "tool-result",
|
|
12514
|
+
reasoningText: stepRun.reasoning.join(""),
|
|
12515
|
+
staticToolCalls: stepRun.toolCalls.filter(
|
|
12516
|
+
(part) => part.type === "tool-call" && part.payload?.dynamic === false
|
|
12517
|
+
),
|
|
12518
|
+
dynamicToolCalls: stepRun.toolCalls.filter(
|
|
12519
|
+
(part) => part.type === "tool-call" && part.payload?.dynamic === true
|
|
12520
|
+
),
|
|
12521
|
+
staticToolResults: stepRun.toolResults.filter(
|
|
12522
|
+
(part) => part.type === "tool-result" && part.payload?.dynamic === false
|
|
12523
|
+
),
|
|
12524
|
+
dynamicToolResults: stepRun.toolResults.filter(
|
|
12525
|
+
(part) => part.type === "tool-result" && part.payload?.dynamic === true
|
|
12526
|
+
),
|
|
12488
12527
|
finishReason: payload.payload.stepResult.reason,
|
|
12489
12528
|
usage: payload.payload.output.usage,
|
|
12490
12529
|
warnings: payload.payload.stepResult.warnings || [],
|
|
12491
12530
|
response: {
|
|
12531
|
+
...stepRun.response,
|
|
12492
12532
|
id: payload.payload.id || "",
|
|
12493
12533
|
timestamp: payload.payload.metadata?.timestamp || /* @__PURE__ */ new Date(),
|
|
12494
12534
|
modelId: payload.payload.metadata?.modelId || payload.payload.metadata?.model || "",
|
|
12495
|
-
|
|
12496
|
-
messages: bufferedSteps.get(payload.runId).response.messages || []
|
|
12535
|
+
messages: stepRun.response.messages || []
|
|
12497
12536
|
}
|
|
12498
12537
|
};
|
|
12499
12538
|
bufferedSteps.set(payload.runId, {
|
|
12500
|
-
...
|
|
12539
|
+
...stepRun,
|
|
12501
12540
|
usage: payload.payload.output.usage,
|
|
12502
12541
|
warnings: payload.payload.stepResult.warnings || [],
|
|
12503
|
-
steps: [...
|
|
12542
|
+
steps: [...stepRun.steps, stepResult]
|
|
12504
12543
|
});
|
|
12505
12544
|
hasChanged = true;
|
|
12506
12545
|
break;
|
|
12546
|
+
}
|
|
12507
12547
|
}
|
|
12508
12548
|
if (hasChanged) {
|
|
12509
12549
|
return {
|
|
@@ -13118,6 +13158,7 @@ async function handleChatStream({
|
|
|
13118
13158
|
sendFinish = true,
|
|
13119
13159
|
sendReasoning = false,
|
|
13120
13160
|
sendSources = false,
|
|
13161
|
+
onError,
|
|
13121
13162
|
messageMetadata
|
|
13122
13163
|
}) {
|
|
13123
13164
|
const { messages, resumeData, runId, requestContext, trigger, ...rest } = params;
|
|
@@ -13169,6 +13210,7 @@ async function handleChatStream({
|
|
|
13169
13210
|
sendFinish,
|
|
13170
13211
|
sendReasoning,
|
|
13171
13212
|
sendSources,
|
|
13213
|
+
onError,
|
|
13172
13214
|
messageMetadata
|
|
13173
13215
|
})) {
|
|
13174
13216
|
writer.write(part);
|
|
@@ -13186,6 +13228,7 @@ async function handleChatStream({
|
|
|
13186
13228
|
sendFinish,
|
|
13187
13229
|
sendReasoning,
|
|
13188
13230
|
sendSources,
|
|
13231
|
+
onError,
|
|
13189
13232
|
messageMetadata
|
|
13190
13233
|
})) {
|
|
13191
13234
|
writer.write(part);
|