MCPcopy Index your code
hub / github.com/codeaashu/claude-code / updateUsage

Function updateUsage

src/services/api/claude.ts:2924–2987  ·  view source on GitHub ↗
(
  usage: Readonly<NonNullableUsage>,
  partUsage: BetaMessageDeltaUsage | undefined,
)

Source from the content-addressed store, hash-verified

2922 * We only update these fields if they have a non-null, non-zero value.
2923 */
2924export function updateUsage(
2925 usage: Readonly<NonNullableUsage>,
2926 partUsage: BetaMessageDeltaUsage | undefined,
2927): NonNullableUsage {
2928 if (!partUsage) {
2929 return { ...usage }
2930 }
2931 return {
2932 input_tokens:
2933 partUsage.input_tokens !== null && partUsage.input_tokens > 0
2934 ? partUsage.input_tokens
2935 : usage.input_tokens,
2936 cache_creation_input_tokens:
2937 partUsage.cache_creation_input_tokens !== null &&
2938 partUsage.cache_creation_input_tokens > 0
2939 ? partUsage.cache_creation_input_tokens
2940 : usage.cache_creation_input_tokens,
2941 cache_read_input_tokens:
2942 partUsage.cache_read_input_tokens !== null &&
2943 partUsage.cache_read_input_tokens > 0
2944 ? partUsage.cache_read_input_tokens
2945 : usage.cache_read_input_tokens,
2946 output_tokens: partUsage.output_tokens ?? usage.output_tokens,
2947 server_tool_use: {
2948 web_search_requests:
2949 partUsage.server_tool_use?.web_search_requests ??
2950 usage.server_tool_use.web_search_requests,
2951 web_fetch_requests:
2952 partUsage.server_tool_use?.web_fetch_requests ??
2953 usage.server_tool_use.web_fetch_requests,
2954 },
2955 service_tier: usage.service_tier,
2956 cache_creation: {
2957 // SDK type BetaMessageDeltaUsage is missing cache_creation, but it's real!
2958 ephemeral_1h_input_tokens:
2959 (partUsage as BetaUsage).cache_creation?.ephemeral_1h_input_tokens ??
2960 usage.cache_creation.ephemeral_1h_input_tokens,
2961 ephemeral_5m_input_tokens:
2962 (partUsage as BetaUsage).cache_creation?.ephemeral_5m_input_tokens ??
2963 usage.cache_creation.ephemeral_5m_input_tokens,
2964 },
2965 // cache_deleted_input_tokens: returned by the API when cache editing
2966 // deletes KV cache content, but not in SDK types. Kept off NonNullableUsage
2967 // so the string is eliminated from external builds by dead code elimination.
2968 // Uses the same > 0 guard as other token fields to prevent message_delta
2969 // from overwriting the real value with 0.
2970 ...(feature('CACHED_MICROCOMPACT')
2971 ? {
2972 cache_deleted_input_tokens:
2973 (partUsage as unknown as { cache_deleted_input_tokens?: number })
2974 .cache_deleted_input_tokens != null &&
2975 (partUsage as unknown as { cache_deleted_input_tokens: number })
2976 .cache_deleted_input_tokens > 0
2977 ? (partUsage as unknown as { cache_deleted_input_tokens: number })
2978 .cache_deleted_input_tokens
2979 : ((usage as unknown as { cache_deleted_input_tokens?: number })
2980 .cache_deleted_input_tokens ?? 0),
2981 }

Callers 3

submitMessageMethod · 0.85
runForkedAgentFunction · 0.85
queryModelFunction · 0.85

Calls 1

featureFunction · 0.85

Tested by

no test coverage detected