@@ -111,6 +111,45 @@ describe('OpenRouter Image Adapter', () => {
111111 } )
112112 } )
113113
114+ it ( 'surfaces provider-reported cost from OpenRouter image usage' , async ( ) => {
115+ const mockResponse = {
116+ ...createMockImageResponse ( [ { url : 'https://example.com/image1.png' } ] ) ,
117+ usage : {
118+ completionTokens : 1291 ,
119+ cost : 0.0387076 ,
120+ cost_details : {
121+ upstream_inference_completions_cost : 0.0387025 ,
122+ upstream_inference_cost : 0.0387076 ,
123+ upstream_inference_prompt_cost : 0.0000051 ,
124+ } ,
125+ promptTokens : 17 ,
126+ totalTokens : 1308 ,
127+ } ,
128+ }
129+
130+ mockSend = vi . fn ( ) . mockResolvedValueOnce ( mockResponse )
131+
132+ const adapter = createAdapter ( )
133+
134+ const result = await adapter . generateImages ( {
135+ model : 'google/gemini-2.5-flash-image' ,
136+ prompt : 'A futuristic city at sunset' ,
137+ logger : testLogger ,
138+ } )
139+
140+ expect ( result . usage ) . toMatchObject ( {
141+ promptTokens : 17 ,
142+ completionTokens : 1291 ,
143+ totalTokens : 1308 ,
144+ cost : 0.0387076 ,
145+ costDetails : {
146+ upstreamOutputCost : 0.0387025 ,
147+ upstreamCost : 0.0387076 ,
148+ upstreamInputCost : 0.0000051 ,
149+ } ,
150+ } )
151+ } )
152+
114153 it ( 'generates multiple images' , async ( ) => {
115154 const mockResponse = createMockImageResponse ( [
116155 { url : 'https://example.com/image1.png' } ,
0 commit comments