unaryLogging.ts 1.2 KB

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