@mastra/ai-sdk 0.1.1-alpha.0 → 0.1.1

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
@@ -1,4 +1,637 @@
1
1
  import { registerApiRoute } from '@mastra/core/server';
2
+ import { createUIMessageStream, createUIMessageStreamResponse } from 'ai';
3
+ import { DefaultGeneratedFile, DefaultGeneratedFileWithType } from '@mastra/core/stream';
4
+
5
+ // src/chat-route.ts
6
+ function convertMastraChunkToAISDKv5({
7
+ chunk,
8
+ mode = "stream"
9
+ }) {
10
+ switch (chunk.type) {
11
+ case "start":
12
+ return {
13
+ type: "start"
14
+ };
15
+ case "step-start":
16
+ const { messageId: _messageId, ...rest } = chunk.payload;
17
+ return {
18
+ type: "start-step",
19
+ request: rest.request,
20
+ warnings: rest.warnings || []
21
+ };
22
+ case "raw":
23
+ return {
24
+ type: "raw",
25
+ rawValue: chunk.payload
26
+ };
27
+ case "finish": {
28
+ return {
29
+ type: "finish",
30
+ finishReason: chunk.payload.stepResult.reason,
31
+ totalUsage: chunk.payload.output.usage
32
+ };
33
+ }
34
+ case "reasoning-start":
35
+ return {
36
+ type: "reasoning-start",
37
+ id: chunk.payload.id,
38
+ providerMetadata: chunk.payload.providerMetadata
39
+ };
40
+ case "reasoning-delta":
41
+ return {
42
+ type: "reasoning-delta",
43
+ id: chunk.payload.id,
44
+ text: chunk.payload.text,
45
+ providerMetadata: chunk.payload.providerMetadata
46
+ };
47
+ case "reasoning-signature":
48
+ throw new Error('AISDKv5 chunk type "reasoning-signature" not supported');
49
+ // return {
50
+ // type: 'reasoning-signature' as const,
51
+ // id: chunk.payload.id,
52
+ // signature: chunk.payload.signature,
53
+ // };
54
+ case "redacted-reasoning":
55
+ throw new Error('AISDKv5 chunk type "redacted-reasoning" not supported');
56
+ // return {
57
+ // type: 'redacted-reasoning',
58
+ // id: chunk.payload.id,
59
+ // data: chunk.payload.data,
60
+ // };
61
+ case "reasoning-end":
62
+ return {
63
+ type: "reasoning-end",
64
+ id: chunk.payload.id,
65
+ providerMetadata: chunk.payload.providerMetadata
66
+ };
67
+ case "source":
68
+ if (chunk.payload.sourceType === "url") {
69
+ return {
70
+ type: "source",
71
+ sourceType: "url",
72
+ id: chunk.payload.id,
73
+ url: chunk.payload.url,
74
+ title: chunk.payload.title,
75
+ providerMetadata: chunk.payload.providerMetadata
76
+ };
77
+ } else {
78
+ return {
79
+ type: "source",
80
+ sourceType: "document",
81
+ id: chunk.payload.id,
82
+ mediaType: chunk.payload.mimeType,
83
+ title: chunk.payload.title,
84
+ filename: chunk.payload.filename,
85
+ providerMetadata: chunk.payload.providerMetadata
86
+ };
87
+ }
88
+ case "file":
89
+ if (mode === "generate") {
90
+ return {
91
+ type: "file",
92
+ file: new DefaultGeneratedFile({
93
+ data: chunk.payload.data,
94
+ mediaType: chunk.payload.mimeType
95
+ })
96
+ };
97
+ }
98
+ return {
99
+ type: "file",
100
+ file: new DefaultGeneratedFileWithType({
101
+ data: chunk.payload.data,
102
+ mediaType: chunk.payload.mimeType
103
+ })
104
+ };
105
+ case "tool-call":
106
+ return {
107
+ type: "tool-call",
108
+ toolCallId: chunk.payload.toolCallId,
109
+ providerMetadata: chunk.payload.providerMetadata,
110
+ providerExecuted: chunk.payload.providerExecuted,
111
+ toolName: chunk.payload.toolName,
112
+ input: chunk.payload.args
113
+ };
114
+ case "tool-call-input-streaming-start":
115
+ return {
116
+ type: "tool-input-start",
117
+ id: chunk.payload.toolCallId,
118
+ toolName: chunk.payload.toolName,
119
+ dynamic: !!chunk.payload.dynamic,
120
+ providerMetadata: chunk.payload.providerMetadata,
121
+ providerExecuted: chunk.payload.providerExecuted
122
+ };
123
+ case "tool-call-input-streaming-end":
124
+ return {
125
+ type: "tool-input-end",
126
+ id: chunk.payload.toolCallId,
127
+ providerMetadata: chunk.payload.providerMetadata
128
+ };
129
+ case "tool-call-delta":
130
+ return {
131
+ type: "tool-input-delta",
132
+ id: chunk.payload.toolCallId,
133
+ delta: chunk.payload.argsTextDelta,
134
+ providerMetadata: chunk.payload.providerMetadata
135
+ };
136
+ case "step-finish": {
137
+ const { request: _request, providerMetadata, ...rest2 } = chunk.payload.metadata;
138
+ return {
139
+ type: "finish-step",
140
+ response: {
141
+ id: chunk.payload.id || "",
142
+ timestamp: /* @__PURE__ */ new Date(),
143
+ modelId: rest2.modelId || "",
144
+ ...rest2
145
+ },
146
+ usage: chunk.payload.output.usage,
147
+ finishReason: chunk.payload.stepResult.reason,
148
+ providerMetadata
149
+ };
150
+ }
151
+ case "text-delta":
152
+ return {
153
+ type: "text-delta",
154
+ id: chunk.payload.id,
155
+ text: chunk.payload.text,
156
+ providerMetadata: chunk.payload.providerMetadata
157
+ };
158
+ case "text-end":
159
+ return {
160
+ type: "text-end",
161
+ id: chunk.payload.id,
162
+ providerMetadata: chunk.payload.providerMetadata
163
+ };
164
+ case "text-start":
165
+ return {
166
+ type: "text-start",
167
+ id: chunk.payload.id,
168
+ providerMetadata: chunk.payload.providerMetadata
169
+ };
170
+ case "tool-result":
171
+ return {
172
+ type: "tool-result",
173
+ input: chunk.payload.args,
174
+ toolCallId: chunk.payload.toolCallId,
175
+ providerExecuted: chunk.payload.providerExecuted,
176
+ toolName: chunk.payload.toolName,
177
+ output: chunk.payload.result
178
+ // providerMetadata: chunk.payload.providerMetadata, // AI v5 types don't show this?
179
+ };
180
+ case "tool-error":
181
+ return {
182
+ type: "tool-error",
183
+ error: chunk.payload.error,
184
+ input: chunk.payload.args,
185
+ toolCallId: chunk.payload.toolCallId,
186
+ providerExecuted: chunk.payload.providerExecuted,
187
+ toolName: chunk.payload.toolName
188
+ // providerMetadata: chunk.payload.providerMetadata, // AI v5 types don't show this?
189
+ };
190
+ case "abort":
191
+ return {
192
+ type: "abort"
193
+ };
194
+ case "error":
195
+ return {
196
+ type: "error",
197
+ error: chunk.payload.error
198
+ };
199
+ case "object":
200
+ return {
201
+ type: "object",
202
+ object: chunk.object
203
+ };
204
+ default:
205
+ if (chunk.type && "payload" in chunk && chunk.payload) {
206
+ return {
207
+ type: chunk.type,
208
+ ...chunk.payload || {}
209
+ };
210
+ }
211
+ return;
212
+ }
213
+ }
214
+ function convertFullStreamChunkToUIMessageStream({
215
+ part,
216
+ messageMetadataValue,
217
+ sendReasoning,
218
+ sendSources,
219
+ onError,
220
+ sendStart,
221
+ sendFinish,
222
+ responseMessageId
223
+ }) {
224
+ const partType = part.type;
225
+ switch (partType) {
226
+ case "text-start": {
227
+ return {
228
+ type: "text-start",
229
+ id: part.id,
230
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
231
+ };
232
+ }
233
+ case "text-delta": {
234
+ return {
235
+ type: "text-delta",
236
+ id: part.id,
237
+ delta: part.text,
238
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
239
+ };
240
+ }
241
+ case "text-end": {
242
+ return {
243
+ type: "text-end",
244
+ id: part.id,
245
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
246
+ };
247
+ }
248
+ case "reasoning-start": {
249
+ return {
250
+ type: "reasoning-start",
251
+ id: part.id,
252
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
253
+ };
254
+ }
255
+ case "reasoning-delta": {
256
+ return;
257
+ }
258
+ case "reasoning-end": {
259
+ return {
260
+ type: "reasoning-end",
261
+ id: part.id,
262
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
263
+ };
264
+ }
265
+ case "file": {
266
+ return {
267
+ type: "file",
268
+ mediaType: part.file.mediaType,
269
+ url: `data:${part.file.mediaType};base64,${part.file.base64}`
270
+ };
271
+ }
272
+ case "source": {
273
+ return;
274
+ }
275
+ case "tool-input-start": {
276
+ return {
277
+ type: "tool-input-start",
278
+ toolCallId: part.id,
279
+ toolName: part.toolName,
280
+ ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
281
+ ...part.dynamic != null ? { dynamic: part.dynamic } : {}
282
+ };
283
+ }
284
+ case "tool-input-delta": {
285
+ return {
286
+ type: "tool-input-delta",
287
+ toolCallId: part.id,
288
+ inputTextDelta: part.delta
289
+ };
290
+ }
291
+ case "tool-call": {
292
+ return {
293
+ type: "tool-input-available",
294
+ toolCallId: part.toolCallId,
295
+ toolName: part.toolName,
296
+ input: part.input,
297
+ ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
298
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},
299
+ ...part.dynamic != null ? { dynamic: part.dynamic } : {}
300
+ };
301
+ }
302
+ case "tool-result": {
303
+ return {
304
+ type: "tool-output-available",
305
+ toolCallId: part.toolCallId,
306
+ output: part.output,
307
+ ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
308
+ ...part.dynamic != null ? { dynamic: part.dynamic } : {}
309
+ };
310
+ }
311
+ case "tool-output": {
312
+ if (part.output.from === "AGENT") {
313
+ return {
314
+ type: "tool-agent",
315
+ toolCallId: part.toolCallId,
316
+ payload: part.output
317
+ };
318
+ }
319
+ return;
320
+ }
321
+ case "tool-error": {
322
+ return {
323
+ type: "tool-output-error",
324
+ toolCallId: part.toolCallId,
325
+ errorText: onError(part.error),
326
+ ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
327
+ ...part.dynamic != null ? { dynamic: part.dynamic } : {}
328
+ };
329
+ }
330
+ case "error": {
331
+ return {
332
+ type: "error",
333
+ errorText: onError(part.error)
334
+ };
335
+ }
336
+ case "start-step": {
337
+ return { type: "start-step" };
338
+ }
339
+ case "finish-step": {
340
+ return { type: "finish-step" };
341
+ }
342
+ case "start": {
343
+ {
344
+ return {
345
+ type: "start",
346
+ ...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {},
347
+ ...responseMessageId != null ? { messageId: responseMessageId } : {}
348
+ };
349
+ }
350
+ }
351
+ case "finish": {
352
+ {
353
+ return {
354
+ type: "finish",
355
+ ...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {}
356
+ };
357
+ }
358
+ }
359
+ case "abort": {
360
+ return part;
361
+ }
362
+ case "tool-input-end": {
363
+ return;
364
+ }
365
+ case "raw": {
366
+ return;
367
+ }
368
+ default: {
369
+ const exhaustiveCheck = partType;
370
+ throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);
371
+ }
372
+ }
373
+ }
374
+
375
+ // src/to-ai-sdk-format.ts
376
+ function WorkflowStreamToAISDKTransformer() {
377
+ const steps = {};
378
+ return new TransformStream({
379
+ start(controller) {
380
+ controller.enqueue({
381
+ data: JSON.stringify({
382
+ type: "start",
383
+ messageId: "1"
384
+ })
385
+ });
386
+ },
387
+ flush(controller) {
388
+ controller.enqueue({
389
+ data: JSON.stringify({
390
+ type: "finish"
391
+ })
392
+ });
393
+ controller.enqueue({
394
+ data: "[DONE]"
395
+ });
396
+ },
397
+ 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
+ }
465
+ }
466
+ });
467
+ }
468
+ function AgentStreamToAISDKTransformer() {
469
+ let bufferedSteps = /* @__PURE__ */ new Map();
470
+ return new TransformStream({
471
+ transform(chunk, controller) {
472
+ const part = convertMastraChunkToAISDKv5({ chunk, mode: "stream" });
473
+ const transformedChunk = convertFullStreamChunkToUIMessageStream({
474
+ part,
475
+ sendReasoning: false,
476
+ sendSources: false,
477
+ sendStart: true,
478
+ sendFinish: true,
479
+ responseMessageId: chunk.runId,
480
+ onError() {
481
+ return "Error";
482
+ }
483
+ });
484
+ if (transformedChunk) {
485
+ if (transformedChunk.type === "tool-agent") {
486
+ const payload = transformedChunk.payload;
487
+ const agentTransformed = transformAgent(payload, bufferedSteps);
488
+ if (agentTransformed) controller.enqueue(agentTransformed);
489
+ } else {
490
+ controller.enqueue(transformedChunk);
491
+ }
492
+ }
493
+ }
494
+ });
495
+ }
496
+ function transformAgent(payload, bufferedSteps) {
497
+ let hasChanged = false;
498
+ switch (payload.type) {
499
+ case "start":
500
+ bufferedSteps.set(payload.runId, {
501
+ id: payload.payload.id,
502
+ object: null,
503
+ finishReason: null,
504
+ usage: null,
505
+ warnings: [],
506
+ text: "",
507
+ reasoning: [],
508
+ sources: [],
509
+ files: [],
510
+ toolCalls: [],
511
+ toolResults: [],
512
+ request: {},
513
+ response: {
514
+ id: "",
515
+ timestamp: /* @__PURE__ */ new Date(),
516
+ modelId: "",
517
+ messages: []
518
+ },
519
+ providerMetadata: void 0,
520
+ steps: [],
521
+ status: "running"
522
+ });
523
+ hasChanged = true;
524
+ break;
525
+ case "finish":
526
+ bufferedSteps.set(payload.runId, {
527
+ ...bufferedSteps.get(payload.runId),
528
+ finishReason: payload.payload.stepResult.reason,
529
+ usage: payload.payload?.output?.usage,
530
+ warnings: payload.payload?.stepResult?.warnings,
531
+ steps: bufferedSteps.get(payload.runId).steps,
532
+ status: "finished"
533
+ });
534
+ hasChanged = true;
535
+ break;
536
+ case "text-delta":
537
+ const prevData = bufferedSteps.get(payload.runId);
538
+ bufferedSteps.set(payload.runId, {
539
+ ...prevData,
540
+ text: `${prevData.text}${payload.payload.text}`
541
+ });
542
+ hasChanged = true;
543
+ break;
544
+ case "reasoning-delta":
545
+ bufferedSteps.set(payload.runId, {
546
+ ...bufferedSteps.get(payload.runId),
547
+ reasoning: [...bufferedSteps.get(payload.runId).reasoning, payload.payload.text]
548
+ });
549
+ hasChanged = true;
550
+ break;
551
+ case "source":
552
+ bufferedSteps.set(payload.runId, {
553
+ ...bufferedSteps.get(payload.runId),
554
+ sources: [...bufferedSteps.get(payload.runId).sources, payload.payload]
555
+ });
556
+ hasChanged = true;
557
+ break;
558
+ case "file":
559
+ bufferedSteps.set(payload.runId, {
560
+ ...bufferedSteps.get(payload.runId),
561
+ files: [...bufferedSteps.get(payload.runId).files, payload.payload]
562
+ });
563
+ hasChanged = true;
564
+ break;
565
+ case "tool-call":
566
+ bufferedSteps.set(payload.runId, {
567
+ ...bufferedSteps.get(payload.runId),
568
+ toolCalls: [...bufferedSteps.get(payload.runId).toolCalls, payload.payload]
569
+ });
570
+ hasChanged = true;
571
+ break;
572
+ case "tool-result":
573
+ bufferedSteps.set(payload.runId, {
574
+ ...bufferedSteps.get(payload.runId),
575
+ toolResults: [...bufferedSteps.get(payload.runId).toolResults, payload.payload]
576
+ });
577
+ hasChanged = true;
578
+ break;
579
+ case "object-result":
580
+ bufferedSteps.set(payload.runId, {
581
+ ...bufferedSteps.get(payload.runId),
582
+ object: payload.object
583
+ });
584
+ hasChanged = true;
585
+ break;
586
+ case "object":
587
+ bufferedSteps.set(payload.runId, {
588
+ ...bufferedSteps.get(payload.runId),
589
+ object: payload.object
590
+ });
591
+ hasChanged = true;
592
+ break;
593
+ case "step-finish":
594
+ const currentRun = bufferedSteps.get(payload.runId);
595
+ const stepResult = {
596
+ ...bufferedSteps.get(payload.runId),
597
+ stepType: currentRun.steps.length === 0 ? "initial" : "tool-result",
598
+ reasoningText: bufferedSteps.get(payload.runId).reasoning.join(""),
599
+ staticToolCalls: bufferedSteps.get(payload.runId).toolCalls.filter((part) => part.type === "tool-call" && part.payload?.dynamic === false),
600
+ dynamicToolCalls: bufferedSteps.get(payload.runId).toolCalls.filter((part) => part.type === "tool-call" && part.payload?.dynamic === true),
601
+ staticToolResults: bufferedSteps.get(payload.runId).toolResults.filter((part) => part.type === "tool-result" && part.payload?.dynamic === false),
602
+ dynamicToolResults: bufferedSteps.get(payload.runId).toolResults.filter((part) => part.type === "tool-result" && part.payload?.dynamic === true),
603
+ finishReason: payload.payload.stepResult.reason,
604
+ usage: payload.payload.output.usage,
605
+ warnings: payload.payload.stepResult.warnings || [],
606
+ response: {
607
+ id: payload.payload.id || "",
608
+ timestamp: payload.payload.metadata?.timestamp || /* @__PURE__ */ new Date(),
609
+ modelId: payload.payload.metadata?.modelId || payload.payload.metadata?.model || "",
610
+ ...bufferedSteps.get(payload.runId).response,
611
+ messages: bufferedSteps.get(payload.runId).response.messages || []
612
+ }
613
+ };
614
+ bufferedSteps.set(payload.runId, {
615
+ ...bufferedSteps.get(payload.runId),
616
+ usage: payload.payload.output.usage,
617
+ warnings: payload.payload.stepResult.warnings || [],
618
+ steps: [...bufferedSteps.get(payload.runId).steps, stepResult]
619
+ });
620
+ hasChanged = true;
621
+ break;
622
+ }
623
+ if (hasChanged) {
624
+ return {
625
+ type: "data-tool-agent",
626
+ id: payload.runId,
627
+ data: bufferedSteps.get(payload.runId)
628
+ };
629
+ }
630
+ return null;
631
+ }
632
+ function toAISdkFormat(stream) {
633
+ return stream.fullStream.pipeThrough(AgentStreamToAISDKTransformer());
634
+ }
2
635
 
3
636
  // src/chat-route.ts
4
637
  function chatRoute({
@@ -124,111 +757,22 @@ function chatRoute({
124
757
  }
125
758
  const result = await agentObj.stream(messages, {
126
759
  ...defaultOptions,
127
- ...rest,
128
- format: "aisdk"
760
+ ...rest
129
761
  });
130
- return result.toUIMessageStreamResponse();
131
- }
132
- });
133
- }
134
-
135
- // src/to-ai-sdk-format.ts
136
- function WokflowStreamToAISDKTransformer() {
137
- const steps = {};
138
- return new TransformStream({
139
- start(controller) {
140
- controller.enqueue({
141
- data: JSON.stringify({
142
- type: "start",
143
- messageId: "1"
144
- })
145
- });
146
- },
147
- flush(controller) {
148
- controller.enqueue({
149
- data: JSON.stringify({
150
- type: "finish"
151
- })
762
+ const uiMessageStream = createUIMessageStream({
763
+ execute: async ({ writer }) => {
764
+ for await (const part of toAISdkFormat(result)) {
765
+ writer.write(part);
766
+ }
767
+ }
152
768
  });
153
- controller.enqueue({
154
- data: "[DONE]"
769
+ return createUIMessageStreamResponse({
770
+ stream: uiMessageStream
155
771
  });
156
- },
157
- transform(chunk, controller) {
158
- let workflowName = "";
159
- if (chunk.type === "workflow-start") {
160
- workflowName = chunk.payload.workflowId;
161
- controller.enqueue({
162
- data: JSON.stringify({
163
- type: "data-workflow",
164
- id: chunk.runId,
165
- data: {
166
- name: workflowName,
167
- status: "running",
168
- steps: {},
169
- output: null
170
- }
171
- })
172
- });
173
- } else if (chunk.type === "workflow-step-start") {
174
- steps[chunk.payload.id] = {
175
- // TODO swap with name
176
- name: chunk.payload.id,
177
- status: chunk.payload.status,
178
- input: chunk.payload.payload ?? null,
179
- output: null
180
- };
181
- controller.enqueue({
182
- data: JSON.stringify({
183
- type: "data-workflow",
184
- id: chunk.runId,
185
- data: {
186
- name: workflowName,
187
- status: "running",
188
- steps,
189
- output: null
190
- }
191
- })
192
- });
193
- } else if (chunk.type === "workflow-step-result") {
194
- steps[chunk.payload.id] = {
195
- ...steps[chunk.payload.id],
196
- status: chunk.payload.status,
197
- output: chunk.payload.output ?? null
198
- };
199
- controller.enqueue({
200
- data: JSON.stringify({
201
- type: "data-workflow",
202
- id: chunk.runId,
203
- data: {
204
- name: workflowName,
205
- status: "running",
206
- steps,
207
- output: null
208
- }
209
- })
210
- });
211
- } else if (chunk.type === "workflow-finish") {
212
- controller.enqueue({
213
- data: JSON.stringify({
214
- type: "data-workflow",
215
- id: chunk.runId,
216
- data: {
217
- name: workflowName,
218
- steps,
219
- output: chunk.payload.output ?? null,
220
- status: chunk.payload.workflowStatus
221
- }
222
- })
223
- });
224
- }
225
772
  }
226
773
  });
227
774
  }
228
- function toAISdkFormat(stream) {
229
- return stream.pipeThrough(WokflowStreamToAISDKTransformer());
230
- }
231
775
 
232
- export { WokflowStreamToAISDKTransformer, chatRoute, toAISdkFormat };
776
+ export { WorkflowStreamToAISDKTransformer, chatRoute, toAISdkFormat };
233
777
  //# sourceMappingURL=index.js.map
234
778
  //# sourceMappingURL=index.js.map