assistant-stream 0.2.22 → 0.2.23

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.
@@ -1,4 +1,4 @@
1
- import { JSONSchema7 } from "json-schema";
1
+ import type { JSONSchema7 } from "json-schema";
2
2
  import { DeepPartial, TypeAtPath, TypePath } from "./type-path-utils";
3
3
  import { AsyncIterableStream } from "../../utils";
4
4
  import type { StandardSchemaV1 } from "@standard-schema/spec";
@@ -1 +1 @@
1
- {"version":3,"file":"tool-types.d.ts","sourceRoot":"","sources":["../../../src/core/tool/tool-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-types.d.ts","sourceRoot":"","sources":["../../../src/core/tool/tool-types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "assistant-stream",
3
- "version": "0.2.22",
3
+ "version": "0.2.23",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {
@@ -8,10 +8,6 @@
8
8
  "types": "./dist/index.d.ts",
9
9
  "default": "./dist/index.js"
10
10
  },
11
- "./ai-sdk": {
12
- "types": "./dist/ai-sdk.d.ts",
13
- "default": "./dist/ai-sdk.js"
14
- },
15
11
  "./utils": {
16
12
  "types": "./dist/utils.d.ts",
17
13
  "default": "./dist/utils.js"
@@ -23,19 +19,16 @@
23
19
  "files": [
24
20
  "dist",
25
21
  "src",
26
- "ai-sdk",
27
22
  "utils",
28
23
  "README.md"
29
24
  ],
30
25
  "sideEffects": false,
31
26
  "devDependencies": {
32
27
  "@standard-schema/spec": "^1.0.0",
33
- "ai": "^4.3.16",
34
- "@types/node": "^24.1.0",
28
+ "@types/node": "^24.3.0",
35
29
  "eslint": "^9",
36
- "eslint-config-next": "15.4.5",
37
- "tsup": "8.5.0",
38
- "tsx": "^4.20.3",
30
+ "eslint-config-next": "15.4.6",
31
+ "tsx": "^4.20.4",
39
32
  "vitest": "^3.2.4",
40
33
  "@assistant-ui/x-buildutils": "0.0.1"
41
34
  },
@@ -1,4 +1,4 @@
1
- import { JSONSchema7 } from "json-schema";
1
+ import type { JSONSchema7 } from "json-schema";
2
2
  import { DeepPartial, TypeAtPath, TypePath } from "./type-path-utils";
3
3
  import { AsyncIterableStream } from "../../utils";
4
4
  import type { StandardSchemaV1 } from "@standard-schema/spec";
package/utils/README.md CHANGED
@@ -1 +1 @@
1
- This directory exists to support subpath imports for TypeScript projects using --moduleResolution node.
1
+ This directory exists to support subpath imports for TypeScript projects using --moduleResolution node.
package/ai-sdk/README.md DELETED
@@ -1 +0,0 @@
1
- This directory exists to support subpath imports for TypeScript projects using --moduleResolution node.
@@ -1,5 +0,0 @@
1
- {
2
- "type": "module",
3
- "main": "../dist/ai-sdk.js",
4
- "types": "../dist/ai-sdk.d.ts"
5
- }
@@ -1,5 +0,0 @@
1
- import type { TextStreamPart, ObjectStreamPart, Tool } from "ai";
2
- import { AssistantStream } from "../core/AssistantStream";
3
- export declare const fromStreamText: (stream: ReadableStream<TextStreamPart<Record<string, Tool>>>) => AssistantStream;
4
- export declare const fromStreamObject: (stream: ReadableStream<ObjectStreamPart<unknown>>, toolName: string) => AssistantStream;
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai-sdk/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK1D,eAAO,MAAM,cAAc,GACzB,QAAQ,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,KAC3D,eAmJF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,EACjD,UAAU,MAAM,KACf,eA2CF,CAAC"}
@@ -1,173 +0,0 @@
1
- // src/ai-sdk/index.ts
2
- import { AssistantTransformStream } from "../core/utils/stream/AssistantTransformStream.js";
3
- var fromStreamText = (stream) => {
4
- const toolControllers = /* @__PURE__ */ new Map();
5
- let currentToolCallArgsText;
6
- const endCurrentToolCallArgsText = () => {
7
- if (!currentToolCallArgsText) return;
8
- currentToolCallArgsText.argsText.close();
9
- currentToolCallArgsText = void 0;
10
- };
11
- const transformer = new AssistantTransformStream({
12
- transform(chunk, controller) {
13
- const { type } = chunk;
14
- if (type !== "tool-call-delta" && type !== "tool-call" && type !== "error" && type !== "tool-result") {
15
- endCurrentToolCallArgsText();
16
- }
17
- switch (type) {
18
- case "text-delta": {
19
- const { textDelta } = chunk;
20
- controller.appendText(textDelta);
21
- break;
22
- }
23
- case "reasoning": {
24
- const { textDelta } = chunk;
25
- controller.appendReasoning(textDelta);
26
- break;
27
- }
28
- case "tool-call-streaming-start": {
29
- const { toolCallId, toolName } = chunk;
30
- currentToolCallArgsText = controller.addToolCallPart({
31
- toolCallId,
32
- toolName
33
- });
34
- toolControllers.set(toolCallId, currentToolCallArgsText);
35
- break;
36
- }
37
- case "tool-call-delta": {
38
- const { toolCallId, argsTextDelta } = chunk;
39
- const toolController = toolControllers.get(toolCallId);
40
- if (!toolController) throw new Error("Tool call not found");
41
- toolController.argsText.append(argsTextDelta);
42
- break;
43
- }
44
- case "tool-result": {
45
- const { toolCallId, result } = chunk;
46
- const toolController = toolControllers.get(toolCallId);
47
- if (!toolController) throw new Error("Tool call not found");
48
- toolController.setResponse({
49
- result
50
- });
51
- toolController.close();
52
- toolControllers.delete(toolCallId);
53
- break;
54
- }
55
- case "tool-call": {
56
- const { toolCallId, toolName, args } = chunk;
57
- const toolController = controller.addToolCallPart({
58
- toolCallId,
59
- toolName
60
- });
61
- toolController.argsText.append(JSON.stringify(args));
62
- toolController.argsText.close();
63
- toolControllers.set(toolCallId, toolController);
64
- break;
65
- }
66
- case "step-start":
67
- controller.enqueue({
68
- type: "step-start",
69
- path: [],
70
- messageId: chunk.messageId
71
- });
72
- break;
73
- case "step-finish":
74
- controller.enqueue({
75
- type: "step-finish",
76
- path: [],
77
- finishReason: chunk.finishReason,
78
- usage: chunk.usage,
79
- isContinued: chunk.isContinued
80
- });
81
- break;
82
- case "error":
83
- controller.enqueue({
84
- type: "error",
85
- path: [],
86
- error: String(chunk.error)
87
- });
88
- break;
89
- case "finish": {
90
- controller.enqueue({
91
- type: "message-finish",
92
- path: [],
93
- finishReason: chunk.finishReason,
94
- usage: chunk.usage
95
- });
96
- break;
97
- }
98
- case "source":
99
- controller.appendSource({
100
- type: "source",
101
- ...chunk.source
102
- });
103
- break;
104
- case "file":
105
- controller.appendFile({
106
- type: "file",
107
- mimeType: chunk.mimeType,
108
- data: chunk.base64
109
- });
110
- break;
111
- case "reasoning-signature":
112
- case "redacted-reasoning":
113
- break;
114
- default: {
115
- const unhandledType = type;
116
- throw new Error(`Unhandled chunk type: ${unhandledType}`);
117
- }
118
- }
119
- },
120
- flush() {
121
- for (const toolController of toolControllers.values()) {
122
- toolController.close();
123
- }
124
- toolControllers.clear();
125
- }
126
- });
127
- return stream.pipeThrough(transformer);
128
- };
129
- var fromStreamObject = (stream, toolName) => {
130
- let toolCall;
131
- const transformer = new AssistantTransformStream({
132
- start(controller) {
133
- toolCall = controller.addToolCallPart(toolName);
134
- },
135
- transform(chunk, controller) {
136
- const { type } = chunk;
137
- switch (type) {
138
- case "text-delta": {
139
- const { textDelta } = chunk;
140
- toolCall.argsText.append(textDelta);
141
- break;
142
- }
143
- case "finish": {
144
- toolCall.argsText.close();
145
- toolCall.setResponse({
146
- result: "{}"
147
- });
148
- break;
149
- }
150
- case "object":
151
- break;
152
- case "error": {
153
- controller.enqueue({
154
- type: "error",
155
- path: [],
156
- error: String(chunk.error)
157
- });
158
- break;
159
- }
160
- default: {
161
- const unhandledType = type;
162
- throw new Error(`Unhandled chunk type: ${unhandledType}`);
163
- }
164
- }
165
- }
166
- });
167
- return stream.pipeThrough(transformer);
168
- };
169
- export {
170
- fromStreamObject,
171
- fromStreamText
172
- };
173
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/ai-sdk/index.ts"],"sourcesContent":["import type { TextStreamPart, ObjectStreamPart, Tool } from \"ai\";\nimport { AssistantStream } from \"../core/AssistantStream\";\nimport { AssistantTransformStream } from \"../core/utils/stream/AssistantTransformStream\";\nimport { ToolCallStreamController } from \"../core/modules/tool-call\";\nimport { ReadonlyJSONValue } from \"../utils/json/json-value\";\n\nexport const fromStreamText = (\n stream: ReadableStream<TextStreamPart<Record<string, Tool>>>,\n): AssistantStream => {\n const toolControllers = new Map<string, ToolCallStreamController>();\n let currentToolCallArgsText: ToolCallStreamController | undefined;\n\n const endCurrentToolCallArgsText = () => {\n if (!currentToolCallArgsText) return;\n currentToolCallArgsText.argsText.close();\n currentToolCallArgsText = undefined;\n };\n\n const transformer = new AssistantTransformStream<\n TextStreamPart<Record<string, Tool>>\n >({\n transform(chunk, controller) {\n const { type } = chunk;\n\n if (\n type !== \"tool-call-delta\" &&\n type !== \"tool-call\" &&\n type !== \"error\" &&\n (type as string) !== \"tool-result\"\n ) {\n endCurrentToolCallArgsText();\n }\n\n switch (type) {\n case \"text-delta\": {\n const { textDelta } = chunk;\n controller.appendText(textDelta);\n break;\n }\n case \"reasoning\": {\n const { textDelta } = chunk;\n controller.appendReasoning(textDelta);\n break;\n }\n case \"tool-call-streaming-start\": {\n const { toolCallId, toolName } = chunk;\n currentToolCallArgsText = controller.addToolCallPart({\n toolCallId,\n toolName,\n });\n toolControllers.set(toolCallId, currentToolCallArgsText);\n break;\n }\n case \"tool-call-delta\": {\n const { toolCallId, argsTextDelta } = chunk;\n const toolController = toolControllers.get(toolCallId);\n if (!toolController) throw new Error(\"Tool call not found\");\n toolController.argsText.append(argsTextDelta);\n break;\n }\n case \"tool-result\" as string: {\n const { toolCallId, result } = chunk as unknown as {\n toolCallId: string;\n result: ReadonlyJSONValue;\n };\n const toolController = toolControllers.get(toolCallId);\n if (!toolController) throw new Error(\"Tool call not found\");\n toolController.setResponse({\n result,\n });\n toolController.close();\n toolControllers.delete(toolCallId);\n break;\n }\n case \"tool-call\": {\n const { toolCallId, toolName, args } = chunk;\n const toolController = controller.addToolCallPart({\n toolCallId,\n toolName,\n });\n toolController.argsText.append(JSON.stringify(args));\n toolController.argsText.close();\n toolControllers.set(toolCallId, toolController);\n break;\n }\n\n case \"step-start\":\n controller.enqueue({\n type: \"step-start\",\n path: [],\n messageId: chunk.messageId,\n });\n break;\n case \"step-finish\":\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 case \"error\":\n controller.enqueue({\n type: \"error\",\n path: [],\n error: String(chunk.error),\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\n case \"source\":\n controller.appendSource({\n type: \"source\",\n ...chunk.source,\n });\n break;\n\n case \"file\":\n controller.appendFile({\n type: \"file\",\n mimeType: chunk.mimeType,\n data: chunk.base64,\n });\n break;\n\n case \"reasoning-signature\":\n case \"redacted-reasoning\":\n // ignore these for now\n break;\n\n default: {\n const unhandledType: never = type;\n throw new Error(`Unhandled chunk type: ${unhandledType}`);\n }\n }\n },\n flush() {\n for (const toolController of toolControllers.values()) {\n toolController.close();\n }\n toolControllers.clear();\n },\n });\n\n return stream.pipeThrough(transformer);\n};\n\nexport const fromStreamObject = (\n stream: ReadableStream<ObjectStreamPart<unknown>>,\n toolName: string,\n): AssistantStream => {\n let toolCall!: ToolCallStreamController;\n const transformer = new AssistantTransformStream<ObjectStreamPart<unknown>>({\n start(controller) {\n toolCall = controller.addToolCallPart(toolName);\n },\n transform(chunk, controller) {\n const { type } = chunk;\n switch (type) {\n case \"text-delta\": {\n const { textDelta } = chunk;\n toolCall.argsText.append(textDelta);\n break;\n }\n case \"finish\": {\n toolCall.argsText.close();\n toolCall.setResponse({\n result: \"{}\",\n });\n break;\n }\n\n case \"object\":\n break;\n\n case \"error\": {\n controller.enqueue({\n type: \"error\",\n path: [],\n error: String(chunk.error),\n });\n break;\n }\n\n default: {\n const unhandledType: never = type;\n throw new Error(`Unhandled chunk type: ${unhandledType}`);\n }\n }\n },\n });\n\n return stream.pipeThrough(transformer);\n};\n"],"mappings":"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","names":[]}
@@ -1,6 +0,0 @@
1
- import type { LanguageModelV1StreamPart } from "ai";
2
- import { AssistantTransformStream } from "../core/utils/stream/AssistantTransformStream";
3
- export declare class LanguageModelV1StreamDecoder extends AssistantTransformStream<LanguageModelV1StreamPart> {
4
- constructor();
5
- }
6
- //# sourceMappingURL=language-model.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"language-model.d.ts","sourceRoot":"","sources":["../../src/ai-sdk/language-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,IAAI,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAOzF,qBAAa,4BAA6B,SAAQ,wBAAwB,CAAC,yBAAyB,CAAC;;CAiHpG"}
@@ -1,106 +0,0 @@
1
- // src/ai-sdk/language-model.ts
2
- import { AssistantTransformStream } from "../core/utils/stream/AssistantTransformStream.js";
3
- function bufferToBase64(buffer) {
4
- return btoa(String.fromCharCode(...buffer));
5
- }
6
- var LanguageModelV1StreamDecoder = class extends AssistantTransformStream {
7
- constructor() {
8
- let currentToolCall;
9
- const endCurrentToolCall = () => {
10
- if (!currentToolCall) return;
11
- currentToolCall.controller.argsText.close();
12
- currentToolCall.controller.close();
13
- currentToolCall = void 0;
14
- };
15
- super({
16
- transform(chunk, controller) {
17
- const { type } = chunk;
18
- if (type === "text-delta" || type === "reasoning") {
19
- endCurrentToolCall();
20
- }
21
- switch (type) {
22
- case "text-delta": {
23
- controller.appendText(chunk.textDelta);
24
- break;
25
- }
26
- case "reasoning": {
27
- controller.appendReasoning(chunk.textDelta);
28
- break;
29
- }
30
- case "source": {
31
- controller.appendSource({
32
- type: "source",
33
- ...chunk.source
34
- });
35
- break;
36
- }
37
- case "file": {
38
- controller.appendFile({
39
- type: "file",
40
- mimeType: chunk.mimeType,
41
- data: typeof chunk.data === "string" ? chunk.data : bufferToBase64(chunk.data)
42
- });
43
- break;
44
- }
45
- case "tool-call-delta": {
46
- const { toolCallId, toolName, argsTextDelta } = chunk;
47
- if (currentToolCall?.toolCallId === toolCallId) {
48
- currentToolCall.controller.argsText.append(argsTextDelta);
49
- } else {
50
- endCurrentToolCall();
51
- currentToolCall = {
52
- toolCallId,
53
- controller: controller.addToolCallPart({
54
- toolCallId,
55
- toolName
56
- })
57
- };
58
- currentToolCall.controller.argsText.append(argsTextDelta);
59
- }
60
- break;
61
- }
62
- case "tool-call": {
63
- const { toolCallId, toolName, args } = chunk;
64
- if (currentToolCall?.toolCallId === toolCallId) {
65
- currentToolCall.controller.argsText.close();
66
- } else {
67
- const toolController = controller.addToolCallPart({
68
- toolCallId,
69
- toolName,
70
- argsText: args
71
- });
72
- toolController.close();
73
- }
74
- break;
75
- }
76
- case "finish": {
77
- controller.enqueue({
78
- type: "message-finish",
79
- finishReason: chunk.finishReason,
80
- usage: chunk.usage,
81
- path: []
82
- });
83
- controller.close();
84
- break;
85
- }
86
- case "error":
87
- case "response-metadata":
88
- case "reasoning-signature":
89
- case "redacted-reasoning":
90
- break;
91
- default: {
92
- const unhandledType = type;
93
- throw new Error(`Unhandled chunk type: ${unhandledType}`);
94
- }
95
- }
96
- },
97
- flush() {
98
- endCurrentToolCall();
99
- }
100
- });
101
- }
102
- };
103
- export {
104
- LanguageModelV1StreamDecoder
105
- };
106
- //# sourceMappingURL=language-model.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/ai-sdk/language-model.ts"],"sourcesContent":["import type { LanguageModelV1StreamPart } from \"ai\";\nimport { AssistantTransformStream } from \"../core/utils/stream/AssistantTransformStream\";\nimport { ToolCallStreamController } from \"../core/modules/tool-call\";\n\nfunction bufferToBase64(buffer: Uint8Array) {\n return btoa(String.fromCharCode(...buffer));\n}\n\nexport class LanguageModelV1StreamDecoder extends AssistantTransformStream<LanguageModelV1StreamPart> {\n constructor() {\n let currentToolCall:\n | { toolCallId: string; controller: ToolCallStreamController }\n | undefined;\n\n const endCurrentToolCall = () => {\n if (!currentToolCall) return;\n currentToolCall.controller.argsText.close();\n currentToolCall.controller.close();\n currentToolCall = undefined;\n };\n\n super({\n transform(chunk, controller) {\n const { type } = chunk;\n if (type === \"text-delta\" || type === \"reasoning\") {\n endCurrentToolCall();\n }\n\n switch (type) {\n case \"text-delta\": {\n controller.appendText(chunk.textDelta);\n break;\n }\n case \"reasoning\": {\n controller.appendReasoning(chunk.textDelta);\n break;\n }\n\n case \"source\": {\n controller.appendSource({\n type: \"source\",\n ...chunk.source,\n });\n break;\n }\n\n case \"file\": {\n controller.appendFile({\n type: \"file\",\n mimeType: chunk.mimeType,\n data:\n typeof chunk.data === \"string\"\n ? chunk.data\n : bufferToBase64(chunk.data),\n });\n break;\n }\n\n case \"tool-call-delta\": {\n const { toolCallId, toolName, argsTextDelta } = chunk;\n if (currentToolCall?.toolCallId === toolCallId) {\n currentToolCall.controller.argsText.append(argsTextDelta);\n } else {\n endCurrentToolCall();\n currentToolCall = {\n toolCallId,\n controller: controller.addToolCallPart({\n toolCallId,\n toolName,\n }),\n };\n currentToolCall.controller.argsText.append(argsTextDelta);\n }\n\n break;\n }\n\n case \"tool-call\": {\n const { toolCallId, toolName, args } = chunk;\n\n if (currentToolCall?.toolCallId === toolCallId) {\n currentToolCall.controller.argsText.close();\n } else {\n const toolController = controller.addToolCallPart({\n toolCallId,\n toolName,\n argsText: args,\n });\n toolController.close();\n }\n\n break;\n }\n case \"finish\": {\n controller.enqueue({\n type: \"message-finish\",\n finishReason: chunk.finishReason,\n usage: chunk.usage,\n path: [],\n });\n controller.close();\n break;\n }\n\n case \"error\":\n case \"response-metadata\":\n case \"reasoning-signature\":\n case \"redacted-reasoning\":\n break;\n\n default: {\n const unhandledType: never = type;\n throw new Error(`Unhandled chunk type: ${unhandledType}`);\n }\n }\n },\n flush() {\n endCurrentToolCall();\n },\n });\n }\n}\n"],"mappings":";AACA,SAAS,gCAAgC;AAGzC,SAAS,eAAe,QAAoB;AAC1C,SAAO,KAAK,OAAO,aAAa,GAAG,MAAM,CAAC;AAC5C;AAEO,IAAM,+BAAN,cAA2C,yBAAoD;AAAA,EACpG,cAAc;AACZ,QAAI;AAIJ,UAAM,qBAAqB,MAAM;AAC/B,UAAI,CAAC,gBAAiB;AACtB,sBAAgB,WAAW,SAAS,MAAM;AAC1C,sBAAgB,WAAW,MAAM;AACjC,wBAAkB;AAAA,IACpB;AAEA,UAAM;AAAA,MACJ,UAAU,OAAO,YAAY;AAC3B,cAAM,EAAE,KAAK,IAAI;AACjB,YAAI,SAAS,gBAAgB,SAAS,aAAa;AACjD,6BAAmB;AAAA,QACrB;AAEA,gBAAQ,MAAM;AAAA,UACZ,KAAK,cAAc;AACjB,uBAAW,WAAW,MAAM,SAAS;AACrC;AAAA,UACF;AAAA,UACA,KAAK,aAAa;AAChB,uBAAW,gBAAgB,MAAM,SAAS;AAC1C;AAAA,UACF;AAAA,UAEA,KAAK,UAAU;AACb,uBAAW,aAAa;AAAA,cACtB,MAAM;AAAA,cACN,GAAG,MAAM;AAAA,YACX,CAAC;AACD;AAAA,UACF;AAAA,UAEA,KAAK,QAAQ;AACX,uBAAW,WAAW;AAAA,cACpB,MAAM;AAAA,cACN,UAAU,MAAM;AAAA,cAChB,MACE,OAAO,MAAM,SAAS,WAClB,MAAM,OACN,eAAe,MAAM,IAAI;AAAA,YACjC,CAAC;AACD;AAAA,UACF;AAAA,UAEA,KAAK,mBAAmB;AACtB,kBAAM,EAAE,YAAY,UAAU,cAAc,IAAI;AAChD,gBAAI,iBAAiB,eAAe,YAAY;AAC9C,8BAAgB,WAAW,SAAS,OAAO,aAAa;AAAA,YAC1D,OAAO;AACL,iCAAmB;AACnB,gCAAkB;AAAA,gBAChB;AAAA,gBACA,YAAY,WAAW,gBAAgB;AAAA,kBACrC;AAAA,kBACA;AAAA,gBACF,CAAC;AAAA,cACH;AACA,8BAAgB,WAAW,SAAS,OAAO,aAAa;AAAA,YAC1D;AAEA;AAAA,UACF;AAAA,UAEA,KAAK,aAAa;AAChB,kBAAM,EAAE,YAAY,UAAU,KAAK,IAAI;AAEvC,gBAAI,iBAAiB,eAAe,YAAY;AAC9C,8BAAgB,WAAW,SAAS,MAAM;AAAA,YAC5C,OAAO;AACL,oBAAM,iBAAiB,WAAW,gBAAgB;AAAA,gBAChD;AAAA,gBACA;AAAA,gBACA,UAAU;AAAA,cACZ,CAAC;AACD,6BAAe,MAAM;AAAA,YACvB;AAEA;AAAA,UACF;AAAA,UACA,KAAK,UAAU;AACb,uBAAW,QAAQ;AAAA,cACjB,MAAM;AAAA,cACN,cAAc,MAAM;AAAA,cACpB,OAAO,MAAM;AAAA,cACb,MAAM,CAAC;AAAA,YACT,CAAC;AACD,uBAAW,MAAM;AACjB;AAAA,UACF;AAAA,UAEA,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH;AAAA,UAEF,SAAS;AACP,kBAAM,gBAAuB;AAC7B,kBAAM,IAAI,MAAM,yBAAyB,aAAa,EAAE;AAAA,UAC1D;AAAA,QACF;AAAA,MACF;AAAA,MACA,QAAQ;AACN,2BAAmB;AAAA,MACrB;AAAA,IACF,CAAC;AAAA,EACH;AACF;","names":[]}
package/dist/ai-sdk.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from "./ai-sdk/index";
2
- export { LanguageModelV1StreamDecoder } from "./ai-sdk/language-model";
3
- //# sourceMappingURL=ai-sdk.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-sdk.d.ts","sourceRoot":"","sources":["../src/ai-sdk.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/ai-sdk.js DELETED
@@ -1,7 +0,0 @@
1
- // src/ai-sdk.ts
2
- export * from "./ai-sdk/index.js";
3
- import { LanguageModelV1StreamDecoder } from "./ai-sdk/language-model.js";
4
- export {
5
- LanguageModelV1StreamDecoder
6
- };
7
- //# sourceMappingURL=ai-sdk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ai-sdk.ts"],"sourcesContent":["export * from \"./ai-sdk/index\";\nexport { LanguageModelV1StreamDecoder } from \"./ai-sdk/language-model\";\n"],"mappings":";AAAA,cAAc;AACd,SAAS,oCAAoC;","names":[]}
@@ -1,204 +0,0 @@
1
- import type { TextStreamPart, ObjectStreamPart, Tool } from "ai";
2
- import { AssistantStream } from "../core/AssistantStream";
3
- import { AssistantTransformStream } from "../core/utils/stream/AssistantTransformStream";
4
- import { ToolCallStreamController } from "../core/modules/tool-call";
5
- import { ReadonlyJSONValue } from "../utils/json/json-value";
6
-
7
- export const fromStreamText = (
8
- stream: ReadableStream<TextStreamPart<Record<string, Tool>>>,
9
- ): AssistantStream => {
10
- const toolControllers = new Map<string, ToolCallStreamController>();
11
- let currentToolCallArgsText: ToolCallStreamController | undefined;
12
-
13
- const endCurrentToolCallArgsText = () => {
14
- if (!currentToolCallArgsText) return;
15
- currentToolCallArgsText.argsText.close();
16
- currentToolCallArgsText = undefined;
17
- };
18
-
19
- const transformer = new AssistantTransformStream<
20
- TextStreamPart<Record<string, Tool>>
21
- >({
22
- transform(chunk, controller) {
23
- const { type } = chunk;
24
-
25
- if (
26
- type !== "tool-call-delta" &&
27
- type !== "tool-call" &&
28
- type !== "error" &&
29
- (type as string) !== "tool-result"
30
- ) {
31
- endCurrentToolCallArgsText();
32
- }
33
-
34
- switch (type) {
35
- case "text-delta": {
36
- const { textDelta } = chunk;
37
- controller.appendText(textDelta);
38
- break;
39
- }
40
- case "reasoning": {
41
- const { textDelta } = chunk;
42
- controller.appendReasoning(textDelta);
43
- break;
44
- }
45
- case "tool-call-streaming-start": {
46
- const { toolCallId, toolName } = chunk;
47
- currentToolCallArgsText = controller.addToolCallPart({
48
- toolCallId,
49
- toolName,
50
- });
51
- toolControllers.set(toolCallId, currentToolCallArgsText);
52
- break;
53
- }
54
- case "tool-call-delta": {
55
- const { toolCallId, argsTextDelta } = chunk;
56
- const toolController = toolControllers.get(toolCallId);
57
- if (!toolController) throw new Error("Tool call not found");
58
- toolController.argsText.append(argsTextDelta);
59
- break;
60
- }
61
- case "tool-result" as string: {
62
- const { toolCallId, result } = chunk as unknown as {
63
- toolCallId: string;
64
- result: ReadonlyJSONValue;
65
- };
66
- const toolController = toolControllers.get(toolCallId);
67
- if (!toolController) throw new Error("Tool call not found");
68
- toolController.setResponse({
69
- result,
70
- });
71
- toolController.close();
72
- toolControllers.delete(toolCallId);
73
- break;
74
- }
75
- case "tool-call": {
76
- const { toolCallId, toolName, args } = chunk;
77
- const toolController = controller.addToolCallPart({
78
- toolCallId,
79
- toolName,
80
- });
81
- toolController.argsText.append(JSON.stringify(args));
82
- toolController.argsText.close();
83
- toolControllers.set(toolCallId, toolController);
84
- break;
85
- }
86
-
87
- case "step-start":
88
- controller.enqueue({
89
- type: "step-start",
90
- path: [],
91
- messageId: chunk.messageId,
92
- });
93
- break;
94
- case "step-finish":
95
- controller.enqueue({
96
- type: "step-finish",
97
- path: [],
98
- finishReason: chunk.finishReason,
99
- usage: chunk.usage,
100
- isContinued: chunk.isContinued,
101
- });
102
- break;
103
- case "error":
104
- controller.enqueue({
105
- type: "error",
106
- path: [],
107
- error: String(chunk.error),
108
- });
109
- break;
110
-
111
- case "finish": {
112
- controller.enqueue({
113
- type: "message-finish",
114
- path: [],
115
- finishReason: chunk.finishReason,
116
- usage: chunk.usage,
117
- });
118
- break;
119
- }
120
-
121
- case "source":
122
- controller.appendSource({
123
- type: "source",
124
- ...chunk.source,
125
- });
126
- break;
127
-
128
- case "file":
129
- controller.appendFile({
130
- type: "file",
131
- mimeType: chunk.mimeType,
132
- data: chunk.base64,
133
- });
134
- break;
135
-
136
- case "reasoning-signature":
137
- case "redacted-reasoning":
138
- // ignore these for now
139
- break;
140
-
141
- default: {
142
- const unhandledType: never = type;
143
- throw new Error(`Unhandled chunk type: ${unhandledType}`);
144
- }
145
- }
146
- },
147
- flush() {
148
- for (const toolController of toolControllers.values()) {
149
- toolController.close();
150
- }
151
- toolControllers.clear();
152
- },
153
- });
154
-
155
- return stream.pipeThrough(transformer);
156
- };
157
-
158
- export const fromStreamObject = (
159
- stream: ReadableStream<ObjectStreamPart<unknown>>,
160
- toolName: string,
161
- ): AssistantStream => {
162
- let toolCall!: ToolCallStreamController;
163
- const transformer = new AssistantTransformStream<ObjectStreamPart<unknown>>({
164
- start(controller) {
165
- toolCall = controller.addToolCallPart(toolName);
166
- },
167
- transform(chunk, controller) {
168
- const { type } = chunk;
169
- switch (type) {
170
- case "text-delta": {
171
- const { textDelta } = chunk;
172
- toolCall.argsText.append(textDelta);
173
- break;
174
- }
175
- case "finish": {
176
- toolCall.argsText.close();
177
- toolCall.setResponse({
178
- result: "{}",
179
- });
180
- break;
181
- }
182
-
183
- case "object":
184
- break;
185
-
186
- case "error": {
187
- controller.enqueue({
188
- type: "error",
189
- path: [],
190
- error: String(chunk.error),
191
- });
192
- break;
193
- }
194
-
195
- default: {
196
- const unhandledType: never = type;
197
- throw new Error(`Unhandled chunk type: ${unhandledType}`);
198
- }
199
- }
200
- },
201
- });
202
-
203
- return stream.pipeThrough(transformer);
204
- };
@@ -1,122 +0,0 @@
1
- import type { LanguageModelV1StreamPart } from "ai";
2
- import { AssistantTransformStream } from "../core/utils/stream/AssistantTransformStream";
3
- import { ToolCallStreamController } from "../core/modules/tool-call";
4
-
5
- function bufferToBase64(buffer: Uint8Array) {
6
- return btoa(String.fromCharCode(...buffer));
7
- }
8
-
9
- export class LanguageModelV1StreamDecoder extends AssistantTransformStream<LanguageModelV1StreamPart> {
10
- constructor() {
11
- let currentToolCall:
12
- | { toolCallId: string; controller: ToolCallStreamController }
13
- | undefined;
14
-
15
- const endCurrentToolCall = () => {
16
- if (!currentToolCall) return;
17
- currentToolCall.controller.argsText.close();
18
- currentToolCall.controller.close();
19
- currentToolCall = undefined;
20
- };
21
-
22
- super({
23
- transform(chunk, controller) {
24
- const { type } = chunk;
25
- if (type === "text-delta" || type === "reasoning") {
26
- endCurrentToolCall();
27
- }
28
-
29
- switch (type) {
30
- case "text-delta": {
31
- controller.appendText(chunk.textDelta);
32
- break;
33
- }
34
- case "reasoning": {
35
- controller.appendReasoning(chunk.textDelta);
36
- break;
37
- }
38
-
39
- case "source": {
40
- controller.appendSource({
41
- type: "source",
42
- ...chunk.source,
43
- });
44
- break;
45
- }
46
-
47
- case "file": {
48
- controller.appendFile({
49
- type: "file",
50
- mimeType: chunk.mimeType,
51
- data:
52
- typeof chunk.data === "string"
53
- ? chunk.data
54
- : bufferToBase64(chunk.data),
55
- });
56
- break;
57
- }
58
-
59
- case "tool-call-delta": {
60
- const { toolCallId, toolName, argsTextDelta } = chunk;
61
- if (currentToolCall?.toolCallId === toolCallId) {
62
- currentToolCall.controller.argsText.append(argsTextDelta);
63
- } else {
64
- endCurrentToolCall();
65
- currentToolCall = {
66
- toolCallId,
67
- controller: controller.addToolCallPart({
68
- toolCallId,
69
- toolName,
70
- }),
71
- };
72
- currentToolCall.controller.argsText.append(argsTextDelta);
73
- }
74
-
75
- break;
76
- }
77
-
78
- case "tool-call": {
79
- const { toolCallId, toolName, args } = chunk;
80
-
81
- if (currentToolCall?.toolCallId === toolCallId) {
82
- currentToolCall.controller.argsText.close();
83
- } else {
84
- const toolController = controller.addToolCallPart({
85
- toolCallId,
86
- toolName,
87
- argsText: args,
88
- });
89
- toolController.close();
90
- }
91
-
92
- break;
93
- }
94
- case "finish": {
95
- controller.enqueue({
96
- type: "message-finish",
97
- finishReason: chunk.finishReason,
98
- usage: chunk.usage,
99
- path: [],
100
- });
101
- controller.close();
102
- break;
103
- }
104
-
105
- case "error":
106
- case "response-metadata":
107
- case "reasoning-signature":
108
- case "redacted-reasoning":
109
- break;
110
-
111
- default: {
112
- const unhandledType: never = type;
113
- throw new Error(`Unhandled chunk type: ${unhandledType}`);
114
- }
115
- }
116
- },
117
- flush() {
118
- endCurrentToolCall();
119
- },
120
- });
121
- }
122
- }
package/src/ai-sdk.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from "./ai-sdk/index";
2
- export { LanguageModelV1StreamDecoder } from "./ai-sdk/language-model";