assistant-stream 0.3.27 → 0.3.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/core/accumulators/AssistantMessageStream.d.ts.map +1 -1
- package/dist/core/accumulators/AssistantMessageStream.js +0 -1
- package/dist/core/accumulators/AssistantMessageStream.js.map +1 -1
- package/dist/core/modules/tool-call.d.ts.map +1 -1
- package/dist/core/modules/tool-call.js +1 -1
- package/dist/core/modules/tool-call.js.map +1 -1
- package/dist/core/serialization/data-stream/DataStream.js +48 -48
- package/dist/core/serialization/data-stream/DataStream.js.map +1 -1
- package/dist/core/serialization/data-stream/chunk-types.d.ts +23 -22
- package/dist/core/serialization/data-stream/chunk-types.d.ts.map +1 -1
- package/dist/core/serialization/data-stream/chunk-types.js +22 -23
- package/dist/core/serialization/data-stream/chunk-types.js.map +1 -1
- package/dist/core/serialization/data-stream/serialization.d.ts.map +1 -1
- package/dist/core/serialization/data-stream/serialization.js +14 -2
- package/dist/core/serialization/data-stream/serialization.js.map +1 -1
- package/dist/core/serialization/ui-message-stream/UIMessageStream.d.ts.map +1 -1
- package/dist/core/serialization/ui-message-stream/UIMessageStream.js +2 -1
- package/dist/core/serialization/ui-message-stream/UIMessageStream.js.map +1 -1
- package/dist/core/tool/ToolCallReader.d.ts.map +1 -1
- package/dist/core/tool/ToolCallReader.js.map +1 -1
- package/dist/core/tool/tool-types.d.ts +6 -0
- package/dist/core/tool/tool-types.d.ts.map +1 -1
- package/dist/core/utils/stream/SSE.d.ts.map +1 -1
- package/dist/core/utils/stream/SSE.js +11 -2
- package/dist/core/utils/stream/SSE.js.map +1 -1
- package/package.json +2 -2
- package/src/core/accumulators/AssistantMessageStream.ts +3 -1
- package/src/core/converters/toGenericMessages.test.ts +3 -39
- package/src/core/gorp/GorpStreamDeltaTracker.test.ts +30 -0
- package/src/core/modules/tool-call.ts +4 -1
- package/src/core/serialization/data-stream/DataStream.ts +1 -1
- package/src/core/serialization/data-stream/chunk-types.ts +24 -22
- package/src/core/serialization/data-stream/serialization.test.ts +133 -0
- package/src/core/serialization/data-stream/serialization.ts +20 -2
- package/src/core/serialization/ui-message-stream/UIMessageStream.test.ts +24 -0
- package/src/core/serialization/ui-message-stream/UIMessageStream.ts +2 -1
- package/src/core/tool/ToolCallReader.ts +5 -1
- package/src/core/tool/tool-types.ts +7 -0
- package/src/core/utils/stream/SSE.test.ts +97 -0
- package/src/core/utils/stream/SSE.ts +13 -2
- package/src/gorp.test.ts +0 -10
- package/src/core/accumulators/TimingTracker.test.ts +0 -100
- package/src/core/gorp/changeTree.test.ts +0 -168
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantMessageStream.d.ts","names":[],"sources":["../../../src/core/accumulators/AssistantMessageStream.ts"],"mappings":";;;cAIa;
|
|
1
|
+
{"version":3,"file":"AssistantMessageStream.d.ts","names":[],"sources":["../../../src/core/accumulators/AssistantMessageStream.ts"],"mappings":";;;cAIa;WACK,UAAU,eAAe;EAE7B,YAAA,UAAU,eAAe;SAI9B,oBAAoB,QAAQ,kBAAe;EAM5C,mBAAmB,QAAQ;GAwBhC,OAAO;IAGU,QAAA,QAAQ,eAAe;;EAOzC,QAAQ,wBAAwB"}
|
|
@@ -4,7 +4,6 @@ var AssistantMessageStream = class AssistantMessageStream {
|
|
|
4
4
|
readable;
|
|
5
5
|
constructor(readable) {
|
|
6
6
|
this.readable = readable;
|
|
7
|
-
this.readable = readable;
|
|
8
7
|
}
|
|
9
8
|
static fromAssistantStream(stream) {
|
|
10
9
|
return new AssistantMessageStream(stream.pipeThrough(new AssistantMessageAccumulator()));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantMessageStream.js","names":[],"sources":["../../../src/core/accumulators/AssistantMessageStream.ts"],"sourcesContent":["import type { AssistantStream } from \"../AssistantStream\";\nimport type { AssistantMessage } from \"../utils/types\";\nimport { AssistantMessageAccumulator } from \"./assistant-message-accumulator\";\n\nexport class AssistantMessageStream {\n
|
|
1
|
+
{"version":3,"file":"AssistantMessageStream.js","names":[],"sources":["../../../src/core/accumulators/AssistantMessageStream.ts"],"sourcesContent":["import type { AssistantStream } from \"../AssistantStream\";\nimport type { AssistantMessage } from \"../utils/types\";\nimport { AssistantMessageAccumulator } from \"./assistant-message-accumulator\";\n\nexport class AssistantMessageStream {\n public readonly readable: ReadableStream<AssistantMessage>;\n\n constructor(readable: ReadableStream<AssistantMessage>) {\n this.readable = readable;\n }\n\n static fromAssistantStream(stream: AssistantStream) {\n return new AssistantMessageStream(\n stream.pipeThrough(new AssistantMessageAccumulator()),\n );\n }\n\n async unstable_result(): Promise<AssistantMessage> {\n let last: AssistantMessage | undefined;\n for await (const chunk of this) {\n last = chunk;\n }\n\n if (!last) {\n return {\n role: \"assistant\",\n status: { type: \"complete\", reason: \"unknown\" },\n parts: [],\n content: [],\n metadata: {\n unstable_state: null,\n unstable_data: [],\n unstable_annotations: [],\n steps: [],\n custom: {},\n },\n };\n }\n return last;\n }\n\n [Symbol.asyncIterator]() {\n const reader = this.readable.getReader();\n return {\n async next(): Promise<IteratorResult<AssistantMessage, undefined>> {\n const { done, value } = await reader.read();\n return done ? { done: true, value: undefined } : { done: false, value };\n },\n };\n }\n\n tee(): [AssistantMessageStream, AssistantMessageStream] {\n const [readable1, readable2] = this.readable.tee();\n return [\n new AssistantMessageStream(readable1),\n new AssistantMessageStream(readable2),\n ];\n }\n}\n"],"mappings":";;AAIA,IAAa,yBAAb,MAAa,uBAAuB;CAClC;CAEA,YAAY,UAA4C;EACtD,KAAK,WAAW;CAClB;CAEA,OAAO,oBAAoB,QAAyB;EAClD,OAAO,IAAI,uBACT,OAAO,YAAY,IAAI,4BAA4B,CAAC,CACtD;CACF;CAEA,MAAM,kBAA6C;EACjD,IAAI;EACJ,WAAW,MAAM,SAAS,MACxB,OAAO;EAGT,IAAI,CAAC,MACH,OAAO;GACL,MAAM;GACN,QAAQ;IAAE,MAAM;IAAY,QAAQ;GAAU;GAC9C,OAAO,CAAC;GACR,SAAS,CAAC;GACV,UAAU;IACR,gBAAgB;IAChB,eAAe,CAAC;IAChB,sBAAsB,CAAC;IACvB,OAAO,CAAC;IACR,QAAQ,CAAC;GACX;EACF;EAEF,OAAO;CACT;CAEA,CAAC,OAAO,iBAAiB;EACvB,MAAM,SAAS,KAAK,SAAS,UAAU;EACvC,OAAO,EACL,MAAM,OAA6D;GACjE,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,KAAK;GAC1C,OAAO,OAAO;IAAE,MAAM;IAAM,OAAO,KAAA;GAAU,IAAI;IAAE,MAAM;IAAO;GAAM;EACxE,EACF;CACF;CAEA,MAAwD;EACtD,MAAM,CAAC,WAAW,aAAa,KAAK,SAAS,IAAI;EACjD,OAAO,CACL,IAAI,uBAAuB,SAAS,GACpC,IAAI,uBAAuB,SAAS,CACtC;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-call.d.ts","names":[],"sources":["../../../src/core/modules/tool-call.ts"],"mappings":";;;;;;KAOY;EACV,UAAU;EAEV,YAAY,UAAU,iBAAiB;EACvC;;
|
|
1
|
+
{"version":3,"file":"tool-call.d.ts","names":[],"sources":["../../../src/core/modules/tool-call.ts"],"mappings":";;;;;;KAOY;EACV,UAAU;EAEV,YAAY,UAAU,iBAAiB;EACvC;;cA8FW,uBACX,UAAU,mBAAmB,8BAC5B;cAcU,gDAA8B,iBAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createTextStream } from "./text.js";
|
|
2
2
|
//#region src/core/modules/tool-call.ts
|
|
3
3
|
var ToolCallStreamControllerImpl = class {
|
|
4
|
-
_controller;
|
|
5
4
|
_isClosed = false;
|
|
6
5
|
_mergeTask;
|
|
6
|
+
_controller;
|
|
7
7
|
constructor(_controller) {
|
|
8
8
|
this._controller = _controller;
|
|
9
9
|
const stream = createTextStream({ start: (c) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-call.js","names":[],"sources":["../../../src/core/modules/tool-call.ts"],"sourcesContent":["import type { AssistantStream } from \"../AssistantStream\";\nimport type { AssistantStreamChunk } from \"../AssistantStreamChunk\";\nimport type { ToolResponseLike } from \"../tool/ToolResponse\";\nimport type { ReadonlyJSONValue } from \"../../utils/json/json-value\";\nimport type { UnderlyingReadable } from \"../utils/stream/UnderlyingReadable\";\nimport { createTextStream, type TextStreamController } from \"./text\";\n\nexport type ToolCallStreamController = {\n argsText: TextStreamController;\n\n setResponse(response: ToolResponseLike<ReadonlyJSONValue>): void;\n close(): void;\n};\n\nclass ToolCallStreamControllerImpl implements ToolCallStreamController {\n private _isClosed = false;\n\n private _mergeTask: Promise<void>;\n constructor(\n
|
|
1
|
+
{"version":3,"file":"tool-call.js","names":[],"sources":["../../../src/core/modules/tool-call.ts"],"sourcesContent":["import type { AssistantStream } from \"../AssistantStream\";\nimport type { AssistantStreamChunk } from \"../AssistantStreamChunk\";\nimport type { ToolResponseLike } from \"../tool/ToolResponse\";\nimport type { ReadonlyJSONValue } from \"../../utils/json/json-value\";\nimport type { UnderlyingReadable } from \"../utils/stream/UnderlyingReadable\";\nimport { createTextStream, type TextStreamController } from \"./text\";\n\nexport type ToolCallStreamController = {\n argsText: TextStreamController;\n\n setResponse(response: ToolResponseLike<ReadonlyJSONValue>): void;\n close(): void;\n};\n\nclass ToolCallStreamControllerImpl implements ToolCallStreamController {\n private _isClosed = false;\n\n private _mergeTask: Promise<void>;\n private _controller: ReadableStreamDefaultController<AssistantStreamChunk>;\n\n constructor(\n _controller: ReadableStreamDefaultController<AssistantStreamChunk>,\n ) {\n this._controller = _controller;\n const stream = createTextStream({\n start: (c) => {\n this._argsTextController = c;\n },\n });\n\n let hasArgsText = false;\n this._mergeTask = stream.pipeTo(\n new WritableStream({\n write: (chunk) => {\n switch (chunk.type) {\n case \"text-delta\":\n hasArgsText = true;\n this._controller.enqueue(chunk);\n break;\n\n case \"part-finish\":\n if (!hasArgsText) {\n // if no argsText was provided, assume empty object\n this._controller.enqueue({\n type: \"text-delta\",\n textDelta: \"{}\",\n path: [],\n });\n }\n this._controller.enqueue({\n type: \"tool-call-args-text-finish\",\n path: [],\n });\n break;\n\n default:\n throw new Error(`Unexpected chunk type: ${chunk.type}`);\n }\n },\n }),\n );\n }\n\n get argsText() {\n return this._argsTextController;\n }\n\n private _argsTextController!: TextStreamController;\n\n async setResponse(response: ToolResponseLike<ReadonlyJSONValue>) {\n this._controller.enqueue({\n type: \"result\",\n path: [],\n ...(response.artifact !== undefined\n ? { artifact: response.artifact }\n : {}),\n result: response.result,\n isError: response.isError ?? false,\n ...(response.modelContent !== undefined\n ? { modelContent: response.modelContent }\n : {}),\n ...(response.messages !== undefined\n ? { messages: response.messages }\n : {}),\n });\n this._argsTextController.close();\n await Promise.resolve(); // flush microtask queue\n // TODO switch argsTextController to be something that doesn'#t require this\n }\n\n async close() {\n if (this._isClosed) return;\n\n this._isClosed = true;\n this._argsTextController.close();\n await this._mergeTask;\n\n this._controller.enqueue({\n type: \"part-finish\",\n path: [],\n });\n this._controller.close();\n }\n}\n\nexport const createToolCallStream = (\n readable: UnderlyingReadable<ToolCallStreamController>,\n): AssistantStream => {\n return new ReadableStream({\n start(c) {\n return readable.start?.(new ToolCallStreamControllerImpl(c));\n },\n pull(c) {\n return readable.pull?.(new ToolCallStreamControllerImpl(c));\n },\n cancel(c) {\n return readable.cancel?.(c);\n },\n });\n};\n\nexport const createToolCallStreamController = () => {\n let controller!: ToolCallStreamController;\n const stream = createToolCallStream({\n start(c) {\n controller = c;\n },\n });\n return [stream, controller] as const;\n};\n"],"mappings":";;AAcA,IAAM,+BAAN,MAAuE;CACrE,YAAoB;CAEpB;CACA;CAEA,YACE,aACA;EACA,KAAK,cAAc;EACnB,MAAM,SAAS,iBAAiB,EAC9B,QAAQ,MAAM;GACZ,KAAK,sBAAsB;EAC7B,EACF,CAAC;EAED,IAAI,cAAc;EAClB,KAAK,aAAa,OAAO,OACvB,IAAI,eAAe,EACjB,QAAQ,UAAU;GAChB,QAAQ,MAAM,MAAd;IACE,KAAK;KACH,cAAc;KACd,KAAK,YAAY,QAAQ,KAAK;KAC9B;IAEF,KAAK;KACH,IAAI,CAAC,aAEH,KAAK,YAAY,QAAQ;MACvB,MAAM;MACN,WAAW;MACX,MAAM,CAAC;KACT,CAAC;KAEH,KAAK,YAAY,QAAQ;MACvB,MAAM;MACN,MAAM,CAAC;KACT,CAAC;KACD;IAEF,SACE,MAAM,IAAI,MAAM,0BAA0B,MAAM,MAAM;GAC1D;EACF,EACF,CAAC,CACH;CACF;CAEA,IAAI,WAAW;EACb,OAAO,KAAK;CACd;CAEA;CAEA,MAAM,YAAY,UAA+C;EAC/D,KAAK,YAAY,QAAQ;GACvB,MAAM;GACN,MAAM,CAAC;GACP,GAAI,SAAS,aAAa,KAAA,IACtB,EAAE,UAAU,SAAS,SAAS,IAC9B,CAAC;GACL,QAAQ,SAAS;GACjB,SAAS,SAAS,WAAW;GAC7B,GAAI,SAAS,iBAAiB,KAAA,IAC1B,EAAE,cAAc,SAAS,aAAa,IACtC,CAAC;GACL,GAAI,SAAS,aAAa,KAAA,IACtB,EAAE,UAAU,SAAS,SAAS,IAC9B,CAAC;EACP,CAAC;EACD,KAAK,oBAAoB,MAAM;EAC/B,MAAM,QAAQ,QAAQ;CAExB;CAEA,MAAM,QAAQ;EACZ,IAAI,KAAK,WAAW;EAEpB,KAAK,YAAY;EACjB,KAAK,oBAAoB,MAAM;EAC/B,MAAM,KAAK;EAEX,KAAK,YAAY,QAAQ;GACvB,MAAM;GACN,MAAM,CAAC;EACT,CAAC;EACD,KAAK,YAAY,MAAM;CACzB;AACF;AAEA,MAAa,wBACX,aACoB;CACpB,OAAO,IAAI,eAAe;EACxB,MAAM,GAAG;GACP,OAAO,SAAS,QAAQ,IAAI,6BAA6B,CAAC,CAAC;EAC7D;EACA,KAAK,GAAG;GACN,OAAO,SAAS,OAAO,IAAI,6BAA6B,CAAC,CAAC;EAC5D;EACA,OAAO,GAAG;GACR,OAAO,SAAS,SAAS,CAAC;EAC5B;CACF,CAAC;AACH;AAEA,MAAa,uCAAuC;CAClD,IAAI;CAMJ,OAAO,CALQ,qBAAqB,EAClC,MAAM,GAAG;EACP,aAAa;CACf,EACF,CACa,GAAG,UAAU;AAC5B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AssistantTransformStream } from "../../utils/stream/AssistantTransformStream.js";
|
|
2
2
|
import { PipeableTransformStream } from "../../utils/stream/PipeableTransformStream.js";
|
|
3
|
-
import "./chunk-types.js";
|
|
3
|
+
import { DataStreamStreamChunkType } from "./chunk-types.js";
|
|
4
4
|
import { LineDecoderStream } from "../../utils/stream/LineDecoderStream.js";
|
|
5
5
|
import { DataStreamChunkDecoder, DataStreamChunkEncoder } from "./serialization.js";
|
|
6
6
|
import { AssistantMetaTransformStream } from "../../utils/stream/AssistantMetaTransformStream.js";
|
|
@@ -20,21 +20,21 @@ var DataStreamEncoder = class extends PipeableTransformStream {
|
|
|
20
20
|
if (part.type === "tool-call") {
|
|
21
21
|
const { type, ...value } = part;
|
|
22
22
|
controller.enqueue({
|
|
23
|
-
type:
|
|
23
|
+
type: DataStreamStreamChunkType.StartToolCall,
|
|
24
24
|
value
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
if (part.type === "source") {
|
|
28
28
|
const { type, ...value } = part;
|
|
29
29
|
controller.enqueue({
|
|
30
|
-
type:
|
|
30
|
+
type: DataStreamStreamChunkType.Source,
|
|
31
31
|
value
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
if (part.type === "data") {
|
|
35
35
|
const { type, ...value } = part;
|
|
36
36
|
controller.enqueue({
|
|
37
|
-
type:
|
|
37
|
+
type: DataStreamStreamChunkType.AuiDataPart,
|
|
38
38
|
value
|
|
39
39
|
});
|
|
40
40
|
}
|
|
@@ -45,33 +45,33 @@ var DataStreamEncoder = class extends PipeableTransformStream {
|
|
|
45
45
|
switch (part.type) {
|
|
46
46
|
case "text":
|
|
47
47
|
if (part.parentId) controller.enqueue({
|
|
48
|
-
type:
|
|
48
|
+
type: DataStreamStreamChunkType.AuiTextDelta,
|
|
49
49
|
value: {
|
|
50
50
|
textDelta: chunk.textDelta,
|
|
51
51
|
parentId: part.parentId
|
|
52
52
|
}
|
|
53
53
|
});
|
|
54
54
|
else controller.enqueue({
|
|
55
|
-
type:
|
|
55
|
+
type: DataStreamStreamChunkType.TextDelta,
|
|
56
56
|
value: chunk.textDelta
|
|
57
57
|
});
|
|
58
58
|
break;
|
|
59
59
|
case "reasoning":
|
|
60
60
|
if (part.parentId) controller.enqueue({
|
|
61
|
-
type:
|
|
61
|
+
type: DataStreamStreamChunkType.AuiReasoningDelta,
|
|
62
62
|
value: {
|
|
63
63
|
reasoningDelta: chunk.textDelta,
|
|
64
64
|
parentId: part.parentId
|
|
65
65
|
}
|
|
66
66
|
});
|
|
67
67
|
else controller.enqueue({
|
|
68
|
-
type:
|
|
68
|
+
type: DataStreamStreamChunkType.ReasoningDelta,
|
|
69
69
|
value: chunk.textDelta
|
|
70
70
|
});
|
|
71
71
|
break;
|
|
72
72
|
case "tool-call":
|
|
73
73
|
controller.enqueue({
|
|
74
|
-
type:
|
|
74
|
+
type: DataStreamStreamChunkType.ToolCallArgsTextDelta,
|
|
75
75
|
value: {
|
|
76
76
|
toolCallId: part.toolCallId,
|
|
77
77
|
argsTextDelta: chunk.textDelta
|
|
@@ -86,7 +86,7 @@ var DataStreamEncoder = class extends PipeableTransformStream {
|
|
|
86
86
|
const part = chunk.meta;
|
|
87
87
|
if (part.type !== "tool-call") throw new Error(`Result chunk on non-tool-call part not supported: ${part.type}`);
|
|
88
88
|
controller.enqueue({
|
|
89
|
-
type:
|
|
89
|
+
type: DataStreamStreamChunkType.ToolCallResult,
|
|
90
90
|
value: {
|
|
91
91
|
toolCallId: part.toolCallId,
|
|
92
92
|
result: chunk.result,
|
|
@@ -99,7 +99,7 @@ var DataStreamEncoder = class extends PipeableTransformStream {
|
|
|
99
99
|
case "step-start": {
|
|
100
100
|
const { type, ...value } = chunk;
|
|
101
101
|
controller.enqueue({
|
|
102
|
-
type:
|
|
102
|
+
type: DataStreamStreamChunkType.StartStep,
|
|
103
103
|
value
|
|
104
104
|
});
|
|
105
105
|
break;
|
|
@@ -107,7 +107,7 @@ var DataStreamEncoder = class extends PipeableTransformStream {
|
|
|
107
107
|
case "step-finish": {
|
|
108
108
|
const { type, ...value } = chunk;
|
|
109
109
|
controller.enqueue({
|
|
110
|
-
type:
|
|
110
|
+
type: DataStreamStreamChunkType.FinishStep,
|
|
111
111
|
value
|
|
112
112
|
});
|
|
113
113
|
break;
|
|
@@ -115,32 +115,32 @@ var DataStreamEncoder = class extends PipeableTransformStream {
|
|
|
115
115
|
case "message-finish": {
|
|
116
116
|
const { type, ...value } = chunk;
|
|
117
117
|
controller.enqueue({
|
|
118
|
-
type:
|
|
118
|
+
type: DataStreamStreamChunkType.FinishMessage,
|
|
119
119
|
value
|
|
120
120
|
});
|
|
121
121
|
break;
|
|
122
122
|
}
|
|
123
123
|
case "error":
|
|
124
124
|
controller.enqueue({
|
|
125
|
-
type:
|
|
125
|
+
type: DataStreamStreamChunkType.Error,
|
|
126
126
|
value: chunk.error
|
|
127
127
|
});
|
|
128
128
|
break;
|
|
129
129
|
case "annotations":
|
|
130
130
|
controller.enqueue({
|
|
131
|
-
type:
|
|
131
|
+
type: DataStreamStreamChunkType.Annotation,
|
|
132
132
|
value: chunk.annotations
|
|
133
133
|
});
|
|
134
134
|
break;
|
|
135
135
|
case "data":
|
|
136
136
|
controller.enqueue({
|
|
137
|
-
type:
|
|
137
|
+
type: DataStreamStreamChunkType.Data,
|
|
138
138
|
value: chunk.data
|
|
139
139
|
});
|
|
140
140
|
break;
|
|
141
141
|
case "update-state":
|
|
142
142
|
controller.enqueue({
|
|
143
|
-
type:
|
|
143
|
+
type: DataStreamStreamChunkType.AuiUpdateStateOperations,
|
|
144
144
|
value: chunk.operations
|
|
145
145
|
});
|
|
146
146
|
break;
|
|
@@ -154,17 +154,17 @@ var DataStreamEncoder = class extends PipeableTransformStream {
|
|
|
154
154
|
}
|
|
155
155
|
};
|
|
156
156
|
const TOOL_CALL_ARGS_CLOSING_CHUNKS = [
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
157
|
+
DataStreamStreamChunkType.StartToolCall,
|
|
158
|
+
DataStreamStreamChunkType.ToolCall,
|
|
159
|
+
DataStreamStreamChunkType.TextDelta,
|
|
160
|
+
DataStreamStreamChunkType.ReasoningDelta,
|
|
161
|
+
DataStreamStreamChunkType.Source,
|
|
162
|
+
DataStreamStreamChunkType.Error,
|
|
163
|
+
DataStreamStreamChunkType.FinishStep,
|
|
164
|
+
DataStreamStreamChunkType.FinishMessage,
|
|
165
|
+
DataStreamStreamChunkType.AuiTextDelta,
|
|
166
|
+
DataStreamStreamChunkType.AuiReasoningDelta,
|
|
167
|
+
DataStreamStreamChunkType.AuiDataPart
|
|
168
168
|
];
|
|
169
169
|
var DataStreamDecoder = class extends PipeableTransformStream {
|
|
170
170
|
constructor() {
|
|
@@ -179,19 +179,19 @@ var DataStreamDecoder = class extends PipeableTransformStream {
|
|
|
179
179
|
activeToolCallArgsText = void 0;
|
|
180
180
|
}
|
|
181
181
|
switch (type) {
|
|
182
|
-
case
|
|
182
|
+
case DataStreamStreamChunkType.ReasoningDelta:
|
|
183
183
|
controller.appendReasoning(value);
|
|
184
184
|
break;
|
|
185
|
-
case
|
|
185
|
+
case DataStreamStreamChunkType.TextDelta:
|
|
186
186
|
controller.appendText(value);
|
|
187
187
|
break;
|
|
188
|
-
case
|
|
188
|
+
case DataStreamStreamChunkType.AuiTextDelta:
|
|
189
189
|
controller.withParentId(value.parentId).appendText(value.textDelta);
|
|
190
190
|
break;
|
|
191
|
-
case
|
|
191
|
+
case DataStreamStreamChunkType.AuiReasoningDelta:
|
|
192
192
|
controller.withParentId(value.parentId).appendReasoning(value.reasoningDelta);
|
|
193
193
|
break;
|
|
194
|
-
case
|
|
194
|
+
case DataStreamStreamChunkType.StartToolCall: {
|
|
195
195
|
const { toolCallId, toolName, parentId } = value;
|
|
196
196
|
const ctrl = parentId ? controller.withParentId(parentId) : controller;
|
|
197
197
|
if (toolCallControllers.has(toolCallId)) throw new Error(`Encountered duplicate tool call id: ${toolCallId}`);
|
|
@@ -203,14 +203,14 @@ var DataStreamDecoder = class extends PipeableTransformStream {
|
|
|
203
203
|
activeToolCallArgsText = toolCallController.argsText;
|
|
204
204
|
break;
|
|
205
205
|
}
|
|
206
|
-
case
|
|
206
|
+
case DataStreamStreamChunkType.ToolCallArgsTextDelta: {
|
|
207
207
|
const { toolCallId, argsTextDelta } = value;
|
|
208
208
|
const toolCallController = toolCallControllers.get(toolCallId);
|
|
209
209
|
if (!toolCallController) throw new Error(`Encountered tool call with unknown id: ${toolCallId}`);
|
|
210
210
|
toolCallController.argsText.append(argsTextDelta);
|
|
211
211
|
break;
|
|
212
212
|
}
|
|
213
|
-
case
|
|
213
|
+
case DataStreamStreamChunkType.ToolCallResult: {
|
|
214
214
|
const { toolCallId, artifact, result, isError } = value;
|
|
215
215
|
const toolCallController = toolCallControllers.get(toolCallId);
|
|
216
216
|
if (!toolCallController) throw new Error(`Encountered tool call result with unknown id: ${toolCallId}`);
|
|
@@ -221,7 +221,7 @@ var DataStreamDecoder = class extends PipeableTransformStream {
|
|
|
221
221
|
});
|
|
222
222
|
break;
|
|
223
223
|
}
|
|
224
|
-
case
|
|
224
|
+
case DataStreamStreamChunkType.ToolCall: {
|
|
225
225
|
const { toolCallId, toolName, args } = value;
|
|
226
226
|
let toolCallController = toolCallControllers.get(toolCallId);
|
|
227
227
|
if (toolCallController) toolCallController.argsText.close();
|
|
@@ -235,42 +235,42 @@ var DataStreamDecoder = class extends PipeableTransformStream {
|
|
|
235
235
|
}
|
|
236
236
|
break;
|
|
237
237
|
}
|
|
238
|
-
case
|
|
238
|
+
case DataStreamStreamChunkType.FinishMessage:
|
|
239
239
|
controller.enqueue({
|
|
240
240
|
type: "message-finish",
|
|
241
241
|
path: [],
|
|
242
242
|
...value
|
|
243
243
|
});
|
|
244
244
|
break;
|
|
245
|
-
case
|
|
245
|
+
case DataStreamStreamChunkType.StartStep:
|
|
246
246
|
controller.enqueue({
|
|
247
247
|
type: "step-start",
|
|
248
248
|
path: [],
|
|
249
249
|
...value
|
|
250
250
|
});
|
|
251
251
|
break;
|
|
252
|
-
case
|
|
252
|
+
case DataStreamStreamChunkType.FinishStep:
|
|
253
253
|
controller.enqueue({
|
|
254
254
|
type: "step-finish",
|
|
255
255
|
path: [],
|
|
256
256
|
...value
|
|
257
257
|
});
|
|
258
258
|
break;
|
|
259
|
-
case
|
|
259
|
+
case DataStreamStreamChunkType.Data:
|
|
260
260
|
controller.enqueue({
|
|
261
261
|
type: "data",
|
|
262
262
|
path: [],
|
|
263
263
|
data: value
|
|
264
264
|
});
|
|
265
265
|
break;
|
|
266
|
-
case
|
|
266
|
+
case DataStreamStreamChunkType.Annotation:
|
|
267
267
|
controller.enqueue({
|
|
268
268
|
type: "annotations",
|
|
269
269
|
path: [],
|
|
270
270
|
annotations: value
|
|
271
271
|
});
|
|
272
272
|
break;
|
|
273
|
-
case
|
|
273
|
+
case DataStreamStreamChunkType.Source: {
|
|
274
274
|
const { parentId, ...sourceData } = value;
|
|
275
275
|
(parentId ? controller.withParentId(parentId) : controller).appendSource({
|
|
276
276
|
type: "source",
|
|
@@ -278,34 +278,34 @@ var DataStreamDecoder = class extends PipeableTransformStream {
|
|
|
278
278
|
});
|
|
279
279
|
break;
|
|
280
280
|
}
|
|
281
|
-
case
|
|
281
|
+
case DataStreamStreamChunkType.Error:
|
|
282
282
|
controller.enqueue({
|
|
283
283
|
type: "error",
|
|
284
284
|
path: [],
|
|
285
285
|
error: value
|
|
286
286
|
});
|
|
287
287
|
break;
|
|
288
|
-
case
|
|
288
|
+
case DataStreamStreamChunkType.File:
|
|
289
289
|
controller.appendFile({
|
|
290
290
|
type: "file",
|
|
291
291
|
...value
|
|
292
292
|
});
|
|
293
293
|
break;
|
|
294
|
-
case
|
|
294
|
+
case DataStreamStreamChunkType.AuiDataPart:
|
|
295
295
|
controller.appendData({
|
|
296
296
|
type: "data",
|
|
297
297
|
...value
|
|
298
298
|
});
|
|
299
299
|
break;
|
|
300
|
-
case
|
|
300
|
+
case DataStreamStreamChunkType.AuiUpdateStateOperations:
|
|
301
301
|
controller.enqueue({
|
|
302
302
|
type: "update-state",
|
|
303
303
|
path: [],
|
|
304
304
|
operations: value
|
|
305
305
|
});
|
|
306
306
|
break;
|
|
307
|
-
case
|
|
308
|
-
case
|
|
307
|
+
case DataStreamStreamChunkType.ReasoningSignature:
|
|
308
|
+
case DataStreamStreamChunkType.RedactedReasoning: break;
|
|
309
309
|
default: throw new Error(`unsupported chunk type: ${type}`);
|
|
310
310
|
}
|
|
311
311
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataStream.js","names":["exhaustiveCheck"],"sources":["../../../../src/core/serialization/data-stream/DataStream.ts"],"sourcesContent":["import type { AssistantStreamChunk } from \"../../AssistantStreamChunk\";\nimport type { ToolCallStreamController } from \"../../modules/tool-call\";\nimport { AssistantTransformStream } from \"../../utils/stream/AssistantTransformStream\";\nimport { PipeableTransformStream } from \"../../utils/stream/PipeableTransformStream\";\nimport { type DataStreamChunk, DataStreamStreamChunkType } from \"./chunk-types\";\nimport { LineDecoderStream } from \"../../utils/stream/LineDecoderStream\";\nimport {\n DataStreamChunkDecoder,\n DataStreamChunkEncoder,\n} from \"./serialization\";\nimport {\n type AssistantMetaStreamChunk,\n AssistantMetaTransformStream,\n} from \"../../utils/stream/AssistantMetaTransformStream\";\nimport type { TextStreamController } from \"../../modules/text\";\nimport type { AssistantStreamEncoder } from \"../../AssistantStream\";\n\nexport class DataStreamEncoder\n extends PipeableTransformStream<AssistantStreamChunk, Uint8Array<ArrayBuffer>>\n implements AssistantStreamEncoder\n{\n headers = new Headers({\n \"Content-Type\": \"text/plain; charset=utf-8\",\n \"x-vercel-ai-data-stream\": \"v1\",\n });\n\n constructor() {\n super((readable) => {\n const transform = new TransformStream<\n AssistantMetaStreamChunk,\n DataStreamChunk\n >({\n transform(chunk, controller) {\n const type = chunk.type;\n switch (type) {\n case \"part-start\": {\n const part = chunk.part;\n if (part.type === \"tool-call\") {\n const { type, ...value } = part;\n controller.enqueue({\n type: DataStreamStreamChunkType.StartToolCall,\n value,\n });\n }\n if (part.type === \"source\") {\n const { type, ...value } = part;\n controller.enqueue({\n type: DataStreamStreamChunkType.Source,\n value,\n });\n }\n if (part.type === \"data\") {\n const { type, ...value } = part;\n controller.enqueue({\n type: DataStreamStreamChunkType.AuiDataPart,\n value,\n });\n }\n break;\n }\n case \"text-delta\": {\n const part = chunk.meta;\n switch (part.type) {\n case \"text\": {\n if (part.parentId) {\n controller.enqueue({\n type: DataStreamStreamChunkType.AuiTextDelta,\n value: {\n textDelta: chunk.textDelta,\n parentId: part.parentId,\n },\n });\n } else {\n controller.enqueue({\n type: DataStreamStreamChunkType.TextDelta,\n value: chunk.textDelta,\n });\n }\n break;\n }\n case \"reasoning\": {\n if (part.parentId) {\n controller.enqueue({\n type: DataStreamStreamChunkType.AuiReasoningDelta,\n value: {\n reasoningDelta: chunk.textDelta,\n parentId: part.parentId,\n },\n });\n } else {\n controller.enqueue({\n type: DataStreamStreamChunkType.ReasoningDelta,\n value: chunk.textDelta,\n });\n }\n break;\n }\n case \"tool-call\": {\n controller.enqueue({\n type: DataStreamStreamChunkType.ToolCallArgsTextDelta,\n value: {\n toolCallId: part.toolCallId,\n argsTextDelta: chunk.textDelta,\n },\n });\n break;\n }\n default:\n throw new Error(\n `Unsupported part type for text-delta: ${part.type}`,\n );\n }\n break;\n }\n case \"result\": {\n // Only tool-call parts can have results.\n const part = chunk.meta;\n if (part.type !== \"tool-call\") {\n throw new Error(\n `Result chunk on non-tool-call part not supported: ${part.type}`,\n );\n }\n controller.enqueue({\n type: DataStreamStreamChunkType.ToolCallResult,\n value: {\n toolCallId: part.toolCallId,\n result: chunk.result,\n artifact: chunk.artifact,\n ...(chunk.isError ? { isError: chunk.isError } : {}),\n },\n });\n break;\n }\n case \"step-start\": {\n const { type, ...value } = chunk;\n controller.enqueue({\n type: DataStreamStreamChunkType.StartStep,\n value,\n });\n break;\n }\n case \"step-finish\": {\n const { type, ...value } = chunk;\n controller.enqueue({\n type: DataStreamStreamChunkType.FinishStep,\n value,\n });\n break;\n }\n case \"message-finish\": {\n const { type, ...value } = chunk;\n controller.enqueue({\n type: DataStreamStreamChunkType.FinishMessage,\n value,\n });\n break;\n }\n case \"error\": {\n controller.enqueue({\n type: DataStreamStreamChunkType.Error,\n value: chunk.error,\n });\n break;\n }\n case \"annotations\": {\n controller.enqueue({\n type: DataStreamStreamChunkType.Annotation,\n value: chunk.annotations,\n });\n break;\n }\n case \"data\": {\n controller.enqueue({\n type: DataStreamStreamChunkType.Data,\n value: chunk.data,\n });\n break;\n }\n\n case \"update-state\": {\n controller.enqueue({\n type: DataStreamStreamChunkType.AuiUpdateStateOperations,\n value: chunk.operations,\n });\n break;\n }\n\n // TODO ignore for now\n // in the future, we should create a handler that waits for text parts to finish before continuing\n case \"tool-call-args-text-finish\":\n case \"part-finish\":\n break;\n\n default: {\n const exhaustiveCheck: never = type;\n throw new Error(`Unsupported chunk type: ${exhaustiveCheck}`);\n }\n }\n },\n });\n\n return readable\n .pipeThrough(new AssistantMetaTransformStream())\n .pipeThrough(transform)\n .pipeThrough(new DataStreamChunkEncoder())\n .pipeThrough(new TextEncoderStream());\n });\n }\n}\n\nconst TOOL_CALL_ARGS_CLOSING_CHUNKS = [\n DataStreamStreamChunkType.StartToolCall,\n DataStreamStreamChunkType.ToolCall,\n DataStreamStreamChunkType.TextDelta,\n DataStreamStreamChunkType.ReasoningDelta,\n DataStreamStreamChunkType.Source,\n DataStreamStreamChunkType.Error,\n DataStreamStreamChunkType.FinishStep,\n DataStreamStreamChunkType.FinishMessage,\n DataStreamStreamChunkType.AuiTextDelta,\n DataStreamStreamChunkType.AuiReasoningDelta,\n DataStreamStreamChunkType.AuiDataPart,\n];\n\nexport class DataStreamDecoder extends PipeableTransformStream<\n Uint8Array<ArrayBuffer>,\n AssistantStreamChunk\n> {\n constructor() {\n super((readable) => {\n const toolCallControllers = new Map<string, ToolCallStreamController>();\n let activeToolCallArgsText: TextStreamController | undefined;\n const transform = new AssistantTransformStream<DataStreamChunk>({\n transform(chunk, controller) {\n const { type, value } = chunk;\n\n if (TOOL_CALL_ARGS_CLOSING_CHUNKS.includes(type)) {\n activeToolCallArgsText?.close();\n activeToolCallArgsText = undefined;\n }\n\n switch (type) {\n case DataStreamStreamChunkType.ReasoningDelta:\n controller.appendReasoning(value);\n break;\n\n case DataStreamStreamChunkType.TextDelta:\n controller.appendText(value);\n break;\n\n case DataStreamStreamChunkType.AuiTextDelta:\n controller\n .withParentId(value.parentId)\n .appendText(value.textDelta);\n break;\n\n case DataStreamStreamChunkType.AuiReasoningDelta:\n controller\n .withParentId(value.parentId)\n .appendReasoning(value.reasoningDelta);\n break;\n\n case DataStreamStreamChunkType.StartToolCall: {\n const { toolCallId, toolName, parentId } = value;\n const ctrl = parentId\n ? controller.withParentId(parentId)\n : controller;\n\n if (toolCallControllers.has(toolCallId))\n throw new Error(\n `Encountered duplicate tool call id: ${toolCallId}`,\n );\n\n const toolCallController = ctrl.addToolCallPart({\n toolCallId,\n toolName,\n });\n toolCallControllers.set(toolCallId, toolCallController);\n\n activeToolCallArgsText = toolCallController.argsText;\n break;\n }\n\n case DataStreamStreamChunkType.ToolCallArgsTextDelta: {\n const { toolCallId, argsTextDelta } = value;\n const toolCallController = toolCallControllers.get(toolCallId);\n if (!toolCallController)\n throw new Error(\n `Encountered tool call with unknown id: ${toolCallId}`,\n );\n toolCallController.argsText.append(argsTextDelta);\n break;\n }\n\n case DataStreamStreamChunkType.ToolCallResult: {\n const { toolCallId, artifact, result, isError } = value;\n const toolCallController = toolCallControllers.get(toolCallId);\n if (!toolCallController)\n throw new Error(\n `Encountered tool call result with unknown id: ${toolCallId}`,\n );\n toolCallController.setResponse({\n artifact,\n result,\n isError,\n });\n break;\n }\n\n case DataStreamStreamChunkType.ToolCall: {\n const { toolCallId, toolName, args } = value;\n\n let toolCallController = toolCallControllers.get(toolCallId);\n if (toolCallController) {\n toolCallController.argsText.close();\n } else {\n toolCallController = controller.addToolCallPart({\n toolCallId,\n toolName,\n args,\n });\n toolCallControllers.set(toolCallId, toolCallController);\n }\n break;\n }\n\n case DataStreamStreamChunkType.FinishMessage:\n controller.enqueue({\n type: \"message-finish\",\n path: [],\n ...value,\n });\n break;\n\n case DataStreamStreamChunkType.StartStep:\n controller.enqueue({\n type: \"step-start\",\n path: [],\n ...value,\n });\n break;\n\n case DataStreamStreamChunkType.FinishStep:\n controller.enqueue({\n type: \"step-finish\",\n path: [],\n ...value,\n });\n break;\n case DataStreamStreamChunkType.Data:\n controller.enqueue({\n type: \"data\",\n path: [],\n data: value,\n });\n break;\n\n case DataStreamStreamChunkType.Annotation:\n controller.enqueue({\n type: \"annotations\",\n path: [],\n annotations: value,\n });\n break;\n\n case DataStreamStreamChunkType.Source: {\n const { parentId, ...sourceData } = value;\n const ctrl = parentId\n ? controller.withParentId(parentId)\n : controller;\n ctrl.appendSource({\n type: \"source\",\n ...sourceData,\n });\n break;\n }\n\n case DataStreamStreamChunkType.Error:\n controller.enqueue({\n type: \"error\",\n path: [],\n error: value,\n });\n break;\n\n case DataStreamStreamChunkType.File:\n controller.appendFile({\n type: \"file\",\n ...value,\n });\n break;\n\n case DataStreamStreamChunkType.AuiDataPart:\n controller.appendData({\n type: \"data\",\n ...value,\n });\n break;\n\n case DataStreamStreamChunkType.AuiUpdateStateOperations:\n controller.enqueue({\n type: \"update-state\",\n path: [],\n operations: value,\n });\n break;\n\n case DataStreamStreamChunkType.ReasoningSignature:\n case DataStreamStreamChunkType.RedactedReasoning:\n // ignore these for now\n break;\n\n default: {\n const exhaustiveCheck: never = type;\n throw new Error(`unsupported chunk type: ${exhaustiveCheck}`);\n }\n }\n },\n flush() {\n activeToolCallArgsText?.close();\n activeToolCallArgsText = undefined;\n toolCallControllers.forEach((controller) => controller.close());\n toolCallControllers.clear();\n },\n });\n\n return readable\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new LineDecoderStream())\n .pipeThrough(new DataStreamChunkDecoder())\n .pipeThrough(transform);\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataStream.js","names":["exhaustiveCheck"],"sources":["../../../../src/core/serialization/data-stream/DataStream.ts"],"sourcesContent":["import type { AssistantStreamChunk } from \"../../AssistantStreamChunk\";\nimport type { ToolCallStreamController } from \"../../modules/tool-call\";\nimport { AssistantTransformStream } from \"../../utils/stream/AssistantTransformStream\";\nimport { PipeableTransformStream } from \"../../utils/stream/PipeableTransformStream\";\nimport { type DataStreamChunk, DataStreamStreamChunkType } from \"./chunk-types\";\nimport { LineDecoderStream } from \"../../utils/stream/LineDecoderStream\";\nimport {\n DataStreamChunkDecoder,\n DataStreamChunkEncoder,\n} from \"./serialization\";\nimport {\n type AssistantMetaStreamChunk,\n AssistantMetaTransformStream,\n} from \"../../utils/stream/AssistantMetaTransformStream\";\nimport type { TextStreamController } from \"../../modules/text\";\nimport type { AssistantStreamEncoder } from \"../../AssistantStream\";\n\nexport class DataStreamEncoder\n extends PipeableTransformStream<AssistantStreamChunk, Uint8Array<ArrayBuffer>>\n implements AssistantStreamEncoder\n{\n headers = new Headers({\n \"Content-Type\": \"text/plain; charset=utf-8\",\n \"x-vercel-ai-data-stream\": \"v1\",\n });\n\n constructor() {\n super((readable) => {\n const transform = new TransformStream<\n AssistantMetaStreamChunk,\n DataStreamChunk\n >({\n transform(chunk, controller) {\n const type = chunk.type;\n switch (type) {\n case \"part-start\": {\n const part = chunk.part;\n if (part.type === \"tool-call\") {\n const { type, ...value } = part;\n controller.enqueue({\n type: DataStreamStreamChunkType.StartToolCall,\n value,\n });\n }\n if (part.type === \"source\") {\n const { type, ...value } = part;\n controller.enqueue({\n type: DataStreamStreamChunkType.Source,\n value,\n });\n }\n if (part.type === \"data\") {\n const { type, ...value } = part;\n controller.enqueue({\n type: DataStreamStreamChunkType.AuiDataPart,\n value,\n });\n }\n break;\n }\n case \"text-delta\": {\n const part = chunk.meta;\n switch (part.type) {\n case \"text\": {\n if (part.parentId) {\n controller.enqueue({\n type: DataStreamStreamChunkType.AuiTextDelta,\n value: {\n textDelta: chunk.textDelta,\n parentId: part.parentId,\n },\n });\n } else {\n controller.enqueue({\n type: DataStreamStreamChunkType.TextDelta,\n value: chunk.textDelta,\n });\n }\n break;\n }\n case \"reasoning\": {\n if (part.parentId) {\n controller.enqueue({\n type: DataStreamStreamChunkType.AuiReasoningDelta,\n value: {\n reasoningDelta: chunk.textDelta,\n parentId: part.parentId,\n },\n });\n } else {\n controller.enqueue({\n type: DataStreamStreamChunkType.ReasoningDelta,\n value: chunk.textDelta,\n });\n }\n break;\n }\n case \"tool-call\": {\n controller.enqueue({\n type: DataStreamStreamChunkType.ToolCallArgsTextDelta,\n value: {\n toolCallId: part.toolCallId,\n argsTextDelta: chunk.textDelta,\n },\n });\n break;\n }\n default:\n throw new Error(\n `Unsupported part type for text-delta: ${part.type}`,\n );\n }\n break;\n }\n case \"result\": {\n // Only tool-call parts can have results.\n const part = chunk.meta;\n if (part.type !== \"tool-call\") {\n throw new Error(\n `Result chunk on non-tool-call part not supported: ${part.type}`,\n );\n }\n controller.enqueue({\n type: DataStreamStreamChunkType.ToolCallResult,\n value: {\n toolCallId: part.toolCallId,\n result: chunk.result,\n artifact: chunk.artifact,\n ...(chunk.isError ? { isError: chunk.isError } : {}),\n },\n });\n break;\n }\n case \"step-start\": {\n const { type, ...value } = chunk;\n controller.enqueue({\n type: DataStreamStreamChunkType.StartStep,\n value,\n });\n break;\n }\n case \"step-finish\": {\n const { type, ...value } = chunk;\n controller.enqueue({\n type: DataStreamStreamChunkType.FinishStep,\n value,\n });\n break;\n }\n case \"message-finish\": {\n const { type, ...value } = chunk;\n controller.enqueue({\n type: DataStreamStreamChunkType.FinishMessage,\n value,\n });\n break;\n }\n case \"error\": {\n controller.enqueue({\n type: DataStreamStreamChunkType.Error,\n value: chunk.error,\n });\n break;\n }\n case \"annotations\": {\n controller.enqueue({\n type: DataStreamStreamChunkType.Annotation,\n value: chunk.annotations,\n });\n break;\n }\n case \"data\": {\n controller.enqueue({\n type: DataStreamStreamChunkType.Data,\n value: chunk.data,\n });\n break;\n }\n\n case \"update-state\": {\n controller.enqueue({\n type: DataStreamStreamChunkType.AuiUpdateStateOperations,\n value: chunk.operations,\n });\n break;\n }\n\n // TODO ignore for now\n // in the future, we should create a handler that waits for text parts to finish before continuing\n case \"tool-call-args-text-finish\":\n case \"part-finish\":\n break;\n\n default: {\n const exhaustiveCheck: never = type;\n throw new Error(`Unsupported chunk type: ${exhaustiveCheck}`);\n }\n }\n },\n });\n\n return readable\n .pipeThrough(new AssistantMetaTransformStream())\n .pipeThrough(transform)\n .pipeThrough(new DataStreamChunkEncoder())\n .pipeThrough(new TextEncoderStream());\n });\n }\n}\n\nconst TOOL_CALL_ARGS_CLOSING_CHUNKS: DataStreamStreamChunkType[] = [\n DataStreamStreamChunkType.StartToolCall,\n DataStreamStreamChunkType.ToolCall,\n DataStreamStreamChunkType.TextDelta,\n DataStreamStreamChunkType.ReasoningDelta,\n DataStreamStreamChunkType.Source,\n DataStreamStreamChunkType.Error,\n DataStreamStreamChunkType.FinishStep,\n DataStreamStreamChunkType.FinishMessage,\n DataStreamStreamChunkType.AuiTextDelta,\n DataStreamStreamChunkType.AuiReasoningDelta,\n DataStreamStreamChunkType.AuiDataPart,\n];\n\nexport class DataStreamDecoder extends PipeableTransformStream<\n Uint8Array<ArrayBuffer>,\n AssistantStreamChunk\n> {\n constructor() {\n super((readable) => {\n const toolCallControllers = new Map<string, ToolCallStreamController>();\n let activeToolCallArgsText: TextStreamController | undefined;\n const transform = new AssistantTransformStream<DataStreamChunk>({\n transform(chunk, controller) {\n const { type, value } = chunk;\n\n if (TOOL_CALL_ARGS_CLOSING_CHUNKS.includes(type)) {\n activeToolCallArgsText?.close();\n activeToolCallArgsText = undefined;\n }\n\n switch (type) {\n case DataStreamStreamChunkType.ReasoningDelta:\n controller.appendReasoning(value);\n break;\n\n case DataStreamStreamChunkType.TextDelta:\n controller.appendText(value);\n break;\n\n case DataStreamStreamChunkType.AuiTextDelta:\n controller\n .withParentId(value.parentId)\n .appendText(value.textDelta);\n break;\n\n case DataStreamStreamChunkType.AuiReasoningDelta:\n controller\n .withParentId(value.parentId)\n .appendReasoning(value.reasoningDelta);\n break;\n\n case DataStreamStreamChunkType.StartToolCall: {\n const { toolCallId, toolName, parentId } = value;\n const ctrl = parentId\n ? controller.withParentId(parentId)\n : controller;\n\n if (toolCallControllers.has(toolCallId))\n throw new Error(\n `Encountered duplicate tool call id: ${toolCallId}`,\n );\n\n const toolCallController = ctrl.addToolCallPart({\n toolCallId,\n toolName,\n });\n toolCallControllers.set(toolCallId, toolCallController);\n\n activeToolCallArgsText = toolCallController.argsText;\n break;\n }\n\n case DataStreamStreamChunkType.ToolCallArgsTextDelta: {\n const { toolCallId, argsTextDelta } = value;\n const toolCallController = toolCallControllers.get(toolCallId);\n if (!toolCallController)\n throw new Error(\n `Encountered tool call with unknown id: ${toolCallId}`,\n );\n toolCallController.argsText.append(argsTextDelta);\n break;\n }\n\n case DataStreamStreamChunkType.ToolCallResult: {\n const { toolCallId, artifact, result, isError } = value;\n const toolCallController = toolCallControllers.get(toolCallId);\n if (!toolCallController)\n throw new Error(\n `Encountered tool call result with unknown id: ${toolCallId}`,\n );\n toolCallController.setResponse({\n artifact,\n result,\n isError,\n });\n break;\n }\n\n case DataStreamStreamChunkType.ToolCall: {\n const { toolCallId, toolName, args } = value;\n\n let toolCallController = toolCallControllers.get(toolCallId);\n if (toolCallController) {\n toolCallController.argsText.close();\n } else {\n toolCallController = controller.addToolCallPart({\n toolCallId,\n toolName,\n args,\n });\n toolCallControllers.set(toolCallId, toolCallController);\n }\n break;\n }\n\n case DataStreamStreamChunkType.FinishMessage:\n controller.enqueue({\n type: \"message-finish\",\n path: [],\n ...value,\n });\n break;\n\n case DataStreamStreamChunkType.StartStep:\n controller.enqueue({\n type: \"step-start\",\n path: [],\n ...value,\n });\n break;\n\n case DataStreamStreamChunkType.FinishStep:\n controller.enqueue({\n type: \"step-finish\",\n path: [],\n ...value,\n });\n break;\n case DataStreamStreamChunkType.Data:\n controller.enqueue({\n type: \"data\",\n path: [],\n data: value,\n });\n break;\n\n case DataStreamStreamChunkType.Annotation:\n controller.enqueue({\n type: \"annotations\",\n path: [],\n annotations: value,\n });\n break;\n\n case DataStreamStreamChunkType.Source: {\n const { parentId, ...sourceData } = value;\n const ctrl = parentId\n ? controller.withParentId(parentId)\n : controller;\n ctrl.appendSource({\n type: \"source\",\n ...sourceData,\n });\n break;\n }\n\n case DataStreamStreamChunkType.Error:\n controller.enqueue({\n type: \"error\",\n path: [],\n error: value,\n });\n break;\n\n case DataStreamStreamChunkType.File:\n controller.appendFile({\n type: \"file\",\n ...value,\n });\n break;\n\n case DataStreamStreamChunkType.AuiDataPart:\n controller.appendData({\n type: \"data\",\n ...value,\n });\n break;\n\n case DataStreamStreamChunkType.AuiUpdateStateOperations:\n controller.enqueue({\n type: \"update-state\",\n path: [],\n operations: value,\n });\n break;\n\n case DataStreamStreamChunkType.ReasoningSignature:\n case DataStreamStreamChunkType.RedactedReasoning:\n // ignore these for now\n break;\n\n default: {\n const exhaustiveCheck: never = type;\n throw new Error(`unsupported chunk type: ${exhaustiveCheck}`);\n }\n }\n },\n flush() {\n activeToolCallArgsText?.close();\n activeToolCallArgsText = undefined;\n toolCallControllers.forEach((controller) => controller.close());\n toolCallControllers.clear();\n },\n });\n\n return readable\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new LineDecoderStream())\n .pipeThrough(new DataStreamChunkDecoder())\n .pipeThrough(transform);\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -10,28 +10,29 @@ type LanguageModelV1Usage = {
|
|
|
10
10
|
inputTokens: number;
|
|
11
11
|
outputTokens: number;
|
|
12
12
|
};
|
|
13
|
-
declare
|
|
14
|
-
TextDelta
|
|
15
|
-
Data
|
|
16
|
-
Error
|
|
17
|
-
Annotation
|
|
18
|
-
ToolCall
|
|
19
|
-
ToolCallResult
|
|
20
|
-
StartToolCall
|
|
21
|
-
ToolCallArgsTextDelta
|
|
22
|
-
FinishMessage
|
|
23
|
-
FinishStep
|
|
24
|
-
StartStep
|
|
25
|
-
ReasoningDelta
|
|
26
|
-
Source
|
|
27
|
-
RedactedReasoning
|
|
28
|
-
ReasoningSignature
|
|
29
|
-
File
|
|
30
|
-
AuiUpdateStateOperations
|
|
31
|
-
AuiTextDelta
|
|
32
|
-
AuiReasoningDelta
|
|
33
|
-
AuiDataPart
|
|
34
|
-
}
|
|
13
|
+
declare const DataStreamStreamChunkType: {
|
|
14
|
+
readonly TextDelta: "0";
|
|
15
|
+
readonly Data: "2";
|
|
16
|
+
readonly Error: "3";
|
|
17
|
+
readonly Annotation: "8";
|
|
18
|
+
readonly ToolCall: "9";
|
|
19
|
+
readonly ToolCallResult: "a";
|
|
20
|
+
readonly StartToolCall: "b";
|
|
21
|
+
readonly ToolCallArgsTextDelta: "c";
|
|
22
|
+
readonly FinishMessage: "d";
|
|
23
|
+
readonly FinishStep: "e";
|
|
24
|
+
readonly StartStep: "f";
|
|
25
|
+
readonly ReasoningDelta: "g";
|
|
26
|
+
readonly Source: "h";
|
|
27
|
+
readonly RedactedReasoning: "i";
|
|
28
|
+
readonly ReasoningSignature: "j";
|
|
29
|
+
readonly File: "k";
|
|
30
|
+
readonly AuiUpdateStateOperations: "aui-state";
|
|
31
|
+
readonly AuiTextDelta: "aui-text-delta";
|
|
32
|
+
readonly AuiReasoningDelta: "aui-reasoning-delta";
|
|
33
|
+
readonly AuiDataPart: "aui-data";
|
|
34
|
+
};
|
|
35
|
+
type DataStreamStreamChunkType = (typeof DataStreamStreamChunkType)[keyof typeof DataStreamStreamChunkType];
|
|
35
36
|
type DataStreamStreamChunkValue = {
|
|
36
37
|
[DataStreamStreamChunkType.TextDelta]: string;
|
|
37
38
|
[DataStreamStreamChunkType.Data]: ReadonlyJSONValue[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-types.d.ts","names":[],"sources":["../../../../src/core/serialization/data-stream/chunk-types.ts"],"mappings":";;;KAMY,qBACT,KAAK;EACJ,MAAM;EACN,OAAO,2BAA2B;KAEpC;KAEG;KASA;EACH;EACA;;
|
|
1
|
+
{"version":3,"file":"chunk-types.d.ts","names":[],"sources":["../../../../src/core/serialization/data-stream/chunk-types.ts"],"mappings":";;;KAMY,qBACT,KAAK;EACJ,MAAM;EACN,OAAO,2BAA2B;KAEpC;KAEG;KASA;EACH;EACA;;cAGW;;;;;;;;;;;;;;;;;;;;;;KAuBD,oCACF,wCAAwC;KAC7C;GACF,0BAA0B;GAC1B,0BAA0B,OAAO;GACjC,0BAA0B,aAAa;GACvC,0BAA0B;IACzB;IACA;IACA,MAAM;;GAEP,0BAA0B;IACzB;IACA;IACA;;GAED,0BAA0B;IACzB;IACA;;GAED,0BAA0B;IACzB;IACA,QAAQ;IAGR,WAAW;IACX;;GAED,0BAA0B;GAC1B,0BAA0B;IACzB,cAAc;IACd,OAAO;IACP;;GAED,0BAA0B;IACzB,cAAc;IACd,OAAO;;GAER,0BAA0B;IACzB;;GAED,0BAA0B;GAC1B,0BAA0B;IACzB;IACA;IACA;IACA;IACA;;GAED,0BAA0B;IAAsB;;GAChD,0BAA0B;IAAuB;;GACjD,0BAA0B;IAAS;IAAc;;GAGjD,0BAA0B,2BAA2B;GACrD,0BAA0B;IACzB;IACA;;GAED,0BAA0B;IACzB;IACA;;GAED,0BAA0B;IACzB;IACA,MAAM;IACN"}
|
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
//#region src/core/serialization/data-stream/chunk-types.ts
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}({});
|
|
2
|
+
const DataStreamStreamChunkType = {
|
|
3
|
+
TextDelta: "0",
|
|
4
|
+
Data: "2",
|
|
5
|
+
Error: "3",
|
|
6
|
+
Annotation: "8",
|
|
7
|
+
ToolCall: "9",
|
|
8
|
+
ToolCallResult: "a",
|
|
9
|
+
StartToolCall: "b",
|
|
10
|
+
ToolCallArgsTextDelta: "c",
|
|
11
|
+
FinishMessage: "d",
|
|
12
|
+
FinishStep: "e",
|
|
13
|
+
StartStep: "f",
|
|
14
|
+
ReasoningDelta: "g",
|
|
15
|
+
Source: "h",
|
|
16
|
+
RedactedReasoning: "i",
|
|
17
|
+
ReasoningSignature: "j",
|
|
18
|
+
File: "k",
|
|
19
|
+
AuiUpdateStateOperations: "aui-state",
|
|
20
|
+
AuiTextDelta: "aui-text-delta",
|
|
21
|
+
AuiReasoningDelta: "aui-reasoning-delta",
|
|
22
|
+
AuiDataPart: "aui-data"
|
|
23
|
+
};
|
|
25
24
|
//#endregion
|
|
26
25
|
export { DataStreamStreamChunkType };
|
|
27
26
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-types.js","names":[],"sources":["../../../../src/core/serialization/data-stream/chunk-types.ts"],"sourcesContent":["import type {\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"../../../utils/json/json-value\";\nimport type { GorpStreamOperation } from \"../../gorp/types\";\n\nexport type DataStreamChunk = {\n [K in DataStreamStreamChunkType]: {\n type: K;\n value: DataStreamStreamChunkValue[K];\n };\n}[DataStreamStreamChunkType];\n\ntype LanguageModelV1FinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"error\"\n | \"other\"\n | \"unknown\";\n\ntype LanguageModelV1Usage = {\n inputTokens: number;\n outputTokens: number;\n};\n\nexport
|
|
1
|
+
{"version":3,"file":"chunk-types.js","names":[],"sources":["../../../../src/core/serialization/data-stream/chunk-types.ts"],"sourcesContent":["import type {\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"../../../utils/json/json-value\";\nimport type { GorpStreamOperation } from \"../../gorp/types\";\n\nexport type DataStreamChunk = {\n [K in DataStreamStreamChunkType]: {\n type: K;\n value: DataStreamStreamChunkValue[K];\n };\n}[DataStreamStreamChunkType];\n\ntype LanguageModelV1FinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"error\"\n | \"other\"\n | \"unknown\";\n\ntype LanguageModelV1Usage = {\n inputTokens: number;\n outputTokens: number;\n};\n\nexport const DataStreamStreamChunkType = {\n TextDelta: \"0\",\n Data: \"2\",\n Error: \"3\",\n Annotation: \"8\",\n ToolCall: \"9\",\n ToolCallResult: \"a\",\n StartToolCall: \"b\",\n ToolCallArgsTextDelta: \"c\",\n FinishMessage: \"d\",\n FinishStep: \"e\",\n StartStep: \"f\",\n ReasoningDelta: \"g\",\n Source: \"h\",\n RedactedReasoning: \"i\",\n ReasoningSignature: \"j\",\n File: \"k\",\n\n AuiUpdateStateOperations: \"aui-state\",\n AuiTextDelta: \"aui-text-delta\",\n AuiReasoningDelta: \"aui-reasoning-delta\",\n AuiDataPart: \"aui-data\",\n} as const;\nexport type DataStreamStreamChunkType =\n (typeof DataStreamStreamChunkType)[keyof typeof DataStreamStreamChunkType];\ntype DataStreamStreamChunkValue = {\n [DataStreamStreamChunkType.TextDelta]: string;\n [DataStreamStreamChunkType.Data]: ReadonlyJSONValue[];\n [DataStreamStreamChunkType.Annotation]: ReadonlyJSONValue[];\n [DataStreamStreamChunkType.ToolCall]: {\n toolCallId: string;\n toolName: string;\n args: ReadonlyJSONObject;\n };\n [DataStreamStreamChunkType.StartToolCall]: {\n toolCallId: string;\n toolName: string;\n parentId?: string;\n };\n [DataStreamStreamChunkType.ToolCallArgsTextDelta]: {\n toolCallId: string;\n argsTextDelta: string;\n };\n [DataStreamStreamChunkType.ToolCallResult]: {\n toolCallId: string;\n result: ReadonlyJSONValue;\n\n // aui-extensions\n artifact?: ReadonlyJSONValue | undefined;\n isError?: boolean;\n };\n [DataStreamStreamChunkType.Error]: string;\n [DataStreamStreamChunkType.FinishStep]: {\n finishReason: LanguageModelV1FinishReason;\n usage: LanguageModelV1Usage;\n isContinued: boolean;\n };\n [DataStreamStreamChunkType.FinishMessage]: {\n finishReason: LanguageModelV1FinishReason;\n usage: LanguageModelV1Usage;\n };\n [DataStreamStreamChunkType.StartStep]: {\n messageId: string;\n };\n [DataStreamStreamChunkType.ReasoningDelta]: string;\n [DataStreamStreamChunkType.Source]: {\n sourceType: \"url\";\n id: string;\n url: string;\n title?: string;\n parentId?: string;\n };\n [DataStreamStreamChunkType.RedactedReasoning]: { data: string };\n [DataStreamStreamChunkType.ReasoningSignature]: { signature: string };\n [DataStreamStreamChunkType.File]: { data: string; mimeType: string };\n\n // aui-extensions\n [DataStreamStreamChunkType.AuiUpdateStateOperations]: GorpStreamOperation[];\n [DataStreamStreamChunkType.AuiTextDelta]: {\n textDelta: string;\n parentId: string;\n };\n [DataStreamStreamChunkType.AuiReasoningDelta]: {\n reasoningDelta: string;\n parentId: string;\n };\n [DataStreamStreamChunkType.AuiDataPart]: {\n name: string;\n data: ReadonlyJSONValue;\n parentId?: string;\n };\n};\n"],"mappings":";AA2BA,MAAa,4BAA4B;CACvC,WAAW;CACX,MAAM;CACN,OAAO;CACP,YAAY;CACZ,UAAU;CACV,gBAAgB;CAChB,eAAe;CACf,uBAAuB;CACvB,eAAe;CACf,YAAY;CACZ,WAAW;CACX,gBAAgB;CAChB,QAAQ;CACR,mBAAmB;CACnB,oBAAoB;CACpB,MAAM;CAEN,0BAA0B;CAC1B,cAAc;CACd,mBAAmB;CACnB,aAAa;AACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.d.ts","names":[],"sources":["../../../../src/core/serialization/data-stream/serialization.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"serialization.d.ts","names":[],"sources":["../../../../src/core/serialization/data-stream/serialization.ts"],"mappings":";;cAGa,+BAA+B,gBAC1C;;;cAYW,+BAA+B,wBAE1C"}
|