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