File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -72,10 +72,17 @@ export function mapUsageToOpenAI(usage: CommandCodeUsage | undefined): OpenAIUsa
7272 const promptTokens = usage ?. inputTokens ?? 0 ;
7373 const completionTokens = usage ?. outputTokens ?? 0 ;
7474 const totalTokens = usage ?. totalTokens ?? promptTokens + completionTokens ;
75+ const cacheReadTokens = usage ?. cachedInputTokens ?? usage ?. inputTokenDetails ?. [ "cacheReadTokens" ] ;
7576 return {
7677 prompt_tokens : promptTokens ,
7778 completion_tokens : completionTokens ,
7879 total_tokens : totalTokens ,
80+ prompt_tokens_details : {
81+ cached_tokens :
82+ typeof cacheReadTokens === "number" && Number . isFinite ( cacheReadTokens )
83+ ? cacheReadTokens
84+ : 0 ,
85+ } ,
7986 } ;
8087}
8188
Original file line number Diff line number Diff line change @@ -232,6 +232,9 @@ export interface OpenAIUsage {
232232 prompt_tokens : number ;
233233 completion_tokens : number ;
234234 total_tokens : number ;
235+ prompt_tokens_details : {
236+ cached_tokens : number ;
237+ } ;
235238}
236239
237240export interface OpenAIChatCompletion {
Original file line number Diff line number Diff line change @@ -64,10 +64,18 @@ function parseSsePayloads(chunks: string[]): unknown[] {
6464
6565describe ( "CommandCode to OpenAI conversion" , ( ) => {
6666 it ( "maps usage fields" , ( ) => {
67- expect ( mapUsageToOpenAI ( { inputTokens : 3 , outputTokens : 2 , totalTokens : 5 } ) ) . toEqual ( {
67+ expect (
68+ mapUsageToOpenAI ( {
69+ inputTokens : 3 ,
70+ outputTokens : 2 ,
71+ totalTokens : 5 ,
72+ inputTokenDetails : { cacheReadTokens : 1 } ,
73+ } ) ,
74+ ) . toEqual ( {
6875 prompt_tokens : 3 ,
6976 completion_tokens : 2 ,
7077 total_tokens : 5 ,
78+ prompt_tokens_details : { cached_tokens : 1 } ,
7179 } ) ;
7280 } ) ;
7381
You can’t perform that action at this time.
0 commit comments