ai 4.0.24 → 4.0.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/CHANGELOG.md +12 -0
- package/dist/index.d.mts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +106 -96
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +120 -110
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# ai
|
2
2
|
|
3
|
+
## 4.0.26
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- a8f3242: feat (ai/core): add line chunking mode to smoothStream
|
8
|
+
|
9
|
+
## 4.0.25
|
10
|
+
|
11
|
+
### Patch Changes
|
12
|
+
|
13
|
+
- 0823899: fix (ai/core): throw error when accessing output when no output is defined in generateText (breaking/experimental)
|
14
|
+
|
3
15
|
## 4.0.24
|
4
16
|
|
5
17
|
### Patch Changes
|
package/dist/index.d.mts
CHANGED
@@ -2152,10 +2152,13 @@ Details for all steps.
|
|
2152
2152
|
* Smooths text streaming output.
|
2153
2153
|
*
|
2154
2154
|
* @param delayInMs - The delay in milliseconds between each chunk. Defaults to 10ms.
|
2155
|
+
* @param chunking - Controls how the text is chunked for streaming. Use "word" to stream word by word (default), or "line" to stream line by line.
|
2156
|
+
*
|
2155
2157
|
* @returns A transform stream that smooths text streaming output.
|
2156
2158
|
*/
|
2157
|
-
declare function smoothStream<TOOLS extends Record<string, CoreTool>>({ delayInMs, _internal: { delay }, }?: {
|
2159
|
+
declare function smoothStream<TOOLS extends Record<string, CoreTool>>({ delayInMs, chunking, _internal: { delay }, }?: {
|
2158
2160
|
delayInMs?: number;
|
2161
|
+
chunking?: 'word' | 'line';
|
2159
2162
|
/**
|
2160
2163
|
* Internal. For test use only. May change without notice.
|
2161
2164
|
*/
|
package/dist/index.d.ts
CHANGED
@@ -2152,10 +2152,13 @@ Details for all steps.
|
|
2152
2152
|
* Smooths text streaming output.
|
2153
2153
|
*
|
2154
2154
|
* @param delayInMs - The delay in milliseconds between each chunk. Defaults to 10ms.
|
2155
|
+
* @param chunking - Controls how the text is chunked for streaming. Use "word" to stream word by word (default), or "line" to stream line by line.
|
2156
|
+
*
|
2155
2157
|
* @returns A transform stream that smooths text streaming output.
|
2156
2158
|
*/
|
2157
|
-
declare function smoothStream<TOOLS extends Record<string, CoreTool>>({ delayInMs, _internal: { delay }, }?: {
|
2159
|
+
declare function smoothStream<TOOLS extends Record<string, CoreTool>>({ delayInMs, chunking, _internal: { delay }, }?: {
|
2158
2160
|
delayInMs?: number;
|
2161
|
+
chunking?: 'word' | 'line';
|
2159
2162
|
/**
|
2160
2163
|
* Internal. For test use only. May change without notice.
|
2161
2164
|
*/
|
package/dist/index.js
CHANGED
@@ -3296,28 +3296,17 @@ var DefaultStreamObjectResult = class {
|
|
3296
3296
|
// core/generate-text/generate-text.ts
|
3297
3297
|
var import_provider_utils9 = require("@ai-sdk/provider-utils");
|
3298
3298
|
|
3299
|
-
// errors/
|
3300
|
-
var import_provider16 = require("@ai-sdk/provider");
|
3301
|
-
|
3302
|
-
// errors/invalid-tool-arguments-error.ts
|
3299
|
+
// errors/no-output-specified-error.ts
|
3303
3300
|
var import_provider11 = require("@ai-sdk/provider");
|
3304
|
-
var name8 = "
|
3301
|
+
var name8 = "AI_NoOutputSpecifiedError";
|
3305
3302
|
var marker8 = `vercel.ai.error.${name8}`;
|
3306
3303
|
var symbol8 = Symbol.for(marker8);
|
3307
3304
|
var _a8;
|
3308
|
-
var
|
3309
|
-
|
3310
|
-
|
3311
|
-
|
3312
|
-
cause,
|
3313
|
-
message = `Invalid arguments for tool ${toolName}: ${(0, import_provider11.getErrorMessage)(
|
3314
|
-
cause
|
3315
|
-
)}`
|
3316
|
-
}) {
|
3317
|
-
super({ name: name8, message, cause });
|
3305
|
+
var NoOutputSpecifiedError = class extends import_provider11.AISDKError {
|
3306
|
+
// used in isInstance
|
3307
|
+
constructor({ message = "No output specified." } = {}) {
|
3308
|
+
super({ name: name8, message });
|
3318
3309
|
this[_a8] = true;
|
3319
|
-
this.toolArgs = toolArgs;
|
3320
|
-
this.toolName = toolName;
|
3321
3310
|
}
|
3322
3311
|
static isInstance(error) {
|
3323
3312
|
return import_provider11.AISDKError.hasMarker(error, marker8);
|
@@ -3325,92 +3314,29 @@ var InvalidToolArgumentsError = class extends import_provider11.AISDKError {
|
|
3325
3314
|
};
|
3326
3315
|
_a8 = symbol8;
|
3327
3316
|
|
3328
|
-
// errors/
|
3317
|
+
// errors/tool-execution-error.ts
|
3329
3318
|
var import_provider12 = require("@ai-sdk/provider");
|
3330
|
-
var name9 = "
|
3319
|
+
var name9 = "AI_ToolExecutionError";
|
3331
3320
|
var marker9 = `vercel.ai.error.${name9}`;
|
3332
3321
|
var symbol9 = Symbol.for(marker9);
|
3333
3322
|
var _a9;
|
3334
|
-
var
|
3335
|
-
// used in isInstance
|
3336
|
-
constructor({ message = "No output specified." } = {}) {
|
3337
|
-
super({ name: name9, message });
|
3338
|
-
this[_a9] = true;
|
3339
|
-
}
|
3340
|
-
static isInstance(error) {
|
3341
|
-
return import_provider12.AISDKError.hasMarker(error, marker9);
|
3342
|
-
}
|
3343
|
-
};
|
3344
|
-
_a9 = symbol9;
|
3345
|
-
|
3346
|
-
// errors/no-such-tool-error.ts
|
3347
|
-
var import_provider13 = require("@ai-sdk/provider");
|
3348
|
-
var name10 = "AI_NoSuchToolError";
|
3349
|
-
var marker10 = `vercel.ai.error.${name10}`;
|
3350
|
-
var symbol10 = Symbol.for(marker10);
|
3351
|
-
var _a10;
|
3352
|
-
var NoSuchToolError = class extends import_provider13.AISDKError {
|
3353
|
-
constructor({
|
3354
|
-
toolName,
|
3355
|
-
availableTools = void 0,
|
3356
|
-
message = `Model tried to call unavailable tool '${toolName}'. ${availableTools === void 0 ? "No tools are available." : `Available tools: ${availableTools.join(", ")}.`}`
|
3357
|
-
}) {
|
3358
|
-
super({ name: name10, message });
|
3359
|
-
this[_a10] = true;
|
3360
|
-
this.toolName = toolName;
|
3361
|
-
this.availableTools = availableTools;
|
3362
|
-
}
|
3363
|
-
static isInstance(error) {
|
3364
|
-
return import_provider13.AISDKError.hasMarker(error, marker10);
|
3365
|
-
}
|
3366
|
-
};
|
3367
|
-
_a10 = symbol10;
|
3368
|
-
|
3369
|
-
// errors/tool-call-repair-error.ts
|
3370
|
-
var import_provider14 = require("@ai-sdk/provider");
|
3371
|
-
var name11 = "AI_ToolCallRepairError";
|
3372
|
-
var marker11 = `vercel.ai.error.${name11}`;
|
3373
|
-
var symbol11 = Symbol.for(marker11);
|
3374
|
-
var _a11;
|
3375
|
-
var ToolCallRepairError = class extends import_provider14.AISDKError {
|
3376
|
-
constructor({
|
3377
|
-
cause,
|
3378
|
-
originalError,
|
3379
|
-
message = `Error repairing tool call: ${(0, import_provider14.getErrorMessage)(cause)}`
|
3380
|
-
}) {
|
3381
|
-
super({ name: name11, message, cause });
|
3382
|
-
this[_a11] = true;
|
3383
|
-
this.originalError = originalError;
|
3384
|
-
}
|
3385
|
-
static isInstance(error) {
|
3386
|
-
return import_provider14.AISDKError.hasMarker(error, marker11);
|
3387
|
-
}
|
3388
|
-
};
|
3389
|
-
_a11 = symbol11;
|
3390
|
-
|
3391
|
-
// errors/tool-execution-error.ts
|
3392
|
-
var import_provider15 = require("@ai-sdk/provider");
|
3393
|
-
var name12 = "AI_ToolExecutionError";
|
3394
|
-
var marker12 = `vercel.ai.error.${name12}`;
|
3395
|
-
var symbol12 = Symbol.for(marker12);
|
3396
|
-
var _a12;
|
3397
|
-
var ToolExecutionError = class extends import_provider15.AISDKError {
|
3323
|
+
var ToolExecutionError = class extends import_provider12.AISDKError {
|
3398
3324
|
constructor({
|
3399
3325
|
toolArgs,
|
3400
3326
|
toolName,
|
3401
3327
|
cause,
|
3402
|
-
message = `Error executing tool ${toolName}: ${(0,
|
3328
|
+
message = `Error executing tool ${toolName}: ${(0, import_provider12.getErrorMessage)(cause)}`
|
3403
3329
|
}) {
|
3404
|
-
super({ name:
|
3405
|
-
this[
|
3330
|
+
super({ name: name9, message, cause });
|
3331
|
+
this[_a9] = true;
|
3406
3332
|
this.toolArgs = toolArgs;
|
3407
3333
|
this.toolName = toolName;
|
3408
3334
|
}
|
3409
3335
|
static isInstance(error) {
|
3410
|
-
return
|
3336
|
+
return import_provider12.AISDKError.hasMarker(error, marker9);
|
3411
3337
|
}
|
3412
3338
|
};
|
3413
|
-
|
3339
|
+
_a9 = symbol9;
|
3414
3340
|
|
3415
3341
|
// core/prompt/prepare-tools-and-tool-choice.ts
|
3416
3342
|
var import_ui_utils4 = require("@ai-sdk/ui-utils");
|
@@ -3480,6 +3406,79 @@ function removeTextAfterLastWhitespace(text2) {
|
|
3480
3406
|
// core/generate-text/parse-tool-call.ts
|
3481
3407
|
var import_provider_utils8 = require("@ai-sdk/provider-utils");
|
3482
3408
|
var import_ui_utils5 = require("@ai-sdk/ui-utils");
|
3409
|
+
|
3410
|
+
// errors/invalid-tool-arguments-error.ts
|
3411
|
+
var import_provider13 = require("@ai-sdk/provider");
|
3412
|
+
var name10 = "AI_InvalidToolArgumentsError";
|
3413
|
+
var marker10 = `vercel.ai.error.${name10}`;
|
3414
|
+
var symbol10 = Symbol.for(marker10);
|
3415
|
+
var _a10;
|
3416
|
+
var InvalidToolArgumentsError = class extends import_provider13.AISDKError {
|
3417
|
+
constructor({
|
3418
|
+
toolArgs,
|
3419
|
+
toolName,
|
3420
|
+
cause,
|
3421
|
+
message = `Invalid arguments for tool ${toolName}: ${(0, import_provider13.getErrorMessage)(
|
3422
|
+
cause
|
3423
|
+
)}`
|
3424
|
+
}) {
|
3425
|
+
super({ name: name10, message, cause });
|
3426
|
+
this[_a10] = true;
|
3427
|
+
this.toolArgs = toolArgs;
|
3428
|
+
this.toolName = toolName;
|
3429
|
+
}
|
3430
|
+
static isInstance(error) {
|
3431
|
+
return import_provider13.AISDKError.hasMarker(error, marker10);
|
3432
|
+
}
|
3433
|
+
};
|
3434
|
+
_a10 = symbol10;
|
3435
|
+
|
3436
|
+
// errors/no-such-tool-error.ts
|
3437
|
+
var import_provider14 = require("@ai-sdk/provider");
|
3438
|
+
var name11 = "AI_NoSuchToolError";
|
3439
|
+
var marker11 = `vercel.ai.error.${name11}`;
|
3440
|
+
var symbol11 = Symbol.for(marker11);
|
3441
|
+
var _a11;
|
3442
|
+
var NoSuchToolError = class extends import_provider14.AISDKError {
|
3443
|
+
constructor({
|
3444
|
+
toolName,
|
3445
|
+
availableTools = void 0,
|
3446
|
+
message = `Model tried to call unavailable tool '${toolName}'. ${availableTools === void 0 ? "No tools are available." : `Available tools: ${availableTools.join(", ")}.`}`
|
3447
|
+
}) {
|
3448
|
+
super({ name: name11, message });
|
3449
|
+
this[_a11] = true;
|
3450
|
+
this.toolName = toolName;
|
3451
|
+
this.availableTools = availableTools;
|
3452
|
+
}
|
3453
|
+
static isInstance(error) {
|
3454
|
+
return import_provider14.AISDKError.hasMarker(error, marker11);
|
3455
|
+
}
|
3456
|
+
};
|
3457
|
+
_a11 = symbol11;
|
3458
|
+
|
3459
|
+
// errors/tool-call-repair-error.ts
|
3460
|
+
var import_provider15 = require("@ai-sdk/provider");
|
3461
|
+
var name12 = "AI_ToolCallRepairError";
|
3462
|
+
var marker12 = `vercel.ai.error.${name12}`;
|
3463
|
+
var symbol12 = Symbol.for(marker12);
|
3464
|
+
var _a12;
|
3465
|
+
var ToolCallRepairError = class extends import_provider15.AISDKError {
|
3466
|
+
constructor({
|
3467
|
+
cause,
|
3468
|
+
originalError,
|
3469
|
+
message = `Error repairing tool call: ${(0, import_provider15.getErrorMessage)(cause)}`
|
3470
|
+
}) {
|
3471
|
+
super({ name: name12, message, cause });
|
3472
|
+
this[_a12] = true;
|
3473
|
+
this.originalError = originalError;
|
3474
|
+
}
|
3475
|
+
static isInstance(error) {
|
3476
|
+
return import_provider15.AISDKError.hasMarker(error, marker12);
|
3477
|
+
}
|
3478
|
+
};
|
3479
|
+
_a12 = symbol12;
|
3480
|
+
|
3481
|
+
// core/generate-text/parse-tool-call.ts
|
3483
3482
|
async function parseToolCall({
|
3484
3483
|
toolCall,
|
3485
3484
|
tools,
|
@@ -3873,13 +3872,15 @@ async function generateText({
|
|
3873
3872
|
);
|
3874
3873
|
return new DefaultGenerateTextResult({
|
3875
3874
|
text: text2,
|
3876
|
-
|
3877
|
-
|
3878
|
-
|
3879
|
-
response: currentModelResponse.response,
|
3880
|
-
usage
|
3875
|
+
outputResolver: () => {
|
3876
|
+
if (output == null) {
|
3877
|
+
throw new NoOutputSpecifiedError();
|
3881
3878
|
}
|
3882
|
-
|
3879
|
+
return output.parseOutput(
|
3880
|
+
{ text: text2 },
|
3881
|
+
{ response: currentModelResponse.response, usage }
|
3882
|
+
);
|
3883
|
+
},
|
3883
3884
|
toolCalls: currentToolCalls,
|
3884
3885
|
toolResults: currentToolResults,
|
3885
3886
|
finishReason: currentModelResponse.finishReason,
|
@@ -3985,7 +3986,10 @@ var DefaultGenerateTextResult = class {
|
|
3985
3986
|
this.steps = options.steps;
|
3986
3987
|
this.experimental_providerMetadata = options.providerMetadata;
|
3987
3988
|
this.logprobs = options.logprobs;
|
3988
|
-
this.
|
3989
|
+
this.outputResolver = options.outputResolver;
|
3990
|
+
}
|
3991
|
+
get experimental_output() {
|
3992
|
+
return this.outputResolver();
|
3989
3993
|
}
|
3990
3994
|
};
|
3991
3995
|
|
@@ -3997,6 +4001,11 @@ __export(output_exports, {
|
|
3997
4001
|
});
|
3998
4002
|
var import_provider_utils10 = require("@ai-sdk/provider-utils");
|
3999
4003
|
var import_ui_utils6 = require("@ai-sdk/ui-utils");
|
4004
|
+
|
4005
|
+
// errors/index.ts
|
4006
|
+
var import_provider16 = require("@ai-sdk/provider");
|
4007
|
+
|
4008
|
+
// core/generate-text/output.ts
|
4000
4009
|
var text = () => ({
|
4001
4010
|
type: "text",
|
4002
4011
|
responseFormat: () => ({ type: "text" }),
|
@@ -5340,6 +5349,7 @@ var DefaultStreamTextResult = class {
|
|
5340
5349
|
// core/generate-text/smooth-stream.ts
|
5341
5350
|
function smoothStream({
|
5342
5351
|
delayInMs = 10,
|
5352
|
+
chunking = "word",
|
5343
5353
|
_internal: { delay: delay2 = delay } = {}
|
5344
5354
|
} = {}) {
|
5345
5355
|
let buffer = "";
|
@@ -5358,7 +5368,7 @@ function smoothStream({
|
|
5358
5368
|
return;
|
5359
5369
|
}
|
5360
5370
|
buffer += chunk.textDelta;
|
5361
|
-
const regexp = /\s*\S+\s+/m;
|
5371
|
+
const regexp = chunking === "line" ? /[^\n]*\n/m : /\s*\S+\s+/m;
|
5362
5372
|
while (regexp.test(buffer)) {
|
5363
5373
|
const chunk2 = buffer.match(regexp)[0];
|
5364
5374
|
controller.enqueue({ type: "text-delta", textDelta: chunk2 });
|