| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 | import type { Viewport } from 'reactflow'import type { VisionFile } from '@/types/app'import type {  Edge,  Node,} from '@/app/components/workflow/types'import type { Metadata } from '@/app/components/base/chat/chat/type'// Log type contains key:string conversation_id:string created_at:string question:string answer:stringexport type Conversation = {  id: string  key: string  conversationId: string  question: string  answer: string  userRate: number  adminRate: number}export type ConversationListResponse = {  logs: Conversation[]}export const fetchLogs = (url: string) =>  fetch(url).then<ConversationListResponse>(r => r.json())export const CompletionParams = ['temperature', 'top_p', 'presence_penalty', 'max_token', 'stop', 'frequency_penalty'] as constexport type CompletionParamType = typeof CompletionParams[number]export type CompletionParamsType = {  max_tokens: number  temperature: number  top_p: number  stop: string[]  presence_penalty: number  frequency_penalty: number}export type LogModelConfig = {  name: string  provider: string  completion_params: CompletionParamsType}export type ModelConfigDetail = {  introduction: string  prompt_template: string  prompt_variables: Array<{    key: string    name: string    description: string    type: string | number    default: string    options: string[]  }>  completion_params: CompletionParamsType}export type LogAnnotation = {  id: string  content: string  account: {    id: string    name: string    email: string  }  created_at: number}export type Annotation = {  id: string  authorName: string  logAnnotation?: LogAnnotation  created_at?: number}export type MessageContent = {  id: string  conversation_id: string  query: string  inputs: Record<string, any>  message: { role: string; text: string; files?: VisionFile[] }[]  message_tokens: number  answer_tokens: number  answer: string  provider_response_latency: number  created_at: number  annotation: LogAnnotation  annotation_hit_history: {    annotation_id: string    annotation_create_account: {      id: string      name: string      email: string    }    created_at: number  }  feedbacks: Array<{    rating: 'like' | 'dislike' | null    content: string | null    from_source?: 'admin' | 'user'    from_end_user_id?: string  }>  message_files: VisionFile[]  metadata: Metadata  agent_thoughts: any[] // TODO  workflow_run_id: string  parent_message_id: string | null}export type CompletionConversationGeneralDetail = {  id: string  status: 'normal' | 'finished'  from_source: 'api' | 'console'  from_end_user_id: string  from_end_user_session_id: string  from_account_id: string  read_at: Date  created_at: number  updated_at: number  annotation: Annotation  user_feedback_stats: {    like: number    dislike: number  }  admin_feedback_stats: {    like: number    dislike: number  }  model_config: {    provider: string    model_id: string    configs: Pick<ModelConfigDetail, 'prompt_template'>  }  message: Pick<MessageContent, 'inputs' | 'query' | 'answer' | 'message'>}export type CompletionConversationFullDetailResponse = {  id: string  status: 'normal' | 'finished'  from_source: 'api' | 'console'  from_end_user_id: string  from_account_id: string  // read_at: Date  created_at: number  model_config: {    provider: string    model_id: string    configs: ModelConfigDetail  }  message: MessageContent}export type CompletionConversationsResponse = {  data: Array<CompletionConversationGeneralDetail>  has_more: boolean  limit: number  total: number  page: number}export type CompletionConversationsRequest = {  keyword: string  start: string  end: string  annotation_status: string  page: number  limit: number // The default value is 20 and the range is 1-100}export type ChatConversationGeneralDetail = Omit<CompletionConversationGeneralDetail, 'message' | 'annotation'> & {  summary: string  message_count: number  annotated: boolean}export type ChatConversationsResponse = {  data: Array<ChatConversationGeneralDetail>  has_more: boolean  limit: number  total: number  page: number}export type ChatConversationsRequest = CompletionConversationsRequest & { message_count: number }export type ChatConversationFullDetailResponse = Omit<CompletionConversationGeneralDetail, 'message' | 'model_config'> & {  message_count: number  model_config: {    provider: string    model_id: string    configs: ModelConfigDetail    model: LogModelConfig  }}export type ChatMessagesRequest = {  conversation_id: string  first_id?: string  limit: number}export type ChatMessage = MessageContentexport type ChatMessagesResponse = {  data: Array<ChatMessage>  has_more: boolean  limit: number}export const MessageRatings = ['like', 'dislike', null] as constexport type MessageRating = typeof MessageRatings[number]export type LogMessageFeedbacksRequest = {  message_id: string  rating: MessageRating  content?: string}export type LogMessageFeedbacksResponse = {  result: 'success' | 'error'}export type LogMessageAnnotationsRequest = Omit<LogMessageFeedbacksRequest, 'rating'>export type LogMessageAnnotationsResponse = LogMessageFeedbacksResponseexport type AnnotationsCountResponse = {  count: number}export type WorkflowRunDetail = {  id: string  version: string  status: 'running' | 'succeeded' | 'failed' | 'stopped'  error?: string  elapsed_time: number  total_tokens: number  total_price: number  currency: string  total_steps: number  finished_at: number}export type AccountInfo = {  id: string  name: string  email: string}export type EndUserInfo = {  id: string  type: 'browser' | 'service_api'  is_anonymous: boolean  session_id: string}export type WorkflowAppLogDetail = {  id: string  workflow_run: WorkflowRunDetail  created_from: 'service-api' | 'web-app' | 'explore'  created_by_role: 'account' | 'end_user'  created_by_account?: AccountInfo  created_by_end_user?: EndUserInfo  created_at: number  read_at?: number}export type WorkflowLogsResponse = {  data: Array<WorkflowAppLogDetail>  has_more: boolean  limit: number  total: number  page: number}export type WorkflowLogsRequest = {  keyword: string  status: string  page: number  limit: number // The default value is 20 and the range is 1-100}export type WorkflowRunDetailResponse = {  id: string  sequence_number: number  version: string  graph: {    nodes: Node[]    edges: Edge[]    viewport?: Viewport  }  inputs: string  status: 'running' | 'succeeded' | 'failed' | 'stopped'  outputs?: string  error?: string  elapsed_time?: number  total_tokens?: number  total_steps: number  created_by_role: 'account' | 'end_user'  created_by_account?: AccountInfo  created_by_end_user?: EndUserInfo  created_at: number  finished_at: number}export type AgentLogMeta = {  status: string  executor: string  start_time: string  elapsed_time: number  total_tokens: number  agent_mode: string  iterations: number  error?: string}export type ToolCall = {  status: string  error?: string | null  time_cost?: number  tool_icon: any  tool_input?: any  tool_output?: any  tool_name?: string  tool_label?: any  tool_parameters?: any}export type AgentIteration = {  created_at: string  files: string[]  thought: string  tokens: number  tool_calls: ToolCall[]  tool_raw: {    inputs: string    outputs: string  }}export type AgentLogFile = {  id: string  type: string  url: string  name: string  belongs_to: string}export type AgentLogDetailRequest = {  conversation_id: string  message_id: string}export type AgentLogDetailResponse = {  meta: AgentLogMeta  iterations: AgentIteration[]  files: AgentLogFile[]}
 |