assistant-stream 0.3.25 → 0.3.26
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/README.md +4 -1
- package/dist/core/AssistantStream.d.ts +0 -1
- package/dist/core/AssistantStream.d.ts.map +1 -1
- package/dist/core/AssistantStreamChunk.d.ts +24 -12
- package/dist/core/AssistantStreamChunk.d.ts.map +1 -1
- package/dist/core/accumulators/AssistantMessageStream.d.ts +0 -1
- package/dist/core/accumulators/AssistantMessageStream.d.ts.map +1 -1
- package/dist/core/accumulators/TimingTracker.d.ts +0 -1
- package/dist/core/accumulators/TimingTracker.d.ts.map +1 -1
- package/dist/core/accumulators/assistant-message-accumulator.d.ts +3 -9
- package/dist/core/accumulators/assistant-message-accumulator.d.ts.map +1 -1
- package/dist/core/accumulators/assistant-message-accumulator.js +6 -1
- package/dist/core/accumulators/assistant-message-accumulator.js.map +1 -1
- package/dist/core/converters/toGenericMessages.d.ts.map +1 -1
- package/dist/core/converters/toGenericMessages.js +2 -1
- package/dist/core/converters/toGenericMessages.js.map +1 -1
- package/dist/core/modules/assistant-stream.d.ts +13 -7
- package/dist/core/modules/assistant-stream.d.ts.map +1 -1
- package/dist/core/modules/text.d.ts +0 -1
- package/dist/core/modules/text.d.ts.map +1 -1
- package/dist/core/modules/tool-call.d.ts +0 -1
- package/dist/core/modules/tool-call.d.ts.map +1 -1
- package/dist/core/object/ObjectStreamAccumulator.d.ts +1 -1
- package/dist/core/object/ObjectStreamAccumulator.d.ts.map +1 -1
- package/dist/core/object/ObjectStreamResponse.d.ts +0 -1
- package/dist/core/object/ObjectStreamResponse.d.ts.map +1 -1
- package/dist/core/object/ObjectStreamResponse.js +1 -1
- package/dist/core/object/ObjectStreamResponse.js.map +1 -1
- package/dist/core/object/createObjectStream.d.ts +2 -5
- package/dist/core/object/createObjectStream.d.ts.map +1 -1
- package/dist/core/object/types.d.ts +1 -0
- package/dist/core/object/types.d.ts.map +1 -1
- package/dist/core/serialization/PlainText.d.ts +0 -1
- package/dist/core/serialization/PlainText.d.ts.map +1 -1
- package/dist/core/serialization/assistant-transport/AssistantTransport.d.ts +0 -1
- package/dist/core/serialization/assistant-transport/AssistantTransport.d.ts.map +1 -1
- package/dist/core/serialization/assistant-transport/AssistantTransport.js +2 -52
- package/dist/core/serialization/assistant-transport/AssistantTransport.js.map +1 -1
- package/dist/core/serialization/data-stream/DataStream.d.ts +0 -1
- package/dist/core/serialization/data-stream/DataStream.d.ts.map +1 -1
- package/dist/core/serialization/data-stream/chunk-types.d.ts +1 -2
- package/dist/core/serialization/data-stream/chunk-types.d.ts.map +1 -1
- package/dist/core/serialization/data-stream/serialization.d.ts +0 -1
- package/dist/core/serialization/data-stream/serialization.d.ts.map +1 -1
- package/dist/core/serialization/ui-message-stream/UIMessageStream.d.ts +0 -1
- package/dist/core/serialization/ui-message-stream/UIMessageStream.d.ts.map +1 -1
- package/dist/core/serialization/ui-message-stream/UIMessageStream.js +66 -53
- package/dist/core/serialization/ui-message-stream/UIMessageStream.js.map +1 -1
- package/dist/core/serialization/ui-message-stream/chunk-types.d.ts +0 -1
- package/dist/core/serialization/ui-message-stream/chunk-types.d.ts.map +1 -1
- package/dist/core/tool/ToolCallReader.d.ts +1 -0
- package/dist/core/tool/ToolCallReader.d.ts.map +1 -1
- package/dist/core/tool/ToolExecutionStream.d.ts +0 -1
- package/dist/core/tool/ToolExecutionStream.d.ts.map +1 -1
- package/dist/core/tool/ToolResponse.d.ts +6 -4
- package/dist/core/tool/ToolResponse.d.ts.map +1 -1
- package/dist/core/tool/schema-utils.d.ts +0 -1
- package/dist/core/tool/schema-utils.d.ts.map +1 -1
- package/dist/core/tool/tool-types.d.ts +71 -33
- package/dist/core/tool/tool-types.d.ts.map +1 -1
- package/dist/core/tool/toolResultStream.d.ts +3 -2
- package/dist/core/tool/toolResultStream.d.ts.map +1 -1
- package/dist/core/tool/type-path-utils.d.ts +2 -2
- package/dist/core/tool/type-path-utils.d.ts.map +1 -1
- package/dist/core/utils/Counter.d.ts.map +1 -1
- package/dist/core/utils/generateId.d.ts.map +1 -1
- package/dist/core/utils/stream/AssistantMetaTransformStream.d.ts +0 -1
- package/dist/core/utils/stream/AssistantMetaTransformStream.d.ts.map +1 -1
- package/dist/core/utils/stream/AssistantTransformStream.d.ts +0 -1
- package/dist/core/utils/stream/AssistantTransformStream.d.ts.map +1 -1
- package/dist/core/utils/stream/LineDecoderStream.d.ts +1 -0
- package/dist/core/utils/stream/LineDecoderStream.d.ts.map +1 -1
- package/dist/core/utils/stream/LineDecoderStream.js +19 -6
- package/dist/core/utils/stream/LineDecoderStream.js.map +1 -1
- package/dist/core/utils/stream/PipeableTransformStream.d.ts.map +1 -1
- package/dist/core/utils/stream/SSE.d.ts +0 -1
- package/dist/core/utils/stream/SSE.d.ts.map +1 -1
- package/dist/core/utils/stream/SSE.js +2 -52
- package/dist/core/utils/stream/SSE.js.map +1 -1
- package/dist/core/utils/stream/SSEEventDecoder.d.ts +27 -0
- package/dist/core/utils/stream/SSEEventDecoder.d.ts.map +1 -0
- package/dist/core/utils/stream/SSEEventDecoder.js +84 -0
- package/dist/core/utils/stream/SSEEventDecoder.js.map +1 -0
- package/dist/core/utils/stream/SSEEventDecoderStream.d.ts +13 -0
- package/dist/core/utils/stream/SSEEventDecoderStream.d.ts.map +1 -0
- package/dist/core/utils/stream/SSEEventDecoderStream.js +24 -0
- package/dist/core/utils/stream/SSEEventDecoderStream.js.map +1 -0
- package/dist/core/utils/stream/UnderlyingReadable.d.ts.map +1 -1
- package/dist/core/utils/stream/merge.d.ts +0 -1
- package/dist/core/utils/stream/merge.d.ts.map +1 -1
- package/dist/core/utils/stream/path-utils.d.ts +0 -1
- package/dist/core/utils/stream/path-utils.d.ts.map +1 -1
- package/dist/core/utils/types.d.ts +16 -8
- package/dist/core/utils/types.d.ts.map +1 -1
- package/dist/core/utils/withPromiseOrValue.d.ts.map +1 -1
- package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts +3 -3
- package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts.map +1 -1
- package/dist/resumable/ResumableStreamContext.d.ts +0 -1
- package/dist/resumable/ResumableStreamContext.d.ts.map +1 -1
- package/dist/resumable/constants.d.ts.map +1 -1
- package/dist/resumable/createResumableAssistantStreamResponse.d.ts +6 -4
- package/dist/resumable/createResumableAssistantStreamResponse.d.ts.map +1 -1
- package/dist/resumable/errors.d.ts.map +1 -1
- package/dist/resumable/stores/InMemoryResumableStreamStore.d.ts +0 -1
- package/dist/resumable/stores/InMemoryResumableStreamStore.d.ts.map +1 -1
- package/dist/resumable/stores/InMemoryResumableStreamStore.js +2 -1
- package/dist/resumable/stores/InMemoryResumableStreamStore.js.map +1 -1
- package/dist/resumable/stores/ioredis.d.ts +0 -1
- package/dist/resumable/stores/ioredis.d.ts.map +1 -1
- package/dist/resumable/stores/redis-impl.d.ts +2 -2
- package/dist/resumable/stores/redis-impl.d.ts.map +1 -1
- package/dist/resumable/stores/redis.d.ts +0 -1
- package/dist/resumable/stores/redis.d.ts.map +1 -1
- package/dist/resumable/types.d.ts.map +1 -1
- package/dist/utils/AsyncIterableStream.d.ts.map +1 -1
- package/dist/utils/json/fix-json.d.ts.map +1 -1
- package/dist/utils/json/json-value.d.ts.map +1 -1
- package/dist/utils/json/parse-partial-json-object.d.ts +0 -1
- package/dist/utils/json/parse-partial-json-object.d.ts.map +1 -1
- package/dist/utils/promiseWithResolvers.d.ts.map +1 -1
- package/dist/utils.d.ts +2 -1
- package/dist/utils.js +2 -1
- package/package.json +5 -5
- package/src/core/AssistantStreamChunk.ts +2 -0
- package/src/core/accumulators/assistant-message-accumulator.test.ts +63 -0
- package/src/core/accumulators/assistant-message-accumulator.ts +15 -1
- package/src/core/object/ObjectStream.test.ts +20 -0
- package/src/core/object/ObjectStreamResponse.test.ts +32 -0
- package/src/core/object/ObjectStreamResponse.ts +6 -1
- package/src/core/serialization/assistant-transport/AssistantTransport.test.ts +41 -0
- package/src/core/serialization/assistant-transport/AssistantTransport.ts +6 -70
- package/src/core/serialization/ui-message-stream/UIMessageStream.test.ts +212 -4
- package/src/core/serialization/ui-message-stream/UIMessageStream.ts +62 -71
- package/src/core/utils/stream/LineDecoderStream.test.ts +26 -2
- package/src/core/utils/stream/LineDecoderStream.ts +21 -11
- package/src/core/utils/stream/SSE.ts +6 -70
- package/src/core/utils/stream/SSEEventDecoder.test.ts +146 -0
- package/src/core/utils/stream/SSEEventDecoder.ts +109 -0
- package/src/core/utils/stream/SSEEventDecoderStream.test.ts +42 -0
- package/src/core/utils/stream/SSEEventDecoderStream.ts +34 -0
- package/src/utils.ts +4 -0
- package/dist/utils/json/is-json.d.ts +0 -9
- package/dist/utils/json/is-json.d.ts.map +0 -1
- package/dist/utils/json/is-json.js +0 -17
- package/dist/utils/json/is-json.js.map +0 -1
- package/src/utils/json/is-json.ts +0 -43
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantTransport.d.ts","names":[],"sources":["../../../../src/core/serialization/assistant-transport/AssistantTransport.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"AssistantTransport.d.ts","names":[],"sources":["../../../../src/core/serialization/assistant-transport/AssistantTransport.ts"],"mappings":";;;;;;;;cAYa,kCACH,wBAAwB,sBAAsB,WAAW,yBACtD;EAEX,SAAO;;;;;;;cA4BI,kCAAkC,wBAC7C,WAAW,cACX"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PipeableTransformStream } from "../../utils/stream/PipeableTransformStream.js";
|
|
2
|
-
import {
|
|
2
|
+
import { SSEEventDecoderStream } from "../../utils/stream/SSEEventDecoderStream.js";
|
|
3
3
|
//#region src/core/serialization/assistant-transport/AssistantTransport.ts
|
|
4
4
|
/**
|
|
5
5
|
* AssistantTransportEncoder encodes AssistantStreamChunks into SSE format
|
|
@@ -24,56 +24,6 @@ var AssistantTransportEncoder = class extends PipeableTransformStream {
|
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
|
-
var SSEEventStream = class extends TransformStream {
|
|
28
|
-
constructor() {
|
|
29
|
-
let eventBuffer = {};
|
|
30
|
-
let dataLines = [];
|
|
31
|
-
super({
|
|
32
|
-
start() {
|
|
33
|
-
eventBuffer = {};
|
|
34
|
-
dataLines = [];
|
|
35
|
-
},
|
|
36
|
-
transform(line, controller) {
|
|
37
|
-
if (line.startsWith(":")) return;
|
|
38
|
-
if (line === "") {
|
|
39
|
-
if (dataLines.length > 0) controller.enqueue({
|
|
40
|
-
event: eventBuffer.event || "message",
|
|
41
|
-
data: dataLines.join("\n"),
|
|
42
|
-
id: eventBuffer.id,
|
|
43
|
-
retry: eventBuffer.retry
|
|
44
|
-
});
|
|
45
|
-
eventBuffer = {};
|
|
46
|
-
dataLines = [];
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
const [field, ...rest] = line.split(":");
|
|
50
|
-
const value = rest.join(":").trimStart();
|
|
51
|
-
switch (field) {
|
|
52
|
-
case "event":
|
|
53
|
-
eventBuffer.event = value;
|
|
54
|
-
break;
|
|
55
|
-
case "data":
|
|
56
|
-
dataLines.push(value);
|
|
57
|
-
break;
|
|
58
|
-
case "id":
|
|
59
|
-
eventBuffer.id = value;
|
|
60
|
-
break;
|
|
61
|
-
case "retry":
|
|
62
|
-
eventBuffer.retry = Number(value);
|
|
63
|
-
break;
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
flush(controller) {
|
|
67
|
-
if (dataLines.length > 0) controller.enqueue({
|
|
68
|
-
event: eventBuffer.event || "message",
|
|
69
|
-
data: dataLines.join("\n"),
|
|
70
|
-
id: eventBuffer.id,
|
|
71
|
-
retry: eventBuffer.retry
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
27
|
/**
|
|
78
28
|
* AssistantTransportDecoder decodes SSE format into AssistantStreamChunks.
|
|
79
29
|
* It stops decoding when it encounters [DONE].
|
|
@@ -82,7 +32,7 @@ var AssistantTransportDecoder = class extends PipeableTransformStream {
|
|
|
82
32
|
constructor() {
|
|
83
33
|
super((readable) => {
|
|
84
34
|
let receivedDone = false;
|
|
85
|
-
return readable.pipeThrough(new TextDecoderStream()).pipeThrough(new
|
|
35
|
+
return readable.pipeThrough(new TextDecoderStream()).pipeThrough(new SSEEventDecoderStream()).pipeThrough(new TransformStream({
|
|
86
36
|
transform(event, controller) {
|
|
87
37
|
switch (event.event) {
|
|
88
38
|
case "message":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantTransport.js","names":[],"sources":["../../../../src/core/serialization/assistant-transport/AssistantTransport.ts"],"sourcesContent":["import type { AssistantStreamChunk } from \"../../AssistantStreamChunk\";\nimport { PipeableTransformStream } from \"../../utils/stream/PipeableTransformStream\";\nimport {
|
|
1
|
+
{"version":3,"file":"AssistantTransport.js","names":[],"sources":["../../../../src/core/serialization/assistant-transport/AssistantTransport.ts"],"sourcesContent":["import type { AssistantStreamChunk } from \"../../AssistantStreamChunk\";\nimport { PipeableTransformStream } from \"../../utils/stream/PipeableTransformStream\";\nimport {\n SSEEventDecoderStream,\n type PipelineSSEEvent,\n} from \"../../utils/stream/SSEEventDecoderStream\";\nimport type { AssistantStreamEncoder } from \"../../AssistantStream\";\n\n/**\n * AssistantTransportEncoder encodes AssistantStreamChunks into SSE format\n * and emits [DONE] when the stream completes.\n */\nexport class AssistantTransportEncoder\n extends PipeableTransformStream<AssistantStreamChunk, Uint8Array<ArrayBuffer>>\n implements AssistantStreamEncoder\n{\n headers = new Headers({\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n });\n\n constructor() {\n super((readable) => {\n return readable\n .pipeThrough(\n new TransformStream<AssistantStreamChunk, string>({\n transform(chunk, controller) {\n controller.enqueue(`data: ${JSON.stringify(chunk)}\\n\\n`);\n },\n flush(controller) {\n controller.enqueue(\"data: [DONE]\\n\\n\");\n },\n }),\n )\n .pipeThrough(new TextEncoderStream());\n });\n }\n}\n\n/**\n * AssistantTransportDecoder decodes SSE format into AssistantStreamChunks.\n * It stops decoding when it encounters [DONE].\n */\nexport class AssistantTransportDecoder extends PipeableTransformStream<\n Uint8Array<ArrayBuffer>,\n AssistantStreamChunk\n> {\n constructor() {\n super((readable) => {\n let receivedDone = false;\n\n return readable\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new SSEEventDecoderStream())\n .pipeThrough(\n new TransformStream<PipelineSSEEvent, AssistantStreamChunk>({\n transform(event, controller) {\n switch (event.event) {\n case \"message\":\n if (event.data === \"[DONE]\") {\n // Mark that we received [DONE]\n receivedDone = true;\n // Stop processing when we encounter [DONE]\n controller.terminate();\n } else {\n controller.enqueue(JSON.parse(event.data));\n }\n break;\n default:\n throw new Error(`Unknown SSE event type: ${event.event}`);\n }\n },\n flush() {\n if (!receivedDone) {\n throw new Error(\n \"Stream ended abruptly without receiving [DONE] marker\",\n );\n }\n },\n }),\n );\n });\n }\n}\n"],"mappings":";;;;;;;AAYA,IAAa,4BAAb,cACU,wBAEV;CACE,UAAU,IAAI,QAAQ;EACpB,gBAAgB;EAChB,iBAAiB;EACjB,YAAY;CACd,CAAC;CAED,cAAc;EACZ,OAAO,aAAa;GAClB,OAAO,SACJ,YACC,IAAI,gBAA8C;IAChD,UAAU,OAAO,YAAY;KAC3B,WAAW,QAAQ,SAAS,KAAK,UAAU,KAAK,EAAE,KAAK;IACzD;IACA,MAAM,YAAY;KAChB,WAAW,QAAQ,kBAAkB;IACvC;GACF,CAAC,CACH,CAAC,CACA,YAAY,IAAI,kBAAkB,CAAC;EACxC,CAAC;CACH;AACF;;;;;AAMA,IAAa,4BAAb,cAA+C,wBAG7C;CACA,cAAc;EACZ,OAAO,aAAa;GAClB,IAAI,eAAe;GAEnB,OAAO,SACJ,YAAY,IAAI,kBAAkB,CAAC,CAAC,CACpC,YAAY,IAAI,sBAAsB,CAAC,CAAC,CACxC,YACC,IAAI,gBAAwD;IAC1D,UAAU,OAAO,YAAY;KAC3B,QAAQ,MAAM,OAAd;MACE,KAAK;OACH,IAAI,MAAM,SAAS,UAAU;QAE3B,eAAe;QAEf,WAAW,UAAU;OACvB,OACE,WAAW,QAAQ,KAAK,MAAM,MAAM,IAAI,CAAC;OAE3C;MACF,SACE,MAAM,IAAI,MAAM,2BAA2B,MAAM,OAAO;KAC5D;IACF;IACA,QAAQ;KACN,IAAI,CAAC,cACH,MAAM,IAAI,MACR,uDACF;IAEJ;GACF,CAAC,CACH;EACJ,CAAC;CACH;AACF"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { AssistantStreamChunk } from "../../AssistantStreamChunk.js";
|
|
2
2
|
import { AssistantStreamEncoder } from "../../AssistantStream.js";
|
|
3
3
|
import { PipeableTransformStream } from "../../utils/stream/PipeableTransformStream.js";
|
|
4
|
-
|
|
5
4
|
//#region src/core/serialization/data-stream/DataStream.d.ts
|
|
6
5
|
declare class DataStreamEncoder extends PipeableTransformStream<AssistantStreamChunk, Uint8Array<ArrayBuffer>> implements AssistantStreamEncoder {
|
|
7
6
|
headers: Headers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataStream.d.ts","names":[],"sources":["../../../../src/core/serialization/data-stream/DataStream.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"DataStream.d.ts","names":[],"sources":["../../../../src/core/serialization/data-stream/DataStream.ts"],"mappings":";;;;cAiBa,0BACH,wBAAwB,sBAAsB,WAAW,yBACtD;EAEX,SAAO;;;cA2MI,0BAA0B,wBACrC,WAAW,cACX"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { ReadonlyJSONObject, ReadonlyJSONValue } from "../../../utils/json/json-value.js";
|
|
2
2
|
import { ObjectStreamOperation } from "../../object/types.js";
|
|
3
|
-
|
|
4
3
|
//#region src/core/serialization/data-stream/chunk-types.d.ts
|
|
5
4
|
type DataStreamChunk = { [K in DataStreamStreamChunkType]: {
|
|
6
5
|
type: K;
|
|
7
6
|
value: DataStreamStreamChunkValue[K];
|
|
8
|
-
} }[DataStreamStreamChunkType];
|
|
7
|
+
}; }[DataStreamStreamChunkType];
|
|
9
8
|
type LanguageModelV1FinishReason = "stop" | "length" | "content-filter" | "tool-calls" | "error" | "other" | "unknown";
|
|
10
9
|
type LanguageModelV1Usage = {
|
|
11
10
|
inputTokens: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-types.d.ts","names":[],"sources":["../../../../src/core/serialization/data-stream/chunk-types.ts"],"mappings":"
|
|
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;;aAGU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;KAEG;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 +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":";;cAEa,+BAA+B,gBAC1C;;;cAYW,+BAA+B,wBAE1C"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { AssistantStreamChunk } from "../../AssistantStreamChunk.js";
|
|
2
2
|
import { PipeableTransformStream } from "../../utils/stream/PipeableTransformStream.js";
|
|
3
3
|
import { UIMessageStreamChunk, UIMessageStreamDataChunk } from "./chunk-types.js";
|
|
4
|
-
|
|
5
4
|
//#region src/core/serialization/ui-message-stream/UIMessageStream.d.ts
|
|
6
5
|
type UIMessageStreamDecoderOptions = {
|
|
7
6
|
onData?: (data: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UIMessageStream.d.ts","names":[],"sources":["../../../../src/core/serialization/ui-message-stream/UIMessageStream.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"UIMessageStream.d.ts","names":[],"sources":["../../../../src/core/serialization/ui-message-stream/UIMessageStream.ts"],"mappings":";;;;KAiBY;EACV,UAAU;IACR;IACA;IACA;IACA;;;;;;cAWS,+BAA+B,wBAC1C,WAAW,cACX;cAEY,UAAS"}
|
|
@@ -1,58 +1,8 @@
|
|
|
1
1
|
import { AssistantTransformStream } from "../../utils/stream/AssistantTransformStream.js";
|
|
2
2
|
import { PipeableTransformStream } from "../../utils/stream/PipeableTransformStream.js";
|
|
3
|
-
import { LineDecoderStream } from "../../utils/stream/LineDecoderStream.js";
|
|
4
3
|
import { generateId } from "../../utils/generateId.js";
|
|
4
|
+
import { SSEEventDecoderStream } from "../../utils/stream/SSEEventDecoderStream.js";
|
|
5
5
|
//#region src/core/serialization/ui-message-stream/UIMessageStream.ts
|
|
6
|
-
var SSEEventStream = class extends TransformStream {
|
|
7
|
-
constructor() {
|
|
8
|
-
let eventBuffer = {};
|
|
9
|
-
let dataLines = [];
|
|
10
|
-
super({
|
|
11
|
-
start() {
|
|
12
|
-
eventBuffer = {};
|
|
13
|
-
dataLines = [];
|
|
14
|
-
},
|
|
15
|
-
transform(line, controller) {
|
|
16
|
-
if (line.startsWith(":")) return;
|
|
17
|
-
if (line === "") {
|
|
18
|
-
if (dataLines.length > 0) controller.enqueue({
|
|
19
|
-
event: eventBuffer.event || "message",
|
|
20
|
-
data: dataLines.join("\n"),
|
|
21
|
-
id: eventBuffer.id,
|
|
22
|
-
retry: eventBuffer.retry
|
|
23
|
-
});
|
|
24
|
-
eventBuffer = {};
|
|
25
|
-
dataLines = [];
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const [field, ...rest] = line.split(":");
|
|
29
|
-
const value = rest.join(":").trimStart();
|
|
30
|
-
switch (field) {
|
|
31
|
-
case "event":
|
|
32
|
-
eventBuffer.event = value;
|
|
33
|
-
break;
|
|
34
|
-
case "data":
|
|
35
|
-
dataLines.push(value);
|
|
36
|
-
break;
|
|
37
|
-
case "id":
|
|
38
|
-
eventBuffer.id = value;
|
|
39
|
-
break;
|
|
40
|
-
case "retry":
|
|
41
|
-
eventBuffer.retry = Number(value);
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
flush(controller) {
|
|
46
|
-
if (dataLines.length > 0) controller.enqueue({
|
|
47
|
-
event: eventBuffer.event || "message",
|
|
48
|
-
data: dataLines.join("\n"),
|
|
49
|
-
id: eventBuffer.id,
|
|
50
|
-
retry: eventBuffer.retry
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
6
|
const isDataChunk = (chunk) => chunk.type.startsWith("data-");
|
|
57
7
|
/**
|
|
58
8
|
* Decodes AI SDK v6 UI Message Stream format into AssistantStreamChunks.
|
|
@@ -189,7 +139,7 @@ var UIMessageStreamDecoder = class extends PipeableTransformStream {
|
|
|
189
139
|
toolCallControllers.clear();
|
|
190
140
|
}
|
|
191
141
|
});
|
|
192
|
-
return readable.pipeThrough(new TextDecoderStream()).pipeThrough(new
|
|
142
|
+
return readable.pipeThrough(new TextDecoderStream()).pipeThrough(new SSEEventDecoderStream()).pipeThrough(new TransformStream({
|
|
193
143
|
transform(event, controller) {
|
|
194
144
|
if (event.event !== "message") throw new Error(`Unknown SSE event type: ${event.event}`);
|
|
195
145
|
if (event.data === "[DONE]") {
|
|
@@ -197,7 +147,70 @@ var UIMessageStreamDecoder = class extends PipeableTransformStream {
|
|
|
197
147
|
controller.terminate();
|
|
198
148
|
return;
|
|
199
149
|
}
|
|
200
|
-
|
|
150
|
+
const chunk = JSON.parse(event.data);
|
|
151
|
+
if (chunk.type === "text-delta" && chunk.textDelta === void 0) {
|
|
152
|
+
const { delta, ...rest } = chunk;
|
|
153
|
+
controller.enqueue({
|
|
154
|
+
...rest,
|
|
155
|
+
textDelta: delta ?? ""
|
|
156
|
+
});
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
if (chunk.type === "start") {
|
|
160
|
+
controller.enqueue({
|
|
161
|
+
...chunk,
|
|
162
|
+
messageId: chunk.messageId ?? generateId()
|
|
163
|
+
});
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (chunk.type === "source-url") {
|
|
167
|
+
controller.enqueue({
|
|
168
|
+
type: "source",
|
|
169
|
+
source: {
|
|
170
|
+
sourceType: "url",
|
|
171
|
+
id: chunk.sourceId,
|
|
172
|
+
url: chunk.url,
|
|
173
|
+
...chunk.title && { title: chunk.title }
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
if (chunk.type === "source" && chunk.source == null) return;
|
|
179
|
+
if (chunk.type === "file" && chunk.file == null) {
|
|
180
|
+
if (chunk.url === void 0) return;
|
|
181
|
+
controller.enqueue({
|
|
182
|
+
type: "file",
|
|
183
|
+
file: {
|
|
184
|
+
mimeType: chunk.mediaType,
|
|
185
|
+
data: chunk.url
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
if (chunk.type === "finish-step") {
|
|
191
|
+
controller.enqueue({
|
|
192
|
+
...chunk,
|
|
193
|
+
finishReason: chunk.finishReason ?? "unknown",
|
|
194
|
+
usage: chunk.usage ?? {
|
|
195
|
+
inputTokens: 0,
|
|
196
|
+
outputTokens: 0
|
|
197
|
+
},
|
|
198
|
+
isContinued: chunk.isContinued ?? false
|
|
199
|
+
});
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
if (chunk.type === "finish") {
|
|
203
|
+
controller.enqueue({
|
|
204
|
+
...chunk,
|
|
205
|
+
finishReason: chunk.finishReason ?? "unknown",
|
|
206
|
+
usage: chunk.usage ?? {
|
|
207
|
+
inputTokens: 0,
|
|
208
|
+
outputTokens: 0
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
controller.enqueue(chunk);
|
|
201
214
|
},
|
|
202
215
|
flush() {
|
|
203
216
|
if (!receivedDone) throw new Error("Stream ended abruptly without receiving [DONE] marker");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UIMessageStream.js","names":[],"sources":["../../../../src/core/serialization/ui-message-stream/UIMessageStream.ts"],"sourcesContent":["import type { AssistantStreamChunk } from \"../../AssistantStreamChunk\";\nimport type { ToolCallStreamController } from \"../../modules/tool-call\";\nimport type { TextStreamController } from \"../../modules/text\";\nimport { AssistantTransformStream } from \"../../utils/stream/AssistantTransformStream\";\nimport { PipeableTransformStream } from \"../../utils/stream/PipeableTransformStream\";\nimport { LineDecoderStream } from \"../../utils/stream/LineDecoderStream\";\nimport type {\n UIMessageStreamChunk,\n UIMessageStreamDataChunk,\n} from \"./chunk-types\";\nimport { generateId } from \"../../utils/generateId\";\n\nexport type { UIMessageStreamChunk, UIMessageStreamDataChunk };\n\nexport type UIMessageStreamDecoderOptions = {\n onData?: (data: {\n type: string;\n name: string;\n data: unknown;\n transient?: boolean;\n }) => void;\n};\n\ntype SSEEvent = {\n event: string;\n data: string;\n id?: string | undefined;\n retry?: number | undefined;\n};\n\nclass SSEEventStream extends TransformStream<string, SSEEvent> {\n constructor() {\n let eventBuffer: Partial<SSEEvent> = {};\n let dataLines: string[] = [];\n\n super({\n start() {\n eventBuffer = {};\n dataLines = [];\n },\n transform(line, controller) {\n if (line.startsWith(\":\")) return;\n\n if (line === \"\") {\n if (dataLines.length > 0) {\n controller.enqueue({\n event: eventBuffer.event || \"message\",\n data: dataLines.join(\"\\n\"),\n id: eventBuffer.id,\n retry: eventBuffer.retry,\n });\n }\n eventBuffer = {};\n dataLines = [];\n return;\n }\n\n const [field, ...rest] = line.split(\":\");\n const value = rest.join(\":\").trimStart();\n\n switch (field) {\n case \"event\":\n eventBuffer.event = value;\n break;\n case \"data\":\n dataLines.push(value);\n break;\n case \"id\":\n eventBuffer.id = value;\n break;\n case \"retry\":\n eventBuffer.retry = Number(value);\n break;\n }\n },\n flush(controller) {\n if (dataLines.length > 0) {\n controller.enqueue({\n event: eventBuffer.event || \"message\",\n data: dataLines.join(\"\\n\"),\n id: eventBuffer.id,\n retry: eventBuffer.retry,\n });\n }\n },\n });\n }\n}\n\nconst isDataChunk = (\n chunk: UIMessageStreamChunk,\n): chunk is UIMessageStreamDataChunk => chunk.type.startsWith(\"data-\");\n\n/**\n * Decodes AI SDK v6 UI Message Stream format into AssistantStreamChunks.\n */\nexport class UIMessageStreamDecoder extends PipeableTransformStream<\n Uint8Array<ArrayBuffer>,\n AssistantStreamChunk\n> {\n constructor(options: UIMessageStreamDecoderOptions = {}) {\n super((readable) => {\n const toolCallControllers = new Map<string, ToolCallStreamController>();\n let activeToolCallArgsText: TextStreamController | undefined;\n let currentMessageId: string | undefined;\n let receivedDone = false;\n\n const transform = new AssistantTransformStream<UIMessageStreamChunk>({\n transform(chunk, controller) {\n const type = chunk.type;\n\n if (isDataChunk(chunk)) {\n const name = chunk.type.slice(5);\n\n if (options.onData) {\n options.onData({\n type: chunk.type,\n name,\n data: chunk.data,\n ...(chunk.transient !== undefined && {\n transient: chunk.transient,\n }),\n });\n }\n\n if (!chunk.transient) {\n controller.enqueue({\n type: \"data\",\n path: [],\n data: [{ name, data: chunk.data }],\n });\n }\n return;\n }\n\n switch (type) {\n case \"start\":\n currentMessageId = chunk.messageId;\n controller.enqueue({\n type: \"step-start\",\n path: [],\n messageId: chunk.messageId,\n });\n break;\n\n case \"text-start\":\n case \"text-end\":\n case \"reasoning-start\":\n case \"reasoning-end\":\n break;\n\n case \"text-delta\":\n controller.appendText(chunk.textDelta);\n break;\n\n case \"reasoning-delta\":\n controller.appendReasoning(chunk.delta);\n break;\n\n case \"source\":\n controller.appendSource({\n type: \"source\",\n sourceType: chunk.source.sourceType,\n id: chunk.source.id,\n url: chunk.source.url,\n ...(chunk.source.title && { title: chunk.source.title }),\n });\n break;\n\n case \"file\":\n controller.appendFile({\n type: \"file\",\n mimeType: chunk.file.mimeType,\n data: chunk.file.data,\n });\n break;\n\n case \"tool-call-start\": {\n activeToolCallArgsText?.close();\n activeToolCallArgsText = undefined;\n\n if (toolCallControllers.has(chunk.toolCallId)) {\n throw new Error(\n `Encountered duplicate tool call id: ${chunk.toolCallId}`,\n );\n }\n\n const toolCallController = controller.addToolCallPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n });\n toolCallControllers.set(chunk.toolCallId, toolCallController);\n activeToolCallArgsText = toolCallController.argsText;\n break;\n }\n\n case \"tool-call-delta\":\n activeToolCallArgsText?.append(chunk.argsText);\n break;\n\n case \"tool-call-end\":\n activeToolCallArgsText?.close();\n activeToolCallArgsText = undefined;\n break;\n\n case \"tool-result\": {\n const toolCallController = toolCallControllers.get(\n chunk.toolCallId,\n );\n if (!toolCallController) {\n throw new Error(\n `Encountered tool result with unknown id: ${chunk.toolCallId}`,\n );\n }\n toolCallController.setResponse({\n result: chunk.result,\n isError: chunk.isError ?? false,\n ...(chunk.messages !== undefined\n ? { messages: chunk.messages }\n : {}),\n });\n break;\n }\n\n case \"start-step\":\n controller.enqueue({\n type: \"step-start\",\n path: [],\n messageId: chunk.messageId ?? currentMessageId ?? generateId(),\n });\n break;\n\n case \"finish-step\":\n controller.enqueue({\n type: \"step-finish\",\n path: [],\n finishReason: chunk.finishReason,\n usage: chunk.usage,\n isContinued: chunk.isContinued,\n });\n break;\n\n case \"finish\":\n controller.enqueue({\n type: \"message-finish\",\n path: [],\n finishReason: chunk.finishReason,\n usage: chunk.usage,\n });\n break;\n\n case \"error\":\n controller.enqueue({\n type: \"error\",\n path: [],\n error: chunk.errorText,\n });\n break;\n\n default:\n // ignore unknown types for forward compatibility\n break;\n }\n },\n flush() {\n activeToolCallArgsText?.close();\n toolCallControllers.forEach((ctrl) => ctrl.close());\n toolCallControllers.clear();\n },\n });\n\n return readable\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new LineDecoderStream())\n .pipeThrough(new SSEEventStream())\n .pipeThrough(\n new TransformStream<SSEEvent, UIMessageStreamChunk>({\n transform(event, controller) {\n if (event.event !== \"message\") {\n throw new Error(`Unknown SSE event type: ${event.event}`);\n }\n\n if (event.data === \"[DONE]\") {\n receivedDone = true;\n controller.terminate();\n return;\n }\n\n controller.enqueue(JSON.parse(event.data));\n },\n flush() {\n if (!receivedDone) {\n throw new Error(\n \"Stream ended abruptly without receiving [DONE] marker\",\n );\n }\n },\n }),\n )\n .pipeThrough(transform);\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UIMessageStream.js","names":[],"sources":["../../../../src/core/serialization/ui-message-stream/UIMessageStream.ts"],"sourcesContent":["import type { AssistantStreamChunk } from \"../../AssistantStreamChunk\";\nimport type { ToolCallStreamController } from \"../../modules/tool-call\";\nimport type { TextStreamController } from \"../../modules/text\";\nimport { AssistantTransformStream } from \"../../utils/stream/AssistantTransformStream\";\nimport { PipeableTransformStream } from \"../../utils/stream/PipeableTransformStream\";\nimport {\n SSEEventDecoderStream,\n type PipelineSSEEvent,\n} from \"../../utils/stream/SSEEventDecoderStream\";\nimport type {\n UIMessageStreamChunk,\n UIMessageStreamDataChunk,\n} from \"./chunk-types\";\nimport { generateId } from \"../../utils/generateId\";\n\nexport type { UIMessageStreamChunk, UIMessageStreamDataChunk };\n\nexport type UIMessageStreamDecoderOptions = {\n onData?: (data: {\n type: string;\n name: string;\n data: unknown;\n transient?: boolean;\n }) => void;\n};\n\nconst isDataChunk = (\n chunk: UIMessageStreamChunk,\n): chunk is UIMessageStreamDataChunk => chunk.type.startsWith(\"data-\");\n\n/**\n * Decodes AI SDK v6 UI Message Stream format into AssistantStreamChunks.\n */\nexport class UIMessageStreamDecoder extends PipeableTransformStream<\n Uint8Array<ArrayBuffer>,\n AssistantStreamChunk\n> {\n constructor(options: UIMessageStreamDecoderOptions = {}) {\n super((readable) => {\n const toolCallControllers = new Map<string, ToolCallStreamController>();\n let activeToolCallArgsText: TextStreamController | undefined;\n let currentMessageId: string | undefined;\n let receivedDone = false;\n\n const transform = new AssistantTransformStream<UIMessageStreamChunk>({\n transform(chunk, controller) {\n const type = chunk.type;\n\n if (isDataChunk(chunk)) {\n const name = chunk.type.slice(5);\n\n if (options.onData) {\n options.onData({\n type: chunk.type,\n name,\n data: chunk.data,\n ...(chunk.transient !== undefined && {\n transient: chunk.transient,\n }),\n });\n }\n\n if (!chunk.transient) {\n controller.enqueue({\n type: \"data\",\n path: [],\n data: [{ name, data: chunk.data }],\n });\n }\n return;\n }\n\n switch (type) {\n case \"start\":\n currentMessageId = chunk.messageId;\n controller.enqueue({\n type: \"step-start\",\n path: [],\n messageId: chunk.messageId,\n });\n break;\n\n case \"text-start\":\n case \"text-end\":\n case \"reasoning-start\":\n case \"reasoning-end\":\n break;\n\n case \"text-delta\":\n controller.appendText(chunk.textDelta);\n break;\n\n case \"reasoning-delta\":\n controller.appendReasoning(chunk.delta);\n break;\n\n case \"source\":\n controller.appendSource({\n type: \"source\",\n sourceType: chunk.source.sourceType,\n id: chunk.source.id,\n url: chunk.source.url,\n ...(chunk.source.title && { title: chunk.source.title }),\n });\n break;\n\n case \"file\":\n controller.appendFile({\n type: \"file\",\n mimeType: chunk.file.mimeType,\n data: chunk.file.data,\n });\n break;\n\n case \"tool-call-start\": {\n activeToolCallArgsText?.close();\n activeToolCallArgsText = undefined;\n\n if (toolCallControllers.has(chunk.toolCallId)) {\n throw new Error(\n `Encountered duplicate tool call id: ${chunk.toolCallId}`,\n );\n }\n\n const toolCallController = controller.addToolCallPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n });\n toolCallControllers.set(chunk.toolCallId, toolCallController);\n activeToolCallArgsText = toolCallController.argsText;\n break;\n }\n\n case \"tool-call-delta\":\n activeToolCallArgsText?.append(chunk.argsText);\n break;\n\n case \"tool-call-end\":\n activeToolCallArgsText?.close();\n activeToolCallArgsText = undefined;\n break;\n\n case \"tool-result\": {\n const toolCallController = toolCallControllers.get(\n chunk.toolCallId,\n );\n if (!toolCallController) {\n throw new Error(\n `Encountered tool result with unknown id: ${chunk.toolCallId}`,\n );\n }\n toolCallController.setResponse({\n result: chunk.result,\n isError: chunk.isError ?? false,\n ...(chunk.messages !== undefined\n ? { messages: chunk.messages }\n : {}),\n });\n break;\n }\n\n case \"start-step\":\n controller.enqueue({\n type: \"step-start\",\n path: [],\n messageId: chunk.messageId ?? currentMessageId ?? generateId(),\n });\n break;\n\n case \"finish-step\":\n controller.enqueue({\n type: \"step-finish\",\n path: [],\n finishReason: chunk.finishReason,\n usage: chunk.usage,\n isContinued: chunk.isContinued,\n });\n break;\n\n case \"finish\":\n controller.enqueue({\n type: \"message-finish\",\n path: [],\n finishReason: chunk.finishReason,\n usage: chunk.usage,\n });\n break;\n\n case \"error\":\n controller.enqueue({\n type: \"error\",\n path: [],\n error: chunk.errorText,\n });\n break;\n\n default:\n // ignore unknown types for forward compatibility\n break;\n }\n },\n flush() {\n activeToolCallArgsText?.close();\n toolCallControllers.forEach((ctrl) => ctrl.close());\n toolCallControllers.clear();\n },\n });\n\n return readable\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new SSEEventDecoderStream())\n .pipeThrough(\n new TransformStream<PipelineSSEEvent, UIMessageStreamChunk>({\n transform(event, controller) {\n if (event.event !== \"message\") {\n throw new Error(`Unknown SSE event type: ${event.event}`);\n }\n\n if (event.data === \"[DONE]\") {\n receivedDone = true;\n controller.terminate();\n return;\n }\n\n const chunk = JSON.parse(event.data);\n if (\n chunk.type === \"text-delta\" &&\n chunk.textDelta === undefined\n ) {\n const { delta, ...rest } = chunk;\n controller.enqueue({ ...rest, textDelta: delta ?? \"\" });\n return;\n }\n if (chunk.type === \"start\") {\n controller.enqueue({\n ...chunk,\n messageId: chunk.messageId ?? generateId(),\n });\n return;\n }\n if (chunk.type === \"source-url\") {\n controller.enqueue({\n type: \"source\",\n source: {\n sourceType: \"url\",\n id: chunk.sourceId,\n url: chunk.url,\n ...(chunk.title && { title: chunk.title }),\n },\n });\n return;\n }\n if (chunk.type === \"source\" && chunk.source == null) return;\n if (chunk.type === \"file\" && chunk.file == null) {\n if (chunk.url === undefined) return;\n controller.enqueue({\n type: \"file\",\n file: { mimeType: chunk.mediaType, data: chunk.url },\n });\n return;\n }\n if (chunk.type === \"finish-step\") {\n controller.enqueue({\n ...chunk,\n finishReason: chunk.finishReason ?? \"unknown\",\n usage: chunk.usage ?? { inputTokens: 0, outputTokens: 0 },\n isContinued: chunk.isContinued ?? false,\n });\n return;\n }\n if (chunk.type === \"finish\") {\n controller.enqueue({\n ...chunk,\n finishReason: chunk.finishReason ?? \"unknown\",\n usage: chunk.usage ?? { inputTokens: 0, outputTokens: 0 },\n });\n return;\n }\n\n controller.enqueue(chunk);\n },\n flush() {\n if (!receivedDone) {\n throw new Error(\n \"Stream ended abruptly without receiving [DONE] marker\",\n );\n }\n },\n }),\n )\n .pipeThrough(transform);\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-types.d.ts","names":[],"sources":["../../../../src/core/serialization/ui-message-stream/chunk-types.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk-types.d.ts","names":[],"sources":["../../../../src/core/serialization/ui-message-stream/chunk-types.ts"],"mappings":";;KAEK;KASA;EACH;EACA;;KAGU;EACN;EAAe;;EACf;EAAoB;;EACpB;EAAoB;;EACpB;;EACA;EAAyB;;EACzB;EAAyB;;EACzB;;EAEA;EACA;IAAU;IAAmB;IAAY;IAAa;;;EAEtD;EAAc;IAAQ;IAAkB;;;EAExC;EACA;EACA;EACA;;EAEA;EAAyB;;EACzB;;EAEA;EACA;EACA,QAAQ;EACR;EACA,WAAW;;EAEX;EAAoB;;EAEpB;EACA,cAAc;EACd,OAAO;EACP;;EAEA;EAAgB,cAAc;EAAc,OAAO;;EACnD;EAAe;IACjB;KAEQ;EACV;EACA;EACA,MAAM;EACN"}
|
|
@@ -3,6 +3,7 @@ import { AsyncIterableStream } from "../../utils/AsyncIterableStream.js";
|
|
|
3
3
|
import { DeepPartial, TypeAtPath, TypePath } from "./type-path-utils.js";
|
|
4
4
|
import { ToolCallArgsReader, ToolCallReader, ToolCallResponseReader } from "./tool-types.js";
|
|
5
5
|
import { ToolResponse } from "./ToolResponse.js";
|
|
6
|
+
import "../../utils.js";
|
|
6
7
|
//#region src/core/tool/ToolCallReader.d.ts
|
|
7
8
|
declare class ToolCallArgsReaderImpl<T extends ReadonlyJSONObject> implements ToolCallArgsReader<T> {
|
|
8
9
|
private argTextDeltas;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCallReader.d.ts","names":[],"sources":["../../../src/core/tool/ToolCallReader.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToolCallReader.d.ts","names":[],"sources":["../../../src/core/tool/ToolCallReader.ts"],"mappings":";;;;;;;cA0Qa,uBACX,UAAU,+BACC,mBAAmB;UACtB;UACA;UACA;UACA;cAEI,eAAe;UAKb;EA+Bd,IAAI,cAAc,SAAS,OACtB,WAAW,QACb,QAAQ,WAAW,GAAG;EAiCzB,aAAa,cAAc,SAAS,OAC/B,WAAW,QACb,oBAAoB,YAAY,WAAW,GAAG;EA4BjD,WAAW,cAAc,SAAS,OAC7B,WAAW,QACb,WAAW,GAAG,+BAA+B,KAC5C,oBAAoB;EA6BxB,QAAQ,cAAc,SAAS,OAC1B,WAAW,QACb,YAAY,WAAW,GAAG,gBAAgB,YAAY,KACrD,oBAAoB;;cA8Bb,2BACX,gBAAgB,8BACL,uBAAuB;mBACL;cAAA,SAAS,QAAQ,aAAa;EAEpD,OAAG,QAAA,aAAA;;cAKC,mBACX,cAAc,oBACd,gBAAgB,8BACL,eAAe,OAAO;WACjB,MAAM,uBAAuB;WAC7B,UAAU,2BAA2B;mBACpC;mBACA;EAEV;;EAYD,oBAAoB,eAAe;EAanC,kBAAkB;EAWxB,YAAY,OAAO,aAAa;EAIhC"}
|
|
@@ -3,7 +3,6 @@ import { ToolCallReader } from "./tool-types.js";
|
|
|
3
3
|
import { ToolResponse } from "./ToolResponse.js";
|
|
4
4
|
import { AssistantStreamChunk } from "../AssistantStreamChunk.js";
|
|
5
5
|
import { PipeableTransformStream } from "../utils/stream/PipeableTransformStream.js";
|
|
6
|
-
|
|
7
6
|
//#region src/core/tool/ToolExecutionStream.d.ts
|
|
8
7
|
type ToolCallback = (toolCall: {
|
|
9
8
|
toolCallId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolExecutionStream.d.ts","names":[],"sources":["../../../src/core/tool/ToolExecutionStream.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToolExecutionStream.d.ts","names":[],"sources":["../../../src/core/tool/ToolExecutionStream.ts"],"mappings":";;;;;;KAgBK,gBAAgB;EACnB;EACA;EACA,MAAM;MAEJ,QAAQ,aAAa,sBACrB,aAAa;KAGZ,sBACH,cAAc,qBAAqB,oBACnC,gBAAgB,oBAAoB,mBACpC;EACA,QAAQ,eAAe,OAAO;EAC9B;EACA;;KAGG;EACH,SAAS;EACT,YAAY;EACZ,qBACM,oBAAoB;EAE1B,mBAAmB,oBAAoB;;cAG5B,4BAA4B,wBACvC,sBACA;cAEY,SAAS"}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { ReadonlyJSONValue } from "../../utils/json/json-value.js";
|
|
2
2
|
import { ToolModelContentPart } from "./tool-types.js";
|
|
3
|
-
|
|
4
3
|
//#region src/core/tool/ToolResponse.d.ts
|
|
5
4
|
declare const TOOL_RESPONSE_SYMBOL: unique symbol;
|
|
6
5
|
/**
|
|
7
6
|
* Shape accepted anywhere a {@link ToolResponse} can be returned.
|
|
8
7
|
*/
|
|
9
8
|
type ToolResponseLike<TResult> = {
|
|
10
|
-
/** UI-visible tool result value. */
|
|
9
|
+
/** UI-visible tool result value. */
|
|
10
|
+
result: TResult;
|
|
11
11
|
/**
|
|
12
12
|
* Optional UI-only artifact associated with the result.
|
|
13
13
|
*
|
|
14
14
|
* Artifacts are useful for large or structured data that should be available
|
|
15
15
|
* to renderers without necessarily being sent back to the model.
|
|
16
16
|
*/
|
|
17
|
-
artifact?: ReadonlyJSONValue | undefined;
|
|
17
|
+
artifact?: ReadonlyJSONValue | undefined;
|
|
18
|
+
/** Marks the tool result as an error result. */
|
|
18
19
|
isError?: boolean | undefined;
|
|
19
20
|
/**
|
|
20
21
|
* Explicit model-visible content to send back after the tool call.
|
|
@@ -22,7 +23,8 @@ type ToolResponseLike<TResult> = {
|
|
|
22
23
|
* When omitted, assistant-ui derives model output from `result` or a tool's
|
|
23
24
|
* {@link ToolModelOutputFunction}.
|
|
24
25
|
*/
|
|
25
|
-
modelContent?: readonly ToolModelContentPart[] | undefined;
|
|
26
|
+
modelContent?: readonly ToolModelContentPart[] | undefined;
|
|
27
|
+
/** Optional provider-specific message payload associated with the tool result. */
|
|
26
28
|
messages?: ReadonlyJSONValue | undefined;
|
|
27
29
|
};
|
|
28
30
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolResponse.d.ts","names":[],"sources":["../../../src/core/tool/ToolResponse.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"ToolResponse.d.ts","names":[],"sources":["../../../src/core/tool/ToolResponse.ts"],"mappings":";;;cAOM;;;;KAKM,iBAAiB;;EAE3B,QAAQ;;;;;;;EAOR,WAAW;;EAEX;;;;;;;EAOA,wBAAwB;;EAExB,WAAW;;;;;;;;;;;;;;;;;;cAmBA,aAAa;OACnB;WAII,WAAW;WACX,QAAQ;WACR;WACA,wBAAwB;WACxB,WAAW;cAER,SAAS,iBAAiB;UAc9B,OAAO,aACb,eACC,OAAO,aAAa;;;;;;;;SAahB,WAAW,cAAc,oBAAoB"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { JSONSchema7 } from "../../node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.js";
|
|
2
2
|
import { ProviderOptions, Tool } from "./tool-types.js";
|
|
3
3
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
4
|
-
|
|
5
4
|
//#region src/core/tool/schema-utils.d.ts
|
|
6
5
|
/**
|
|
7
6
|
* Type for a tool definition with JSON Schema parameters.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-utils.d.ts","names":[],"sources":["../../../src/core/tool/schema-utils.ts"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"schema-utils.d.ts","names":[],"sources":["../../../src/core/tool/schema-utils.ts"],"mappings":";;;;;;;KAOY;EACV;EACA,YAAY;EACZ,kBAAkB;;KAGR;;;;;;;EAOV,UAAU,cAAc,MAAM;;;;;;;;;;;iBA8ChB,aACd,QAAQ,mBAAmB,cAC1B;;;;;iBA+Ca,oBAAoB,QAAQ,cAAc;;;;;;;;;;iBA2C1C,kBACd,OAAO,eAAe,mBACtB,UAAS,2BACR,eAAe"}
|