/ src / utils / unaryLogging.ts
unaryLogging.ts
 1  import {
 2    type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
 3    logEvent,
 4  } from 'src/services/analytics/index.js'
 5  
 6  export type CompletionType =
 7    | 'str_replace_single'
 8    | 'str_replace_multi'
 9    | 'write_file_single'
10    | 'tool_use_single'
11  
12  type LogEvent = {
13    completion_type: CompletionType
14    event: 'accept' | 'reject' | 'response'
15    metadata: {
16      language_name: string | Promise<string>
17      message_id: string
18      platform: string
19      hasFeedback?: boolean
20    }
21  }
22  
23  export async function logUnaryEvent(event: LogEvent): Promise<void> {
24    logEvent('tengu_unary_event', {
25      event:
26        event.event as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
27      completion_type:
28        event.completion_type as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
29      language_name: (await event.metadata
30        .language_name) as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
31      message_id: event.metadata
32        .message_id as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
33      platform: event.metadata
34        .platform as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
35      ...(event.metadata.hasFeedback !== undefined && {
36        hasFeedback: event.metadata.hasFeedback,
37      }),
38    })
39  }