@@ -64,12 +64,25 @@ export function itemsToLanguageV1Messages(
6464 typeof content === 'string'
6565 ? [ { type : 'text' , text : content } ]
6666 : content . map ( ( c ) => {
67+ const { providerData : contentProviderData } = c ;
6768 if ( c . type === 'input_text' ) {
68- return { type : 'text' , text : c . text } ;
69+ return {
70+ type : 'text' ,
71+ text : c . text ,
72+ providerMetadata : {
73+ ...( contentProviderData ?? { } ) ,
74+ } ,
75+ } ;
6976 }
7077 if ( c . type === 'input_image' ) {
7178 const url = new URL ( c . image ) ;
72- return { type : 'image' , image : url } ;
79+ return {
80+ type : 'image' ,
81+ image : url ,
82+ providerMetadata : {
83+ ...( contentProviderData ?? { } ) ,
84+ } ,
85+ } ;
7386 }
7487 if ( c . type === 'input_file' ) {
7588 if ( typeof c . file !== 'string' ) {
@@ -80,6 +93,9 @@ export function itemsToLanguageV1Messages(
8093 file : c . file ,
8194 mimeType : 'application/octet-stream' ,
8295 data : c . file ,
96+ providerMetadata : {
97+ ...( contentProviderData ?? { } ) ,
98+ } ,
8399 } ;
84100 }
85101 throw new UserError ( `Unknown content type: ${ c . type } ` ) ;
@@ -102,11 +118,24 @@ export function itemsToLanguageV1Messages(
102118 content : content
103119 . filter ( ( c ) => c . type === 'input_text' || c . type === 'output_text' )
104120 . map ( ( c ) => {
121+ const { providerData : contentProviderData } = c ;
105122 if ( c . type === 'output_text' ) {
106- return { type : 'text' , text : c . text } ;
123+ return {
124+ type : 'text' ,
125+ text : c . text ,
126+ providerMetadata : {
127+ ...( contentProviderData ?? { } ) ,
128+ } ,
129+ } ;
107130 }
108131 if ( c . type === 'input_text' ) {
109- return { type : 'text' , text : c . text } ;
132+ return {
133+ type : 'text' ,
134+ text : c . text ,
135+ providerMetadata : {
136+ ...( contentProviderData ?? { } ) ,
137+ } ,
138+ } ;
110139 }
111140 const exhaustiveCheck = c satisfies never ;
112141 throw new UserError ( `Unknown content type: ${ exhaustiveCheck } ` ) ;
@@ -140,6 +169,9 @@ export function itemsToLanguageV1Messages(
140169 toolCallId : item . callId ,
141170 toolName : item . name ,
142171 args : JSON . parse ( item . arguments ) ,
172+ providerMetadata : {
173+ ...( item . providerData ?? { } ) ,
174+ } ,
143175 } ;
144176 currentAssistantMessage . content . push ( content ) ;
145177 }
@@ -154,6 +186,9 @@ export function itemsToLanguageV1Messages(
154186 toolCallId : item . callId ,
155187 toolName : item . name ,
156188 result : item . output ,
189+ providerMetadata : {
190+ ...( item . providerData ?? { } ) ,
191+ } ,
157192 } ;
158193 messages . push ( {
159194 role : 'tool' ,
@@ -332,11 +367,6 @@ export class AiSdkModel implements Model {
332367 }
333368
334369 async getResponse ( request : ModelRequest ) {
335- if ( this . #logger. dontLogModelData ) {
336- this . #logger. debug ( 'Request received' ) ;
337- } else {
338- this . #logger. debug ( 'Request:' , request ) ;
339- }
340370 return withGenerationSpan ( async ( span ) => {
341371 try {
342372 span . spanData . model = this . #model. provider + ':' + this . #model. modelId ;
@@ -384,7 +414,7 @@ export class AiSdkModel implements Model {
384414 const responseFormat : LanguageModelV1CallOptions [ 'responseFormat' ] =
385415 getResponseFormat ( request . outputType ) ;
386416
387- const result = await this . #model . doGenerate ( {
417+ const aiSdkRequest : LanguageModelV1CallOptions = {
388418 inputFormat : 'messages' ,
389419 mode : {
390420 type : 'regular' ,
@@ -400,7 +430,15 @@ export class AiSdkModel implements Model {
400430 abortSignal : request . signal ,
401431
402432 ...( request . modelSettings . providerData ?? { } ) ,
403- } ) ;
433+ } ;
434+
435+ if ( this . #logger. dontLogModelData ) {
436+ this . #logger. debug ( 'Request sent' ) ;
437+ } else {
438+ this . #logger. debug ( 'Request:' , aiSdkRequest ) ;
439+ }
440+
441+ const result = await this . #model. doGenerate ( aiSdkRequest ) ;
404442
405443 const output : ModelResponse [ 'output' ] = [ ] ;
406444
@@ -495,11 +533,6 @@ export class AiSdkModel implements Model {
495533 async * getStreamedResponse (
496534 request : ModelRequest ,
497535 ) : AsyncIterable < ResponseStreamEvent > {
498- if ( this . #logger. dontLogModelData ) {
499- this . #logger. debug ( 'Request received (streamed)' ) ;
500- } else {
501- this . #logger. debug ( 'Request (streamed):' , request ) ;
502- }
503536 const span = request . tracing ? createGenerationSpan ( ) : undefined ;
504537 try {
505538 if ( span ) {
@@ -550,7 +583,7 @@ export class AiSdkModel implements Model {
550583 const responseFormat : LanguageModelV1CallOptions [ 'responseFormat' ] =
551584 getResponseFormat ( request . outputType ) ;
552585
553- const { stream } = await this . #model . doStream ( {
586+ const aiSdkRequest : LanguageModelV1CallOptions = {
554587 inputFormat : 'messages' ,
555588 mode : {
556589 type : 'regular' ,
@@ -565,7 +598,15 @@ export class AiSdkModel implements Model {
565598 responseFormat,
566599 abortSignal : request . signal ,
567600 ...( request . modelSettings . providerData ?? { } ) ,
568- } ) ;
601+ } ;
602+
603+ if ( this . #logger. dontLogModelData ) {
604+ this . #logger. debug ( 'Request received (streamed)' ) ;
605+ } else {
606+ this . #logger. debug ( 'Request (streamed):' , aiSdkRequest ) ;
607+ }
608+
609+ const { stream } = await this . #model. doStream ( aiSdkRequest ) ;
569610
570611 let started = false ;
571612 let responseId : string | undefined ;
0 commit comments