assistant-stream 0.0.25 → 0.0.27

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.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { a as AssistantStreamChunk, R as ReadonlyJSONValue, c as AssistantMessage, d as AssistantStreamEncoder, A as AssistantStream } from './assistant-stream-CEVTPU3I.js';
2
- export { e as createAssistantStream, f as createAssistantStreamResponse } from './assistant-stream-CEVTPU3I.js';
1
+ import { a as AssistantStreamChunk, R as ReadonlyJSONValue, c as AssistantMessage, d as AssistantStreamEncoder, A as AssistantStream } from './assistant-stream-DVLo0jNu.js';
2
+ export { e as createAssistantStream, f as createAssistantStreamResponse } from './assistant-stream-DVLo0jNu.js';
3
3
 
4
4
  declare class PipeableTransformStream<I, O> extends TransformStream<I, O> {
5
5
  constructor(transform: (readable: ReadableStream<I>) => ReadableStream<O>);
package/dist/index.js CHANGED
@@ -234,6 +234,13 @@ var ToolCallStreamControllerImpl = class {
234
234
  return this._argsTextController;
235
235
  }
236
236
  _argsTextController;
237
+ unstable_setArtifact(artifact) {
238
+ this._controller.enqueue({
239
+ type: "artifact",
240
+ path: [],
241
+ artifact
242
+ });
243
+ }
237
244
  setResult(result, isError) {
238
245
  this._controller.enqueue({
239
246
  type: "result",
@@ -455,7 +462,7 @@ var AssistantMetaTransformStream = class extends TransformStream {
455
462
  controller.enqueue(chunk);
456
463
  return;
457
464
  }
458
- if (chunk.type === "text-delta" || chunk.type === "result" || chunk.type === "part-finish" || chunk.type === "tool-call-args-text-finish") {
465
+ if (chunk.type === "text-delta" || chunk.type === "result" || chunk.type === "artifact" || chunk.type === "part-finish" || chunk.type === "tool-call-args-text-finish") {
459
466
  if (chunk.path.length !== 1) {
460
467
  controller.error(
461
468
  new Error(`${chunk.type} chunks must have a path of length 1`)
@@ -530,7 +537,7 @@ var DataStreamEncoder = class extends PipeableTransformStream {
530
537
  }
531
538
  case "tool-call": {
532
539
  controller.enqueue({
533
- type: "c" /* ToolCallDelta */,
540
+ type: "c" /* ToolCallArgsTextDelta */,
534
541
  value: {
535
542
  toolCallId: part.toolCallId,
536
543
  argsTextDelta: chunk.textDelta
@@ -561,6 +568,22 @@ var DataStreamEncoder = class extends PipeableTransformStream {
561
568
  });
562
569
  break;
563
570
  }
571
+ case "artifact": {
572
+ const part = chunk.meta;
573
+ if (part.type !== "tool-call") {
574
+ throw new Error(
575
+ `Artifact chunk on non-tool-call part not supported: ${part.type}`
576
+ );
577
+ }
578
+ controller.enqueue({
579
+ type: "aui-tool-artifact" /* AuiToolCallArtifact */,
580
+ value: {
581
+ toolCallId: part.toolCallId,
582
+ artifact: chunk.artifact
583
+ }
584
+ });
585
+ break;
586
+ }
564
587
  case "step-start": {
565
588
  const { type: type2, ...value } = chunk;
566
589
  controller.enqueue({
@@ -661,7 +684,7 @@ var DataStreamDecoder = class extends PipeableTransformStream {
661
684
  activeToolCallArgsText = toolCallController.argsText;
662
685
  break;
663
686
  }
664
- case "c" /* ToolCallDelta */: {
687
+ case "c" /* ToolCallArgsTextDelta */: {
665
688
  const { toolCallId, argsTextDelta } = value;
666
689
  const toolCallController = toolCallControllers.get(toolCallId);
667
690
  if (!toolCallController)
@@ -671,6 +694,16 @@ var DataStreamDecoder = class extends PipeableTransformStream {
671
694
  toolCallController.argsText.append(argsTextDelta);
672
695
  break;
673
696
  }
697
+ case "aui-tool-artifact" /* AuiToolCallArtifact */: {
698
+ const { toolCallId, artifact } = value;
699
+ const toolCallController = toolCallControllers.get(toolCallId);
700
+ if (!toolCallController)
701
+ throw new Error(
702
+ "Encountered tool call with unknown id: " + toolCallId
703
+ );
704
+ toolCallController.unstable_setArtifact(artifact);
705
+ break;
706
+ }
674
707
  case "a" /* ToolCallResult */: {
675
708
  const { toolCallId, result } = value;
676
709
  const toolCallController = toolCallControllers.get(toolCallId);
@@ -790,6 +823,10 @@ var AssistantStreamControllerImpl = class {
790
823
  this._closeSubscriber = callback;
791
824
  }
792
825
  _addPart(part, stream) {
826
+ if (this._append) {
827
+ this._append.controller.close();
828
+ this._append = void 0;
829
+ }
793
830
  this.enqueue({
794
831
  type: "part-start",
795
832
  part,
@@ -806,9 +843,6 @@ var AssistantStreamControllerImpl = class {
806
843
  }
807
844
  appendText(textDelta) {
808
845
  if (this._append?.kind !== "text") {
809
- if (this._append) {
810
- this._append.controller.close();
811
- }
812
846
  this._append = {
813
847
  kind: "text",
814
848
  controller: this.addTextPart()
@@ -818,9 +852,6 @@ var AssistantStreamControllerImpl = class {
818
852
  }
819
853
  appendReasoning(textDelta) {
820
854
  if (this._append?.kind !== "reasoning") {
821
- if (this._append) {
822
- this._append.controller.close();
823
- }
824
855
  this._append = {
825
856
  kind: "reasoning",
826
857
  controller: this.addReasoningPart()
@@ -1508,54 +1539,66 @@ var handlePartStart = (message, chunk) => {
1508
1539
  }
1509
1540
  };
1510
1541
  var handleToolCallArgsTextFinish = (message, chunk) => {
1511
- return updatePartForPath(message, chunk, (lastPart) => {
1512
- if (lastPart.type !== "tool-call") {
1513
- throw new Error("Last part is not a tool call");
1542
+ return updatePartForPath(message, chunk, (part) => {
1543
+ if (part.type !== "tool-call") {
1544
+ throw new Error("Last is not a tool call");
1514
1545
  }
1515
1546
  return {
1516
- ...lastPart,
1547
+ ...part,
1517
1548
  state: "call"
1518
1549
  };
1519
1550
  });
1520
1551
  };
1521
1552
  var handlePartFinish = (message, chunk) => {
1522
- return updatePartForPath(message, chunk, (lastPart) => ({
1523
- ...lastPart,
1553
+ return updatePartForPath(message, chunk, (part) => ({
1554
+ ...part,
1524
1555
  status: { type: "complete", reason: "unknown" }
1525
1556
  }));
1526
1557
  };
1527
1558
  var handleTextDelta = (message, chunk) => {
1528
- return updatePartForPath(message, chunk, (lastPart) => {
1529
- if (lastPart.type === "text") {
1530
- return { ...lastPart, text: lastPart.text + chunk.textDelta };
1531
- } else if (lastPart.type === "tool-call") {
1532
- const newArgsText = lastPart.argsText + chunk.textDelta;
1559
+ return updatePartForPath(message, chunk, (part) => {
1560
+ if (part.type === "text") {
1561
+ return { ...part, text: part.text + chunk.textDelta };
1562
+ } else if (part.type === "tool-call") {
1563
+ const newArgsText = part.argsText + chunk.textDelta;
1533
1564
  let newArgs;
1534
1565
  try {
1535
1566
  newArgs = parsePartialJson(newArgsText);
1536
1567
  } catch (err) {
1537
- newArgs = lastPart.args;
1568
+ newArgs = part.args;
1538
1569
  }
1539
- return { ...lastPart, argsText: newArgsText, args: newArgs };
1570
+ return { ...part, argsText: newArgsText, args: newArgs };
1540
1571
  } else {
1541
1572
  throw new Error(
1542
- "text-delta received but last part is neither text nor tool-call"
1573
+ "text-delta received but part is neither text nor tool-call"
1543
1574
  );
1544
1575
  }
1545
1576
  });
1546
1577
  };
1547
1578
  var handleResult = (message, chunk) => {
1548
- return updatePartForPath(message, chunk, (lastPart) => {
1549
- if (lastPart.type === "tool-call") {
1579
+ return updatePartForPath(message, chunk, (part) => {
1580
+ if (part.type === "tool-call") {
1550
1581
  return {
1551
- ...lastPart,
1582
+ ...part,
1552
1583
  state: "result",
1553
1584
  result: chunk.result,
1554
1585
  isError: chunk.isError ?? false,
1555
1586
  status: { type: "complete", reason: "stop" }
1556
1587
  };
1557
1588
  } else {
1558
- throw new Error("Result chunk received but last part is not a tool-call");
1589
+ throw new Error("Result chunk received but part is not a tool-call");
1590
+ }
1591
+ });
1592
+ };
1593
+ var handleArtifact = (message, chunk) => {
1594
+ return updatePartForPath(message, chunk, (part) => {
1595
+ if (part.type === "tool-call") {
1596
+ return {
1597
+ ...part,
1598
+ artifact: chunk.artifact
1599
+ };
1600
+ } else {
1601
+ throw new Error("Artifact chunk received but part is not a tool-call");
1559
1602
  }
1560
1603
  });
1561
1604
  };
@@ -1670,6 +1713,9 @@ var AssistantMessageAccumulator = class extends TransformStream {
1670
1713
  case "result":
1671
1714
  message = handleResult(message, chunk);
1672
1715
  break;
1716
+ case "artifact":
1717
+ message = handleArtifact(message, chunk);
1718
+ break;
1673
1719
  case "message-finish":
1674
1720
  message = handleMessageFinish(message, chunk);
1675
1721
  break;