@mastra/ai-sdk 0.0.0-monorepo-binary-20251013210052 → 0.0.0-netlify-no-bundle-20251127120354
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 +449 -3
- package/README.md +65 -1
- package/dist/__tests__/__fixtures__/network.stream.d.ts +2329 -0
- package/dist/__tests__/__fixtures__/network.stream.d.ts.map +1 -0
- package/dist/chat-route.d.ts +52 -2
- package/dist/chat-route.d.ts.map +1 -1
- package/dist/convert-messages.d.ts +10 -0
- package/dist/convert-messages.d.ts.map +1 -0
- package/dist/convert-streams.d.ts +82 -0
- package/dist/convert-streams.d.ts.map +1 -0
- package/dist/helpers.d.ts +3 -4
- package/dist/helpers.d.ts.map +1 -1
- package/dist/index.cjs +512 -117
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +512 -118
- package/dist/index.js.map +1 -1
- package/dist/network-route.d.ts +1 -1
- package/dist/network-route.d.ts.map +1 -1
- package/dist/to-ai-sdk-format.d.ts +15 -13
- package/dist/to-ai-sdk-format.d.ts.map +1 -1
- package/dist/transformers.d.ts +179 -27
- package/dist/transformers.d.ts.map +1 -1
- package/dist/ui.cjs +16 -0
- package/dist/ui.cjs.map +1 -0
- package/dist/ui.d.ts +2 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +13 -0
- package/dist/ui.js.map +1 -0
- package/dist/utils.d.ts +11 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/workflow-route.d.ts +4 -2
- package/dist/workflow-route.d.ts.map +1 -1
- package/package.json +22 -7
package/dist/index.cjs
CHANGED
|
@@ -5,6 +5,58 @@ var ai = require('ai');
|
|
|
5
5
|
var stream = require('@mastra/core/stream');
|
|
6
6
|
|
|
7
7
|
// src/chat-route.ts
|
|
8
|
+
|
|
9
|
+
// src/utils.ts
|
|
10
|
+
var isDataChunkType = (chunk) => {
|
|
11
|
+
return chunk && typeof chunk === "object" && "type" in chunk && chunk.type?.startsWith("data-");
|
|
12
|
+
};
|
|
13
|
+
var isMastraTextStreamChunk = (chunk) => {
|
|
14
|
+
return chunk && typeof chunk === "object" && "type" in chunk && typeof chunk.type === "string" && [
|
|
15
|
+
"text-start",
|
|
16
|
+
"text-delta",
|
|
17
|
+
"text-end",
|
|
18
|
+
"reasoning-start",
|
|
19
|
+
"reasoning-delta",
|
|
20
|
+
"reasoning-end",
|
|
21
|
+
"file",
|
|
22
|
+
"source",
|
|
23
|
+
"tool-input-start",
|
|
24
|
+
"tool-input-delta",
|
|
25
|
+
"tool-call",
|
|
26
|
+
"tool-result",
|
|
27
|
+
"tool-error",
|
|
28
|
+
"error",
|
|
29
|
+
"start-step",
|
|
30
|
+
"finish-step",
|
|
31
|
+
"start",
|
|
32
|
+
"finish",
|
|
33
|
+
"abort",
|
|
34
|
+
"tool-input-end",
|
|
35
|
+
"raw"
|
|
36
|
+
].includes(chunk.type);
|
|
37
|
+
};
|
|
38
|
+
function safeParseErrorObject(obj) {
|
|
39
|
+
if (typeof obj !== "object" || obj === null) {
|
|
40
|
+
return String(obj);
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const stringified = JSON.stringify(obj);
|
|
44
|
+
if (stringified === "{}") {
|
|
45
|
+
return String(obj);
|
|
46
|
+
}
|
|
47
|
+
return stringified;
|
|
48
|
+
} catch {
|
|
49
|
+
return String(obj);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
var isAgentExecutionDataChunkType = (chunk) => {
|
|
53
|
+
return chunk && typeof chunk === "object" && "type" in chunk && chunk.type?.startsWith("agent-execution-event-") && "payload" in chunk && typeof chunk.payload === "object" && "type" in chunk.payload && chunk.payload.type?.startsWith("data-");
|
|
54
|
+
};
|
|
55
|
+
var isWorkflowExecutionDataChunkType = (chunk) => {
|
|
56
|
+
return chunk && typeof chunk === "object" && "type" in chunk && chunk.type?.startsWith("workflow-execution-event-") && "payload" in chunk && typeof chunk.payload === "object" && "type" in chunk.payload && chunk.payload.type?.startsWith("data-");
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// src/helpers.ts
|
|
8
60
|
function convertMastraChunkToAISDKv5({
|
|
9
61
|
chunk,
|
|
10
62
|
mode = "stream"
|
|
@@ -113,6 +165,28 @@ function convertMastraChunkToAISDKv5({
|
|
|
113
165
|
toolName: chunk.payload.toolName,
|
|
114
166
|
input: chunk.payload.args
|
|
115
167
|
};
|
|
168
|
+
case "tool-call-approval":
|
|
169
|
+
return {
|
|
170
|
+
type: "data-tool-call-approval",
|
|
171
|
+
id: chunk.payload.toolCallId,
|
|
172
|
+
data: {
|
|
173
|
+
runId: chunk.runId,
|
|
174
|
+
toolCallId: chunk.payload.toolCallId,
|
|
175
|
+
toolName: chunk.payload.toolName,
|
|
176
|
+
args: chunk.payload.args
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
case "tool-call-suspended":
|
|
180
|
+
return {
|
|
181
|
+
type: "data-tool-call-suspended",
|
|
182
|
+
id: chunk.payload.toolCallId,
|
|
183
|
+
data: {
|
|
184
|
+
runId: chunk.runId,
|
|
185
|
+
toolCallId: chunk.payload.toolCallId,
|
|
186
|
+
toolName: chunk.payload.toolName,
|
|
187
|
+
suspendPayload: chunk.payload.suspendPayload
|
|
188
|
+
}
|
|
189
|
+
};
|
|
116
190
|
case "tool-call-input-streaming-start":
|
|
117
191
|
return {
|
|
118
192
|
type: "tool-input-start",
|
|
@@ -203,6 +277,13 @@ function convertMastraChunkToAISDKv5({
|
|
|
203
277
|
type: "object",
|
|
204
278
|
object: chunk.object
|
|
205
279
|
};
|
|
280
|
+
case "tripwire":
|
|
281
|
+
return {
|
|
282
|
+
type: "data-tripwire",
|
|
283
|
+
data: {
|
|
284
|
+
tripwireReason: chunk.payload.tripwireReason
|
|
285
|
+
}
|
|
286
|
+
};
|
|
206
287
|
default:
|
|
207
288
|
if (chunk.type && "payload" in chunk && chunk.payload) {
|
|
208
289
|
return {
|
|
@@ -210,6 +291,9 @@ function convertMastraChunkToAISDKv5({
|
|
|
210
291
|
...chunk.payload || {}
|
|
211
292
|
};
|
|
212
293
|
}
|
|
294
|
+
if ("type" in chunk && chunk.type?.startsWith("data-")) {
|
|
295
|
+
return chunk;
|
|
296
|
+
}
|
|
213
297
|
return;
|
|
214
298
|
}
|
|
215
299
|
}
|
|
@@ -223,7 +307,7 @@ function convertFullStreamChunkToUIMessageStream({
|
|
|
223
307
|
sendFinish,
|
|
224
308
|
responseMessageId
|
|
225
309
|
}) {
|
|
226
|
-
const partType = part
|
|
310
|
+
const partType = part?.type;
|
|
227
311
|
switch (partType) {
|
|
228
312
|
case "text-start": {
|
|
229
313
|
return {
|
|
@@ -255,6 +339,14 @@ function convertFullStreamChunkToUIMessageStream({
|
|
|
255
339
|
};
|
|
256
340
|
}
|
|
257
341
|
case "reasoning-delta": {
|
|
342
|
+
if (sendReasoning) {
|
|
343
|
+
return {
|
|
344
|
+
type: "reasoning-delta",
|
|
345
|
+
id: part.id,
|
|
346
|
+
delta: part.text,
|
|
347
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
|
348
|
+
};
|
|
349
|
+
}
|
|
258
350
|
return;
|
|
259
351
|
}
|
|
260
352
|
case "reasoning-end": {
|
|
@@ -272,6 +364,25 @@ function convertFullStreamChunkToUIMessageStream({
|
|
|
272
364
|
};
|
|
273
365
|
}
|
|
274
366
|
case "source": {
|
|
367
|
+
if (sendSources && part.sourceType === "url") {
|
|
368
|
+
return {
|
|
369
|
+
type: "source-url",
|
|
370
|
+
sourceId: part.id,
|
|
371
|
+
url: part.url,
|
|
372
|
+
title: part.title,
|
|
373
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
if (sendSources && part.sourceType === "document") {
|
|
377
|
+
return {
|
|
378
|
+
type: "source-document",
|
|
379
|
+
sourceId: part.id,
|
|
380
|
+
mediaType: part.mediaType,
|
|
381
|
+
title: part.title,
|
|
382
|
+
filename: part.filename,
|
|
383
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
|
384
|
+
};
|
|
385
|
+
}
|
|
275
386
|
return;
|
|
276
387
|
}
|
|
277
388
|
case "tool-input-start": {
|
|
@@ -329,6 +440,14 @@ function convertFullStreamChunkToUIMessageStream({
|
|
|
329
440
|
toolCallId: part.toolCallId,
|
|
330
441
|
payload: part.output
|
|
331
442
|
};
|
|
443
|
+
} else if (isDataChunkType(part.output)) {
|
|
444
|
+
if (!("data" in part.output)) {
|
|
445
|
+
throw new Error(
|
|
446
|
+
`UI Messages require a data property when using data- prefixed chunks
|
|
447
|
+
${JSON.stringify(part)}`
|
|
448
|
+
);
|
|
449
|
+
}
|
|
450
|
+
return part.output;
|
|
332
451
|
}
|
|
333
452
|
return;
|
|
334
453
|
}
|
|
@@ -354,21 +473,23 @@ function convertFullStreamChunkToUIMessageStream({
|
|
|
354
473
|
return { type: "finish-step" };
|
|
355
474
|
}
|
|
356
475
|
case "start": {
|
|
357
|
-
{
|
|
476
|
+
if (sendStart) {
|
|
358
477
|
return {
|
|
359
478
|
type: "start",
|
|
360
479
|
...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {},
|
|
361
480
|
...responseMessageId != null ? { messageId: responseMessageId } : {}
|
|
362
481
|
};
|
|
363
482
|
}
|
|
483
|
+
return;
|
|
364
484
|
}
|
|
365
485
|
case "finish": {
|
|
366
|
-
{
|
|
486
|
+
if (sendFinish) {
|
|
367
487
|
return {
|
|
368
488
|
type: "finish",
|
|
369
489
|
...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {}
|
|
370
490
|
};
|
|
371
491
|
}
|
|
492
|
+
return;
|
|
372
493
|
}
|
|
373
494
|
case "abort": {
|
|
374
495
|
return part;
|
|
@@ -380,14 +501,25 @@ function convertFullStreamChunkToUIMessageStream({
|
|
|
380
501
|
return;
|
|
381
502
|
}
|
|
382
503
|
default: {
|
|
383
|
-
|
|
384
|
-
|
|
504
|
+
if (isDataChunkType(part)) {
|
|
505
|
+
if (!("data" in part)) {
|
|
506
|
+
throw new Error(
|
|
507
|
+
`UI Messages require a data property when using data- prefixed chunks
|
|
508
|
+
${JSON.stringify(part)}`
|
|
509
|
+
);
|
|
510
|
+
}
|
|
511
|
+
return part;
|
|
512
|
+
}
|
|
513
|
+
return;
|
|
385
514
|
}
|
|
386
515
|
}
|
|
387
516
|
}
|
|
388
517
|
|
|
389
518
|
// src/transformers.ts
|
|
390
|
-
|
|
519
|
+
var PRIMITIVE_CACHE_SYMBOL = Symbol("primitive-cache");
|
|
520
|
+
function WorkflowStreamToAISDKTransformer({
|
|
521
|
+
includeTextStreamParts
|
|
522
|
+
} = {}) {
|
|
391
523
|
const bufferedWorkflows = /* @__PURE__ */ new Map();
|
|
392
524
|
return new TransformStream({
|
|
393
525
|
start(controller) {
|
|
@@ -401,7 +533,7 @@ function WorkflowStreamToAISDKTransformer() {
|
|
|
401
533
|
});
|
|
402
534
|
},
|
|
403
535
|
transform(chunk, controller) {
|
|
404
|
-
const transformed = transformWorkflow(chunk, bufferedWorkflows);
|
|
536
|
+
const transformed = transformWorkflow(chunk, bufferedWorkflows, false, includeTextStreamParts);
|
|
405
537
|
if (transformed) controller.enqueue(transformed);
|
|
406
538
|
}
|
|
407
539
|
});
|
|
@@ -425,20 +557,37 @@ function AgentNetworkToAISDKTransformer() {
|
|
|
425
557
|
}
|
|
426
558
|
});
|
|
427
559
|
}
|
|
428
|
-
function AgentStreamToAISDKTransformer(
|
|
560
|
+
function AgentStreamToAISDKTransformer({
|
|
561
|
+
lastMessageId,
|
|
562
|
+
sendStart,
|
|
563
|
+
sendFinish,
|
|
564
|
+
sendReasoning,
|
|
565
|
+
sendSources,
|
|
566
|
+
messageMetadata,
|
|
567
|
+
onError
|
|
568
|
+
}) {
|
|
429
569
|
let bufferedSteps = /* @__PURE__ */ new Map();
|
|
570
|
+
let tripwireOccurred = false;
|
|
571
|
+
let finishEventSent = false;
|
|
430
572
|
return new TransformStream({
|
|
431
573
|
transform(chunk, controller) {
|
|
574
|
+
if (chunk.type === "tripwire") {
|
|
575
|
+
tripwireOccurred = true;
|
|
576
|
+
}
|
|
577
|
+
if (chunk.type === "finish") {
|
|
578
|
+
finishEventSent = true;
|
|
579
|
+
}
|
|
432
580
|
const part = convertMastraChunkToAISDKv5({ chunk, mode: "stream" });
|
|
433
581
|
const transformedChunk = convertFullStreamChunkToUIMessageStream({
|
|
434
582
|
part,
|
|
435
|
-
sendReasoning
|
|
436
|
-
sendSources
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
583
|
+
sendReasoning,
|
|
584
|
+
sendSources,
|
|
585
|
+
messageMetadataValue: messageMetadata?.({ part }),
|
|
586
|
+
sendStart,
|
|
587
|
+
sendFinish,
|
|
588
|
+
responseMessageId: lastMessageId,
|
|
589
|
+
onError(error) {
|
|
590
|
+
return onError ? onError(error) : safeParseErrorObject(error);
|
|
442
591
|
}
|
|
443
592
|
});
|
|
444
593
|
if (transformedChunk) {
|
|
@@ -458,6 +607,14 @@ function AgentStreamToAISDKTransformer() {
|
|
|
458
607
|
controller.enqueue(transformedChunk);
|
|
459
608
|
}
|
|
460
609
|
}
|
|
610
|
+
},
|
|
611
|
+
flush(controller) {
|
|
612
|
+
if (tripwireOccurred && !finishEventSent && sendFinish) {
|
|
613
|
+
controller.enqueue({
|
|
614
|
+
type: "finish",
|
|
615
|
+
finishReason: "other"
|
|
616
|
+
});
|
|
617
|
+
}
|
|
461
618
|
}
|
|
462
619
|
});
|
|
463
620
|
}
|
|
@@ -597,7 +754,7 @@ function transformAgent(payload, bufferedSteps) {
|
|
|
597
754
|
}
|
|
598
755
|
return null;
|
|
599
756
|
}
|
|
600
|
-
function transformWorkflow(payload, bufferedWorkflows, isNested) {
|
|
757
|
+
function transformWorkflow(payload, bufferedWorkflows, isNested, includeTextStreamParts) {
|
|
601
758
|
switch (payload.type) {
|
|
602
759
|
case "workflow-start":
|
|
603
760
|
bufferedWorkflows.set(payload.runId, {
|
|
@@ -620,7 +777,9 @@ function transformWorkflow(payload, bufferedWorkflows, isNested) {
|
|
|
620
777
|
name: payload.payload.id,
|
|
621
778
|
status: payload.payload.status,
|
|
622
779
|
input: payload.payload.payload ?? null,
|
|
623
|
-
output: null
|
|
780
|
+
output: null,
|
|
781
|
+
suspendPayload: null,
|
|
782
|
+
resumePayload: null
|
|
624
783
|
};
|
|
625
784
|
bufferedWorkflows.set(payload.runId, current);
|
|
626
785
|
return {
|
|
@@ -653,6 +812,27 @@ function transformWorkflow(payload, bufferedWorkflows, isNested) {
|
|
|
653
812
|
}
|
|
654
813
|
};
|
|
655
814
|
}
|
|
815
|
+
case "workflow-step-suspended": {
|
|
816
|
+
const current = bufferedWorkflows.get(payload.runId);
|
|
817
|
+
if (!current) return null;
|
|
818
|
+
current.steps[payload.payload.id] = {
|
|
819
|
+
...current.steps[payload.payload.id],
|
|
820
|
+
status: payload.payload.status,
|
|
821
|
+
suspendPayload: payload.payload.suspendPayload ?? null,
|
|
822
|
+
resumePayload: payload.payload.resumePayload ?? null,
|
|
823
|
+
output: null
|
|
824
|
+
};
|
|
825
|
+
return {
|
|
826
|
+
type: isNested ? "data-tool-workflow" : "data-workflow",
|
|
827
|
+
id: payload.runId,
|
|
828
|
+
data: {
|
|
829
|
+
name: current.name,
|
|
830
|
+
status: "suspended",
|
|
831
|
+
steps: current.steps,
|
|
832
|
+
output: null
|
|
833
|
+
}
|
|
834
|
+
};
|
|
835
|
+
}
|
|
656
836
|
case "workflow-finish": {
|
|
657
837
|
const current = bufferedWorkflows.get(payload.runId);
|
|
658
838
|
if (!current) return null;
|
|
@@ -667,175 +847,275 @@ function transformWorkflow(payload, bufferedWorkflows, isNested) {
|
|
|
667
847
|
}
|
|
668
848
|
};
|
|
669
849
|
}
|
|
670
|
-
|
|
850
|
+
case "workflow-step-output": {
|
|
851
|
+
const output = payload.payload.output;
|
|
852
|
+
if (includeTextStreamParts && output && isMastraTextStreamChunk(output)) {
|
|
853
|
+
const part = convertMastraChunkToAISDKv5({ chunk: output, mode: "stream" });
|
|
854
|
+
const transformedChunk = convertFullStreamChunkToUIMessageStream({
|
|
855
|
+
part,
|
|
856
|
+
onError(error) {
|
|
857
|
+
return safeParseErrorObject(error);
|
|
858
|
+
}
|
|
859
|
+
});
|
|
860
|
+
return transformedChunk;
|
|
861
|
+
}
|
|
862
|
+
if (output && isDataChunkType(output)) {
|
|
863
|
+
if (!("data" in output)) {
|
|
864
|
+
throw new Error(
|
|
865
|
+
`UI Messages require a data property when using data- prefixed chunks
|
|
866
|
+
${JSON.stringify(output)}`
|
|
867
|
+
);
|
|
868
|
+
}
|
|
869
|
+
return output;
|
|
870
|
+
}
|
|
671
871
|
return null;
|
|
872
|
+
}
|
|
873
|
+
default: {
|
|
874
|
+
if (isDataChunkType(payload)) {
|
|
875
|
+
if (!("data" in payload)) {
|
|
876
|
+
throw new Error(
|
|
877
|
+
`UI Messages require a data property when using data- prefixed chunks
|
|
878
|
+
${JSON.stringify(payload)}`
|
|
879
|
+
);
|
|
880
|
+
}
|
|
881
|
+
return payload;
|
|
882
|
+
}
|
|
883
|
+
return null;
|
|
884
|
+
}
|
|
672
885
|
}
|
|
673
886
|
}
|
|
674
887
|
function transformNetwork(payload, bufferedNetworks, isNested) {
|
|
675
888
|
switch (payload.type) {
|
|
676
889
|
case "routing-agent-start": {
|
|
677
|
-
if (!bufferedNetworks.has(payload.
|
|
678
|
-
bufferedNetworks.set(payload.
|
|
679
|
-
name: payload.payload.
|
|
680
|
-
steps: []
|
|
890
|
+
if (!bufferedNetworks.has(payload.runId)) {
|
|
891
|
+
bufferedNetworks.set(payload.runId, {
|
|
892
|
+
name: payload.payload.networkId,
|
|
893
|
+
steps: [],
|
|
894
|
+
usage: null,
|
|
895
|
+
output: null
|
|
681
896
|
});
|
|
682
897
|
}
|
|
898
|
+
const current = bufferedNetworks.get(payload.runId);
|
|
899
|
+
current.steps.push({
|
|
900
|
+
id: payload.payload.runId,
|
|
901
|
+
name: payload.payload.agentId,
|
|
902
|
+
status: "running",
|
|
903
|
+
iteration: payload.payload.inputData.iteration,
|
|
904
|
+
input: {
|
|
905
|
+
task: payload.payload.inputData.task,
|
|
906
|
+
threadId: payload.payload.inputData.threadId,
|
|
907
|
+
threadResourceId: payload.payload.inputData.threadResourceId
|
|
908
|
+
},
|
|
909
|
+
output: "",
|
|
910
|
+
task: null,
|
|
911
|
+
suspendPayload: null,
|
|
912
|
+
resumePayload: null,
|
|
913
|
+
[PRIMITIVE_CACHE_SYMBOL]: /* @__PURE__ */ new Map()
|
|
914
|
+
});
|
|
683
915
|
return {
|
|
684
916
|
type: isNested ? "data-tool-network" : "data-network",
|
|
685
|
-
id: payload.
|
|
917
|
+
id: payload.runId,
|
|
686
918
|
data: {
|
|
687
|
-
name: bufferedNetworks.get(payload.
|
|
919
|
+
name: bufferedNetworks.get(payload.runId).name,
|
|
688
920
|
status: "running",
|
|
689
|
-
|
|
921
|
+
usage: null,
|
|
922
|
+
steps: bufferedNetworks.get(payload.runId).steps,
|
|
690
923
|
output: null
|
|
691
924
|
}
|
|
692
925
|
};
|
|
693
926
|
}
|
|
927
|
+
case "routing-agent-text-start": {
|
|
928
|
+
const current = bufferedNetworks.get(payload.runId);
|
|
929
|
+
if (!current) return null;
|
|
930
|
+
return {
|
|
931
|
+
type: "text-start",
|
|
932
|
+
id: payload.runId
|
|
933
|
+
};
|
|
934
|
+
}
|
|
935
|
+
case "routing-agent-text-delta": {
|
|
936
|
+
const current = bufferedNetworks.get(payload.runId);
|
|
937
|
+
if (!current) return null;
|
|
938
|
+
return {
|
|
939
|
+
type: "text-delta",
|
|
940
|
+
id: payload.runId,
|
|
941
|
+
delta: payload.payload.text
|
|
942
|
+
};
|
|
943
|
+
}
|
|
694
944
|
case "agent-execution-start": {
|
|
695
|
-
const current = bufferedNetworks.get(payload.
|
|
945
|
+
const current = bufferedNetworks.get(payload.runId);
|
|
946
|
+
if (!current) return null;
|
|
696
947
|
current.steps.push({
|
|
948
|
+
id: payload.payload.runId,
|
|
697
949
|
name: payload.payload.agentId,
|
|
698
950
|
status: "running",
|
|
699
|
-
|
|
700
|
-
|
|
951
|
+
iteration: payload.payload.args?.iteration ?? 0,
|
|
952
|
+
input: { prompt: payload.payload.args?.prompt ?? "" },
|
|
953
|
+
output: null,
|
|
954
|
+
task: null,
|
|
955
|
+
suspendPayload: null,
|
|
956
|
+
resumePayload: null,
|
|
957
|
+
[PRIMITIVE_CACHE_SYMBOL]: /* @__PURE__ */ new Map()
|
|
701
958
|
});
|
|
702
|
-
bufferedNetworks.set(payload.
|
|
959
|
+
bufferedNetworks.set(payload.runId, current);
|
|
703
960
|
return {
|
|
704
961
|
type: isNested ? "data-tool-network" : "data-network",
|
|
705
|
-
id: payload.
|
|
962
|
+
id: payload.runId,
|
|
706
963
|
data: {
|
|
707
|
-
|
|
708
|
-
status: "running"
|
|
709
|
-
steps: current.steps,
|
|
710
|
-
output: null
|
|
964
|
+
...current,
|
|
965
|
+
status: "running"
|
|
711
966
|
}
|
|
712
967
|
};
|
|
713
968
|
}
|
|
714
969
|
case "workflow-execution-start": {
|
|
715
|
-
const current = bufferedNetworks.get(payload.
|
|
970
|
+
const current = bufferedNetworks.get(payload.runId);
|
|
971
|
+
if (!current) return null;
|
|
716
972
|
current.steps.push({
|
|
717
|
-
|
|
973
|
+
id: payload.payload.runId,
|
|
974
|
+
name: payload.payload.workflowId,
|
|
718
975
|
status: "running",
|
|
719
|
-
|
|
720
|
-
|
|
976
|
+
iteration: payload.payload.args?.iteration ?? 0,
|
|
977
|
+
input: { prompt: payload.payload.args?.prompt ?? "" },
|
|
978
|
+
output: null,
|
|
979
|
+
task: null,
|
|
980
|
+
suspendPayload: null,
|
|
981
|
+
resumePayload: null,
|
|
982
|
+
[PRIMITIVE_CACHE_SYMBOL]: /* @__PURE__ */ new Map()
|
|
721
983
|
});
|
|
722
|
-
bufferedNetworks.set(payload.
|
|
984
|
+
bufferedNetworks.set(payload.runId, current);
|
|
723
985
|
return {
|
|
724
986
|
type: isNested ? "data-tool-network" : "data-network",
|
|
725
|
-
id: payload.
|
|
987
|
+
id: payload.runId,
|
|
726
988
|
data: {
|
|
727
|
-
|
|
728
|
-
status: "running"
|
|
729
|
-
steps: current.steps,
|
|
730
|
-
output: null
|
|
989
|
+
...current,
|
|
990
|
+
status: "running"
|
|
731
991
|
}
|
|
732
992
|
};
|
|
733
993
|
}
|
|
734
994
|
case "tool-execution-start": {
|
|
735
|
-
const current = bufferedNetworks.get(payload.
|
|
995
|
+
const current = bufferedNetworks.get(payload.runId);
|
|
996
|
+
if (!current) return null;
|
|
736
997
|
current.steps.push({
|
|
998
|
+
id: payload.payload.args.toolCallId,
|
|
737
999
|
name: payload.payload.args?.toolName,
|
|
738
1000
|
status: "running",
|
|
1001
|
+
iteration: payload.payload.args?.iteration ? Number(payload.payload.args.iteration) : 0,
|
|
1002
|
+
task: {
|
|
1003
|
+
id: payload.payload.args?.toolName
|
|
1004
|
+
},
|
|
739
1005
|
input: payload.payload.args?.args || null,
|
|
740
|
-
output: null
|
|
1006
|
+
output: null,
|
|
1007
|
+
suspendPayload: null,
|
|
1008
|
+
resumePayload: null,
|
|
1009
|
+
[PRIMITIVE_CACHE_SYMBOL]: /* @__PURE__ */ new Map()
|
|
741
1010
|
});
|
|
742
|
-
bufferedNetworks.set(payload.
|
|
1011
|
+
bufferedNetworks.set(payload.runId, current);
|
|
743
1012
|
return {
|
|
744
1013
|
type: isNested ? "data-tool-network" : "data-network",
|
|
745
|
-
id: payload.
|
|
1014
|
+
id: payload.runId,
|
|
746
1015
|
data: {
|
|
747
|
-
|
|
748
|
-
status: "running"
|
|
749
|
-
steps: current.steps,
|
|
750
|
-
output: null
|
|
1016
|
+
...current,
|
|
1017
|
+
status: "running"
|
|
751
1018
|
}
|
|
752
1019
|
};
|
|
753
1020
|
}
|
|
754
1021
|
case "agent-execution-end": {
|
|
755
1022
|
const current = bufferedNetworks.get(payload.runId);
|
|
756
1023
|
if (!current) return null;
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
1024
|
+
const stepId = payload.payload.runId;
|
|
1025
|
+
const step = current.steps.find((step2) => step2.id === stepId);
|
|
1026
|
+
if (!step) {
|
|
1027
|
+
return null;
|
|
1028
|
+
}
|
|
1029
|
+
step.status = "success";
|
|
1030
|
+
step.output = payload.payload.result;
|
|
763
1031
|
return {
|
|
764
1032
|
type: isNested ? "data-tool-network" : "data-network",
|
|
765
1033
|
id: payload.runId,
|
|
766
1034
|
data: {
|
|
767
|
-
|
|
1035
|
+
...current,
|
|
1036
|
+
usage: payload.payload?.usage ?? current.usage,
|
|
768
1037
|
status: "running",
|
|
769
|
-
|
|
770
|
-
output: payload.payload.result ?? null
|
|
1038
|
+
output: payload.payload.result ?? current.output
|
|
771
1039
|
}
|
|
772
1040
|
};
|
|
773
1041
|
}
|
|
774
1042
|
case "tool-execution-end": {
|
|
775
1043
|
const current = bufferedNetworks.get(payload.runId);
|
|
776
1044
|
if (!current) return null;
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
1045
|
+
const stepId = payload.payload.toolCallId;
|
|
1046
|
+
const step = current.steps.find((step2) => step2.id === stepId);
|
|
1047
|
+
if (!step) {
|
|
1048
|
+
return null;
|
|
1049
|
+
}
|
|
1050
|
+
step.status = "success";
|
|
1051
|
+
step.output = payload.payload.result;
|
|
783
1052
|
return {
|
|
784
1053
|
type: isNested ? "data-tool-network" : "data-network",
|
|
785
1054
|
id: payload.runId,
|
|
786
1055
|
data: {
|
|
787
|
-
|
|
1056
|
+
...current,
|
|
788
1057
|
status: "running",
|
|
789
|
-
|
|
790
|
-
output: payload.payload.result ?? null
|
|
1058
|
+
output: payload.payload.result ?? current.output
|
|
791
1059
|
}
|
|
792
1060
|
};
|
|
793
1061
|
}
|
|
794
1062
|
case "workflow-execution-end": {
|
|
795
1063
|
const current = bufferedNetworks.get(payload.runId);
|
|
796
1064
|
if (!current) return null;
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
1065
|
+
const stepId = payload.payload.runId;
|
|
1066
|
+
const step = current.steps.find((step2) => step2.id === stepId);
|
|
1067
|
+
if (!step) {
|
|
1068
|
+
return null;
|
|
1069
|
+
}
|
|
1070
|
+
step.status = "success";
|
|
1071
|
+
step.output = payload.payload.result;
|
|
803
1072
|
return {
|
|
804
1073
|
type: isNested ? "data-tool-network" : "data-network",
|
|
805
1074
|
id: payload.runId,
|
|
806
1075
|
data: {
|
|
807
|
-
|
|
1076
|
+
...current,
|
|
1077
|
+
usage: payload.payload?.usage ?? current.usage,
|
|
808
1078
|
status: "running",
|
|
809
|
-
|
|
810
|
-
output: payload.payload.result ?? null
|
|
1079
|
+
output: payload.payload.result ?? current.output
|
|
811
1080
|
}
|
|
812
1081
|
};
|
|
813
1082
|
}
|
|
814
1083
|
case "routing-agent-end": {
|
|
815
|
-
const current = bufferedNetworks.get(payload.
|
|
1084
|
+
const current = bufferedNetworks.get(payload.runId);
|
|
816
1085
|
if (!current) return null;
|
|
1086
|
+
const stepId = payload.payload.runId;
|
|
1087
|
+
const step = current.steps.find((step2) => step2.id === stepId);
|
|
1088
|
+
if (!step) {
|
|
1089
|
+
return null;
|
|
1090
|
+
}
|
|
1091
|
+
step.status = "success";
|
|
1092
|
+
step.task = {
|
|
1093
|
+
id: payload.payload.primitiveId,
|
|
1094
|
+
type: payload.payload.primitiveType,
|
|
1095
|
+
name: payload.payload.task,
|
|
1096
|
+
reason: payload.payload.selectionReason
|
|
1097
|
+
};
|
|
1098
|
+
step.output = payload.payload.result;
|
|
817
1099
|
return {
|
|
818
1100
|
type: isNested ? "data-tool-network" : "data-network",
|
|
819
|
-
id: payload.
|
|
1101
|
+
id: payload.runId,
|
|
820
1102
|
data: {
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
output: payload.payload?.result ?? null
|
|
1103
|
+
...current,
|
|
1104
|
+
usage: payload.payload?.usage ?? current.usage,
|
|
1105
|
+
output: payload.payload?.result ?? current.output
|
|
825
1106
|
}
|
|
826
1107
|
};
|
|
827
1108
|
}
|
|
828
1109
|
case "network-execution-event-step-finish": {
|
|
829
|
-
const current = bufferedNetworks.get(payload.
|
|
1110
|
+
const current = bufferedNetworks.get(payload.runId);
|
|
830
1111
|
if (!current) return null;
|
|
831
1112
|
return {
|
|
832
1113
|
type: isNested ? "data-tool-network" : "data-network",
|
|
833
|
-
id: payload.
|
|
1114
|
+
id: payload.runId,
|
|
834
1115
|
data: {
|
|
835
|
-
|
|
1116
|
+
...current,
|
|
836
1117
|
status: "finished",
|
|
837
|
-
|
|
838
|
-
output: payload.payload?.result ?? null
|
|
1118
|
+
output: payload.payload?.result ?? current.output
|
|
839
1119
|
}
|
|
840
1120
|
};
|
|
841
1121
|
}
|
|
@@ -846,36 +1126,121 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
|
|
|
846
1126
|
type: isNested ? "data-tool-network" : "data-network",
|
|
847
1127
|
id: payload.runId,
|
|
848
1128
|
data: {
|
|
849
|
-
|
|
1129
|
+
...current,
|
|
1130
|
+
usage: payload.payload?.usage ?? current.usage,
|
|
850
1131
|
status: "finished",
|
|
851
|
-
|
|
852
|
-
output: payload.payload?.result ?? null
|
|
1132
|
+
output: payload.payload?.result ?? current.output
|
|
853
1133
|
}
|
|
854
1134
|
};
|
|
855
1135
|
}
|
|
856
|
-
default:
|
|
1136
|
+
default: {
|
|
1137
|
+
if (payload.type.startsWith("agent-execution-event-")) {
|
|
1138
|
+
const stepId = payload.payload.runId;
|
|
1139
|
+
const current = bufferedNetworks.get(payload.runId);
|
|
1140
|
+
if (!current) return null;
|
|
1141
|
+
const step = current.steps.find((step2) => step2.id === stepId);
|
|
1142
|
+
if (!step) {
|
|
1143
|
+
return null;
|
|
1144
|
+
}
|
|
1145
|
+
step[PRIMITIVE_CACHE_SYMBOL] = step[PRIMITIVE_CACHE_SYMBOL] || /* @__PURE__ */ new Map();
|
|
1146
|
+
const result = transformAgent(payload.payload, step[PRIMITIVE_CACHE_SYMBOL]);
|
|
1147
|
+
if (result) {
|
|
1148
|
+
const { request, response, ...data } = result.data;
|
|
1149
|
+
step.task = data;
|
|
1150
|
+
}
|
|
1151
|
+
}
|
|
1152
|
+
if (payload.type.startsWith("workflow-execution-event-")) {
|
|
1153
|
+
const stepId = payload.payload.runId;
|
|
1154
|
+
const current = bufferedNetworks.get(payload.runId);
|
|
1155
|
+
if (!current) return null;
|
|
1156
|
+
const step = current.steps.find((step2) => step2.id === stepId);
|
|
1157
|
+
if (!step) {
|
|
1158
|
+
return null;
|
|
1159
|
+
}
|
|
1160
|
+
step[PRIMITIVE_CACHE_SYMBOL] = step[PRIMITIVE_CACHE_SYMBOL] || /* @__PURE__ */ new Map();
|
|
1161
|
+
const result = transformWorkflow(payload.payload, step[PRIMITIVE_CACHE_SYMBOL]);
|
|
1162
|
+
if (result && "data" in result) {
|
|
1163
|
+
const data = result.data;
|
|
1164
|
+
step.task = data;
|
|
1165
|
+
if (data.name && step.task) {
|
|
1166
|
+
step.task.id = data.name;
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
}
|
|
1170
|
+
if (isDataChunkType(payload)) {
|
|
1171
|
+
if (!("data" in payload)) {
|
|
1172
|
+
throw new Error(
|
|
1173
|
+
`UI Messages require a data property when using data- prefixed chunks
|
|
1174
|
+
${JSON.stringify(payload)}`
|
|
1175
|
+
);
|
|
1176
|
+
}
|
|
1177
|
+
const { type, data } = payload;
|
|
1178
|
+
return { type, data };
|
|
1179
|
+
}
|
|
1180
|
+
if (isAgentExecutionDataChunkType(payload)) {
|
|
1181
|
+
if (!("data" in payload.payload)) {
|
|
1182
|
+
throw new Error(
|
|
1183
|
+
`UI Messages require a data property when using data- prefixed chunks
|
|
1184
|
+
${JSON.stringify(payload)}`
|
|
1185
|
+
);
|
|
1186
|
+
}
|
|
1187
|
+
const { type, data } = payload.payload;
|
|
1188
|
+
return { type, data };
|
|
1189
|
+
}
|
|
1190
|
+
if (isWorkflowExecutionDataChunkType(payload)) {
|
|
1191
|
+
if (!("data" in payload.payload)) {
|
|
1192
|
+
throw new Error(
|
|
1193
|
+
`UI Messages require a data property when using data- prefixed chunks
|
|
1194
|
+
${JSON.stringify(payload)}`
|
|
1195
|
+
);
|
|
1196
|
+
}
|
|
1197
|
+
const { type, data } = payload.payload;
|
|
1198
|
+
return { type, data };
|
|
1199
|
+
}
|
|
857
1200
|
return null;
|
|
1201
|
+
}
|
|
858
1202
|
}
|
|
859
1203
|
}
|
|
860
1204
|
|
|
861
|
-
// src/
|
|
862
|
-
function
|
|
1205
|
+
// src/convert-streams.ts
|
|
1206
|
+
function toAISdkV5Stream(stream, options = {
|
|
1207
|
+
from: "agent",
|
|
1208
|
+
sendStart: true,
|
|
1209
|
+
sendFinish: true
|
|
1210
|
+
}) {
|
|
863
1211
|
const from = options?.from;
|
|
864
1212
|
if (from === "workflow") {
|
|
865
|
-
|
|
1213
|
+
const includeTextStreamParts = options?.includeTextStreamParts ?? true;
|
|
1214
|
+
return stream.pipeThrough(
|
|
1215
|
+
WorkflowStreamToAISDKTransformer({ includeTextStreamParts })
|
|
1216
|
+
);
|
|
866
1217
|
}
|
|
867
1218
|
if (from === "network") {
|
|
868
1219
|
return stream.pipeThrough(AgentNetworkToAISDKTransformer());
|
|
869
1220
|
}
|
|
870
1221
|
const agentReadable = "fullStream" in stream ? stream.fullStream : stream;
|
|
871
|
-
return agentReadable.pipeThrough(
|
|
1222
|
+
return agentReadable.pipeThrough(
|
|
1223
|
+
AgentStreamToAISDKTransformer({
|
|
1224
|
+
lastMessageId: options?.lastMessageId,
|
|
1225
|
+
sendStart: options?.sendStart,
|
|
1226
|
+
sendFinish: options?.sendFinish,
|
|
1227
|
+
sendReasoning: options?.sendReasoning,
|
|
1228
|
+
sendSources: options?.sendSources,
|
|
1229
|
+
messageMetadata: options?.messageMetadata,
|
|
1230
|
+
onError: options?.onError
|
|
1231
|
+
})
|
|
1232
|
+
);
|
|
872
1233
|
}
|
|
873
1234
|
|
|
874
1235
|
// src/chat-route.ts
|
|
875
1236
|
function chatRoute({
|
|
876
1237
|
path = "/chat/:agentId",
|
|
877
1238
|
agent,
|
|
878
|
-
defaultOptions
|
|
1239
|
+
defaultOptions,
|
|
1240
|
+
sendStart = true,
|
|
1241
|
+
sendFinish = true,
|
|
1242
|
+
sendReasoning = false,
|
|
1243
|
+
sendSources = false
|
|
879
1244
|
}) {
|
|
880
1245
|
if (!agent && !path.includes("/:agentId")) {
|
|
881
1246
|
throw new Error("Path must include :agentId to route to the correct agent or pass the agent explicitly");
|
|
@@ -976,7 +1341,7 @@ function chatRoute({
|
|
|
976
1341
|
handler: async (c) => {
|
|
977
1342
|
const { messages, ...rest } = await c.req.json();
|
|
978
1343
|
const mastra = c.get("mastra");
|
|
979
|
-
const
|
|
1344
|
+
const requestContext = c.get("requestContext");
|
|
980
1345
|
let agentToUse = agent;
|
|
981
1346
|
if (!agent) {
|
|
982
1347
|
const agentId = c.req.param("agentId");
|
|
@@ -987,24 +1352,36 @@ function chatRoute({
|
|
|
987
1352
|
`Fixed agent ID was set together with an agentId path parameter. This can lead to unexpected behavior.`
|
|
988
1353
|
);
|
|
989
1354
|
}
|
|
990
|
-
if (
|
|
991
|
-
mastra.getLogger()?.warn(`"
|
|
1355
|
+
if (requestContext && defaultOptions?.requestContext) {
|
|
1356
|
+
mastra.getLogger()?.warn(`"requestContext" set in the route options will be overridden by the request's "requestContext".`);
|
|
992
1357
|
}
|
|
993
1358
|
if (!agentToUse) {
|
|
994
1359
|
throw new Error("Agent ID is required");
|
|
995
1360
|
}
|
|
996
|
-
const agentObj = mastra.
|
|
1361
|
+
const agentObj = mastra.getAgentById(agentToUse);
|
|
997
1362
|
if (!agentObj) {
|
|
998
1363
|
throw new Error(`Agent ${agentToUse} not found`);
|
|
999
1364
|
}
|
|
1000
1365
|
const result = await agentObj.stream(messages, {
|
|
1001
1366
|
...defaultOptions,
|
|
1002
1367
|
...rest,
|
|
1003
|
-
|
|
1368
|
+
requestContext: requestContext || defaultOptions?.requestContext
|
|
1004
1369
|
});
|
|
1370
|
+
let lastMessageId;
|
|
1371
|
+
if (messages.length > 0 && messages[messages.length - 1].role === "assistant") {
|
|
1372
|
+
lastMessageId = messages[messages.length - 1].id;
|
|
1373
|
+
}
|
|
1005
1374
|
const uiMessageStream = ai.createUIMessageStream({
|
|
1375
|
+
originalMessages: messages,
|
|
1006
1376
|
execute: async ({ writer }) => {
|
|
1007
|
-
for await (const part of
|
|
1377
|
+
for await (const part of toAISdkV5Stream(result, {
|
|
1378
|
+
from: "agent",
|
|
1379
|
+
lastMessageId,
|
|
1380
|
+
sendStart,
|
|
1381
|
+
sendFinish,
|
|
1382
|
+
sendReasoning,
|
|
1383
|
+
sendSources
|
|
1384
|
+
})) {
|
|
1008
1385
|
writer.write(part);
|
|
1009
1386
|
}
|
|
1010
1387
|
}
|
|
@@ -1017,7 +1394,8 @@ function chatRoute({
|
|
|
1017
1394
|
}
|
|
1018
1395
|
function workflowRoute({
|
|
1019
1396
|
path = "/api/workflows/:workflowId/stream",
|
|
1020
|
-
workflow
|
|
1397
|
+
workflow,
|
|
1398
|
+
includeTextStreamParts = true
|
|
1021
1399
|
}) {
|
|
1022
1400
|
if (!workflow && !path.includes("/:workflowId")) {
|
|
1023
1401
|
throw new Error("Path must include :workflowId to route to the correct workflow or pass the workflow explicitly");
|
|
@@ -1044,9 +1422,13 @@ function workflowRoute({
|
|
|
1044
1422
|
schema: {
|
|
1045
1423
|
type: "object",
|
|
1046
1424
|
properties: {
|
|
1425
|
+
runId: { type: "string" },
|
|
1426
|
+
resourceId: { type: "string" },
|
|
1047
1427
|
inputData: { type: "object", additionalProperties: true },
|
|
1048
|
-
|
|
1049
|
-
|
|
1428
|
+
resumeData: { type: "object", additionalProperties: true },
|
|
1429
|
+
requestContext: { type: "object", additionalProperties: true },
|
|
1430
|
+
tracingOptions: { type: "object", additionalProperties: true },
|
|
1431
|
+
step: { type: "string" }
|
|
1050
1432
|
}
|
|
1051
1433
|
}
|
|
1052
1434
|
}
|
|
@@ -1064,8 +1446,9 @@ function workflowRoute({
|
|
|
1064
1446
|
}
|
|
1065
1447
|
},
|
|
1066
1448
|
handler: async (c) => {
|
|
1067
|
-
const { inputData, ...rest } = await c.req.json();
|
|
1449
|
+
const { runId, resourceId, inputData, resumeData, ...rest } = await c.req.json();
|
|
1068
1450
|
const mastra = c.get("mastra");
|
|
1451
|
+
const requestContext = c.get("requestContext");
|
|
1069
1452
|
let workflowToUse = workflow;
|
|
1070
1453
|
if (!workflow) {
|
|
1071
1454
|
const workflowId = c.req.param("workflowId");
|
|
@@ -1079,15 +1462,20 @@ function workflowRoute({
|
|
|
1079
1462
|
if (!workflowToUse) {
|
|
1080
1463
|
throw new Error("Workflow ID is required");
|
|
1081
1464
|
}
|
|
1082
|
-
const workflowObj = mastra.
|
|
1465
|
+
const workflowObj = mastra.getWorkflowById(workflowToUse);
|
|
1083
1466
|
if (!workflowObj) {
|
|
1084
1467
|
throw new Error(`Workflow ${workflowToUse} not found`);
|
|
1085
1468
|
}
|
|
1086
|
-
|
|
1087
|
-
|
|
1469
|
+
if (requestContext && rest.requestContext) {
|
|
1470
|
+
mastra.getLogger()?.warn(
|
|
1471
|
+
`"requestContext" from the request body will be ignored because "requestContext" is already set in the route options.`
|
|
1472
|
+
);
|
|
1473
|
+
}
|
|
1474
|
+
const run = await workflowObj.createRun({ runId, resourceId, ...rest });
|
|
1475
|
+
const stream = resumeData ? run.resumeStream({ resumeData, ...rest, requestContext: requestContext || rest.requestContext }) : run.stream({ inputData, ...rest, requestContext: requestContext || rest.requestContext });
|
|
1088
1476
|
const uiMessageStream = ai.createUIMessageStream({
|
|
1089
1477
|
execute: async ({ writer }) => {
|
|
1090
|
-
for await (const part of
|
|
1478
|
+
for await (const part of toAISdkV5Stream(stream, { from: "workflow", includeTextStreamParts })) {
|
|
1091
1479
|
writer.write(part);
|
|
1092
1480
|
}
|
|
1093
1481
|
}
|
|
@@ -1127,13 +1515,12 @@ function networkRoute({
|
|
|
1127
1515
|
type: "object",
|
|
1128
1516
|
properties: {
|
|
1129
1517
|
messages: { type: "array", items: { type: "object" } },
|
|
1130
|
-
|
|
1518
|
+
requestContext: { type: "object", additionalProperties: true },
|
|
1131
1519
|
runId: { type: "string" },
|
|
1132
1520
|
maxSteps: { type: "number" },
|
|
1133
1521
|
threadId: { type: "string" },
|
|
1134
1522
|
resourceId: { type: "string" },
|
|
1135
1523
|
modelSettings: { type: "object", additionalProperties: true },
|
|
1136
|
-
telemetry: { type: "object", additionalProperties: true },
|
|
1137
1524
|
tools: { type: "array", items: { type: "object" } }
|
|
1138
1525
|
},
|
|
1139
1526
|
required: ["messages"]
|
|
@@ -1172,7 +1559,7 @@ function networkRoute({
|
|
|
1172
1559
|
if (!agentToUse) {
|
|
1173
1560
|
throw new Error("Agent ID is required");
|
|
1174
1561
|
}
|
|
1175
|
-
const agentObj = mastra.
|
|
1562
|
+
const agentObj = mastra.getAgentById(agentToUse);
|
|
1176
1563
|
if (!agentObj) {
|
|
1177
1564
|
throw new Error(`Agent ${agentToUse} not found`);
|
|
1178
1565
|
}
|
|
@@ -1182,7 +1569,7 @@ function networkRoute({
|
|
|
1182
1569
|
});
|
|
1183
1570
|
const uiMessageStream = ai.createUIMessageStream({
|
|
1184
1571
|
execute: async ({ writer }) => {
|
|
1185
|
-
for await (const part of
|
|
1572
|
+
for await (const part of toAISdkV5Stream(result, { from: "network" })) {
|
|
1186
1573
|
writer.write(part);
|
|
1187
1574
|
}
|
|
1188
1575
|
}
|
|
@@ -1192,9 +1579,17 @@ function networkRoute({
|
|
|
1192
1579
|
});
|
|
1193
1580
|
}
|
|
1194
1581
|
|
|
1582
|
+
// src/to-ai-sdk-format.ts
|
|
1583
|
+
function toAISdkFormat() {
|
|
1584
|
+
throw new Error(
|
|
1585
|
+
'toAISdkFormat() has been deprecated. Please use toAISdkStream() instead.\n\nMigration:\n import { toAISdkFormat } from "@mastra/ai-sdk";\n // Change to:\n import { toAISdkStream } from "@mastra/ai-sdk";\n\nThe function signature remains the same.'
|
|
1586
|
+
);
|
|
1587
|
+
}
|
|
1588
|
+
|
|
1195
1589
|
exports.chatRoute = chatRoute;
|
|
1196
1590
|
exports.networkRoute = networkRoute;
|
|
1197
1591
|
exports.toAISdkFormat = toAISdkFormat;
|
|
1592
|
+
exports.toAISdkStream = toAISdkV5Stream;
|
|
1198
1593
|
exports.workflowRoute = workflowRoute;
|
|
1199
1594
|
//# sourceMappingURL=index.cjs.map
|
|
1200
1595
|
//# sourceMappingURL=index.cjs.map
|