@mastra/ai-sdk 0.0.0-fix-network-silence-20250930164151 → 0.0.0-fix-runtimeContext-passing-chatRoute-20251008220150

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,6 +1,639 @@
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');
6
+
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
+ }
321
+ return;
322
+ }
323
+ case "tool-error": {
324
+ return {
325
+ type: "tool-output-error",
326
+ toolCallId: part.toolCallId,
327
+ errorText: onError(part.error),
328
+ ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
329
+ ...part.dynamic != null ? { dynamic: part.dynamic } : {}
330
+ };
331
+ }
332
+ case "error": {
333
+ return {
334
+ type: "error",
335
+ errorText: onError(part.error)
336
+ };
337
+ }
338
+ case "start-step": {
339
+ return { type: "start-step" };
340
+ }
341
+ case "finish-step": {
342
+ return { type: "finish-step" };
343
+ }
344
+ case "start": {
345
+ {
346
+ return {
347
+ type: "start",
348
+ ...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {},
349
+ ...responseMessageId != null ? { messageId: responseMessageId } : {}
350
+ };
351
+ }
352
+ }
353
+ case "finish": {
354
+ {
355
+ return {
356
+ type: "finish",
357
+ ...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {}
358
+ };
359
+ }
360
+ }
361
+ case "abort": {
362
+ return part;
363
+ }
364
+ case "tool-input-end": {
365
+ return;
366
+ }
367
+ case "raw": {
368
+ return;
369
+ }
370
+ default: {
371
+ const exhaustiveCheck = partType;
372
+ throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);
373
+ }
374
+ }
375
+ }
376
+
377
+ // src/to-ai-sdk-format.ts
378
+ function WorkflowStreamToAISDKTransformer() {
379
+ const steps = {};
380
+ return new TransformStream({
381
+ start(controller) {
382
+ controller.enqueue({
383
+ data: JSON.stringify({
384
+ type: "start",
385
+ messageId: "1"
386
+ })
387
+ });
388
+ },
389
+ flush(controller) {
390
+ controller.enqueue({
391
+ data: JSON.stringify({
392
+ type: "finish"
393
+ })
394
+ });
395
+ controller.enqueue({
396
+ data: "[DONE]"
397
+ });
398
+ },
399
+ transform(chunk, controller) {
400
+ let workflowName = "";
401
+ if (chunk.type === "workflow-start") {
402
+ workflowName = chunk.payload.workflowId;
403
+ controller.enqueue({
404
+ data: JSON.stringify({
405
+ type: "data-workflow",
406
+ id: chunk.runId,
407
+ data: {
408
+ name: workflowName,
409
+ status: "running",
410
+ steps: {},
411
+ output: null
412
+ }
413
+ })
414
+ });
415
+ } else if (chunk.type === "workflow-step-start") {
416
+ steps[chunk.payload.id] = {
417
+ // TODO swap with name
418
+ name: chunk.payload.id,
419
+ status: chunk.payload.status,
420
+ input: chunk.payload.payload ?? null,
421
+ output: null
422
+ };
423
+ controller.enqueue({
424
+ data: JSON.stringify({
425
+ type: "data-workflow",
426
+ id: chunk.runId,
427
+ data: {
428
+ name: workflowName,
429
+ status: "running",
430
+ steps,
431
+ output: null
432
+ }
433
+ })
434
+ });
435
+ } else if (chunk.type === "workflow-step-result") {
436
+ steps[chunk.payload.id] = {
437
+ ...steps[chunk.payload.id],
438
+ status: chunk.payload.status,
439
+ output: chunk.payload.output ?? null
440
+ };
441
+ controller.enqueue({
442
+ data: JSON.stringify({
443
+ type: "data-workflow",
444
+ id: chunk.runId,
445
+ data: {
446
+ name: workflowName,
447
+ status: "running",
448
+ steps,
449
+ output: null
450
+ }
451
+ })
452
+ });
453
+ } else if (chunk.type === "workflow-finish") {
454
+ controller.enqueue({
455
+ data: JSON.stringify({
456
+ type: "data-workflow",
457
+ id: chunk.runId,
458
+ data: {
459
+ name: workflowName,
460
+ steps,
461
+ output: chunk.payload.output ?? null,
462
+ status: chunk.payload.workflowStatus
463
+ }
464
+ })
465
+ });
466
+ }
467
+ }
468
+ });
469
+ }
470
+ function AgentStreamToAISDKTransformer() {
471
+ let bufferedSteps = /* @__PURE__ */ new Map();
472
+ return new TransformStream({
473
+ transform(chunk, controller) {
474
+ const part = convertMastraChunkToAISDKv5({ chunk, mode: "stream" });
475
+ const transformedChunk = convertFullStreamChunkToUIMessageStream({
476
+ part,
477
+ sendReasoning: false,
478
+ sendSources: false,
479
+ sendStart: true,
480
+ sendFinish: true,
481
+ responseMessageId: chunk.runId,
482
+ onError() {
483
+ return "Error";
484
+ }
485
+ });
486
+ if (transformedChunk) {
487
+ if (transformedChunk.type === "tool-agent") {
488
+ const payload = transformedChunk.payload;
489
+ const agentTransformed = transformAgent(payload, bufferedSteps);
490
+ if (agentTransformed) controller.enqueue(agentTransformed);
491
+ } else {
492
+ controller.enqueue(transformedChunk);
493
+ }
494
+ }
495
+ }
496
+ });
497
+ }
498
+ function transformAgent(payload, bufferedSteps) {
499
+ let hasChanged = false;
500
+ switch (payload.type) {
501
+ case "start":
502
+ bufferedSteps.set(payload.runId, {
503
+ id: payload.payload.id,
504
+ object: null,
505
+ finishReason: null,
506
+ usage: null,
507
+ warnings: [],
508
+ text: "",
509
+ reasoning: [],
510
+ sources: [],
511
+ files: [],
512
+ toolCalls: [],
513
+ toolResults: [],
514
+ request: {},
515
+ response: {
516
+ id: "",
517
+ timestamp: /* @__PURE__ */ new Date(),
518
+ modelId: "",
519
+ messages: []
520
+ },
521
+ providerMetadata: void 0,
522
+ steps: [],
523
+ status: "running"
524
+ });
525
+ hasChanged = true;
526
+ break;
527
+ case "finish":
528
+ bufferedSteps.set(payload.runId, {
529
+ ...bufferedSteps.get(payload.runId),
530
+ finishReason: payload.payload.stepResult.reason,
531
+ usage: payload.payload?.output?.usage,
532
+ warnings: payload.payload?.stepResult?.warnings,
533
+ steps: bufferedSteps.get(payload.runId).steps,
534
+ status: "finished"
535
+ });
536
+ hasChanged = true;
537
+ break;
538
+ case "text-delta":
539
+ const prevData = bufferedSteps.get(payload.runId);
540
+ bufferedSteps.set(payload.runId, {
541
+ ...prevData,
542
+ text: `${prevData.text}${payload.payload.text}`
543
+ });
544
+ hasChanged = true;
545
+ break;
546
+ case "reasoning-delta":
547
+ bufferedSteps.set(payload.runId, {
548
+ ...bufferedSteps.get(payload.runId),
549
+ reasoning: [...bufferedSteps.get(payload.runId).reasoning, payload.payload.text]
550
+ });
551
+ hasChanged = true;
552
+ break;
553
+ case "source":
554
+ bufferedSteps.set(payload.runId, {
555
+ ...bufferedSteps.get(payload.runId),
556
+ sources: [...bufferedSteps.get(payload.runId).sources, payload.payload]
557
+ });
558
+ hasChanged = true;
559
+ break;
560
+ case "file":
561
+ bufferedSteps.set(payload.runId, {
562
+ ...bufferedSteps.get(payload.runId),
563
+ files: [...bufferedSteps.get(payload.runId).files, payload.payload]
564
+ });
565
+ hasChanged = true;
566
+ break;
567
+ case "tool-call":
568
+ bufferedSteps.set(payload.runId, {
569
+ ...bufferedSteps.get(payload.runId),
570
+ toolCalls: [...bufferedSteps.get(payload.runId).toolCalls, payload.payload]
571
+ });
572
+ hasChanged = true;
573
+ break;
574
+ case "tool-result":
575
+ bufferedSteps.set(payload.runId, {
576
+ ...bufferedSteps.get(payload.runId),
577
+ toolResults: [...bufferedSteps.get(payload.runId).toolResults, payload.payload]
578
+ });
579
+ hasChanged = true;
580
+ break;
581
+ case "object-result":
582
+ bufferedSteps.set(payload.runId, {
583
+ ...bufferedSteps.get(payload.runId),
584
+ object: payload.object
585
+ });
586
+ hasChanged = true;
587
+ break;
588
+ case "object":
589
+ bufferedSteps.set(payload.runId, {
590
+ ...bufferedSteps.get(payload.runId),
591
+ object: payload.object
592
+ });
593
+ hasChanged = true;
594
+ break;
595
+ case "step-finish":
596
+ const currentRun = bufferedSteps.get(payload.runId);
597
+ const stepResult = {
598
+ ...bufferedSteps.get(payload.runId),
599
+ stepType: currentRun.steps.length === 0 ? "initial" : "tool-result",
600
+ reasoningText: bufferedSteps.get(payload.runId).reasoning.join(""),
601
+ staticToolCalls: bufferedSteps.get(payload.runId).toolCalls.filter((part) => part.type === "tool-call" && part.payload?.dynamic === false),
602
+ dynamicToolCalls: bufferedSteps.get(payload.runId).toolCalls.filter((part) => part.type === "tool-call" && part.payload?.dynamic === true),
603
+ staticToolResults: bufferedSteps.get(payload.runId).toolResults.filter((part) => part.type === "tool-result" && part.payload?.dynamic === false),
604
+ dynamicToolResults: bufferedSteps.get(payload.runId).toolResults.filter((part) => part.type === "tool-result" && part.payload?.dynamic === true),
605
+ finishReason: payload.payload.stepResult.reason,
606
+ usage: payload.payload.output.usage,
607
+ warnings: payload.payload.stepResult.warnings || [],
608
+ response: {
609
+ id: payload.payload.id || "",
610
+ timestamp: payload.payload.metadata?.timestamp || /* @__PURE__ */ new Date(),
611
+ modelId: payload.payload.metadata?.modelId || payload.payload.metadata?.model || "",
612
+ ...bufferedSteps.get(payload.runId).response,
613
+ messages: bufferedSteps.get(payload.runId).response.messages || []
614
+ }
615
+ };
616
+ bufferedSteps.set(payload.runId, {
617
+ ...bufferedSteps.get(payload.runId),
618
+ usage: payload.payload.output.usage,
619
+ warnings: payload.payload.stepResult.warnings || [],
620
+ steps: [...bufferedSteps.get(payload.runId).steps, stepResult]
621
+ });
622
+ hasChanged = true;
623
+ break;
624
+ }
625
+ if (hasChanged) {
626
+ return {
627
+ type: "data-tool-agent",
628
+ id: payload.runId,
629
+ data: bufferedSteps.get(payload.runId)
630
+ };
631
+ }
632
+ return null;
633
+ }
634
+ function toAISdkFormat(stream) {
635
+ return stream.fullStream.pipeThrough(AgentStreamToAISDKTransformer());
636
+ }
4
637
 
5
638
  // src/chat-route.ts
6
639
  function chatRoute({
@@ -107,6 +740,7 @@ function chatRoute({
107
740
  handler: async (c) => {
108
741
  const { messages, ...rest } = await c.req.json();
109
742
  const mastra = c.get("mastra");
743
+ const runtimeContext = c.get("runtimeContext");
110
744
  let agentToUse = agent;
111
745
  if (!agent) {
112
746
  const agentId = c.req.param("agentId");
@@ -117,6 +751,9 @@ function chatRoute({
117
751
  `Fixed agent ID was set together with an agentId path parameter. This can lead to unexpected behavior.`
118
752
  );
119
753
  }
754
+ if (runtimeContext && defaultOptions?.runtimeContext) {
755
+ mastra.getLogger()?.warn(`"runtimeContext" set in the route options will be overridden by the request's "runtimeContext".`);
756
+ }
120
757
  if (!agentToUse) {
121
758
  throw new Error("Agent ID is required");
122
759
  }
@@ -124,114 +761,26 @@ function chatRoute({
124
761
  if (!agentObj) {
125
762
  throw new Error(`Agent ${agentToUse} not found`);
126
763
  }
127
- const result = await agentObj.streamVNext(messages, {
764
+ const result = await agentObj.stream(messages, {
128
765
  ...defaultOptions,
129
766
  ...rest,
130
- format: "aisdk"
767
+ runtimeContext: runtimeContext || defaultOptions?.runtimeContext
131
768
  });
132
- return result.toUIMessageStreamResponse();
133
- }
134
- });
135
- }
136
-
137
- // src/to-ai-sdk-format.ts
138
- function WokflowStreamToAISDKTransformer() {
139
- const steps = {};
140
- return new TransformStream({
141
- start(controller) {
142
- controller.enqueue({
143
- data: JSON.stringify({
144
- type: "start",
145
- messageId: "1"
146
- })
147
- });
148
- },
149
- flush(controller) {
150
- controller.enqueue({
151
- data: JSON.stringify({
152
- type: "finish"
153
- })
769
+ const uiMessageStream = ai.createUIMessageStream({
770
+ execute: async ({ writer }) => {
771
+ for await (const part of toAISdkFormat(result)) {
772
+ writer.write(part);
773
+ }
774
+ }
154
775
  });
155
- controller.enqueue({
156
- data: "[DONE]"
776
+ return ai.createUIMessageStreamResponse({
777
+ stream: uiMessageStream
157
778
  });
158
- },
159
- transform(chunk, controller) {
160
- let workflowName = "";
161
- if (chunk.type === "workflow-start") {
162
- workflowName = chunk.payload.workflowId;
163
- controller.enqueue({
164
- data: JSON.stringify({
165
- type: "data-workflow",
166
- id: chunk.runId,
167
- data: {
168
- name: workflowName,
169
- status: "running",
170
- steps: {},
171
- output: null
172
- }
173
- })
174
- });
175
- } else if (chunk.type === "workflow-step-start") {
176
- steps[chunk.payload.id] = {
177
- // TODO swap with name
178
- name: chunk.payload.id,
179
- status: chunk.payload.status,
180
- input: chunk.payload.payload ?? null,
181
- output: null
182
- };
183
- controller.enqueue({
184
- data: JSON.stringify({
185
- type: "data-workflow",
186
- id: chunk.runId,
187
- data: {
188
- name: workflowName,
189
- status: "running",
190
- steps,
191
- output: null
192
- }
193
- })
194
- });
195
- } else if (chunk.type === "workflow-step-result") {
196
- steps[chunk.payload.id] = {
197
- ...steps[chunk.payload.id],
198
- status: chunk.payload.status,
199
- output: chunk.payload.output ?? null
200
- };
201
- controller.enqueue({
202
- data: JSON.stringify({
203
- type: "data-workflow",
204
- id: chunk.runId,
205
- data: {
206
- name: workflowName,
207
- status: "running",
208
- steps,
209
- output: null
210
- }
211
- })
212
- });
213
- } else if (chunk.type === "workflow-finish") {
214
- controller.enqueue({
215
- data: JSON.stringify({
216
- type: "data-workflow",
217
- id: chunk.runId,
218
- data: {
219
- name: workflowName,
220
- steps,
221
- output: chunk.payload.output ?? null,
222
- status: chunk.payload.workflowStatus
223
- }
224
- })
225
- });
226
- }
227
779
  }
228
780
  });
229
781
  }
230
- function toAISdkFormat(stream) {
231
- return stream.pipeThrough(WokflowStreamToAISDKTransformer());
232
- }
233
782
 
234
- exports.WokflowStreamToAISDKTransformer = WokflowStreamToAISDKTransformer;
783
+ exports.WorkflowStreamToAISDKTransformer = WorkflowStreamToAISDKTransformer;
235
784
  exports.chatRoute = chatRoute;
236
785
  exports.toAISdkFormat = toAISdkFormat;
237
786
  //# sourceMappingURL=index.cjs.map