Skip to content

Commit 78c0e26

Browse files
Backport: feat(ai): pass result provider metadata across the stream (#13184)
This is an automated backport of #13181 to the release-v6.0 branch. FYI @aayush-kapoor Co-authored-by: Aayush Kapoor <83492835+aayush-kapoor@users.noreply.github.com>
1 parent 0ebf78d commit 78c0e26

15 files changed

+634
-9
lines changed

.changeset/neat-cats-sip.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'ai': patch
3+
---
4+
5+
feat(ai): pass result provider metadata across the stream

packages/ai/scripts/check-bundle-size.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { writeFileSync, statSync } from 'fs';
33
import { join } from 'path';
44

55
// Bundle size limits in bytes
6-
const LIMIT = 570 * 1024;
6+
const LIMIT = 580 * 1024;
77

88
interface BundleResult {
99
size: number;

packages/ai/src/generate-text/generate-text.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4652,6 +4652,9 @@ describe('generateText', () => {
46524652
toolCallId: 'call-1',
46534653
toolName: 'web_search',
46544654
result: `{ "value": "result1" }`,
4655+
providerMetadata: {
4656+
openai: { itemId: 'tool-result-1' },
4657+
},
46554658
},
46564659
{
46574660
type: 'tool-call',
@@ -4667,6 +4670,9 @@ describe('generateText', () => {
46674670
result: 'ERROR',
46684671
isError: true,
46694672
providerExecuted: true,
4673+
providerMetadata: {
4674+
openai: { itemId: 'tool-result-2' },
4675+
},
46704676
},
46714677
],
46724678
}),
@@ -4706,6 +4712,11 @@ describe('generateText', () => {
47064712
},
47074713
"output": "{ "value": "result1" }",
47084714
"providerExecuted": true,
4715+
"providerMetadata": {
4716+
"openai": {
4717+
"itemId": "tool-result-1",
4718+
},
4719+
},
47094720
"toolCallId": "call-1",
47104721
"toolName": "web_search",
47114722
"type": "tool-result",
@@ -4728,6 +4739,11 @@ describe('generateText', () => {
47284739
"value": "value",
47294740
},
47304741
"providerExecuted": true,
4742+
"providerMetadata": {
4743+
"openai": {
4744+
"itemId": "tool-result-2",
4745+
},
4746+
},
47314747
"toolCallId": "call-2",
47324748
"toolName": "web_search",
47334749
"type": "tool-error",
@@ -4775,6 +4791,11 @@ describe('generateText', () => {
47754791
},
47764792
"output": "{ "value": "result1" }",
47774793
"providerExecuted": true,
4794+
"providerMetadata": {
4795+
"openai": {
4796+
"itemId": "tool-result-1",
4797+
},
4798+
},
47784799
"toolCallId": "call-1",
47794800
"toolName": "web_search",
47804801
"type": "tool-result",

packages/ai/src/generate-text/generate-text.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1504,6 +1504,9 @@ function asContent<TOOLS extends ToolSet>({
15041504
error: part.result,
15051505
providerExecuted: true,
15061506
dynamic: part.dynamic,
1507+
...(part.providerMetadata != null
1508+
? { providerMetadata: part.providerMetadata }
1509+
: {}),
15071510
} as TypedToolError<TOOLS>);
15081511
} else {
15091512
contentParts.push({
@@ -1514,6 +1517,9 @@ function asContent<TOOLS extends ToolSet>({
15141517
output: part.result,
15151518
providerExecuted: true,
15161519
dynamic: part.dynamic,
1520+
...(part.providerMetadata != null
1521+
? { providerMetadata: part.providerMetadata }
1522+
: {}),
15171523
} as TypedToolResult<TOOLS>);
15181524
}
15191525
break;
@@ -1528,6 +1534,9 @@ function asContent<TOOLS extends ToolSet>({
15281534
error: part.result,
15291535
providerExecuted: true,
15301536
dynamic: toolCall.dynamic,
1537+
...(part.providerMetadata != null
1538+
? { providerMetadata: part.providerMetadata }
1539+
: {}),
15311540
} as TypedToolError<TOOLS>);
15321541
} else {
15331542
contentParts.push({
@@ -1538,6 +1547,9 @@ function asContent<TOOLS extends ToolSet>({
15381547
output: part.result,
15391548
providerExecuted: true,
15401549
dynamic: toolCall.dynamic,
1550+
...(part.providerMetadata != null
1551+
? { providerMetadata: part.providerMetadata }
1552+
: {}),
15411553
} as TypedToolResult<TOOLS>);
15421554
}
15431555
break;

packages/ai/src/generate-text/run-tools-transformation.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,9 @@ export function runToolsTransformation<TOOLS extends ToolSet>({
382382
providerExecuted: true,
383383
error: chunk.result,
384384
dynamic: chunk.dynamic,
385+
...(chunk.providerMetadata != null
386+
? { providerMetadata: chunk.providerMetadata }
387+
: {}),
385388
} as TypedToolError<TOOLS>);
386389
} else {
387390
controller.enqueue({
@@ -392,6 +395,9 @@ export function runToolsTransformation<TOOLS extends ToolSet>({
392395
output: chunk.result,
393396
providerExecuted: true,
394397
dynamic: chunk.dynamic,
398+
...(chunk.providerMetadata != null
399+
? { providerMetadata: chunk.providerMetadata }
400+
: {}),
395401
} as TypedToolResult<TOOLS>);
396402
}
397403
break;

0 commit comments

Comments
 (0)