@assistant-ui/react 0.5.27 → 0.5.28

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.mjs CHANGED
@@ -1,13 +1,15 @@
1
1
  "use client";
2
2
  import {
3
+ PipeableTransformStream,
3
4
  mergeModelConfigs,
4
5
  runResultStream,
6
+ streamPartEncoderStream,
5
7
  toCoreMessage,
6
8
  toCoreMessages,
7
9
  toLanguageModelMessages,
8
10
  toLanguageModelTools,
9
11
  toolResultStream
10
- } from "./chunk-ZWRFAYHH.mjs";
12
+ } from "./chunk-NLH52OUL.mjs";
11
13
  import {
12
14
  __export
13
15
  } from "./chunk-BJPOCE4O.mjs";
@@ -2524,6 +2526,52 @@ var fromLanguageModelTools = (tools) => {
2524
2526
  );
2525
2527
  };
2526
2528
 
2529
+ // src/runtimes/edge/streams/utils/chunkByLineStream.ts
2530
+ function chunkByLineStream() {
2531
+ let buffer = "";
2532
+ return new TransformStream({
2533
+ transform(chunk, controller) {
2534
+ buffer += chunk;
2535
+ const lines = buffer.split("\n");
2536
+ for (let i = 0; i < lines.length - 1; i++) {
2537
+ controller.enqueue(lines[i]);
2538
+ }
2539
+ buffer = lines[lines.length - 1];
2540
+ },
2541
+ flush(controller) {
2542
+ if (buffer) {
2543
+ controller.enqueue(buffer);
2544
+ }
2545
+ }
2546
+ });
2547
+ }
2548
+
2549
+ // src/runtimes/edge/streams/utils/streamPartDecoderStream.ts
2550
+ var decodeStreamPart = (part) => {
2551
+ const index = part.indexOf(":");
2552
+ if (index === -1) throw new Error("Invalid stream part");
2553
+ return {
2554
+ type: part.slice(0, index),
2555
+ value: JSON.parse(part.slice(index + 1))
2556
+ };
2557
+ };
2558
+ function streamPartDecoderStream() {
2559
+ const decodeStream = new TransformStream({
2560
+ transform(chunk, controller) {
2561
+ controller.enqueue(decodeStreamPart(chunk));
2562
+ }
2563
+ });
2564
+ return new PipeableTransformStream((readable) => {
2565
+ return readable.pipeThrough(new TextDecoderStream()).pipeThrough(chunkByLineStream()).pipeThrough(decodeStream);
2566
+ });
2567
+ }
2568
+
2569
+ // src/runtimes/edge/streams/utils/index.ts
2570
+ var streamUtils = {
2571
+ streamPartEncoderStream,
2572
+ streamPartDecoderStream
2573
+ };
2574
+
2527
2575
  // src/runtimes/edge/useEdgeRuntime.ts
2528
2576
  import { useState as useState8 } from "react";
2529
2577
 
@@ -2532,9 +2580,8 @@ function assistantDecoderStream() {
2532
2580
  const toolCallNames = /* @__PURE__ */ new Map();
2533
2581
  let currentToolCall;
2534
2582
  return new TransformStream({
2535
- transform(chunk, controller) {
2536
- const [code, value] = parseStreamPart(chunk);
2537
- if (currentToolCall && code !== "2" /* ToolCallArgsTextDelta */ && code !== "E" /* Error */) {
2583
+ transform({ type, value }, controller) {
2584
+ if (currentToolCall && type !== "2" /* ToolCallArgsTextDelta */ && type !== "E" /* Error */) {
2538
2585
  controller.enqueue({
2539
2586
  type: "tool-call",
2540
2587
  toolCallType: "function",
@@ -2544,7 +2591,7 @@ function assistantDecoderStream() {
2544
2591
  });
2545
2592
  currentToolCall = void 0;
2546
2593
  }
2547
- switch (code) {
2594
+ switch (type) {
2548
2595
  case "0" /* TextDelta */: {
2549
2596
  controller.enqueue({
2550
2597
  type: "text-delta",
@@ -2595,41 +2642,13 @@ function assistantDecoderStream() {
2595
2642
  break;
2596
2643
  }
2597
2644
  default: {
2598
- const unhandledType = code;
2645
+ const unhandledType = type;
2599
2646
  throw new Error(`Unhandled chunk type: ${unhandledType}`);
2600
2647
  }
2601
2648
  }
2602
2649
  }
2603
2650
  });
2604
2651
  }
2605
- var parseStreamPart = (part) => {
2606
- const index = part.indexOf(":");
2607
- if (index === -1) throw new Error("Invalid stream part");
2608
- return [
2609
- part.slice(0, index),
2610
- JSON.parse(part.slice(index + 1))
2611
- ];
2612
- };
2613
-
2614
- // src/runtimes/edge/streams/chunkByLineStream.ts
2615
- function chunkByLineStream() {
2616
- let buffer = "";
2617
- return new TransformStream({
2618
- transform(chunk, controller) {
2619
- buffer += chunk;
2620
- const lines = buffer.split("\n");
2621
- for (let i = 0; i < lines.length - 1; i++) {
2622
- controller.enqueue(lines[i]);
2623
- }
2624
- buffer = lines[lines.length - 1];
2625
- },
2626
- flush(controller) {
2627
- if (buffer) {
2628
- controller.enqueue(buffer);
2629
- }
2630
- }
2631
- });
2632
- }
2633
2652
 
2634
2653
  // src/runtimes/edge/EdgeChatAdapter.ts
2635
2654
  function asAsyncIterable(source) {
@@ -2667,7 +2686,7 @@ var EdgeChatAdapter = class {
2667
2686
  if (result.status !== 200) {
2668
2687
  throw new Error(`Status ${result.status}: ${await result.text()}`);
2669
2688
  }
2670
- const stream = result.body.pipeThrough(new TextDecoderStream()).pipeThrough(chunkByLineStream()).pipeThrough(assistantDecoderStream()).pipeThrough(toolResultStream(config.tools)).pipeThrough(runResultStream());
2689
+ const stream = result.body.pipeThrough(streamPartDecoderStream()).pipeThrough(assistantDecoderStream()).pipeThrough(toolResultStream(config.tools)).pipeThrough(runResultStream());
2671
2690
  let update;
2672
2691
  for await (update of asAsyncIterable(stream)) {
2673
2692
  yield update;
@@ -3901,6 +3920,7 @@ export {
3901
3920
  getExternalStoreMessage,
3902
3921
  makeAssistantTool,
3903
3922
  makeAssistantToolUI,
3923
+ streamUtils,
3904
3924
  toCoreMessage,
3905
3925
  toCoreMessages,
3906
3926
  toLanguageModelMessages,