MCPcopy Create free account
hub / github.com/Noumena-Network/code / updateUsage

Function updateUsage

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

Source from the content-addressed store, hash-verified

2949 * We only update these fields if they have a non-null, non-zero value.
2950 */
2951export function updateUsage(
2952 usage: Readonly<NonNullableUsage>,
2953 partUsage: BetaMessageDeltaUsage | undefined,
2954): NonNullableUsage {
2955 if (!partUsage) {
2956 return { ...usage }
2957 }
2958 return {
2959 input_tokens:
2960 partUsage.input_tokens !== null && partUsage.input_tokens > 0
2961 ? partUsage.input_tokens
2962 : usage.input_tokens,
2963 cache_creation_input_tokens:
2964 partUsage.cache_creation_input_tokens !== null &&
2965 partUsage.cache_creation_input_tokens > 0
2966 ? partUsage.cache_creation_input_tokens
2967 : usage.cache_creation_input_tokens,
2968 cache_read_input_tokens:
2969 partUsage.cache_read_input_tokens !== null &&
2970 partUsage.cache_read_input_tokens > 0
2971 ? partUsage.cache_read_input_tokens
2972 : usage.cache_read_input_tokens,
2973 output_tokens: partUsage.output_tokens ?? usage.output_tokens,
2974 server_tool_use: {
2975 web_search_requests:
2976 partUsage.server_tool_use?.web_search_requests ??
2977 usage.server_tool_use.web_search_requests,
2978 web_fetch_requests:
2979 partUsage.server_tool_use?.web_fetch_requests ??
2980 usage.server_tool_use.web_fetch_requests,
2981 },
2982 service_tier: usage.service_tier,
2983 cache_creation: {
2984 // SDK type BetaMessageDeltaUsage is missing cache_creation, but it's real!
2985 ephemeral_1h_input_tokens:
2986 (partUsage as BetaUsage).cache_creation?.ephemeral_1h_input_tokens ??
2987 usage.cache_creation.ephemeral_1h_input_tokens,
2988 ephemeral_5m_input_tokens:
2989 (partUsage as BetaUsage).cache_creation?.ephemeral_5m_input_tokens ??
2990 usage.cache_creation.ephemeral_5m_input_tokens,
2991 },
2992 // cache_deleted_input_tokens: returned by the API when cache editing
2993 // deletes KV cache content, but not in SDK types. Kept off NonNullableUsage
2994 // so the string is eliminated from external builds by dead code elimination.
2995 // Uses the same > 0 guard as other token fields to prevent message_delta
2996 // from overwriting the real value with 0.
2997 ...(feature('CACHED_MICROCOMPACT')
2998 ? {
2999 cache_deleted_input_tokens:
3000 (partUsage as unknown as { cache_deleted_input_tokens?: number })
3001 .cache_deleted_input_tokens != null &&
3002 (partUsage as unknown as { cache_deleted_input_tokens: number })
3003 .cache_deleted_input_tokens > 0
3004 ? (partUsage as unknown as { cache_deleted_input_tokens: number })
3005 .cache_deleted_input_tokens
3006 : ((usage as unknown as { cache_deleted_input_tokens?: number })
3007 .cache_deleted_input_tokens ?? 0),
3008 }

Callers 3

submitMessageMethod · 0.85
runForkedAgentFunction · 0.85
queryModelFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected