@mastra/ai-sdk 0.0.0-fix-read-json-esm-20251009172143 → 0.0.0-fix-model-router-machine-cache-20251021232825

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/dist/index.js CHANGED
@@ -208,6 +208,9 @@ function convertMastraChunkToAISDKv5({
208
208
  ...chunk.payload || {}
209
209
  };
210
210
  }
211
+ if ("type" in chunk && chunk.type?.startsWith("data-")) {
212
+ return chunk;
213
+ }
211
214
  return;
212
215
  }
213
216
  }
@@ -221,7 +224,7 @@ function convertFullStreamChunkToUIMessageStream({
221
224
  sendFinish,
222
225
  responseMessageId
223
226
  }) {
224
- const partType = part.type;
227
+ const partType = part?.type;
225
228
  switch (partType) {
226
229
  case "text-start": {
227
230
  return {
@@ -315,6 +318,18 @@ function convertFullStreamChunkToUIMessageStream({
315
318
  toolCallId: part.toolCallId,
316
319
  payload: part.output
317
320
  };
321
+ } else if (part.output.from === "WORKFLOW") {
322
+ return {
323
+ type: "tool-workflow",
324
+ toolCallId: part.toolCallId,
325
+ payload: part.output
326
+ };
327
+ } else if (part.output.from === "NETWORK") {
328
+ return {
329
+ type: "tool-network",
330
+ toolCallId: part.toolCallId,
331
+ payload: part.output
332
+ };
318
333
  }
319
334
  return;
320
335
  }
@@ -366,102 +381,56 @@ function convertFullStreamChunkToUIMessageStream({
366
381
  return;
367
382
  }
368
383
  default: {
369
- const exhaustiveCheck = partType;
370
- throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);
384
+ if ("type" in part && part.type?.startsWith("data-")) {
385
+ if (!("data" in part)) {
386
+ throw new Error(
387
+ `UI Messages require a data property when using data- prefixed chunks
388
+ ${JSON.stringify(part)}`
389
+ );
390
+ }
391
+ return part;
392
+ }
393
+ return;
371
394
  }
372
395
  }
373
396
  }
374
397
 
375
- // src/to-ai-sdk-format.ts
398
+ // src/transformers.ts
376
399
  function WorkflowStreamToAISDKTransformer() {
377
- const steps = {};
400
+ const bufferedWorkflows = /* @__PURE__ */ new Map();
378
401
  return new TransformStream({
379
402
  start(controller) {
380
403
  controller.enqueue({
381
- data: JSON.stringify({
382
- type: "start",
383
- messageId: "1"
384
- })
404
+ type: "start"
385
405
  });
386
406
  },
387
407
  flush(controller) {
388
408
  controller.enqueue({
389
- data: JSON.stringify({
390
- type: "finish"
391
- })
409
+ type: "finish"
392
410
  });
411
+ },
412
+ transform(chunk, controller) {
413
+ const transformed = transformWorkflow(chunk, bufferedWorkflows);
414
+ if (transformed) controller.enqueue(transformed);
415
+ }
416
+ });
417
+ }
418
+ function AgentNetworkToAISDKTransformer() {
419
+ const bufferedNetworks = /* @__PURE__ */ new Map();
420
+ return new TransformStream({
421
+ start(controller) {
393
422
  controller.enqueue({
394
- data: "[DONE]"
423
+ type: "start"
424
+ });
425
+ },
426
+ flush(controller) {
427
+ controller.enqueue({
428
+ type: "finish"
395
429
  });
396
430
  },
397
431
  transform(chunk, controller) {
398
- let workflowName = "";
399
- if (chunk.type === "workflow-start") {
400
- workflowName = chunk.payload.workflowId;
401
- controller.enqueue({
402
- data: JSON.stringify({
403
- type: "data-workflow",
404
- id: chunk.runId,
405
- data: {
406
- name: workflowName,
407
- status: "running",
408
- steps: {},
409
- output: null
410
- }
411
- })
412
- });
413
- } else if (chunk.type === "workflow-step-start") {
414
- steps[chunk.payload.id] = {
415
- // TODO swap with name
416
- name: chunk.payload.id,
417
- status: chunk.payload.status,
418
- input: chunk.payload.payload ?? null,
419
- output: null
420
- };
421
- controller.enqueue({
422
- data: JSON.stringify({
423
- type: "data-workflow",
424
- id: chunk.runId,
425
- data: {
426
- name: workflowName,
427
- status: "running",
428
- steps,
429
- output: null
430
- }
431
- })
432
- });
433
- } else if (chunk.type === "workflow-step-result") {
434
- steps[chunk.payload.id] = {
435
- ...steps[chunk.payload.id],
436
- status: chunk.payload.status,
437
- output: chunk.payload.output ?? null
438
- };
439
- controller.enqueue({
440
- data: JSON.stringify({
441
- type: "data-workflow",
442
- id: chunk.runId,
443
- data: {
444
- name: workflowName,
445
- status: "running",
446
- steps,
447
- output: null
448
- }
449
- })
450
- });
451
- } else if (chunk.type === "workflow-finish") {
452
- controller.enqueue({
453
- data: JSON.stringify({
454
- type: "data-workflow",
455
- id: chunk.runId,
456
- data: {
457
- name: workflowName,
458
- steps,
459
- output: chunk.payload.output ?? null,
460
- status: chunk.payload.workflowStatus
461
- }
462
- })
463
- });
464
- }
432
+ const transformed = transformNetwork(chunk, bufferedNetworks);
433
+ if (transformed) controller.enqueue(transformed);
465
434
  }
466
435
  });
467
436
  }
@@ -486,6 +455,14 @@ function AgentStreamToAISDKTransformer() {
486
455
  const payload = transformedChunk.payload;
487
456
  const agentTransformed = transformAgent(payload, bufferedSteps);
488
457
  if (agentTransformed) controller.enqueue(agentTransformed);
458
+ } else if (transformedChunk.type === "tool-workflow") {
459
+ const payload = transformedChunk.payload;
460
+ const workflowChunk = transformWorkflow(payload, bufferedSteps, true);
461
+ if (workflowChunk) controller.enqueue(workflowChunk);
462
+ } else if (transformedChunk.type === "tool-network") {
463
+ const payload = transformedChunk.payload;
464
+ const networkChunk = transformNetwork(payload, bufferedSteps, true);
465
+ if (networkChunk) controller.enqueue(networkChunk);
489
466
  } else {
490
467
  controller.enqueue(transformedChunk);
491
468
  }
@@ -629,8 +606,295 @@ function transformAgent(payload, bufferedSteps) {
629
606
  }
630
607
  return null;
631
608
  }
632
- function toAISdkFormat(stream) {
633
- return stream.fullStream.pipeThrough(AgentStreamToAISDKTransformer());
609
+ function transformWorkflow(payload, bufferedWorkflows, isNested) {
610
+ switch (payload.type) {
611
+ case "workflow-start":
612
+ bufferedWorkflows.set(payload.runId, {
613
+ name: payload.payload.workflowId,
614
+ steps: {}
615
+ });
616
+ return {
617
+ type: isNested ? "data-tool-workflow" : "data-workflow",
618
+ id: payload.runId,
619
+ data: {
620
+ name: bufferedWorkflows.get(payload.runId).name,
621
+ status: "running",
622
+ steps: bufferedWorkflows.get(payload.runId).steps,
623
+ output: null
624
+ }
625
+ };
626
+ case "workflow-step-start": {
627
+ const current = bufferedWorkflows.get(payload.runId) || { name: "", steps: {} };
628
+ current.steps[payload.payload.id] = {
629
+ name: payload.payload.id,
630
+ status: payload.payload.status,
631
+ input: payload.payload.payload ?? null,
632
+ output: null
633
+ };
634
+ bufferedWorkflows.set(payload.runId, current);
635
+ return {
636
+ type: isNested ? "data-tool-workflow" : "data-workflow",
637
+ id: payload.runId,
638
+ data: {
639
+ name: current.name,
640
+ status: "running",
641
+ steps: current.steps,
642
+ output: null
643
+ }
644
+ };
645
+ }
646
+ case "workflow-step-result": {
647
+ const current = bufferedWorkflows.get(payload.runId);
648
+ if (!current) return null;
649
+ current.steps[payload.payload.id] = {
650
+ ...current.steps[payload.payload.id],
651
+ status: payload.payload.status,
652
+ output: payload.payload.output ?? null
653
+ };
654
+ return {
655
+ type: isNested ? "data-tool-workflow" : "data-workflow",
656
+ id: payload.runId,
657
+ data: {
658
+ name: current.name,
659
+ status: "running",
660
+ steps: current.steps,
661
+ output: null
662
+ }
663
+ };
664
+ }
665
+ case "workflow-finish": {
666
+ const current = bufferedWorkflows.get(payload.runId);
667
+ if (!current) return null;
668
+ return {
669
+ type: isNested ? "data-tool-workflow" : "data-workflow",
670
+ id: payload.runId,
671
+ data: {
672
+ name: current.name,
673
+ steps: current.steps,
674
+ output: payload.payload.output ?? null,
675
+ status: payload.payload.workflowStatus
676
+ }
677
+ };
678
+ }
679
+ default:
680
+ return null;
681
+ }
682
+ }
683
+ function transformNetwork(payload, bufferedNetworks, isNested) {
684
+ switch (payload.type) {
685
+ case "routing-agent-start": {
686
+ if (!bufferedNetworks.has(payload.payload.runId)) {
687
+ bufferedNetworks.set(payload.payload.runId, {
688
+ name: payload.payload.agentId,
689
+ steps: []
690
+ });
691
+ }
692
+ return {
693
+ type: isNested ? "data-tool-network" : "data-network",
694
+ id: payload.payload.runId,
695
+ data: {
696
+ name: bufferedNetworks.get(payload.payload.runId).name,
697
+ status: "running",
698
+ steps: bufferedNetworks.get(payload.payload.runId).steps,
699
+ output: null
700
+ }
701
+ };
702
+ }
703
+ case "routing-agent-text-start": {
704
+ const current = bufferedNetworks.get(payload.runId);
705
+ if (!current) return null;
706
+ return {
707
+ type: "text-start",
708
+ id: payload.runId
709
+ };
710
+ }
711
+ case "routing-agent-text-delta": {
712
+ const current = bufferedNetworks.get(payload.runId);
713
+ if (!current) return null;
714
+ return {
715
+ type: "text-delta",
716
+ id: payload.runId,
717
+ delta: payload.payload.text
718
+ };
719
+ }
720
+ case "agent-execution-start": {
721
+ const current = bufferedNetworks.get(payload.payload.runId) || { name: "", steps: [] };
722
+ current.steps.push({
723
+ name: payload.payload.agentId,
724
+ status: "running",
725
+ input: payload.payload.args || null,
726
+ output: null
727
+ });
728
+ bufferedNetworks.set(payload.payload.runId, current);
729
+ return {
730
+ type: isNested ? "data-tool-network" : "data-network",
731
+ id: payload.payload.runId,
732
+ data: {
733
+ name: current.name,
734
+ status: "running",
735
+ steps: current.steps,
736
+ output: null
737
+ }
738
+ };
739
+ }
740
+ case "workflow-execution-start": {
741
+ const current = bufferedNetworks.get(payload.payload.runId) || { name: "", steps: [] };
742
+ current.steps.push({
743
+ name: payload.payload.name,
744
+ status: "running",
745
+ input: payload.payload.args || null,
746
+ output: null
747
+ });
748
+ bufferedNetworks.set(payload.payload.runId, current);
749
+ return {
750
+ type: isNested ? "data-tool-network" : "data-network",
751
+ id: payload.payload.runId,
752
+ data: {
753
+ name: current.name,
754
+ status: "running",
755
+ steps: current.steps,
756
+ output: null
757
+ }
758
+ };
759
+ }
760
+ case "tool-execution-start": {
761
+ const current = bufferedNetworks.get(payload.payload.runId) || { name: "", steps: [] };
762
+ current.steps.push({
763
+ name: payload.payload.args?.toolName,
764
+ status: "running",
765
+ input: payload.payload.args?.args || null,
766
+ output: null
767
+ });
768
+ bufferedNetworks.set(payload.payload.runId, current);
769
+ return {
770
+ type: isNested ? "data-tool-network" : "data-network",
771
+ id: payload.payload.runId,
772
+ data: {
773
+ name: current.name,
774
+ status: "running",
775
+ steps: current.steps,
776
+ output: null
777
+ }
778
+ };
779
+ }
780
+ case "agent-execution-end": {
781
+ const current = bufferedNetworks.get(payload.runId);
782
+ if (!current) return null;
783
+ current.steps.push({
784
+ name: payload.payload.agentId,
785
+ status: "success",
786
+ input: null,
787
+ output: payload.payload.result
788
+ });
789
+ return {
790
+ type: isNested ? "data-tool-network" : "data-network",
791
+ id: payload.runId,
792
+ data: {
793
+ name: current.name,
794
+ status: "running",
795
+ steps: current.steps,
796
+ output: payload.payload.result ?? null
797
+ }
798
+ };
799
+ }
800
+ case "tool-execution-end": {
801
+ const current = bufferedNetworks.get(payload.runId);
802
+ if (!current) return null;
803
+ current.steps.push({
804
+ name: payload.payload.toolName,
805
+ status: "success",
806
+ input: null,
807
+ output: payload.payload.result
808
+ });
809
+ return {
810
+ type: isNested ? "data-tool-network" : "data-network",
811
+ id: payload.runId,
812
+ data: {
813
+ name: current.name,
814
+ status: "running",
815
+ steps: current.steps,
816
+ output: payload.payload.result ?? null
817
+ }
818
+ };
819
+ }
820
+ case "workflow-execution-end": {
821
+ const current = bufferedNetworks.get(payload.runId);
822
+ if (!current) return null;
823
+ current.steps.push({
824
+ name: payload.payload.name,
825
+ status: "success",
826
+ input: null,
827
+ output: payload.payload.result
828
+ });
829
+ return {
830
+ type: isNested ? "data-tool-network" : "data-network",
831
+ id: payload.runId,
832
+ data: {
833
+ name: current.name,
834
+ status: "running",
835
+ steps: current.steps,
836
+ output: payload.payload.result ?? null
837
+ }
838
+ };
839
+ }
840
+ case "routing-agent-end": {
841
+ const current = bufferedNetworks.get(payload.payload.runId);
842
+ if (!current) return null;
843
+ return {
844
+ type: isNested ? "data-tool-network" : "data-network",
845
+ id: payload.payload.runId,
846
+ data: {
847
+ name: current.name,
848
+ status: "finished",
849
+ steps: current.steps,
850
+ output: payload.payload?.result ?? null
851
+ }
852
+ };
853
+ }
854
+ case "network-execution-event-step-finish": {
855
+ const current = bufferedNetworks.get(payload.payload.runId);
856
+ if (!current) return null;
857
+ return {
858
+ type: isNested ? "data-tool-network" : "data-network",
859
+ id: payload.payload.runId,
860
+ data: {
861
+ name: current.name,
862
+ status: "finished",
863
+ steps: current.steps,
864
+ output: payload.payload?.result ?? null
865
+ }
866
+ };
867
+ }
868
+ case "network-execution-event-finish": {
869
+ const current = bufferedNetworks.get(payload.runId);
870
+ if (!current) return null;
871
+ return {
872
+ type: isNested ? "data-tool-network" : "data-network",
873
+ id: payload.runId,
874
+ data: {
875
+ name: current.name,
876
+ status: "finished",
877
+ steps: current.steps,
878
+ output: payload.payload?.result ?? null
879
+ }
880
+ };
881
+ }
882
+ default:
883
+ return null;
884
+ }
885
+ }
886
+
887
+ // src/to-ai-sdk-format.ts
888
+ function toAISdkFormat(stream, options = { from: "agent" }) {
889
+ const from = options?.from;
890
+ if (from === "workflow") {
891
+ return stream.pipeThrough(WorkflowStreamToAISDKTransformer());
892
+ }
893
+ if (from === "network") {
894
+ return stream.pipeThrough(AgentNetworkToAISDKTransformer());
895
+ }
896
+ const agentReadable = "fullStream" in stream ? stream.fullStream : stream;
897
+ return agentReadable.pipeThrough(AgentStreamToAISDKTransformer());
634
898
  }
635
899
 
636
900
  // src/chat-route.ts
@@ -738,6 +1002,7 @@ function chatRoute({
738
1002
  handler: async (c) => {
739
1003
  const { messages, ...rest } = await c.req.json();
740
1004
  const mastra = c.get("mastra");
1005
+ const runtimeContext = c.get("runtimeContext");
741
1006
  let agentToUse = agent;
742
1007
  if (!agent) {
743
1008
  const agentId = c.req.param("agentId");
@@ -748,6 +1013,9 @@ function chatRoute({
748
1013
  `Fixed agent ID was set together with an agentId path parameter. This can lead to unexpected behavior.`
749
1014
  );
750
1015
  }
1016
+ if (runtimeContext && defaultOptions?.runtimeContext) {
1017
+ mastra.getLogger()?.warn(`"runtimeContext" set in the route options will be overridden by the request's "runtimeContext".`);
1018
+ }
751
1019
  if (!agentToUse) {
752
1020
  throw new Error("Agent ID is required");
753
1021
  }
@@ -757,11 +1025,13 @@ function chatRoute({
757
1025
  }
758
1026
  const result = await agentObj.stream(messages, {
759
1027
  ...defaultOptions,
760
- ...rest
1028
+ ...rest,
1029
+ runtimeContext: runtimeContext || defaultOptions?.runtimeContext
761
1030
  });
762
1031
  const uiMessageStream = createUIMessageStream({
1032
+ originalMessages: messages,
763
1033
  execute: async ({ writer }) => {
764
- for await (const part of toAISdkFormat(result)) {
1034
+ for await (const part of toAISdkFormat(result, { from: "agent" })) {
765
1035
  writer.write(part);
766
1036
  }
767
1037
  }
@@ -772,7 +1042,183 @@ function chatRoute({
772
1042
  }
773
1043
  });
774
1044
  }
1045
+ function workflowRoute({
1046
+ path = "/api/workflows/:workflowId/stream",
1047
+ workflow
1048
+ }) {
1049
+ if (!workflow && !path.includes("/:workflowId")) {
1050
+ throw new Error("Path must include :workflowId to route to the correct workflow or pass the workflow explicitly");
1051
+ }
1052
+ return registerApiRoute(path, {
1053
+ method: "POST",
1054
+ openapi: {
1055
+ summary: "Stream a workflow in AI SDK format",
1056
+ description: "Starts a workflow run and streams events as AI SDK UIMessage chunks",
1057
+ tags: ["ai-sdk"],
1058
+ parameters: [
1059
+ {
1060
+ name: "workflowId",
1061
+ in: "path",
1062
+ required: true,
1063
+ description: "The ID of the workflow to stream",
1064
+ schema: { type: "string" }
1065
+ }
1066
+ ],
1067
+ requestBody: {
1068
+ required: true,
1069
+ content: {
1070
+ "application/json": {
1071
+ schema: {
1072
+ type: "object",
1073
+ properties: {
1074
+ inputData: { type: "object", additionalProperties: true },
1075
+ runtimeContext: { type: "object", additionalProperties: true },
1076
+ tracingOptions: { type: "object", additionalProperties: true }
1077
+ }
1078
+ }
1079
+ }
1080
+ }
1081
+ },
1082
+ responses: {
1083
+ "200": {
1084
+ description: "Workflow UIMessage event stream",
1085
+ content: {
1086
+ "text/plain": {
1087
+ schema: { type: "string", description: "SSE stream" }
1088
+ }
1089
+ }
1090
+ }
1091
+ }
1092
+ },
1093
+ handler: async (c) => {
1094
+ const { inputData, ...rest } = await c.req.json();
1095
+ const mastra = c.get("mastra");
1096
+ let workflowToUse = workflow;
1097
+ if (!workflow) {
1098
+ const workflowId = c.req.param("workflowId");
1099
+ workflowToUse = workflowId;
1100
+ }
1101
+ if (c.req.param("workflowId") && workflow) {
1102
+ mastra.getLogger()?.warn(
1103
+ `Fixed workflow ID was set together with a workflowId path parameter. This can lead to unexpected behavior.`
1104
+ );
1105
+ }
1106
+ if (!workflowToUse) {
1107
+ throw new Error("Workflow ID is required");
1108
+ }
1109
+ const workflowObj = mastra.getWorkflow(workflowToUse);
1110
+ if (!workflowObj) {
1111
+ throw new Error(`Workflow ${workflowToUse} not found`);
1112
+ }
1113
+ const run = await workflowObj.createRunAsync();
1114
+ const stream = run.streamVNext({ inputData, ...rest });
1115
+ const uiMessageStream = createUIMessageStream({
1116
+ execute: async ({ writer }) => {
1117
+ for await (const part of toAISdkFormat(stream, { from: "workflow" })) {
1118
+ writer.write(part);
1119
+ }
1120
+ }
1121
+ });
1122
+ return createUIMessageStreamResponse({ stream: uiMessageStream });
1123
+ }
1124
+ });
1125
+ }
1126
+ function networkRoute({
1127
+ path = "/network/:agentId",
1128
+ agent,
1129
+ defaultOptions
1130
+ }) {
1131
+ if (!agent && !path.includes("/:agentId")) {
1132
+ throw new Error("Path must include :agentId to route to the correct agent or pass the agent explicitly");
1133
+ }
1134
+ return registerApiRoute(path, {
1135
+ method: "POST",
1136
+ openapi: {
1137
+ summary: "Execute an agent network and stream AI SDK events",
1138
+ description: "Routes a request to an agent network and streams UIMessage chunks in AI SDK format",
1139
+ tags: ["ai-sdk"],
1140
+ parameters: [
1141
+ {
1142
+ name: "agentId",
1143
+ in: "path",
1144
+ required: true,
1145
+ description: "The ID of the routing agent to execute as a network",
1146
+ schema: { type: "string" }
1147
+ }
1148
+ ],
1149
+ requestBody: {
1150
+ required: true,
1151
+ content: {
1152
+ "application/json": {
1153
+ schema: {
1154
+ type: "object",
1155
+ properties: {
1156
+ messages: { type: "array", items: { type: "object" } },
1157
+ runtimeContext: { type: "object", additionalProperties: true },
1158
+ runId: { type: "string" },
1159
+ maxSteps: { type: "number" },
1160
+ threadId: { type: "string" },
1161
+ resourceId: { type: "string" },
1162
+ modelSettings: { type: "object", additionalProperties: true },
1163
+ telemetry: { type: "object", additionalProperties: true },
1164
+ tools: { type: "array", items: { type: "object" } }
1165
+ },
1166
+ required: ["messages"]
1167
+ }
1168
+ }
1169
+ }
1170
+ },
1171
+ responses: {
1172
+ "200": {
1173
+ description: "Streaming AI SDK UIMessage event stream for the agent network",
1174
+ content: { "text/plain": { schema: { type: "string", description: "SSE stream" } } }
1175
+ },
1176
+ "404": {
1177
+ description: "Agent not found",
1178
+ content: {
1179
+ "application/json": {
1180
+ schema: { type: "object", properties: { error: { type: "string" } } }
1181
+ }
1182
+ }
1183
+ }
1184
+ }
1185
+ },
1186
+ handler: async (c) => {
1187
+ const { messages, ...rest } = await c.req.json();
1188
+ const mastra = c.get("mastra");
1189
+ let agentToUse = agent;
1190
+ if (!agent) {
1191
+ const agentId = c.req.param("agentId");
1192
+ agentToUse = agentId;
1193
+ }
1194
+ if (c.req.param("agentId") && agent) {
1195
+ mastra.getLogger()?.warn(
1196
+ `Fixed agent ID was set together with an agentId path parameter. This can lead to unexpected behavior.`
1197
+ );
1198
+ }
1199
+ if (!agentToUse) {
1200
+ throw new Error("Agent ID is required");
1201
+ }
1202
+ const agentObj = mastra.getAgent(agentToUse);
1203
+ if (!agentObj) {
1204
+ throw new Error(`Agent ${agentToUse} not found`);
1205
+ }
1206
+ const result = await agentObj.network(messages, {
1207
+ ...defaultOptions,
1208
+ ...rest
1209
+ });
1210
+ const uiMessageStream = createUIMessageStream({
1211
+ execute: async ({ writer }) => {
1212
+ for await (const part of toAISdkFormat(result, { from: "network" })) {
1213
+ writer.write(part);
1214
+ }
1215
+ }
1216
+ });
1217
+ return createUIMessageStreamResponse({ stream: uiMessageStream });
1218
+ }
1219
+ });
1220
+ }
775
1221
 
776
- export { WorkflowStreamToAISDKTransformer, chatRoute, toAISdkFormat };
1222
+ export { chatRoute, networkRoute, toAISdkFormat, workflowRoute };
777
1223
  //# sourceMappingURL=index.js.map
778
1224
  //# sourceMappingURL=index.js.map