ai 3.1.10 → 3.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +10 -12
- package/dist/index.d.ts +10 -12
- package/dist/index.js +143 -73
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +143 -73
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/react/dist/index.d.mts +2 -5
- package/react/dist/index.d.ts +2 -5
- package/rsc/dist/rsc-server.mjs.map +1 -1
package/dist/index.d.mts
CHANGED
@@ -2197,12 +2197,9 @@ declare function ReplicateStream(res: Prediction, cb?: AIStreamCallbacksAndOptio
|
|
2197
2197
|
declare class StreamData {
|
2198
2198
|
private encoder;
|
2199
2199
|
private controller;
|
2200
|
-
stream:
|
2201
|
-
private isClosedPromise;
|
2202
|
-
private isClosedPromiseResolver;
|
2200
|
+
stream: ReadableStream<Uint8Array>;
|
2203
2201
|
private isClosed;
|
2204
|
-
private
|
2205
|
-
private messageAnnotations;
|
2202
|
+
private warningTimeout;
|
2206
2203
|
constructor();
|
2207
2204
|
close(): Promise<void>;
|
2208
2205
|
append(value: JSONValue): void;
|
@@ -2219,6 +2216,14 @@ declare function createStreamDataTransformer(): TransformStream<any, any>;
|
|
2219
2216
|
declare class experimental_StreamData extends StreamData {
|
2220
2217
|
}
|
2221
2218
|
|
2219
|
+
/**
|
2220
|
+
* A utility function to stream a ReadableStream to a Node.js response-like object.
|
2221
|
+
*/
|
2222
|
+
declare function streamToResponse(res: ReadableStream, response: ServerResponse, init?: {
|
2223
|
+
headers?: Record<string, string>;
|
2224
|
+
status?: number;
|
2225
|
+
}, data?: StreamData): void;
|
2226
|
+
|
2222
2227
|
/**
|
2223
2228
|
* This is a naive implementation of the streaming React response API.
|
2224
2229
|
* Currently, it can carry the original raw content, data payload and a special
|
@@ -2262,12 +2267,5 @@ declare class experimental_StreamingReactResponse {
|
|
2262
2267
|
declare class StreamingTextResponse extends Response {
|
2263
2268
|
constructor(res: ReadableStream, init?: ResponseInit, data?: StreamData);
|
2264
2269
|
}
|
2265
|
-
/**
|
2266
|
-
* A utility function to stream a ReadableStream to a Node.js response-like object.
|
2267
|
-
*/
|
2268
|
-
declare function streamToResponse(res: ReadableStream, response: ServerResponse, init?: {
|
2269
|
-
headers?: Record<string, string>;
|
2270
|
-
status?: number;
|
2271
|
-
}): void;
|
2272
2270
|
|
2273
2271
|
export { AIStream, AIStreamCallbacksAndOptions, AIStreamParser, AIStreamParserOptions, AWSBedrockAnthropicMessagesStream, AWSBedrockAnthropicStream, AWSBedrockCohereStream, AWSBedrockLlama2Stream, AWSBedrockStream, AnthropicStream, AssistantContent, AssistantMessage, AssistantResponse, AssistantStatus, CallWarning, ChatRequest, ChatRequestOptions, CohereStream, CompletionUsage, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolMessage, CoreUserMessage, CreateMessage, DataContent, DataMessage, DeepPartial, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, ExperimentalAssistantMessage, ExperimentalMessage, ExperimentalTool, ExperimentalToolMessage, ExperimentalUserMessage, FinishReason, Function, FunctionCall$1 as FunctionCall, FunctionCallHandler, FunctionCallPayload, GenerateObjectResult, GenerateTextResult, GoogleGenerativeAIStream, HuggingFaceStream, IdGenerator, ImagePart, InkeepAIStreamCallbacksAndOptions, InkeepChatResultCallbacks, InkeepOnFinalMetadata, InkeepStream, JSONValue, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, Message$1 as Message, MistralStream, ObjectStreamPart, ObjectStreamPartInput, OpenAIStream, OpenAIStreamCallbacks, ReactResponseRow, ReplicateStream, RequestOptions, StreamData, StreamObjectResult, StreamPart, StreamString, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, Tool, ToolCall, ToolCallHandler, ToolCallPart, ToolCallPayload, ToolChoice, ToolContent, ToolInvocation, ToolResultPart, UseAssistantOptions, UseChatOptions, UseCompletionOptions, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, createCallbacksTransformer, createChunkDecoder, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_StreamData, experimental_StreamingReactResponse, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, formatStreamPart, generateId, generateObject, generateText, isStreamStringEqualToType, generateId as nanoid, parseStreamPart, readDataStream, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
|
package/dist/index.d.ts
CHANGED
@@ -2197,12 +2197,9 @@ declare function ReplicateStream(res: Prediction, cb?: AIStreamCallbacksAndOptio
|
|
2197
2197
|
declare class StreamData {
|
2198
2198
|
private encoder;
|
2199
2199
|
private controller;
|
2200
|
-
stream:
|
2201
|
-
private isClosedPromise;
|
2202
|
-
private isClosedPromiseResolver;
|
2200
|
+
stream: ReadableStream<Uint8Array>;
|
2203
2201
|
private isClosed;
|
2204
|
-
private
|
2205
|
-
private messageAnnotations;
|
2202
|
+
private warningTimeout;
|
2206
2203
|
constructor();
|
2207
2204
|
close(): Promise<void>;
|
2208
2205
|
append(value: JSONValue): void;
|
@@ -2219,6 +2216,14 @@ declare function createStreamDataTransformer(): TransformStream<any, any>;
|
|
2219
2216
|
declare class experimental_StreamData extends StreamData {
|
2220
2217
|
}
|
2221
2218
|
|
2219
|
+
/**
|
2220
|
+
* A utility function to stream a ReadableStream to a Node.js response-like object.
|
2221
|
+
*/
|
2222
|
+
declare function streamToResponse(res: ReadableStream, response: ServerResponse, init?: {
|
2223
|
+
headers?: Record<string, string>;
|
2224
|
+
status?: number;
|
2225
|
+
}, data?: StreamData): void;
|
2226
|
+
|
2222
2227
|
/**
|
2223
2228
|
* This is a naive implementation of the streaming React response API.
|
2224
2229
|
* Currently, it can carry the original raw content, data payload and a special
|
@@ -2262,12 +2267,5 @@ declare class experimental_StreamingReactResponse {
|
|
2262
2267
|
declare class StreamingTextResponse extends Response {
|
2263
2268
|
constructor(res: ReadableStream, init?: ResponseInit, data?: StreamData);
|
2264
2269
|
}
|
2265
|
-
/**
|
2266
|
-
* A utility function to stream a ReadableStream to a Node.js response-like object.
|
2267
|
-
*/
|
2268
|
-
declare function streamToResponse(res: ReadableStream, response: ServerResponse, init?: {
|
2269
|
-
headers?: Record<string, string>;
|
2270
|
-
status?: number;
|
2271
|
-
}): void;
|
2272
2270
|
|
2273
2271
|
export { AIStream, AIStreamCallbacksAndOptions, AIStreamParser, AIStreamParserOptions, AWSBedrockAnthropicMessagesStream, AWSBedrockAnthropicStream, AWSBedrockCohereStream, AWSBedrockLlama2Stream, AWSBedrockStream, AnthropicStream, AssistantContent, AssistantMessage, AssistantResponse, AssistantStatus, CallWarning, ChatRequest, ChatRequestOptions, CohereStream, CompletionUsage, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolMessage, CoreUserMessage, CreateMessage, DataContent, DataMessage, DeepPartial, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, ExperimentalAssistantMessage, ExperimentalMessage, ExperimentalTool, ExperimentalToolMessage, ExperimentalUserMessage, FinishReason, Function, FunctionCall$1 as FunctionCall, FunctionCallHandler, FunctionCallPayload, GenerateObjectResult, GenerateTextResult, GoogleGenerativeAIStream, HuggingFaceStream, IdGenerator, ImagePart, InkeepAIStreamCallbacksAndOptions, InkeepChatResultCallbacks, InkeepOnFinalMetadata, InkeepStream, JSONValue, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, Message$1 as Message, MistralStream, ObjectStreamPart, ObjectStreamPartInput, OpenAIStream, OpenAIStreamCallbacks, ReactResponseRow, ReplicateStream, RequestOptions, StreamData, StreamObjectResult, StreamPart, StreamString, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, Tool, ToolCall, ToolCallHandler, ToolCallPart, ToolCallPayload, ToolChoice, ToolContent, ToolInvocation, ToolResultPart, UseAssistantOptions, UseChatOptions, UseCompletionOptions, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, createCallbacksTransformer, createChunkDecoder, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_StreamData, experimental_StreamingReactResponse, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, formatStreamPart, generateId, generateObject, generateText, isStreamStringEqualToType, generateId as nanoid, parseStreamPart, readDataStream, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
|
package/dist/index.js
CHANGED
@@ -2273,86 +2273,61 @@ var StreamData = class {
|
|
2273
2273
|
constructor() {
|
2274
2274
|
this.encoder = new TextEncoder();
|
2275
2275
|
this.controller = null;
|
2276
|
-
// closing the stream is synchronous, but we want to return a promise
|
2277
|
-
// in case we're doing async work
|
2278
|
-
this.isClosedPromise = null;
|
2279
|
-
this.isClosedPromiseResolver = void 0;
|
2280
2276
|
this.isClosed = false;
|
2281
|
-
|
2282
|
-
this.data = [];
|
2283
|
-
this.messageAnnotations = [];
|
2284
|
-
this.isClosedPromise = new Promise((resolve) => {
|
2285
|
-
this.isClosedPromiseResolver = resolve;
|
2286
|
-
});
|
2277
|
+
this.warningTimeout = null;
|
2287
2278
|
const self = this;
|
2288
|
-
this.stream = new
|
2279
|
+
this.stream = new ReadableStream({
|
2289
2280
|
start: async (controller) => {
|
2290
2281
|
self.controller = controller;
|
2291
|
-
|
2292
|
-
|
2293
|
-
|
2294
|
-
|
2295
|
-
|
2296
|
-
);
|
2297
|
-
self.data = [];
|
2298
|
-
controller.enqueue(encodedData);
|
2299
|
-
}
|
2300
|
-
if (self.messageAnnotations.length) {
|
2301
|
-
const encodedMessageAnnotations = self.encoder.encode(
|
2302
|
-
formatStreamPart("message_annotations", self.messageAnnotations)
|
2303
|
-
);
|
2304
|
-
self.messageAnnotations = [];
|
2305
|
-
controller.enqueue(encodedMessageAnnotations);
|
2282
|
+
if (process.env.NODE_ENV === "development") {
|
2283
|
+
self.warningTimeout = setTimeout(() => {
|
2284
|
+
console.warn(
|
2285
|
+
"The data stream is hanging. Did you forget to close it with `data.close()`?"
|
2286
|
+
);
|
2287
|
+
}, 3e3);
|
2306
2288
|
}
|
2307
|
-
controller.enqueue(chunk);
|
2308
2289
|
},
|
2309
|
-
|
2310
|
-
|
2311
|
-
|
2312
|
-
|
2313
|
-
);
|
2314
|
-
}, 3e3) : null;
|
2315
|
-
await self.isClosedPromise;
|
2316
|
-
if (warningTimeout !== null) {
|
2317
|
-
clearTimeout(warningTimeout);
|
2318
|
-
}
|
2319
|
-
if (self.data.length) {
|
2320
|
-
const encodedData = self.encoder.encode(
|
2321
|
-
formatStreamPart("data", self.data)
|
2322
|
-
);
|
2323
|
-
controller.enqueue(encodedData);
|
2324
|
-
}
|
2325
|
-
if (self.messageAnnotations.length) {
|
2326
|
-
const encodedData = self.encoder.encode(
|
2327
|
-
formatStreamPart("message_annotations", self.messageAnnotations)
|
2328
|
-
);
|
2329
|
-
controller.enqueue(encodedData);
|
2330
|
-
}
|
2290
|
+
pull: (controller) => {
|
2291
|
+
},
|
2292
|
+
cancel: (reason) => {
|
2293
|
+
this.isClosed = true;
|
2331
2294
|
}
|
2332
2295
|
});
|
2333
2296
|
}
|
2334
2297
|
async close() {
|
2335
|
-
var _a;
|
2336
2298
|
if (this.isClosed) {
|
2337
2299
|
throw new Error("Data Stream has already been closed.");
|
2338
2300
|
}
|
2339
2301
|
if (!this.controller) {
|
2340
2302
|
throw new Error("Stream controller is not initialized.");
|
2341
2303
|
}
|
2342
|
-
|
2304
|
+
this.controller.close();
|
2343
2305
|
this.isClosed = true;
|
2306
|
+
if (this.warningTimeout) {
|
2307
|
+
clearTimeout(this.warningTimeout);
|
2308
|
+
}
|
2344
2309
|
}
|
2345
2310
|
append(value) {
|
2346
2311
|
if (this.isClosed) {
|
2347
2312
|
throw new Error("Data Stream has already been closed.");
|
2348
2313
|
}
|
2349
|
-
this.
|
2314
|
+
if (!this.controller) {
|
2315
|
+
throw new Error("Stream controller is not initialized.");
|
2316
|
+
}
|
2317
|
+
this.controller.enqueue(
|
2318
|
+
this.encoder.encode(formatStreamPart("data", [value]))
|
2319
|
+
);
|
2350
2320
|
}
|
2351
2321
|
appendMessageAnnotation(value) {
|
2352
2322
|
if (this.isClosed) {
|
2353
2323
|
throw new Error("Data Stream has already been closed.");
|
2354
2324
|
}
|
2355
|
-
this.
|
2325
|
+
if (!this.controller) {
|
2326
|
+
throw new Error("Stream controller is not initialized.");
|
2327
|
+
}
|
2328
|
+
this.controller.enqueue(
|
2329
|
+
this.encoder.encode(formatStreamPart("message_annotations", [value]))
|
2330
|
+
);
|
2356
2331
|
}
|
2357
2332
|
};
|
2358
2333
|
function createStreamDataTransformer() {
|
@@ -3126,6 +3101,119 @@ async function ReplicateStream(res, cb, options) {
|
|
3126
3101
|
);
|
3127
3102
|
}
|
3128
3103
|
|
3104
|
+
// core/util/merge-streams.ts
|
3105
|
+
function mergeStreams(stream1, stream2) {
|
3106
|
+
const reader1 = stream1.getReader();
|
3107
|
+
const reader2 = stream2.getReader();
|
3108
|
+
let lastRead1 = void 0;
|
3109
|
+
let lastRead2 = void 0;
|
3110
|
+
let stream1Done = false;
|
3111
|
+
let stream2Done = false;
|
3112
|
+
async function readStream1(controller) {
|
3113
|
+
try {
|
3114
|
+
if (lastRead1 == null) {
|
3115
|
+
lastRead1 = reader1.read();
|
3116
|
+
}
|
3117
|
+
const result = await lastRead1;
|
3118
|
+
lastRead1 = void 0;
|
3119
|
+
if (!result.done) {
|
3120
|
+
controller.enqueue(result.value);
|
3121
|
+
} else {
|
3122
|
+
controller.close();
|
3123
|
+
}
|
3124
|
+
} catch (error) {
|
3125
|
+
controller.error(error);
|
3126
|
+
}
|
3127
|
+
}
|
3128
|
+
async function readStream2(controller) {
|
3129
|
+
try {
|
3130
|
+
if (lastRead2 == null) {
|
3131
|
+
lastRead2 = reader2.read();
|
3132
|
+
}
|
3133
|
+
const result = await lastRead2;
|
3134
|
+
lastRead2 = void 0;
|
3135
|
+
if (!result.done) {
|
3136
|
+
controller.enqueue(result.value);
|
3137
|
+
} else {
|
3138
|
+
controller.close();
|
3139
|
+
}
|
3140
|
+
} catch (error) {
|
3141
|
+
controller.error(error);
|
3142
|
+
}
|
3143
|
+
}
|
3144
|
+
return new ReadableStream({
|
3145
|
+
async pull(controller) {
|
3146
|
+
try {
|
3147
|
+
if (stream1Done) {
|
3148
|
+
readStream2(controller);
|
3149
|
+
return;
|
3150
|
+
}
|
3151
|
+
if (stream2Done) {
|
3152
|
+
readStream1(controller);
|
3153
|
+
return;
|
3154
|
+
}
|
3155
|
+
if (lastRead1 == null) {
|
3156
|
+
lastRead1 = reader1.read();
|
3157
|
+
}
|
3158
|
+
if (lastRead2 == null) {
|
3159
|
+
lastRead2 = reader2.read();
|
3160
|
+
}
|
3161
|
+
const { result, reader } = await Promise.race([
|
3162
|
+
lastRead1.then((result2) => ({ result: result2, reader: reader1 })),
|
3163
|
+
lastRead2.then((result2) => ({ result: result2, reader: reader2 }))
|
3164
|
+
]);
|
3165
|
+
if (!result.done) {
|
3166
|
+
controller.enqueue(result.value);
|
3167
|
+
}
|
3168
|
+
if (reader === reader1) {
|
3169
|
+
lastRead1 = void 0;
|
3170
|
+
if (result.done) {
|
3171
|
+
readStream2(controller);
|
3172
|
+
stream1Done = true;
|
3173
|
+
}
|
3174
|
+
} else {
|
3175
|
+
lastRead2 = void 0;
|
3176
|
+
if (result.done) {
|
3177
|
+
stream2Done = true;
|
3178
|
+
readStream1(controller);
|
3179
|
+
}
|
3180
|
+
}
|
3181
|
+
} catch (error) {
|
3182
|
+
controller.error(error);
|
3183
|
+
}
|
3184
|
+
},
|
3185
|
+
cancel() {
|
3186
|
+
reader1.cancel();
|
3187
|
+
reader2.cancel();
|
3188
|
+
}
|
3189
|
+
});
|
3190
|
+
}
|
3191
|
+
|
3192
|
+
// streams/stream-to-response.ts
|
3193
|
+
function streamToResponse(res, response, init, data) {
|
3194
|
+
var _a;
|
3195
|
+
response.writeHead((_a = init == null ? void 0 : init.status) != null ? _a : 200, {
|
3196
|
+
"Content-Type": "text/plain; charset=utf-8",
|
3197
|
+
...init == null ? void 0 : init.headers
|
3198
|
+
});
|
3199
|
+
let processedStream = res;
|
3200
|
+
if (data) {
|
3201
|
+
processedStream = mergeStreams(data.stream, res);
|
3202
|
+
}
|
3203
|
+
const reader = processedStream.getReader();
|
3204
|
+
function read() {
|
3205
|
+
reader.read().then(({ done, value }) => {
|
3206
|
+
if (done) {
|
3207
|
+
response.end();
|
3208
|
+
return;
|
3209
|
+
}
|
3210
|
+
response.write(value);
|
3211
|
+
read();
|
3212
|
+
});
|
3213
|
+
}
|
3214
|
+
read();
|
3215
|
+
}
|
3216
|
+
|
3129
3217
|
// shared/parse-complex-response.ts
|
3130
3218
|
function assignAnnotationsToMessage(message, annotations) {
|
3131
3219
|
if (!message || !annotations || !annotations.length)
|
@@ -3280,7 +3368,7 @@ var experimental_StreamingReactResponse = class {
|
|
3280
3368
|
let next = new Promise((resolve) => {
|
3281
3369
|
resolveFunc = resolve;
|
3282
3370
|
});
|
3283
|
-
const processedStream = (options == null ? void 0 : options.data) != null ?
|
3371
|
+
const processedStream = (options == null ? void 0 : options.data) != null ? mergeStreams((_a = options == null ? void 0 : options.data) == null ? void 0 : _a.stream, res) : res;
|
3284
3372
|
let lastPayload = void 0;
|
3285
3373
|
parseComplexResponse({
|
3286
3374
|
reader: processedStream.getReader(),
|
@@ -3318,7 +3406,7 @@ var StreamingTextResponse = class extends Response {
|
|
3318
3406
|
constructor(res, init, data) {
|
3319
3407
|
let processedStream = res;
|
3320
3408
|
if (data) {
|
3321
|
-
processedStream =
|
3409
|
+
processedStream = mergeStreams(data.stream, res);
|
3322
3410
|
}
|
3323
3411
|
super(processedStream, {
|
3324
3412
|
...init,
|
@@ -3330,24 +3418,6 @@ var StreamingTextResponse = class extends Response {
|
|
3330
3418
|
});
|
3331
3419
|
}
|
3332
3420
|
};
|
3333
|
-
function streamToResponse(res, response, init) {
|
3334
|
-
response.writeHead((init == null ? void 0 : init.status) || 200, {
|
3335
|
-
"Content-Type": "text/plain; charset=utf-8",
|
3336
|
-
...init == null ? void 0 : init.headers
|
3337
|
-
});
|
3338
|
-
const reader = res.getReader();
|
3339
|
-
function read() {
|
3340
|
-
reader.read().then(({ done, value }) => {
|
3341
|
-
if (done) {
|
3342
|
-
response.end();
|
3343
|
-
return;
|
3344
|
-
}
|
3345
|
-
response.write(value);
|
3346
|
-
read();
|
3347
|
-
});
|
3348
|
-
}
|
3349
|
-
read();
|
3350
|
-
}
|
3351
3421
|
// Annotate the CommonJS export names for ESM import in node:
|
3352
3422
|
0 && (module.exports = {
|
3353
3423
|
AIStream,
|