ai 6.0.207 → 6.0.209
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 +15 -0
- package/dist/index.js +57 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +57 -6
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +1 -1
- package/dist/internal/index.mjs +1 -1
- package/docs/03-ai-sdk-core/36-transcription.mdx +28 -25
- package/package.json +2 -2
- package/src/generate-text/stream-text.ts +3 -1
- package/src/telemetry/sanitize-attribute-value.ts +39 -0
- package/src/telemetry/select-telemetry-attributes.ts +7 -3
- package/src/util/fix-json.ts +30 -1
package/dist/index.mjs
CHANGED
|
@@ -1171,7 +1171,7 @@ import {
|
|
|
1171
1171
|
} from "@ai-sdk/provider-utils";
|
|
1172
1172
|
|
|
1173
1173
|
// src/version.ts
|
|
1174
|
-
var VERSION = true ? "6.0.
|
|
1174
|
+
var VERSION = true ? "6.0.209" : "0.0.0-test";
|
|
1175
1175
|
|
|
1176
1176
|
// src/util/download/download.ts
|
|
1177
1177
|
var download = async ({
|
|
@@ -2403,6 +2403,30 @@ function recordErrorOnSpan(span, error) {
|
|
|
2403
2403
|
}
|
|
2404
2404
|
}
|
|
2405
2405
|
|
|
2406
|
+
// src/telemetry/sanitize-attribute-value.ts
|
|
2407
|
+
function isPrimitiveAttributeValue(value) {
|
|
2408
|
+
return typeof value === "string" || typeof value === "number" || typeof value === "boolean";
|
|
2409
|
+
}
|
|
2410
|
+
function sanitizeAttributeValue(value) {
|
|
2411
|
+
if (!Array.isArray(value)) {
|
|
2412
|
+
return value;
|
|
2413
|
+
}
|
|
2414
|
+
const primitiveTypes = new Set(
|
|
2415
|
+
value.filter(isPrimitiveAttributeValue).map((item) => typeof item)
|
|
2416
|
+
);
|
|
2417
|
+
if (primitiveTypes.size !== 1) {
|
|
2418
|
+
return void 0;
|
|
2419
|
+
}
|
|
2420
|
+
const [primitiveType] = primitiveTypes;
|
|
2421
|
+
if (primitiveType === "string") {
|
|
2422
|
+
return value.filter((item) => typeof item === "string");
|
|
2423
|
+
}
|
|
2424
|
+
if (primitiveType === "number") {
|
|
2425
|
+
return value.filter((item) => typeof item === "number");
|
|
2426
|
+
}
|
|
2427
|
+
return value.filter((item) => typeof item === "boolean");
|
|
2428
|
+
}
|
|
2429
|
+
|
|
2406
2430
|
// src/telemetry/select-telemetry-attributes.ts
|
|
2407
2431
|
async function selectTelemetryAttributes({
|
|
2408
2432
|
telemetry,
|
|
@@ -2422,7 +2446,9 @@ async function selectTelemetryAttributes({
|
|
|
2422
2446
|
}
|
|
2423
2447
|
const result = await value.input();
|
|
2424
2448
|
if (result != null) {
|
|
2425
|
-
|
|
2449
|
+
const sanitized2 = sanitizeAttributeValue(result);
|
|
2450
|
+
if (sanitized2 != null)
|
|
2451
|
+
resultAttributes[key] = sanitized2;
|
|
2426
2452
|
}
|
|
2427
2453
|
continue;
|
|
2428
2454
|
}
|
|
@@ -2432,11 +2458,15 @@ async function selectTelemetryAttributes({
|
|
|
2432
2458
|
}
|
|
2433
2459
|
const result = await value.output();
|
|
2434
2460
|
if (result != null) {
|
|
2435
|
-
|
|
2461
|
+
const sanitized2 = sanitizeAttributeValue(result);
|
|
2462
|
+
if (sanitized2 != null)
|
|
2463
|
+
resultAttributes[key] = sanitized2;
|
|
2436
2464
|
}
|
|
2437
2465
|
continue;
|
|
2438
2466
|
}
|
|
2439
|
-
|
|
2467
|
+
const sanitized = sanitizeAttributeValue(value);
|
|
2468
|
+
if (sanitized != null)
|
|
2469
|
+
resultAttributes[key] = sanitized;
|
|
2440
2470
|
}
|
|
2441
2471
|
return resultAttributes;
|
|
2442
2472
|
}
|
|
@@ -3263,6 +3293,10 @@ function fixJson(input) {
|
|
|
3263
3293
|
const stack = ["ROOT"];
|
|
3264
3294
|
let lastValidIndex = -1;
|
|
3265
3295
|
let literalStart = null;
|
|
3296
|
+
let unicodeEscapeDigits = 0;
|
|
3297
|
+
function isHexDigit(char) {
|
|
3298
|
+
return char >= "0" && char <= "9" || char >= "A" && char <= "F" || char >= "a" && char <= "f";
|
|
3299
|
+
}
|
|
3266
3300
|
function processValueStart(char, i, swapState) {
|
|
3267
3301
|
{
|
|
3268
3302
|
switch (char) {
|
|
@@ -3467,7 +3501,22 @@ function fixJson(input) {
|
|
|
3467
3501
|
}
|
|
3468
3502
|
case "INSIDE_STRING_ESCAPE": {
|
|
3469
3503
|
stack.pop();
|
|
3470
|
-
|
|
3504
|
+
if (char === "u") {
|
|
3505
|
+
unicodeEscapeDigits = 0;
|
|
3506
|
+
stack.push("INSIDE_STRING_UNICODE_ESCAPE");
|
|
3507
|
+
} else {
|
|
3508
|
+
lastValidIndex = i;
|
|
3509
|
+
}
|
|
3510
|
+
break;
|
|
3511
|
+
}
|
|
3512
|
+
case "INSIDE_STRING_UNICODE_ESCAPE": {
|
|
3513
|
+
if (isHexDigit(char)) {
|
|
3514
|
+
unicodeEscapeDigits++;
|
|
3515
|
+
if (unicodeEscapeDigits === 4) {
|
|
3516
|
+
stack.pop();
|
|
3517
|
+
lastValidIndex = i;
|
|
3518
|
+
}
|
|
3519
|
+
}
|
|
3471
3520
|
break;
|
|
3472
3521
|
}
|
|
3473
3522
|
case "INSIDE_NUMBER": {
|
|
@@ -8363,7 +8412,9 @@ var DefaultStreamTextResult = class {
|
|
|
8363
8412
|
controller.enqueue({
|
|
8364
8413
|
type: "tool-output-available",
|
|
8365
8414
|
toolCallId: part.toolCallId,
|
|
8366
|
-
|
|
8415
|
+
// UI stream chunks are serialized as JSON, which drops undefined
|
|
8416
|
+
// properties. Use null so tool outputs always keep the output field.
|
|
8417
|
+
output: part.output === void 0 ? null : part.output,
|
|
8367
8418
|
...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
|
|
8368
8419
|
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},
|
|
8369
8420
|
...part.toolMetadata != null ? { toolMetadata: part.toolMetadata } : {},
|