11import { UsageData } from './types/protocol' ;
22
3+ type UsageInput = Partial <
4+ UsageData & {
5+ input_tokens : number ;
6+ output_tokens : number ;
7+ total_tokens : number ;
8+ input_tokens_details : object ;
9+ output_tokens_details : object ;
10+ }
11+ > & { requests ?: number } ;
12+
313/**
414 * Tracks token usage and request counts for an agent run.
515 */
@@ -34,7 +44,7 @@ export class Usage {
3444 */
3545 public outputTokensDetails : Array < Record < string , number > > = [ ] ;
3646
37- constructor ( input ?: Partial < UsageData > & { requests ?: number } ) {
47+ constructor ( input ?: UsageInput ) {
3848 if ( typeof input === 'undefined' ) {
3949 this . requests = 0 ;
4050 this . inputTokens = 0 ;
@@ -44,14 +54,18 @@ export class Usage {
4454 this . outputTokensDetails = [ ] ;
4555 } else {
4656 this . requests = input ?. requests ?? 1 ;
47- this . inputTokens = input ?. inputTokens ?? 0 ;
48- this . outputTokens = input ?. outputTokens ?? 0 ;
49- this . totalTokens = input ?. totalTokens ?? 0 ;
50- this . inputTokensDetails = input ?. inputTokensDetails
51- ? [ input . inputTokensDetails ]
57+ this . inputTokens = input ?. inputTokens ?? input ?. input_tokens ?? 0 ;
58+ this . outputTokens = input ?. outputTokens ?? input ?. output_tokens ?? 0 ;
59+ this . totalTokens = input ?. totalTokens ?? input ?. total_tokens ?? 0 ;
60+ const inputTokensDetails =
61+ input ?. inputTokensDetails ?? input ?. input_tokens_details ;
62+ this . inputTokensDetails = inputTokensDetails
63+ ? [ inputTokensDetails as Record < string , number > ]
5264 : [ ] ;
53- this . outputTokensDetails = input ?. outputTokensDetails
54- ? [ input . outputTokensDetails ]
65+ const outputTokensDetails =
66+ input ?. outputTokensDetails ?? input ?. output_tokens_details ;
67+ this . outputTokensDetails = outputTokensDetails
68+ ? [ outputTokensDetails as Record < string , number > ]
5569 : [ ] ;
5670 }
5771 }
0 commit comments