* 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 }
})
| 629 | * Logs the tengu_fork_agent_query event with full NonNullableUsage fields. |
| 630 | */ |
| 631 | function logForkAgentQueryEvent({ |
| 632 | forkLabel, |
| 633 | querySource, |
| 634 | durationMs, |
| 635 | messageCount, |
| 636 | totalUsage, |
| 637 | queryTracking, |
| 638 | }: { |
| 639 | forkLabel: string |
| 640 | querySource: QuerySource |
| 641 | durationMs: number |
| 642 | messageCount: number |
| 643 | totalUsage: NonNullableUsage |
| 644 | queryTracking?: { chainId: string; depth: number } |
| 645 | }): void { |
| 646 | // Calculate cache hit rate |
| 647 | const totalInputTokens = |
| 648 | totalUsage.input_tokens + |
| 649 | totalUsage.cache_creation_input_tokens + |
| 650 | totalUsage.cache_read_input_tokens |
| 651 | const cacheHitRate = |
| 652 | totalInputTokens > 0 |
| 653 | ? totalUsage.cache_read_input_tokens / totalInputTokens |
| 654 | : 0 |
| 655 | |
| 656 | logEvent('tengu_fork_agent_query', { |
| 657 | // Metadata |
| 658 | forkLabel: |
| 659 | forkLabel as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, |
| 660 | querySource: |
| 661 | querySource as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, |
| 662 | durationMs, |
| 663 | messageCount, |
| 664 | |
| 665 | // NonNullableUsage fields |
| 666 | inputTokens: totalUsage.input_tokens, |
| 667 | outputTokens: totalUsage.output_tokens, |
| 668 | cacheReadInputTokens: totalUsage.cache_read_input_tokens, |
| 669 | cacheCreationInputTokens: totalUsage.cache_creation_input_tokens, |
| 670 | serviceTier: |
| 671 | totalUsage.service_tier as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, |
| 672 | cacheCreationEphemeral1hTokens: |
| 673 | totalUsage.cache_creation.ephemeral_1h_input_tokens, |
| 674 | cacheCreationEphemeral5mTokens: |
| 675 | totalUsage.cache_creation.ephemeral_5m_input_tokens, |
| 676 | |
| 677 | // Derived metrics |
| 678 | cacheHitRate, |
| 679 | |
| 680 | // Query tracking |
| 681 | ...(queryTracking |
| 682 | ? { |
| 683 | queryChainId: |
| 684 | queryTracking.chainId as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS, |
| 685 | queryDepth: queryTracking.depth, |
| 686 | } |
| 687 | : {}), |
| 688 | }) |
no test coverage detected