@ai-sdk/google 4.0.0-beta.48 → 4.0.0-beta.49
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 +13 -0
- package/dist/index.d.ts +10 -10
- package/dist/index.js +186 -180
- package/dist/index.js.map +1 -1
- package/dist/internal/index.js +103 -110
- package/dist/internal/index.js.map +1 -1
- package/docs/15-google.mdx +4 -4
- package/package.json +2 -2
- package/src/convert-to-google-messages.ts +32 -14
- package/src/google-embedding-model.ts +1 -1
- package/src/google-image-model-options.ts +23 -0
- package/src/google-image-model.ts +2 -19
- package/src/google-language-model.ts +104 -110
- package/src/google-prepare-tools.ts +1 -1
- package/src/google-provider.ts +2 -2
- package/src/google-video-model-options.ts +43 -0
- package/src/google-video-model.ts +4 -43
- package/src/index.ts +4 -4
- package/src/internal/index.ts +1 -1
- /package/src/{google-embedding-options.ts → google-embedding-model-options.ts} +0 -0
- /package/src/{google-options.ts → google-language-model-options.ts} +0 -0
package/dist/internal/index.js
CHANGED
|
@@ -290,13 +290,25 @@ function appendLegacyToolResultParts(parts, toolName, outputValue) {
|
|
|
290
290
|
}
|
|
291
291
|
}
|
|
292
292
|
function convertToGoogleMessages(prompt, options) {
|
|
293
|
-
var _a, _b, _c, _d
|
|
293
|
+
var _a, _b, _c, _d;
|
|
294
294
|
const systemInstructionParts = [];
|
|
295
295
|
const contents = [];
|
|
296
296
|
let systemMessagesAllowed = true;
|
|
297
297
|
const isGemmaModel = (_a = options == null ? void 0 : options.isGemmaModel) != null ? _a : false;
|
|
298
|
-
const
|
|
298
|
+
const providerOptionsNames = (_b = options == null ? void 0 : options.providerOptionsNames) != null ? _b : ["google"];
|
|
299
|
+
const isVertexLike = !providerOptionsNames.includes("google");
|
|
299
300
|
const supportsFunctionResponseParts = (_c = options == null ? void 0 : options.supportsFunctionResponseParts) != null ? _c : true;
|
|
301
|
+
const readProviderOpts = (part) => {
|
|
302
|
+
var _a2, _b2, _c2, _d2, _e;
|
|
303
|
+
for (const name of providerOptionsNames) {
|
|
304
|
+
const v = (_a2 = part.providerOptions) == null ? void 0 : _a2[name];
|
|
305
|
+
if (v != null) return v;
|
|
306
|
+
}
|
|
307
|
+
if (isVertexLike) {
|
|
308
|
+
return (_b2 = part.providerOptions) == null ? void 0 : _b2.google;
|
|
309
|
+
}
|
|
310
|
+
return (_e = (_c2 = part.providerOptions) == null ? void 0 : _c2.googleVertex) != null ? _e : (_d2 = part.providerOptions) == null ? void 0 : _d2.vertex;
|
|
311
|
+
};
|
|
300
312
|
for (const { role, content } of prompt) {
|
|
301
313
|
switch (role) {
|
|
302
314
|
case "system": {
|
|
@@ -329,7 +341,7 @@ function convertToGoogleMessages(prompt, options) {
|
|
|
329
341
|
break;
|
|
330
342
|
}
|
|
331
343
|
case "reference": {
|
|
332
|
-
if (
|
|
344
|
+
if (isVertexLike) {
|
|
333
345
|
throw new UnsupportedFunctionalityError({
|
|
334
346
|
functionality: "file parts with provider references"
|
|
335
347
|
});
|
|
@@ -378,8 +390,7 @@ function convertToGoogleMessages(prompt, options) {
|
|
|
378
390
|
contents.push({
|
|
379
391
|
role: "model",
|
|
380
392
|
parts: content.map((part) => {
|
|
381
|
-
|
|
382
|
-
const providerOpts = (_d2 = (_a2 = part.providerOptions) == null ? void 0 : _a2[providerOptionsName]) != null ? _d2 : providerOptionsName !== "google" ? (_b2 = part.providerOptions) == null ? void 0 : _b2.google : (_c2 = part.providerOptions) == null ? void 0 : _c2.vertex;
|
|
393
|
+
const providerOpts = readProviderOpts(part);
|
|
383
394
|
const thoughtSignature = (providerOpts == null ? void 0 : providerOpts.thoughtSignature) != null ? String(providerOpts.thoughtSignature) : void 0;
|
|
384
395
|
switch (part.type) {
|
|
385
396
|
case "text": {
|
|
@@ -423,7 +434,7 @@ function convertToGoogleMessages(prompt, options) {
|
|
|
423
434
|
});
|
|
424
435
|
}
|
|
425
436
|
case "reference": {
|
|
426
|
-
if (
|
|
437
|
+
if (isVertexLike) {
|
|
427
438
|
throw new UnsupportedFunctionalityError({
|
|
428
439
|
functionality: "file parts with provider references"
|
|
429
440
|
});
|
|
@@ -513,7 +524,7 @@ function convertToGoogleMessages(prompt, options) {
|
|
|
513
524
|
if (part.type === "tool-approval-response") {
|
|
514
525
|
continue;
|
|
515
526
|
}
|
|
516
|
-
const partProviderOpts = (
|
|
527
|
+
const partProviderOpts = readProviderOpts(part);
|
|
517
528
|
const serverToolCallId = (partProviderOpts == null ? void 0 : partProviderOpts.serverToolCallId) != null ? String(partProviderOpts.serverToolCallId) : void 0;
|
|
518
529
|
const serverToolType = (partProviderOpts == null ? void 0 : partProviderOpts.serverToolType) != null ? String(partProviderOpts.serverToolType) : void 0;
|
|
519
530
|
if (serverToolCallId && serverToolType) {
|
|
@@ -546,7 +557,7 @@ function convertToGoogleMessages(prompt, options) {
|
|
|
546
557
|
name: part.toolName,
|
|
547
558
|
response: {
|
|
548
559
|
name: part.toolName,
|
|
549
|
-
content: output.type === "execution-denied" ? (
|
|
560
|
+
content: output.type === "execution-denied" ? (_d = output.reason) != null ? _d : "Tool call execution denied." : output.value
|
|
550
561
|
}
|
|
551
562
|
}
|
|
552
563
|
});
|
|
@@ -598,7 +609,7 @@ var googleFailedResponseHandler = createJsonErrorResponseHandler({
|
|
|
598
609
|
errorToMessage: (data) => data.error.message
|
|
599
610
|
});
|
|
600
611
|
|
|
601
|
-
// src/google-options.ts
|
|
612
|
+
// src/google-language-model-options.ts
|
|
602
613
|
import {
|
|
603
614
|
lazySchema as lazySchema2,
|
|
604
615
|
zodSchema as zodSchema2
|
|
@@ -1290,13 +1301,17 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1290
1301
|
}, { isStreaming = false } = {}) {
|
|
1291
1302
|
var _a, _b;
|
|
1292
1303
|
const warnings = [];
|
|
1293
|
-
const
|
|
1294
|
-
let googleOptions
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1304
|
+
const providerOptionsNames = this.config.provider.includes("vertex") ? ["googleVertex", "vertex"] : ["google"];
|
|
1305
|
+
let googleOptions;
|
|
1306
|
+
for (const name of providerOptionsNames) {
|
|
1307
|
+
googleOptions = await parseProviderOptions({
|
|
1308
|
+
provider: name,
|
|
1309
|
+
providerOptions,
|
|
1310
|
+
schema: googleLanguageModelOptions
|
|
1311
|
+
});
|
|
1312
|
+
if (googleOptions != null) break;
|
|
1313
|
+
}
|
|
1314
|
+
if (googleOptions == null && !providerOptionsNames.includes("google")) {
|
|
1300
1315
|
googleOptions = await parseProviderOptions({
|
|
1301
1316
|
provider: "google",
|
|
1302
1317
|
providerOptions,
|
|
@@ -1326,7 +1341,7 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1326
1341
|
const supportsFunctionResponseParts = this.modelId.startsWith("gemini-3");
|
|
1327
1342
|
const { contents, systemInstruction } = convertToGoogleMessages(prompt, {
|
|
1328
1343
|
isGemmaModel,
|
|
1329
|
-
|
|
1344
|
+
providerOptionsNames,
|
|
1330
1345
|
supportsFunctionResponseParts
|
|
1331
1346
|
});
|
|
1332
1347
|
const {
|
|
@@ -1399,12 +1414,15 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1399
1414
|
serviceTier: sanitizedServiceTier
|
|
1400
1415
|
},
|
|
1401
1416
|
warnings: [...warnings, ...toolWarnings],
|
|
1402
|
-
|
|
1417
|
+
providerOptionsNames
|
|
1403
1418
|
};
|
|
1404
1419
|
}
|
|
1405
1420
|
async doGenerate(options) {
|
|
1406
1421
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
|
|
1407
|
-
const { args, warnings,
|
|
1422
|
+
const { args, warnings, providerOptionsNames } = await this.getArgs(options);
|
|
1423
|
+
const wrapProviderMetadata = (payload) => Object.fromEntries(
|
|
1424
|
+
providerOptionsNames.map((name) => [name, payload])
|
|
1425
|
+
);
|
|
1408
1426
|
const mergedHeaders = combineHeaders(
|
|
1409
1427
|
this.config.headers ? await resolve(this.config.headers) : void 0,
|
|
1410
1428
|
options.headers
|
|
@@ -1454,11 +1472,9 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1454
1472
|
});
|
|
1455
1473
|
lastCodeExecutionToolCallId = void 0;
|
|
1456
1474
|
} else if ("text" in part && part.text != null) {
|
|
1457
|
-
const thoughtSignatureMetadata = part.thoughtSignature ? {
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
}
|
|
1461
|
-
} : void 0;
|
|
1475
|
+
const thoughtSignatureMetadata = part.thoughtSignature ? wrapProviderMetadata({
|
|
1476
|
+
thoughtSignature: part.thoughtSignature
|
|
1477
|
+
}) : void 0;
|
|
1462
1478
|
if (part.text.length === 0) {
|
|
1463
1479
|
if (thoughtSignatureMetadata != null && content.length > 0) {
|
|
1464
1480
|
const lastContent = content[content.length - 1];
|
|
@@ -1477,11 +1493,9 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1477
1493
|
toolCallId: this.config.generateId(),
|
|
1478
1494
|
toolName: part.functionCall.name,
|
|
1479
1495
|
input: JSON.stringify(part.functionCall.args),
|
|
1480
|
-
providerMetadata: part.thoughtSignature ? {
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
}
|
|
1484
|
-
} : void 0
|
|
1496
|
+
providerMetadata: part.thoughtSignature ? wrapProviderMetadata({
|
|
1497
|
+
thoughtSignature: part.thoughtSignature
|
|
1498
|
+
}) : void 0
|
|
1485
1499
|
});
|
|
1486
1500
|
} else if ("inlineData" in part) {
|
|
1487
1501
|
const hasThought = part.thought === true;
|
|
@@ -1490,11 +1504,9 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1490
1504
|
type: hasThought ? "reasoning-file" : "file",
|
|
1491
1505
|
data: { type: "data", data: part.inlineData.data },
|
|
1492
1506
|
mediaType: part.inlineData.mimeType,
|
|
1493
|
-
providerMetadata: hasThoughtSignature ? {
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
}
|
|
1497
|
-
} : void 0
|
|
1507
|
+
providerMetadata: hasThoughtSignature ? wrapProviderMetadata({
|
|
1508
|
+
thoughtSignature: part.thoughtSignature
|
|
1509
|
+
}) : void 0
|
|
1498
1510
|
});
|
|
1499
1511
|
} else if ("toolCall" in part && part.toolCall) {
|
|
1500
1512
|
const toolCallId = (_e = part.toolCall.id) != null ? _e : this.config.generateId();
|
|
@@ -1506,18 +1518,14 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1506
1518
|
input: JSON.stringify((_f = part.toolCall.args) != null ? _f : {}),
|
|
1507
1519
|
providerExecuted: true,
|
|
1508
1520
|
dynamic: true,
|
|
1509
|
-
providerMetadata: part.thoughtSignature ? {
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
serverToolCallId: toolCallId,
|
|
1518
|
-
serverToolType: part.toolCall.toolType
|
|
1519
|
-
}
|
|
1520
|
-
}
|
|
1521
|
+
providerMetadata: part.thoughtSignature ? wrapProviderMetadata({
|
|
1522
|
+
thoughtSignature: part.thoughtSignature,
|
|
1523
|
+
serverToolCallId: toolCallId,
|
|
1524
|
+
serverToolType: part.toolCall.toolType
|
|
1525
|
+
}) : wrapProviderMetadata({
|
|
1526
|
+
serverToolCallId: toolCallId,
|
|
1527
|
+
serverToolType: part.toolCall.toolType
|
|
1528
|
+
})
|
|
1521
1529
|
});
|
|
1522
1530
|
} else if ("toolResponse" in part && part.toolResponse) {
|
|
1523
1531
|
const responseToolCallId = (_g = lastServerToolCallId != null ? lastServerToolCallId : part.toolResponse.id) != null ? _g : this.config.generateId();
|
|
@@ -1526,18 +1534,14 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1526
1534
|
toolCallId: responseToolCallId,
|
|
1527
1535
|
toolName: `server:${part.toolResponse.toolType}`,
|
|
1528
1536
|
result: (_h = part.toolResponse.response) != null ? _h : {},
|
|
1529
|
-
providerMetadata: part.thoughtSignature ? {
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
serverToolCallId: responseToolCallId,
|
|
1538
|
-
serverToolType: part.toolResponse.toolType
|
|
1539
|
-
}
|
|
1540
|
-
}
|
|
1537
|
+
providerMetadata: part.thoughtSignature ? wrapProviderMetadata({
|
|
1538
|
+
thoughtSignature: part.thoughtSignature,
|
|
1539
|
+
serverToolCallId: responseToolCallId,
|
|
1540
|
+
serverToolType: part.toolResponse.toolType
|
|
1541
|
+
}) : wrapProviderMetadata({
|
|
1542
|
+
serverToolCallId: responseToolCallId,
|
|
1543
|
+
serverToolType: part.toolResponse.toolType
|
|
1544
|
+
})
|
|
1541
1545
|
});
|
|
1542
1546
|
lastServerToolCallId = void 0;
|
|
1543
1547
|
}
|
|
@@ -1563,17 +1567,15 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1563
1567
|
},
|
|
1564
1568
|
usage: convertGoogleUsage(usageMetadata),
|
|
1565
1569
|
warnings,
|
|
1566
|
-
providerMetadata: {
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
}
|
|
1576
|
-
},
|
|
1570
|
+
providerMetadata: wrapProviderMetadata({
|
|
1571
|
+
promptFeedback: (_k = response.promptFeedback) != null ? _k : null,
|
|
1572
|
+
groundingMetadata: (_l = candidate.groundingMetadata) != null ? _l : null,
|
|
1573
|
+
urlContextMetadata: (_m = candidate.urlContextMetadata) != null ? _m : null,
|
|
1574
|
+
safetyRatings: (_n = candidate.safetyRatings) != null ? _n : null,
|
|
1575
|
+
usageMetadata: usageMetadata != null ? usageMetadata : null,
|
|
1576
|
+
finishMessage: (_o = candidate.finishMessage) != null ? _o : null,
|
|
1577
|
+
serviceTier: (_p = response.serviceTier) != null ? _p : null
|
|
1578
|
+
}),
|
|
1577
1579
|
request: { body: args },
|
|
1578
1580
|
response: {
|
|
1579
1581
|
// TODO timestamp, model id, id
|
|
@@ -1583,10 +1585,13 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1583
1585
|
};
|
|
1584
1586
|
}
|
|
1585
1587
|
async doStream(options) {
|
|
1586
|
-
const { args, warnings,
|
|
1588
|
+
const { args, warnings, providerOptionsNames } = await this.getArgs(
|
|
1587
1589
|
options,
|
|
1588
1590
|
{ isStreaming: true }
|
|
1589
1591
|
);
|
|
1592
|
+
const wrapProviderMetadata = (payload) => Object.fromEntries(
|
|
1593
|
+
providerOptionsNames.map((name) => [name, payload])
|
|
1594
|
+
);
|
|
1590
1595
|
const headers = combineHeaders(
|
|
1591
1596
|
this.config.headers ? await resolve(this.config.headers) : void 0,
|
|
1592
1597
|
options.headers
|
|
@@ -1694,11 +1699,9 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1694
1699
|
lastCodeExecutionToolCallId = void 0;
|
|
1695
1700
|
}
|
|
1696
1701
|
} else if ("text" in part && part.text != null) {
|
|
1697
|
-
const thoughtSignatureMetadata = part.thoughtSignature ? {
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
}
|
|
1701
|
-
} : void 0;
|
|
1702
|
+
const thoughtSignatureMetadata = part.thoughtSignature ? wrapProviderMetadata({
|
|
1703
|
+
thoughtSignature: part.thoughtSignature
|
|
1704
|
+
}) : void 0;
|
|
1702
1705
|
if (part.text.length === 0) {
|
|
1703
1706
|
if (thoughtSignatureMetadata != null && currentTextBlockId !== null) {
|
|
1704
1707
|
controller.enqueue({
|
|
@@ -1770,11 +1773,9 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1770
1773
|
}
|
|
1771
1774
|
const hasThought = part.thought === true;
|
|
1772
1775
|
const hasThoughtSignature = !!part.thoughtSignature;
|
|
1773
|
-
const fileMeta = hasThoughtSignature ? {
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
}
|
|
1777
|
-
} : void 0;
|
|
1776
|
+
const fileMeta = hasThoughtSignature ? wrapProviderMetadata({
|
|
1777
|
+
thoughtSignature: part.thoughtSignature
|
|
1778
|
+
}) : void 0;
|
|
1778
1779
|
controller.enqueue({
|
|
1779
1780
|
type: hasThought ? "reasoning-file" : "file",
|
|
1780
1781
|
mediaType: part.inlineData.mimeType,
|
|
@@ -1784,13 +1785,11 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1784
1785
|
} else if ("toolCall" in part && part.toolCall) {
|
|
1785
1786
|
const toolCallId = (_e = part.toolCall.id) != null ? _e : generateId2();
|
|
1786
1787
|
lastServerToolCallId = toolCallId;
|
|
1787
|
-
const serverMeta = {
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
}
|
|
1793
|
-
};
|
|
1788
|
+
const serverMeta = wrapProviderMetadata({
|
|
1789
|
+
...part.thoughtSignature ? { thoughtSignature: part.thoughtSignature } : {},
|
|
1790
|
+
serverToolCallId: toolCallId,
|
|
1791
|
+
serverToolType: part.toolCall.toolType
|
|
1792
|
+
});
|
|
1794
1793
|
controller.enqueue({
|
|
1795
1794
|
type: "tool-call",
|
|
1796
1795
|
toolCallId,
|
|
@@ -1802,13 +1801,11 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1802
1801
|
});
|
|
1803
1802
|
} else if ("toolResponse" in part && part.toolResponse) {
|
|
1804
1803
|
const responseToolCallId = (_g = lastServerToolCallId != null ? lastServerToolCallId : part.toolResponse.id) != null ? _g : generateId2();
|
|
1805
|
-
const serverMeta = {
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
}
|
|
1811
|
-
};
|
|
1804
|
+
const serverMeta = wrapProviderMetadata({
|
|
1805
|
+
...part.thoughtSignature ? { thoughtSignature: part.thoughtSignature } : {},
|
|
1806
|
+
serverToolCallId: responseToolCallId,
|
|
1807
|
+
serverToolType: part.toolResponse.toolType
|
|
1808
|
+
});
|
|
1812
1809
|
controller.enqueue({
|
|
1813
1810
|
type: "tool-result",
|
|
1814
1811
|
toolCallId: responseToolCallId,
|
|
@@ -1821,11 +1818,9 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1821
1818
|
}
|
|
1822
1819
|
for (const part of parts) {
|
|
1823
1820
|
if (!("functionCall" in part)) continue;
|
|
1824
|
-
const providerMeta = part.thoughtSignature ? {
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
}
|
|
1828
|
-
} : void 0;
|
|
1821
|
+
const providerMeta = part.thoughtSignature ? wrapProviderMetadata({
|
|
1822
|
+
thoughtSignature: part.thoughtSignature
|
|
1823
|
+
}) : void 0;
|
|
1829
1824
|
const isStreamingChunk = part.functionCall.partialArgs != null || part.functionCall.name != null && part.functionCall.willContinue === true;
|
|
1830
1825
|
const isTerminalChunk = part.functionCall.name == null && part.functionCall.args == null && part.functionCall.partialArgs == null && part.functionCall.willContinue == null;
|
|
1831
1826
|
const isCompleteCall = part.functionCall.name != null && part.functionCall.args != null && part.functionCall.partialArgs == null;
|
|
@@ -1936,17 +1931,15 @@ var GoogleLanguageModel = class _GoogleLanguageModel {
|
|
|
1936
1931
|
}),
|
|
1937
1932
|
raw: candidate.finishReason
|
|
1938
1933
|
};
|
|
1939
|
-
providerMetadata = {
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
}
|
|
1949
|
-
};
|
|
1934
|
+
providerMetadata = wrapProviderMetadata({
|
|
1935
|
+
promptFeedback: (_j = value.promptFeedback) != null ? _j : null,
|
|
1936
|
+
groundingMetadata: lastGroundingMetadata,
|
|
1937
|
+
urlContextMetadata: lastUrlContextMetadata,
|
|
1938
|
+
safetyRatings: (_k = candidate.safetyRatings) != null ? _k : null,
|
|
1939
|
+
usageMetadata: usageMetadata != null ? usageMetadata : null,
|
|
1940
|
+
finishMessage: (_l = candidate.finishMessage) != null ? _l : null,
|
|
1941
|
+
serviceTier
|
|
1942
|
+
});
|
|
1950
1943
|
}
|
|
1951
1944
|
},
|
|
1952
1945
|
flush(controller) {
|