@mastra/ai-sdk 0.0.0-toolOptionTypes-20250917085558 → 0.0.0-unified-sidebar-20251010130811

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.cjs CHANGED
@@ -1,8 +1,825 @@
1
1
  'use strict';
2
2
 
3
3
  var server = require('@mastra/core/server');
4
+ var ai = require('ai');
5
+ var stream = require('@mastra/core/stream');
4
6
 
5
- // src/index.ts
7
+ // src/chat-route.ts
8
+ function convertMastraChunkToAISDKv5({
9
+ chunk,
10
+ mode = "stream"
11
+ }) {
12
+ switch (chunk.type) {
13
+ case "start":
14
+ return {
15
+ type: "start"
16
+ };
17
+ case "step-start":
18
+ const { messageId: _messageId, ...rest } = chunk.payload;
19
+ return {
20
+ type: "start-step",
21
+ request: rest.request,
22
+ warnings: rest.warnings || []
23
+ };
24
+ case "raw":
25
+ return {
26
+ type: "raw",
27
+ rawValue: chunk.payload
28
+ };
29
+ case "finish": {
30
+ return {
31
+ type: "finish",
32
+ finishReason: chunk.payload.stepResult.reason,
33
+ totalUsage: chunk.payload.output.usage
34
+ };
35
+ }
36
+ case "reasoning-start":
37
+ return {
38
+ type: "reasoning-start",
39
+ id: chunk.payload.id,
40
+ providerMetadata: chunk.payload.providerMetadata
41
+ };
42
+ case "reasoning-delta":
43
+ return {
44
+ type: "reasoning-delta",
45
+ id: chunk.payload.id,
46
+ text: chunk.payload.text,
47
+ providerMetadata: chunk.payload.providerMetadata
48
+ };
49
+ case "reasoning-signature":
50
+ throw new Error('AISDKv5 chunk type "reasoning-signature" not supported');
51
+ // return {
52
+ // type: 'reasoning-signature' as const,
53
+ // id: chunk.payload.id,
54
+ // signature: chunk.payload.signature,
55
+ // };
56
+ case "redacted-reasoning":
57
+ throw new Error('AISDKv5 chunk type "redacted-reasoning" not supported');
58
+ // return {
59
+ // type: 'redacted-reasoning',
60
+ // id: chunk.payload.id,
61
+ // data: chunk.payload.data,
62
+ // };
63
+ case "reasoning-end":
64
+ return {
65
+ type: "reasoning-end",
66
+ id: chunk.payload.id,
67
+ providerMetadata: chunk.payload.providerMetadata
68
+ };
69
+ case "source":
70
+ if (chunk.payload.sourceType === "url") {
71
+ return {
72
+ type: "source",
73
+ sourceType: "url",
74
+ id: chunk.payload.id,
75
+ url: chunk.payload.url,
76
+ title: chunk.payload.title,
77
+ providerMetadata: chunk.payload.providerMetadata
78
+ };
79
+ } else {
80
+ return {
81
+ type: "source",
82
+ sourceType: "document",
83
+ id: chunk.payload.id,
84
+ mediaType: chunk.payload.mimeType,
85
+ title: chunk.payload.title,
86
+ filename: chunk.payload.filename,
87
+ providerMetadata: chunk.payload.providerMetadata
88
+ };
89
+ }
90
+ case "file":
91
+ if (mode === "generate") {
92
+ return {
93
+ type: "file",
94
+ file: new stream.DefaultGeneratedFile({
95
+ data: chunk.payload.data,
96
+ mediaType: chunk.payload.mimeType
97
+ })
98
+ };
99
+ }
100
+ return {
101
+ type: "file",
102
+ file: new stream.DefaultGeneratedFileWithType({
103
+ data: chunk.payload.data,
104
+ mediaType: chunk.payload.mimeType
105
+ })
106
+ };
107
+ case "tool-call":
108
+ return {
109
+ type: "tool-call",
110
+ toolCallId: chunk.payload.toolCallId,
111
+ providerMetadata: chunk.payload.providerMetadata,
112
+ providerExecuted: chunk.payload.providerExecuted,
113
+ toolName: chunk.payload.toolName,
114
+ input: chunk.payload.args
115
+ };
116
+ case "tool-call-input-streaming-start":
117
+ return {
118
+ type: "tool-input-start",
119
+ id: chunk.payload.toolCallId,
120
+ toolName: chunk.payload.toolName,
121
+ dynamic: !!chunk.payload.dynamic,
122
+ providerMetadata: chunk.payload.providerMetadata,
123
+ providerExecuted: chunk.payload.providerExecuted
124
+ };
125
+ case "tool-call-input-streaming-end":
126
+ return {
127
+ type: "tool-input-end",
128
+ id: chunk.payload.toolCallId,
129
+ providerMetadata: chunk.payload.providerMetadata
130
+ };
131
+ case "tool-call-delta":
132
+ return {
133
+ type: "tool-input-delta",
134
+ id: chunk.payload.toolCallId,
135
+ delta: chunk.payload.argsTextDelta,
136
+ providerMetadata: chunk.payload.providerMetadata
137
+ };
138
+ case "step-finish": {
139
+ const { request: _request, providerMetadata, ...rest2 } = chunk.payload.metadata;
140
+ return {
141
+ type: "finish-step",
142
+ response: {
143
+ id: chunk.payload.id || "",
144
+ timestamp: /* @__PURE__ */ new Date(),
145
+ modelId: rest2.modelId || "",
146
+ ...rest2
147
+ },
148
+ usage: chunk.payload.output.usage,
149
+ finishReason: chunk.payload.stepResult.reason,
150
+ providerMetadata
151
+ };
152
+ }
153
+ case "text-delta":
154
+ return {
155
+ type: "text-delta",
156
+ id: chunk.payload.id,
157
+ text: chunk.payload.text,
158
+ providerMetadata: chunk.payload.providerMetadata
159
+ };
160
+ case "text-end":
161
+ return {
162
+ type: "text-end",
163
+ id: chunk.payload.id,
164
+ providerMetadata: chunk.payload.providerMetadata
165
+ };
166
+ case "text-start":
167
+ return {
168
+ type: "text-start",
169
+ id: chunk.payload.id,
170
+ providerMetadata: chunk.payload.providerMetadata
171
+ };
172
+ case "tool-result":
173
+ return {
174
+ type: "tool-result",
175
+ input: chunk.payload.args,
176
+ toolCallId: chunk.payload.toolCallId,
177
+ providerExecuted: chunk.payload.providerExecuted,
178
+ toolName: chunk.payload.toolName,
179
+ output: chunk.payload.result
180
+ // providerMetadata: chunk.payload.providerMetadata, // AI v5 types don't show this?
181
+ };
182
+ case "tool-error":
183
+ return {
184
+ type: "tool-error",
185
+ error: chunk.payload.error,
186
+ input: chunk.payload.args,
187
+ toolCallId: chunk.payload.toolCallId,
188
+ providerExecuted: chunk.payload.providerExecuted,
189
+ toolName: chunk.payload.toolName
190
+ // providerMetadata: chunk.payload.providerMetadata, // AI v5 types don't show this?
191
+ };
192
+ case "abort":
193
+ return {
194
+ type: "abort"
195
+ };
196
+ case "error":
197
+ return {
198
+ type: "error",
199
+ error: chunk.payload.error
200
+ };
201
+ case "object":
202
+ return {
203
+ type: "object",
204
+ object: chunk.object
205
+ };
206
+ default:
207
+ if (chunk.type && "payload" in chunk && chunk.payload) {
208
+ return {
209
+ type: chunk.type,
210
+ ...chunk.payload || {}
211
+ };
212
+ }
213
+ return;
214
+ }
215
+ }
216
+ function convertFullStreamChunkToUIMessageStream({
217
+ part,
218
+ messageMetadataValue,
219
+ sendReasoning,
220
+ sendSources,
221
+ onError,
222
+ sendStart,
223
+ sendFinish,
224
+ responseMessageId
225
+ }) {
226
+ const partType = part.type;
227
+ switch (partType) {
228
+ case "text-start": {
229
+ return {
230
+ type: "text-start",
231
+ id: part.id,
232
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
233
+ };
234
+ }
235
+ case "text-delta": {
236
+ return {
237
+ type: "text-delta",
238
+ id: part.id,
239
+ delta: part.text,
240
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
241
+ };
242
+ }
243
+ case "text-end": {
244
+ return {
245
+ type: "text-end",
246
+ id: part.id,
247
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
248
+ };
249
+ }
250
+ case "reasoning-start": {
251
+ return {
252
+ type: "reasoning-start",
253
+ id: part.id,
254
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
255
+ };
256
+ }
257
+ case "reasoning-delta": {
258
+ return;
259
+ }
260
+ case "reasoning-end": {
261
+ return {
262
+ type: "reasoning-end",
263
+ id: part.id,
264
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
265
+ };
266
+ }
267
+ case "file": {
268
+ return {
269
+ type: "file",
270
+ mediaType: part.file.mediaType,
271
+ url: `data:${part.file.mediaType};base64,${part.file.base64}`
272
+ };
273
+ }
274
+ case "source": {
275
+ return;
276
+ }
277
+ case "tool-input-start": {
278
+ return {
279
+ type: "tool-input-start",
280
+ toolCallId: part.id,
281
+ toolName: part.toolName,
282
+ ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
283
+ ...part.dynamic != null ? { dynamic: part.dynamic } : {}
284
+ };
285
+ }
286
+ case "tool-input-delta": {
287
+ return {
288
+ type: "tool-input-delta",
289
+ toolCallId: part.id,
290
+ inputTextDelta: part.delta
291
+ };
292
+ }
293
+ case "tool-call": {
294
+ return {
295
+ type: "tool-input-available",
296
+ toolCallId: part.toolCallId,
297
+ toolName: part.toolName,
298
+ input: part.input,
299
+ ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
300
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},
301
+ ...part.dynamic != null ? { dynamic: part.dynamic } : {}
302
+ };
303
+ }
304
+ case "tool-result": {
305
+ return {
306
+ type: "tool-output-available",
307
+ toolCallId: part.toolCallId,
308
+ output: part.output,
309
+ ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
310
+ ...part.dynamic != null ? { dynamic: part.dynamic } : {}
311
+ };
312
+ }
313
+ case "tool-output": {
314
+ if (part.output.from === "AGENT") {
315
+ return {
316
+ type: "tool-agent",
317
+ toolCallId: part.toolCallId,
318
+ payload: part.output
319
+ };
320
+ } else if (part.output.from === "WORKFLOW") {
321
+ return {
322
+ type: "tool-workflow",
323
+ toolCallId: part.toolCallId,
324
+ payload: part.output
325
+ };
326
+ } else if (part.output.from === "NETWORK") {
327
+ return {
328
+ type: "tool-network",
329
+ toolCallId: part.toolCallId,
330
+ payload: part.output
331
+ };
332
+ }
333
+ return;
334
+ }
335
+ case "tool-error": {
336
+ return {
337
+ type: "tool-output-error",
338
+ toolCallId: part.toolCallId,
339
+ errorText: onError(part.error),
340
+ ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
341
+ ...part.dynamic != null ? { dynamic: part.dynamic } : {}
342
+ };
343
+ }
344
+ case "error": {
345
+ return {
346
+ type: "error",
347
+ errorText: onError(part.error)
348
+ };
349
+ }
350
+ case "start-step": {
351
+ return { type: "start-step" };
352
+ }
353
+ case "finish-step": {
354
+ return { type: "finish-step" };
355
+ }
356
+ case "start": {
357
+ {
358
+ return {
359
+ type: "start",
360
+ ...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {},
361
+ ...responseMessageId != null ? { messageId: responseMessageId } : {}
362
+ };
363
+ }
364
+ }
365
+ case "finish": {
366
+ {
367
+ return {
368
+ type: "finish",
369
+ ...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {}
370
+ };
371
+ }
372
+ }
373
+ case "abort": {
374
+ return part;
375
+ }
376
+ case "tool-input-end": {
377
+ return;
378
+ }
379
+ case "raw": {
380
+ return;
381
+ }
382
+ default: {
383
+ const exhaustiveCheck = partType;
384
+ throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);
385
+ }
386
+ }
387
+ }
388
+
389
+ // src/transformers.ts
390
+ function WorkflowStreamToAISDKTransformer() {
391
+ const bufferedWorkflows = /* @__PURE__ */ new Map();
392
+ return new TransformStream({
393
+ start(controller) {
394
+ controller.enqueue({
395
+ data: JSON.stringify({
396
+ type: "start",
397
+ messageId: "1"
398
+ })
399
+ });
400
+ },
401
+ flush(controller) {
402
+ controller.enqueue({
403
+ data: JSON.stringify({
404
+ type: "finish"
405
+ })
406
+ });
407
+ controller.enqueue({
408
+ data: "[DONE]"
409
+ });
410
+ },
411
+ transform(chunk, controller) {
412
+ const transformed = transformWorkflow(chunk, bufferedWorkflows);
413
+ if (transformed) controller.enqueue(transformed);
414
+ }
415
+ });
416
+ }
417
+ function AgentStreamToAISDKTransformer() {
418
+ let bufferedSteps = /* @__PURE__ */ new Map();
419
+ return new TransformStream({
420
+ transform(chunk, controller) {
421
+ const part = convertMastraChunkToAISDKv5({ chunk, mode: "stream" });
422
+ const transformedChunk = convertFullStreamChunkToUIMessageStream({
423
+ part,
424
+ sendReasoning: false,
425
+ sendSources: false,
426
+ sendStart: true,
427
+ sendFinish: true,
428
+ responseMessageId: chunk.runId,
429
+ onError() {
430
+ return "Error";
431
+ }
432
+ });
433
+ if (transformedChunk) {
434
+ if (transformedChunk.type === "tool-agent") {
435
+ const payload = transformedChunk.payload;
436
+ const agentTransformed = transformAgent(payload, bufferedSteps);
437
+ if (agentTransformed) controller.enqueue(agentTransformed);
438
+ } else if (transformedChunk.type === "tool-workflow") {
439
+ const payload = transformedChunk.payload;
440
+ const workflowChunk = transformWorkflow(payload, bufferedSteps);
441
+ if (workflowChunk) controller.enqueue(workflowChunk);
442
+ } else if (transformedChunk.type === "tool-network") {
443
+ const payload = transformedChunk.payload;
444
+ const networkChunk = transformNetwork(payload, bufferedSteps);
445
+ if (networkChunk) controller.enqueue(networkChunk);
446
+ } else {
447
+ controller.enqueue(transformedChunk);
448
+ }
449
+ }
450
+ }
451
+ });
452
+ }
453
+ function transformAgent(payload, bufferedSteps) {
454
+ let hasChanged = false;
455
+ switch (payload.type) {
456
+ case "start":
457
+ bufferedSteps.set(payload.runId, {
458
+ id: payload.payload.id,
459
+ object: null,
460
+ finishReason: null,
461
+ usage: null,
462
+ warnings: [],
463
+ text: "",
464
+ reasoning: [],
465
+ sources: [],
466
+ files: [],
467
+ toolCalls: [],
468
+ toolResults: [],
469
+ request: {},
470
+ response: {
471
+ id: "",
472
+ timestamp: /* @__PURE__ */ new Date(),
473
+ modelId: "",
474
+ messages: []
475
+ },
476
+ providerMetadata: void 0,
477
+ steps: [],
478
+ status: "running"
479
+ });
480
+ hasChanged = true;
481
+ break;
482
+ case "finish":
483
+ bufferedSteps.set(payload.runId, {
484
+ ...bufferedSteps.get(payload.runId),
485
+ finishReason: payload.payload.stepResult.reason,
486
+ usage: payload.payload?.output?.usage,
487
+ warnings: payload.payload?.stepResult?.warnings,
488
+ steps: bufferedSteps.get(payload.runId).steps,
489
+ status: "finished"
490
+ });
491
+ hasChanged = true;
492
+ break;
493
+ case "text-delta":
494
+ const prevData = bufferedSteps.get(payload.runId);
495
+ bufferedSteps.set(payload.runId, {
496
+ ...prevData,
497
+ text: `${prevData.text}${payload.payload.text}`
498
+ });
499
+ hasChanged = true;
500
+ break;
501
+ case "reasoning-delta":
502
+ bufferedSteps.set(payload.runId, {
503
+ ...bufferedSteps.get(payload.runId),
504
+ reasoning: [...bufferedSteps.get(payload.runId).reasoning, payload.payload.text]
505
+ });
506
+ hasChanged = true;
507
+ break;
508
+ case "source":
509
+ bufferedSteps.set(payload.runId, {
510
+ ...bufferedSteps.get(payload.runId),
511
+ sources: [...bufferedSteps.get(payload.runId).sources, payload.payload]
512
+ });
513
+ hasChanged = true;
514
+ break;
515
+ case "file":
516
+ bufferedSteps.set(payload.runId, {
517
+ ...bufferedSteps.get(payload.runId),
518
+ files: [...bufferedSteps.get(payload.runId).files, payload.payload]
519
+ });
520
+ hasChanged = true;
521
+ break;
522
+ case "tool-call":
523
+ bufferedSteps.set(payload.runId, {
524
+ ...bufferedSteps.get(payload.runId),
525
+ toolCalls: [...bufferedSteps.get(payload.runId).toolCalls, payload.payload]
526
+ });
527
+ hasChanged = true;
528
+ break;
529
+ case "tool-result":
530
+ bufferedSteps.set(payload.runId, {
531
+ ...bufferedSteps.get(payload.runId),
532
+ toolResults: [...bufferedSteps.get(payload.runId).toolResults, payload.payload]
533
+ });
534
+ hasChanged = true;
535
+ break;
536
+ case "object-result":
537
+ bufferedSteps.set(payload.runId, {
538
+ ...bufferedSteps.get(payload.runId),
539
+ object: payload.object
540
+ });
541
+ hasChanged = true;
542
+ break;
543
+ case "object":
544
+ bufferedSteps.set(payload.runId, {
545
+ ...bufferedSteps.get(payload.runId),
546
+ object: payload.object
547
+ });
548
+ hasChanged = true;
549
+ break;
550
+ case "step-finish":
551
+ const currentRun = bufferedSteps.get(payload.runId);
552
+ const stepResult = {
553
+ ...bufferedSteps.get(payload.runId),
554
+ stepType: currentRun.steps.length === 0 ? "initial" : "tool-result",
555
+ reasoningText: bufferedSteps.get(payload.runId).reasoning.join(""),
556
+ staticToolCalls: bufferedSteps.get(payload.runId).toolCalls.filter((part) => part.type === "tool-call" && part.payload?.dynamic === false),
557
+ dynamicToolCalls: bufferedSteps.get(payload.runId).toolCalls.filter((part) => part.type === "tool-call" && part.payload?.dynamic === true),
558
+ staticToolResults: bufferedSteps.get(payload.runId).toolResults.filter((part) => part.type === "tool-result" && part.payload?.dynamic === false),
559
+ dynamicToolResults: bufferedSteps.get(payload.runId).toolResults.filter((part) => part.type === "tool-result" && part.payload?.dynamic === true),
560
+ finishReason: payload.payload.stepResult.reason,
561
+ usage: payload.payload.output.usage,
562
+ warnings: payload.payload.stepResult.warnings || [],
563
+ response: {
564
+ id: payload.payload.id || "",
565
+ timestamp: payload.payload.metadata?.timestamp || /* @__PURE__ */ new Date(),
566
+ modelId: payload.payload.metadata?.modelId || payload.payload.metadata?.model || "",
567
+ ...bufferedSteps.get(payload.runId).response,
568
+ messages: bufferedSteps.get(payload.runId).response.messages || []
569
+ }
570
+ };
571
+ bufferedSteps.set(payload.runId, {
572
+ ...bufferedSteps.get(payload.runId),
573
+ usage: payload.payload.output.usage,
574
+ warnings: payload.payload.stepResult.warnings || [],
575
+ steps: [...bufferedSteps.get(payload.runId).steps, stepResult]
576
+ });
577
+ hasChanged = true;
578
+ break;
579
+ }
580
+ if (hasChanged) {
581
+ return {
582
+ type: "data-tool-agent",
583
+ id: payload.runId,
584
+ data: bufferedSteps.get(payload.runId)
585
+ };
586
+ }
587
+ return null;
588
+ }
589
+ function transformWorkflow(payload, bufferedWorkflows) {
590
+ switch (payload.type) {
591
+ case "workflow-start":
592
+ bufferedWorkflows.set(payload.runId, {
593
+ name: payload.payload.workflowId,
594
+ steps: {}
595
+ });
596
+ return {
597
+ type: "data-workflow",
598
+ id: payload.runId,
599
+ data: {
600
+ name: bufferedWorkflows.get(payload.runId).name,
601
+ status: "running",
602
+ steps: bufferedWorkflows.get(payload.runId).steps,
603
+ output: null
604
+ }
605
+ };
606
+ case "workflow-step-start": {
607
+ const current = bufferedWorkflows.get(payload.runId) || { name: "", steps: {} };
608
+ current.steps[payload.payload.id] = {
609
+ name: payload.payload.id,
610
+ status: payload.payload.status,
611
+ input: payload.payload.payload ?? null,
612
+ output: null
613
+ };
614
+ bufferedWorkflows.set(payload.runId, current);
615
+ return {
616
+ type: "data-workflow",
617
+ id: payload.runId,
618
+ data: {
619
+ name: current.name,
620
+ status: "running",
621
+ steps: current.steps,
622
+ output: null
623
+ }
624
+ };
625
+ }
626
+ case "workflow-step-result": {
627
+ const current = bufferedWorkflows.get(payload.runId);
628
+ if (!current) return null;
629
+ current.steps[payload.payload.id] = {
630
+ ...current.steps[payload.payload.id],
631
+ status: payload.payload.status,
632
+ output: payload.payload.output ?? null
633
+ };
634
+ return {
635
+ type: "data-workflow",
636
+ id: payload.runId,
637
+ data: {
638
+ name: current.name,
639
+ status: "running",
640
+ steps: current.steps,
641
+ output: null
642
+ }
643
+ };
644
+ }
645
+ case "workflow-finish": {
646
+ const current = bufferedWorkflows.get(payload.runId);
647
+ if (!current) return null;
648
+ return {
649
+ type: "data-workflow",
650
+ id: payload.runId,
651
+ data: {
652
+ name: current.name,
653
+ steps: current.steps,
654
+ output: payload.payload.output ?? null,
655
+ status: payload.payload.workflowStatus
656
+ }
657
+ };
658
+ }
659
+ default:
660
+ return null;
661
+ }
662
+ }
663
+ function transformNetwork(payload, bufferedNetworks) {
664
+ switch (payload.type) {
665
+ case "routing-agent-start": {
666
+ bufferedNetworks.set(payload.payload.runId, {
667
+ name: payload.payload.agentId,
668
+ steps: []
669
+ });
670
+ return {
671
+ type: "data-network",
672
+ id: payload.payload.runId,
673
+ data: {
674
+ name: bufferedNetworks.get(payload.payload.runId).name,
675
+ status: "running",
676
+ steps: bufferedNetworks.get(payload.payload.runId).steps,
677
+ output: null
678
+ }
679
+ };
680
+ }
681
+ case "agent-execution-start": {
682
+ const current = bufferedNetworks.get(payload.payload.runId) || { name: "", steps: [] };
683
+ current.steps.push({
684
+ name: payload.payload.agentId,
685
+ status: "running",
686
+ input: payload.payload.args || null,
687
+ output: null
688
+ });
689
+ bufferedNetworks.set(payload.payload.runId, current);
690
+ return {
691
+ type: "data-network",
692
+ id: payload.payload.runId,
693
+ data: {
694
+ name: current.name,
695
+ status: "running",
696
+ steps: current.steps,
697
+ output: null
698
+ }
699
+ };
700
+ }
701
+ case "workflow-execution-start": {
702
+ const current = bufferedNetworks.get(payload.payload.runId) || { name: "", steps: [] };
703
+ current.steps.push({
704
+ name: payload.payload.name,
705
+ status: "running",
706
+ input: payload.payload.args || null,
707
+ output: null
708
+ });
709
+ bufferedNetworks.set(payload.payload.runId, current);
710
+ return {
711
+ type: "data-network",
712
+ id: payload.payload.runId,
713
+ data: {
714
+ name: current.name,
715
+ status: "running",
716
+ steps: current.steps,
717
+ output: null
718
+ }
719
+ };
720
+ }
721
+ case "tool-execution-start": {
722
+ const current = bufferedNetworks.get(payload.payload.runId) || { name: "", steps: [] };
723
+ current.steps.push({
724
+ name: payload.payload.args?.toolName,
725
+ status: "running",
726
+ input: payload.payload.args?.args || null,
727
+ output: null
728
+ });
729
+ bufferedNetworks.set(payload.payload.runId, current);
730
+ return {
731
+ type: "data-network",
732
+ id: payload.payload.runId,
733
+ data: {
734
+ name: current.name,
735
+ status: "running",
736
+ steps: current.steps,
737
+ output: null
738
+ }
739
+ };
740
+ }
741
+ case "agent-execution-end":
742
+ case "tool-execution-end": {
743
+ const current = bufferedNetworks.get(payload.runId);
744
+ if (!current) return null;
745
+ return {
746
+ type: "data-network",
747
+ id: payload.runId,
748
+ data: {
749
+ name: current.name,
750
+ status: "running",
751
+ steps: current.steps,
752
+ output: null
753
+ }
754
+ };
755
+ }
756
+ case "workflow-execution-end": {
757
+ const current = bufferedNetworks.get(payload.runId);
758
+ if (!current) return null;
759
+ return {
760
+ type: "data-network",
761
+ id: payload.runId,
762
+ data: {
763
+ name: current.name,
764
+ status: "running",
765
+ steps: current.steps,
766
+ output: null
767
+ }
768
+ };
769
+ }
770
+ case "routing-agent-end": {
771
+ const current = bufferedNetworks.get(payload.payload.runId);
772
+ if (!current) return null;
773
+ return {
774
+ type: "data-network",
775
+ id: payload.payload.runId,
776
+ data: {
777
+ name: current.name,
778
+ status: "finished",
779
+ steps: current.steps,
780
+ output: payload.payload?.result ?? null
781
+ }
782
+ };
783
+ }
784
+ case "network-execution-event-step-finish": {
785
+ const current = bufferedNetworks.get(payload.payload.runId);
786
+ if (!current) return null;
787
+ return {
788
+ type: "data-network",
789
+ id: payload.payload.runId,
790
+ data: {
791
+ name: current.name,
792
+ status: "finished",
793
+ steps: current.steps,
794
+ output: payload.payload?.result ?? null
795
+ }
796
+ };
797
+ }
798
+ case "network-execution-event-finish": {
799
+ const current = bufferedNetworks.get(payload.runId);
800
+ if (!current) return null;
801
+ return {
802
+ type: "data-network",
803
+ id: payload.runId,
804
+ data: {
805
+ name: current.name,
806
+ status: "finished",
807
+ steps: current.steps,
808
+ output: payload.payload?.result ?? null
809
+ }
810
+ };
811
+ }
812
+ default:
813
+ return null;
814
+ }
815
+ }
816
+
817
+ // src/to-ai-sdk-format.ts
818
+ function toAISdkFormat(stream) {
819
+ return stream.fullStream.pipeThrough(AgentStreamToAISDKTransformer());
820
+ }
821
+
822
+ // src/chat-route.ts
6
823
  function chatRoute({
7
824
  path = "/chat/:agentId",
8
825
  agent,
@@ -124,16 +941,26 @@ function chatRoute({
124
941
  if (!agentObj) {
125
942
  throw new Error(`Agent ${agentToUse} not found`);
126
943
  }
127
- const result = await agentObj.streamVNext(messages, {
944
+ const result = await agentObj.stream(messages, {
128
945
  ...defaultOptions,
129
- ...rest,
130
- format: "aisdk"
946
+ ...rest
947
+ });
948
+ const uiMessageStream = ai.createUIMessageStream({
949
+ execute: async ({ writer }) => {
950
+ for await (const part of toAISdkFormat(result)) {
951
+ writer.write(part);
952
+ }
953
+ }
954
+ });
955
+ return ai.createUIMessageStreamResponse({
956
+ stream: uiMessageStream
131
957
  });
132
- return result.toUIMessageStreamResponse();
133
958
  }
134
959
  });
135
960
  }
136
961
 
962
+ exports.WorkflowStreamToAISDKTransformer = WorkflowStreamToAISDKTransformer;
137
963
  exports.chatRoute = chatRoute;
964
+ exports.toAISdkFormat = toAISdkFormat;
138
965
  //# sourceMappingURL=index.cjs.map
139
966
  //# sourceMappingURL=index.cjs.map