@mastra/ai-sdk 0.0.0-just-snapshot-20251014192224 → 0.0.0-main-test-05-11-2025-2-20251105214713
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 +142 -3
- package/README.md +65 -1
- 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 +18 -0
- package/dist/convert-streams.d.ts.map +1 -0
- package/dist/helpers.d.ts +2 -3
- package/dist/helpers.d.ts.map +1 -1
- package/dist/index.cjs +216 -81
- 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 +216 -82
- 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 +50 -24
- 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 +10 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/workflow-route.d.ts +1 -1
- package/dist/workflow-route.d.ts.map +1 -1
- package/package.json +19 -6
package/dist/index.cjs
CHANGED
|
@@ -5,6 +5,33 @@ 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
|
+
function safeParseErrorObject(obj) {
|
|
14
|
+
if (typeof obj !== "object" || obj === null) {
|
|
15
|
+
return String(obj);
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
const stringified = JSON.stringify(obj);
|
|
19
|
+
if (stringified === "{}") {
|
|
20
|
+
return String(obj);
|
|
21
|
+
}
|
|
22
|
+
return stringified;
|
|
23
|
+
} catch {
|
|
24
|
+
return String(obj);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
var isAgentExecutionDataChunkType = (chunk) => {
|
|
28
|
+
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-");
|
|
29
|
+
};
|
|
30
|
+
var isWorkflowExecutionDataChunkType = (chunk) => {
|
|
31
|
+
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-");
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
// src/helpers.ts
|
|
8
35
|
function convertMastraChunkToAISDKv5({
|
|
9
36
|
chunk,
|
|
10
37
|
mode = "stream"
|
|
@@ -210,6 +237,9 @@ function convertMastraChunkToAISDKv5({
|
|
|
210
237
|
...chunk.payload || {}
|
|
211
238
|
};
|
|
212
239
|
}
|
|
240
|
+
if ("type" in chunk && chunk.type?.startsWith("data-")) {
|
|
241
|
+
return chunk;
|
|
242
|
+
}
|
|
213
243
|
return;
|
|
214
244
|
}
|
|
215
245
|
}
|
|
@@ -223,7 +253,7 @@ function convertFullStreamChunkToUIMessageStream({
|
|
|
223
253
|
sendFinish,
|
|
224
254
|
responseMessageId
|
|
225
255
|
}) {
|
|
226
|
-
const partType = part
|
|
256
|
+
const partType = part?.type;
|
|
227
257
|
switch (partType) {
|
|
228
258
|
case "text-start": {
|
|
229
259
|
return {
|
|
@@ -380,8 +410,16 @@ function convertFullStreamChunkToUIMessageStream({
|
|
|
380
410
|
return;
|
|
381
411
|
}
|
|
382
412
|
default: {
|
|
383
|
-
|
|
384
|
-
|
|
413
|
+
if (isDataChunkType(part)) {
|
|
414
|
+
if (!("data" in part)) {
|
|
415
|
+
throw new Error(
|
|
416
|
+
`UI Messages require a data property when using data- prefixed chunks
|
|
417
|
+
${JSON.stringify(part)}`
|
|
418
|
+
);
|
|
419
|
+
}
|
|
420
|
+
return part;
|
|
421
|
+
}
|
|
422
|
+
return;
|
|
385
423
|
}
|
|
386
424
|
}
|
|
387
425
|
}
|
|
@@ -425,7 +463,7 @@ function AgentNetworkToAISDKTransformer() {
|
|
|
425
463
|
}
|
|
426
464
|
});
|
|
427
465
|
}
|
|
428
|
-
function AgentStreamToAISDKTransformer() {
|
|
466
|
+
function AgentStreamToAISDKTransformer(lastMessageId) {
|
|
429
467
|
let bufferedSteps = /* @__PURE__ */ new Map();
|
|
430
468
|
return new TransformStream({
|
|
431
469
|
transform(chunk, controller) {
|
|
@@ -436,9 +474,9 @@ function AgentStreamToAISDKTransformer() {
|
|
|
436
474
|
sendSources: false,
|
|
437
475
|
sendStart: true,
|
|
438
476
|
sendFinish: true,
|
|
439
|
-
responseMessageId:
|
|
440
|
-
onError() {
|
|
441
|
-
return
|
|
477
|
+
responseMessageId: lastMessageId,
|
|
478
|
+
onError(error) {
|
|
479
|
+
return safeParseErrorObject(error);
|
|
442
480
|
}
|
|
443
481
|
});
|
|
444
482
|
if (transformedChunk) {
|
|
@@ -620,7 +658,9 @@ function transformWorkflow(payload, bufferedWorkflows, isNested) {
|
|
|
620
658
|
name: payload.payload.id,
|
|
621
659
|
status: payload.payload.status,
|
|
622
660
|
input: payload.payload.payload ?? null,
|
|
623
|
-
output: null
|
|
661
|
+
output: null,
|
|
662
|
+
suspendPayload: null,
|
|
663
|
+
resumePayload: null
|
|
624
664
|
};
|
|
625
665
|
bufferedWorkflows.set(payload.runId, current);
|
|
626
666
|
return {
|
|
@@ -653,6 +693,27 @@ function transformWorkflow(payload, bufferedWorkflows, isNested) {
|
|
|
653
693
|
}
|
|
654
694
|
};
|
|
655
695
|
}
|
|
696
|
+
case "workflow-step-suspended": {
|
|
697
|
+
const current = bufferedWorkflows.get(payload.runId);
|
|
698
|
+
if (!current) return null;
|
|
699
|
+
current.steps[payload.payload.id] = {
|
|
700
|
+
...current.steps[payload.payload.id],
|
|
701
|
+
status: payload.payload.status,
|
|
702
|
+
suspendPayload: payload.payload.suspendPayload ?? null,
|
|
703
|
+
resumePayload: payload.payload.resumePayload ?? null,
|
|
704
|
+
output: null
|
|
705
|
+
};
|
|
706
|
+
return {
|
|
707
|
+
type: isNested ? "data-tool-workflow" : "data-workflow",
|
|
708
|
+
id: payload.runId,
|
|
709
|
+
data: {
|
|
710
|
+
name: current.name,
|
|
711
|
+
status: "suspended",
|
|
712
|
+
steps: current.steps,
|
|
713
|
+
output: null
|
|
714
|
+
}
|
|
715
|
+
};
|
|
716
|
+
}
|
|
656
717
|
case "workflow-finish": {
|
|
657
718
|
const current = bufferedWorkflows.get(payload.runId);
|
|
658
719
|
if (!current) return null;
|
|
@@ -667,87 +728,117 @@ function transformWorkflow(payload, bufferedWorkflows, isNested) {
|
|
|
667
728
|
}
|
|
668
729
|
};
|
|
669
730
|
}
|
|
670
|
-
default:
|
|
731
|
+
default: {
|
|
732
|
+
if (isDataChunkType(payload)) {
|
|
733
|
+
if (!("data" in payload)) {
|
|
734
|
+
throw new Error(
|
|
735
|
+
`UI Messages require a data property when using data- prefixed chunks
|
|
736
|
+
${JSON.stringify(payload)}`
|
|
737
|
+
);
|
|
738
|
+
}
|
|
739
|
+
return payload;
|
|
740
|
+
}
|
|
671
741
|
return null;
|
|
742
|
+
}
|
|
672
743
|
}
|
|
673
744
|
}
|
|
674
745
|
function transformNetwork(payload, bufferedNetworks, isNested) {
|
|
675
746
|
switch (payload.type) {
|
|
676
747
|
case "routing-agent-start": {
|
|
677
|
-
if (!bufferedNetworks.has(payload.
|
|
678
|
-
bufferedNetworks.set(payload.
|
|
748
|
+
if (!bufferedNetworks.has(payload.runId)) {
|
|
749
|
+
bufferedNetworks.set(payload.runId, {
|
|
679
750
|
name: payload.payload.agentId,
|
|
680
|
-
steps: []
|
|
751
|
+
steps: [],
|
|
752
|
+
usage: null,
|
|
753
|
+
output: null
|
|
681
754
|
});
|
|
682
755
|
}
|
|
683
756
|
return {
|
|
684
757
|
type: isNested ? "data-tool-network" : "data-network",
|
|
685
|
-
id: payload.
|
|
758
|
+
id: payload.runId,
|
|
686
759
|
data: {
|
|
687
|
-
name: bufferedNetworks.get(payload.
|
|
760
|
+
name: bufferedNetworks.get(payload.runId).name,
|
|
688
761
|
status: "running",
|
|
689
|
-
|
|
762
|
+
usage: null,
|
|
763
|
+
steps: bufferedNetworks.get(payload.runId).steps,
|
|
690
764
|
output: null
|
|
691
765
|
}
|
|
692
766
|
};
|
|
693
767
|
}
|
|
768
|
+
case "routing-agent-text-start": {
|
|
769
|
+
const current = bufferedNetworks.get(payload.runId);
|
|
770
|
+
if (!current) return null;
|
|
771
|
+
return {
|
|
772
|
+
type: "text-start",
|
|
773
|
+
id: payload.runId
|
|
774
|
+
};
|
|
775
|
+
}
|
|
776
|
+
case "routing-agent-text-delta": {
|
|
777
|
+
const current = bufferedNetworks.get(payload.runId);
|
|
778
|
+
if (!current) return null;
|
|
779
|
+
return {
|
|
780
|
+
type: "text-delta",
|
|
781
|
+
id: payload.runId,
|
|
782
|
+
delta: payload.payload.text
|
|
783
|
+
};
|
|
784
|
+
}
|
|
694
785
|
case "agent-execution-start": {
|
|
695
|
-
const current = bufferedNetworks.get(payload.
|
|
786
|
+
const current = bufferedNetworks.get(payload.runId) || { name: "", steps: [], usage: null, output: null };
|
|
696
787
|
current.steps.push({
|
|
697
788
|
name: payload.payload.agentId,
|
|
698
789
|
status: "running",
|
|
699
790
|
input: payload.payload.args || null,
|
|
700
|
-
output: null
|
|
791
|
+
output: null,
|
|
792
|
+
suspendPayload: null,
|
|
793
|
+
resumePayload: null
|
|
701
794
|
});
|
|
702
|
-
bufferedNetworks.set(payload.
|
|
795
|
+
bufferedNetworks.set(payload.runId, current);
|
|
703
796
|
return {
|
|
704
797
|
type: isNested ? "data-tool-network" : "data-network",
|
|
705
|
-
id: payload.
|
|
798
|
+
id: payload.runId,
|
|
706
799
|
data: {
|
|
707
|
-
|
|
708
|
-
status: "running"
|
|
709
|
-
steps: current.steps,
|
|
710
|
-
output: null
|
|
800
|
+
...current,
|
|
801
|
+
status: "running"
|
|
711
802
|
}
|
|
712
803
|
};
|
|
713
804
|
}
|
|
714
805
|
case "workflow-execution-start": {
|
|
715
|
-
const current = bufferedNetworks.get(payload.
|
|
806
|
+
const current = bufferedNetworks.get(payload.runId) || { name: "", steps: [], usage: null, output: null };
|
|
716
807
|
current.steps.push({
|
|
717
808
|
name: payload.payload.name,
|
|
718
809
|
status: "running",
|
|
719
810
|
input: payload.payload.args || null,
|
|
720
|
-
output: null
|
|
811
|
+
output: null,
|
|
812
|
+
suspendPayload: null,
|
|
813
|
+
resumePayload: null
|
|
721
814
|
});
|
|
722
|
-
bufferedNetworks.set(payload.
|
|
815
|
+
bufferedNetworks.set(payload.runId, current);
|
|
723
816
|
return {
|
|
724
817
|
type: isNested ? "data-tool-network" : "data-network",
|
|
725
|
-
id: payload.
|
|
818
|
+
id: payload.runId,
|
|
726
819
|
data: {
|
|
727
|
-
|
|
728
|
-
status: "running"
|
|
729
|
-
steps: current.steps,
|
|
730
|
-
output: null
|
|
820
|
+
...current,
|
|
821
|
+
status: "running"
|
|
731
822
|
}
|
|
732
823
|
};
|
|
733
824
|
}
|
|
734
825
|
case "tool-execution-start": {
|
|
735
|
-
const current = bufferedNetworks.get(payload.
|
|
826
|
+
const current = bufferedNetworks.get(payload.runId) || { name: "", steps: [], usage: null, output: null };
|
|
736
827
|
current.steps.push({
|
|
737
828
|
name: payload.payload.args?.toolName,
|
|
738
829
|
status: "running",
|
|
739
830
|
input: payload.payload.args?.args || null,
|
|
740
|
-
output: null
|
|
831
|
+
output: null,
|
|
832
|
+
suspendPayload: null,
|
|
833
|
+
resumePayload: null
|
|
741
834
|
});
|
|
742
|
-
bufferedNetworks.set(payload.
|
|
835
|
+
bufferedNetworks.set(payload.runId, current);
|
|
743
836
|
return {
|
|
744
837
|
type: isNested ? "data-tool-network" : "data-network",
|
|
745
|
-
id: payload.
|
|
838
|
+
id: payload.runId,
|
|
746
839
|
data: {
|
|
747
|
-
|
|
748
|
-
status: "running"
|
|
749
|
-
steps: current.steps,
|
|
750
|
-
output: null
|
|
840
|
+
...current,
|
|
841
|
+
status: "running"
|
|
751
842
|
}
|
|
752
843
|
};
|
|
753
844
|
}
|
|
@@ -758,16 +849,18 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
|
|
|
758
849
|
name: payload.payload.agentId,
|
|
759
850
|
status: "success",
|
|
760
851
|
input: null,
|
|
761
|
-
output: payload.payload.result
|
|
852
|
+
output: payload.payload.result,
|
|
853
|
+
suspendPayload: null,
|
|
854
|
+
resumePayload: null
|
|
762
855
|
});
|
|
763
856
|
return {
|
|
764
857
|
type: isNested ? "data-tool-network" : "data-network",
|
|
765
858
|
id: payload.runId,
|
|
766
859
|
data: {
|
|
767
|
-
|
|
860
|
+
...current,
|
|
861
|
+
usage: payload.payload?.usage ?? current.usage,
|
|
768
862
|
status: "running",
|
|
769
|
-
|
|
770
|
-
output: payload.payload.result ?? null
|
|
863
|
+
output: payload.payload.result ?? current.output
|
|
771
864
|
}
|
|
772
865
|
};
|
|
773
866
|
}
|
|
@@ -778,16 +871,17 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
|
|
|
778
871
|
name: payload.payload.toolName,
|
|
779
872
|
status: "success",
|
|
780
873
|
input: null,
|
|
781
|
-
output: payload.payload.result
|
|
874
|
+
output: payload.payload.result,
|
|
875
|
+
suspendPayload: null,
|
|
876
|
+
resumePayload: null
|
|
782
877
|
});
|
|
783
878
|
return {
|
|
784
879
|
type: isNested ? "data-tool-network" : "data-network",
|
|
785
880
|
id: payload.runId,
|
|
786
881
|
data: {
|
|
787
|
-
|
|
882
|
+
...current,
|
|
788
883
|
status: "running",
|
|
789
|
-
|
|
790
|
-
output: payload.payload.result ?? null
|
|
884
|
+
output: payload.payload.result ?? current.output
|
|
791
885
|
}
|
|
792
886
|
};
|
|
793
887
|
}
|
|
@@ -798,44 +892,45 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
|
|
|
798
892
|
name: payload.payload.name,
|
|
799
893
|
status: "success",
|
|
800
894
|
input: null,
|
|
801
|
-
output: payload.payload.result
|
|
895
|
+
output: payload.payload.result,
|
|
896
|
+
suspendPayload: null,
|
|
897
|
+
resumePayload: null
|
|
802
898
|
});
|
|
803
899
|
return {
|
|
804
900
|
type: isNested ? "data-tool-network" : "data-network",
|
|
805
901
|
id: payload.runId,
|
|
806
902
|
data: {
|
|
807
|
-
|
|
903
|
+
...current,
|
|
904
|
+
usage: payload.payload?.usage ?? current.usage,
|
|
808
905
|
status: "running",
|
|
809
|
-
|
|
810
|
-
output: payload.payload.result ?? null
|
|
906
|
+
output: payload.payload.result ?? current.output
|
|
811
907
|
}
|
|
812
908
|
};
|
|
813
909
|
}
|
|
814
910
|
case "routing-agent-end": {
|
|
815
|
-
const current = bufferedNetworks.get(payload.
|
|
911
|
+
const current = bufferedNetworks.get(payload.runId);
|
|
816
912
|
if (!current) return null;
|
|
817
913
|
return {
|
|
818
914
|
type: isNested ? "data-tool-network" : "data-network",
|
|
819
|
-
id: payload.
|
|
915
|
+
id: payload.runId,
|
|
820
916
|
data: {
|
|
821
|
-
|
|
917
|
+
...current,
|
|
822
918
|
status: "finished",
|
|
823
|
-
|
|
824
|
-
output: payload.payload?.result ??
|
|
919
|
+
usage: payload.payload?.usage ?? current.usage,
|
|
920
|
+
output: payload.payload?.result ?? current.output
|
|
825
921
|
}
|
|
826
922
|
};
|
|
827
923
|
}
|
|
828
924
|
case "network-execution-event-step-finish": {
|
|
829
|
-
const current = bufferedNetworks.get(payload.
|
|
925
|
+
const current = bufferedNetworks.get(payload.runId);
|
|
830
926
|
if (!current) return null;
|
|
831
927
|
return {
|
|
832
928
|
type: isNested ? "data-tool-network" : "data-network",
|
|
833
|
-
id: payload.
|
|
929
|
+
id: payload.runId,
|
|
834
930
|
data: {
|
|
835
|
-
|
|
931
|
+
...current,
|
|
836
932
|
status: "finished",
|
|
837
|
-
|
|
838
|
-
output: payload.payload?.result ?? null
|
|
933
|
+
output: payload.payload?.result ?? current.output
|
|
839
934
|
}
|
|
840
935
|
};
|
|
841
936
|
}
|
|
@@ -846,20 +941,48 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
|
|
|
846
941
|
type: isNested ? "data-tool-network" : "data-network",
|
|
847
942
|
id: payload.runId,
|
|
848
943
|
data: {
|
|
849
|
-
|
|
944
|
+
...current,
|
|
945
|
+
usage: payload.payload?.usage ?? current.usage,
|
|
850
946
|
status: "finished",
|
|
851
|
-
|
|
852
|
-
output: payload.payload?.result ?? null
|
|
947
|
+
output: payload.payload?.result ?? current.output
|
|
853
948
|
}
|
|
854
949
|
};
|
|
855
950
|
}
|
|
856
|
-
default:
|
|
951
|
+
default: {
|
|
952
|
+
if (isDataChunkType(payload)) {
|
|
953
|
+
if (!("data" in payload)) {
|
|
954
|
+
throw new Error(
|
|
955
|
+
`UI Messages require a data property when using data- prefixed chunks
|
|
956
|
+
${JSON.stringify(payload)}`
|
|
957
|
+
);
|
|
958
|
+
}
|
|
959
|
+
return payload;
|
|
960
|
+
}
|
|
961
|
+
if (isAgentExecutionDataChunkType(payload)) {
|
|
962
|
+
if (!("data" in payload.payload)) {
|
|
963
|
+
throw new Error(
|
|
964
|
+
`UI Messages require a data property when using data- prefixed chunks
|
|
965
|
+
${JSON.stringify(payload)}`
|
|
966
|
+
);
|
|
967
|
+
}
|
|
968
|
+
return payload.payload;
|
|
969
|
+
}
|
|
970
|
+
if (isWorkflowExecutionDataChunkType(payload)) {
|
|
971
|
+
if (!("data" in payload.payload)) {
|
|
972
|
+
throw new Error(
|
|
973
|
+
`UI Messages require a data property when using data- prefixed chunks
|
|
974
|
+
${JSON.stringify(payload)}`
|
|
975
|
+
);
|
|
976
|
+
}
|
|
977
|
+
return payload.payload;
|
|
978
|
+
}
|
|
857
979
|
return null;
|
|
980
|
+
}
|
|
858
981
|
}
|
|
859
982
|
}
|
|
860
983
|
|
|
861
|
-
// src/
|
|
862
|
-
function
|
|
984
|
+
// src/convert-streams.ts
|
|
985
|
+
function toAISdkV5Stream(stream, options = { from: "agent" }) {
|
|
863
986
|
const from = options?.from;
|
|
864
987
|
if (from === "workflow") {
|
|
865
988
|
return stream.pipeThrough(WorkflowStreamToAISDKTransformer());
|
|
@@ -868,7 +991,7 @@ function toAISdkFormat(stream, options = { from: "agent" }) {
|
|
|
868
991
|
return stream.pipeThrough(AgentNetworkToAISDKTransformer());
|
|
869
992
|
}
|
|
870
993
|
const agentReadable = "fullStream" in stream ? stream.fullStream : stream;
|
|
871
|
-
return agentReadable.pipeThrough(AgentStreamToAISDKTransformer());
|
|
994
|
+
return agentReadable.pipeThrough(AgentStreamToAISDKTransformer(options?.lastMessageId));
|
|
872
995
|
}
|
|
873
996
|
|
|
874
997
|
// src/chat-route.ts
|
|
@@ -976,7 +1099,7 @@ function chatRoute({
|
|
|
976
1099
|
handler: async (c) => {
|
|
977
1100
|
const { messages, ...rest } = await c.req.json();
|
|
978
1101
|
const mastra = c.get("mastra");
|
|
979
|
-
const
|
|
1102
|
+
const requestContext = c.get("requestContext");
|
|
980
1103
|
let agentToUse = agent;
|
|
981
1104
|
if (!agent) {
|
|
982
1105
|
const agentId = c.req.param("agentId");
|
|
@@ -987,8 +1110,8 @@ function chatRoute({
|
|
|
987
1110
|
`Fixed agent ID was set together with an agentId path parameter. This can lead to unexpected behavior.`
|
|
988
1111
|
);
|
|
989
1112
|
}
|
|
990
|
-
if (
|
|
991
|
-
mastra.getLogger()?.warn(`"
|
|
1113
|
+
if (requestContext && defaultOptions?.requestContext) {
|
|
1114
|
+
mastra.getLogger()?.warn(`"requestContext" set in the route options will be overridden by the request's "requestContext".`);
|
|
992
1115
|
}
|
|
993
1116
|
if (!agentToUse) {
|
|
994
1117
|
throw new Error("Agent ID is required");
|
|
@@ -1000,11 +1123,16 @@ function chatRoute({
|
|
|
1000
1123
|
const result = await agentObj.stream(messages, {
|
|
1001
1124
|
...defaultOptions,
|
|
1002
1125
|
...rest,
|
|
1003
|
-
|
|
1126
|
+
requestContext: requestContext || defaultOptions?.requestContext
|
|
1004
1127
|
});
|
|
1128
|
+
let lastMessageId;
|
|
1129
|
+
if (messages.length > 0 && messages[messages.length - 1].role === "assistant") {
|
|
1130
|
+
lastMessageId = messages[messages.length - 1].id;
|
|
1131
|
+
}
|
|
1005
1132
|
const uiMessageStream = ai.createUIMessageStream({
|
|
1133
|
+
originalMessages: messages,
|
|
1006
1134
|
execute: async ({ writer }) => {
|
|
1007
|
-
for await (const part of
|
|
1135
|
+
for await (const part of toAISdkV5Stream(result, { from: "agent", lastMessageId })) {
|
|
1008
1136
|
writer.write(part);
|
|
1009
1137
|
}
|
|
1010
1138
|
}
|
|
@@ -1045,7 +1173,7 @@ function workflowRoute({
|
|
|
1045
1173
|
type: "object",
|
|
1046
1174
|
properties: {
|
|
1047
1175
|
inputData: { type: "object", additionalProperties: true },
|
|
1048
|
-
|
|
1176
|
+
requestContext: { type: "object", additionalProperties: true },
|
|
1049
1177
|
tracingOptions: { type: "object", additionalProperties: true }
|
|
1050
1178
|
}
|
|
1051
1179
|
}
|
|
@@ -1064,7 +1192,7 @@ function workflowRoute({
|
|
|
1064
1192
|
}
|
|
1065
1193
|
},
|
|
1066
1194
|
handler: async (c) => {
|
|
1067
|
-
const { inputData, ...rest } = await c.req.json();
|
|
1195
|
+
const { inputData, resumeData, ...rest } = await c.req.json();
|
|
1068
1196
|
const mastra = c.get("mastra");
|
|
1069
1197
|
let workflowToUse = workflow;
|
|
1070
1198
|
if (!workflow) {
|
|
@@ -1083,11 +1211,11 @@ function workflowRoute({
|
|
|
1083
1211
|
if (!workflowObj) {
|
|
1084
1212
|
throw new Error(`Workflow ${workflowToUse} not found`);
|
|
1085
1213
|
}
|
|
1086
|
-
const run = await workflowObj.
|
|
1087
|
-
const stream = run.
|
|
1214
|
+
const run = await workflowObj.createRun();
|
|
1215
|
+
const stream = resumeData ? run.resumeStream({ resumeData, ...rest }) : run.stream({ inputData, ...rest });
|
|
1088
1216
|
const uiMessageStream = ai.createUIMessageStream({
|
|
1089
1217
|
execute: async ({ writer }) => {
|
|
1090
|
-
for await (const part of
|
|
1218
|
+
for await (const part of toAISdkV5Stream(stream, { from: "workflow" })) {
|
|
1091
1219
|
writer.write(part);
|
|
1092
1220
|
}
|
|
1093
1221
|
}
|
|
@@ -1127,13 +1255,12 @@ function networkRoute({
|
|
|
1127
1255
|
type: "object",
|
|
1128
1256
|
properties: {
|
|
1129
1257
|
messages: { type: "array", items: { type: "object" } },
|
|
1130
|
-
|
|
1258
|
+
requestContext: { type: "object", additionalProperties: true },
|
|
1131
1259
|
runId: { type: "string" },
|
|
1132
1260
|
maxSteps: { type: "number" },
|
|
1133
1261
|
threadId: { type: "string" },
|
|
1134
1262
|
resourceId: { type: "string" },
|
|
1135
1263
|
modelSettings: { type: "object", additionalProperties: true },
|
|
1136
|
-
telemetry: { type: "object", additionalProperties: true },
|
|
1137
1264
|
tools: { type: "array", items: { type: "object" } }
|
|
1138
1265
|
},
|
|
1139
1266
|
required: ["messages"]
|
|
@@ -1182,7 +1309,7 @@ function networkRoute({
|
|
|
1182
1309
|
});
|
|
1183
1310
|
const uiMessageStream = ai.createUIMessageStream({
|
|
1184
1311
|
execute: async ({ writer }) => {
|
|
1185
|
-
for await (const part of
|
|
1312
|
+
for await (const part of toAISdkV5Stream(result, { from: "network" })) {
|
|
1186
1313
|
writer.write(part);
|
|
1187
1314
|
}
|
|
1188
1315
|
}
|
|
@@ -1192,9 +1319,17 @@ function networkRoute({
|
|
|
1192
1319
|
});
|
|
1193
1320
|
}
|
|
1194
1321
|
|
|
1322
|
+
// src/to-ai-sdk-format.ts
|
|
1323
|
+
function toAISdkFormat() {
|
|
1324
|
+
throw new Error(
|
|
1325
|
+
'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.'
|
|
1326
|
+
);
|
|
1327
|
+
}
|
|
1328
|
+
|
|
1195
1329
|
exports.chatRoute = chatRoute;
|
|
1196
1330
|
exports.networkRoute = networkRoute;
|
|
1197
1331
|
exports.toAISdkFormat = toAISdkFormat;
|
|
1332
|
+
exports.toAISdkStream = toAISdkV5Stream;
|
|
1198
1333
|
exports.workflowRoute = workflowRoute;
|
|
1199
1334
|
//# sourceMappingURL=index.cjs.map
|
|
1200
1335
|
//# sourceMappingURL=index.cjs.map
|