* Logs the tengu_fork_agent_query event with full NonNullableUsage fields.
({
forkLabel,
querySource,
durationMs,
messageCount,
totalUsage,
queryTracking,
}: {
forkLabel: string
querySource: QuerySource
durationMs: number
messageCount: number
totalUsage: NonNullableUsage
queryTracking?: { chainId: string; depth: number }
})
| 653 | * Logs the tengu_fork_agent_query event with full NonNullableUsage fields. |
| 654 | */ |
| 655 | function logForkAgentQueryEvent({ |
| 656 | forkLabel, |
| 657 | querySource, |
| 658 | durationMs, |
| 659 | messageCount, |
| 660 | totalUsage, |
| 661 | queryTracking, |
| 662 | }: { |
| 663 | forkLabel: string |
| 664 | querySource: QuerySource |
| 665 | durationMs: number |
| 666 | messageCount: number |
| 667 | totalUsage: NonNullableUsage |
| 668 | queryTracking?: { chainId: string; depth: number } |
| 669 | }): void { |
| 670 | // Calculate cache hit rate |
| 671 | const totalInputTokens = |
| 672 | totalUsage.input_tokens + |
| 673 | totalUsage.cache_creation_input_tokens + |
| 674 | totalUsage.cache_read_input_tokens |
| 675 | const cacheHitRate = |
| 676 | totalInputTokens > 0 |
| 677 | ? totalUsage.cache_read_input_tokens / totalInputTokens |
| 678 | : 0 |
| 679 | |
| 680 | logEvent('tengu_fork_agent_query', { |
| 681 | // Metadata |
| 682 | forkLabel: |
| 683 | forkLabel as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, |
| 684 | querySource: |
| 685 | querySource as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, |
| 686 | durationMs, |
| 687 | messageCount, |
| 688 | |
| 689 | // NonNullableUsage fields |
| 690 | inputTokens: totalUsage.input_tokens, |
| 691 | outputTokens: totalUsage.output_tokens, |
| 692 | cacheReadInputTokens: totalUsage.cache_read_input_tokens, |
| 693 | cacheCreationInputTokens: totalUsage.cache_creation_input_tokens, |
| 694 | serviceTier: |
| 695 | totalUsage.service_tier as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, |
| 696 | cacheCreationEphemeral1hTokens: |
| 697 | totalUsage.cache_creation.ephemeral_1h_input_tokens, |
| 698 | cacheCreationEphemeral5mTokens: |
| 699 | totalUsage.cache_creation.ephemeral_5m_input_tokens, |
| 700 | |
| 701 | // Derived metrics |
| 702 | cacheHitRate, |
| 703 | |
| 704 | // Query tracking |
| 705 | ...(queryTracking |
| 706 | ? { |
| 707 | queryChainId: |
| 708 | queryTracking.chainId as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, |
| 709 | queryDepth: queryTracking.depth, |
| 710 | } |
| 711 | : {}), |
| 712 | }) |
no test coverage detected