| import { z } from 'zod';
|
| import { pageInfoSchema } from '@/gql/pagination';
|
| import { channelSchema } from '@/features/channels/data';
|
|
|
|
|
| export const usageLogSourceSchema = z.enum(['api', 'playground', 'test']);
|
| export type UsageLogSource = z.infer<typeof usageLogSourceSchema>;
|
|
|
| export const costItemSchema = z.object({
|
| itemCode: z.string(),
|
| quantity: z.number(),
|
| subtotal: z.number(),
|
| });
|
|
|
|
|
| export const usageLogSchema = z.object({
|
| id: z.string(),
|
| createdAt: z.coerce.date(),
|
| updatedAt: z.coerce.date(),
|
| requestID: z.string(),
|
| channel: channelSchema.partial().nullable().optional(),
|
| modelID: z.string(),
|
| promptTokens: z.number(),
|
| completionTokens: z.number(),
|
| totalTokens: z.number(),
|
| promptAudioTokens: z.number().nullable().optional(),
|
| promptCachedTokens: z.number().nullable().optional(),
|
| promptWriteCachedTokens: z.number().nullable().optional(),
|
| completionAudioTokens: z.number().nullable().optional(),
|
| completionReasoningTokens: z.number().nullable().optional(),
|
| completionAcceptedPredictionTokens: z.number().nullable().optional(),
|
| completionRejectedPredictionTokens: z.number().nullable().optional(),
|
| source: usageLogSourceSchema,
|
| format: z.string(),
|
| totalCost: z.number().nullable().optional(),
|
| costItems: z.array(costItemSchema).nullable().optional(),
|
| });
|
| export type UsageLog = z.infer<typeof usageLogSchema>;
|
|
|
|
|
| export const usageLogEdgeSchema = z.object({
|
| node: usageLogSchema,
|
| cursor: z.string(),
|
| });
|
|
|
| export const usageLogConnectionSchema = z.object({
|
| edges: z.array(usageLogEdgeSchema),
|
| pageInfo: pageInfoSchema,
|
| totalCount: z.number(),
|
| });
|
| export type UsageLogConnection = z.infer<typeof usageLogConnectionSchema>;
|
|
|
|
|
| export type UsageLogEdge = z.infer<typeof usageLogEdgeSchema>;
|
|
|
|
|
| export const usageLogListSchema = z.array(usageLogSchema);
|
| export type UsageLogList = z.infer<typeof usageLogListSchema>;
|
|
|