{"version":3,"file":"6131.a8a80c92.js","sources":["webpack://app/./src/services/queryClient.ts","webpack://app/./src/store/appSlice.ts","webpack://app/./src/store/conversationSlice.ts","webpack://app/./src/store/inlineChatSlice.tsx","webpack://app/./src/store/pageSlice.ts","webpack://app/./src/utils/fetchWrapper.ts","webpack://app/./src/utils/toast.tsx"],"sourcesContent":["import { createSyncStoragePersister } from '@tanstack/query-sync-storage-persister'\nimport { QueryClient } from '@tanstack/react-query'\nimport { removeOldestQuery } from '@tanstack/react-query-persist-client'\nimport throttle from 'lodash/throttle'\n\nexport interface CustomQueryMeta {\n  persist?: boolean\n}\n\nexport const queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      refetchOnMount: true,\n      refetchOnReconnect: true,\n      refetchOnWindowFocus: true\n    }\n  }\n})\n\nexport const localStoragePersister = createSyncStoragePersister({\n  storage: window.localStorage,\n  retry: removeOldestQuery,\n  throttleTime: 100, // 100ms\n  serialize: (data: any) => {\n    data.clientState.queries = data.clientState.queries.filter(\n      (query: any) => (query.meta as CustomQueryMeta)?.persist !== false\n    )\n    return JSON.stringify(data)\n  }\n})\n\nexport class QueryKeys {\n  public static Sessions = ['Sessions']\n  public static User = ['User']\n  public static OrgUsers = ['OrgUsers']\n  public static Conversations = ['Conversations']\n  public static Organizations = ['Organizations']\n  public static Indexes = ['Indexes']\n  public static AgentStatus = ['AgentStatus']\n  public static AnnotationTasks = ['AnnotationTasks']\n  public static MfaCode = ['MfaCode']\n  public static InvitationLink = ['InvitationLink']\n  public static FlowNames = ['FlowNames']\n  public static OrgRepos = ['OrgRepos']\n  public static AccessLogs = ['AccessLogs']\n  public static SignupsCSV = ['SignupsCSV']\n  public static UserActivitiesCSV = ['UserActivitiesCSV']\n  public static CampaignAgentType = ['CampaignAgentType']\n  public static DomainList = ['DomainList']\n  public static EDITransactionCodes = ['EDITransactionCodes']\n  public static BillingInfo = ['BillingInfo']\n  public static DomainEmailList = ['DomainEmailList']\n  public static AdminWorkspaceList = ['AdminWorkspaceList']\n  public static AdminConversationList = ['AdminConversationList']\n}\n\nexport const throttedInvalidateConversations = throttle(() => {\n  return queryClient.invalidateQueries(\n    { queryKey: QueryKeys.Conversations },\n    { cancelRefetch: true }\n  )\n}, 500)\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\n\ntype SliceState = {\n  isAgentUnavailable: boolean\n}\n\nconst initialState: SliceState = { isAgentUnavailable: false }\n\nexport const appSlice = createSlice({\n  name: 'app',\n  initialState,\n  reducers: {\n    setIsAgentUnavailable: (state, action: PayloadAction<boolean>) => {\n      state.isAgentUnavailable = action.payload\n    }\n  }\n})\n\nexport const { setIsAgentUnavailable } = appSlice.actions\n\nexport default appSlice.reducer\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\n\ninterface InitialState {\n  titles: {\n    [key: string]: string\n  }\n}\n\nconst initialState: InitialState = { titles: {} }\n\nexport const conversationSlice = createSlice({\n  name: 'conversation',\n  initialState,\n  reducers: {\n    setConversationTitle: (\n      state: InitialState,\n      action: PayloadAction<{ uuid: string; title: string }>\n    ) => {\n      const { uuid, title } = action.payload\n      state.titles[uuid] = title\n    },\n    clearConversationTitles(state: InitialState) {\n      state.titles = {}\n    }\n  }\n})\n\nexport const { setConversationTitle, clearConversationTitles } = conversationSlice.actions\nexport default conversationSlice.reducer\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { serverSideProps } from '~/utils/ssr'\nimport { initialConversationUUID } from './utils'\n\ntype SliceState = {\n  messages: Record<string, Message[]>\n}\n\nfunction buildInitialState(): SliceState {\n  const uuid = initialConversationUUID()\n  return {\n    messages: { [uuid]: serverSideProps.inline_messages || [] }\n  }\n}\n\nconst inlineChatSlice = createSlice({\n  name: 'inlineChat',\n  initialState: buildInitialState(),\n  reducers: {\n    setInlineMessages(state, action: PayloadAction<{ uuid: string; messages: Message[] }>) {\n      const { uuid, messages } = action.payload\n      state.messages[uuid] = messages\n    },\n    appendInlineMessage(state, action: PayloadAction<{ uuid: string; message: Message }>) {\n      const { message, uuid } = action.payload\n      if (!state.messages[uuid]) {\n        state.messages[uuid] = []\n      }\n      state.messages[uuid].push(message)\n    },\n    updateLatestInlineMessage(state, action: PayloadAction<{ uuid: string; message: Message }>) {\n      const { uuid, message } = action.payload\n      const messages = state.messages[uuid] || []\n      const lastestMessage = messages[messages.length - 1]\n      if (lastestMessage) {\n        lastestMessage.role = message.role\n        lastestMessage.text = message.text\n        lastestMessage.blocks = message.blocks\n      }\n    },\n    popInlineMessages(state, action: PayloadAction<{ uuid: string; count: number | undefined }>) {\n      const { uuid, count = 1 } = action.payload\n      const messages = state.messages[uuid] || []\n      for (let i = 0; i < count; i++) {\n        messages.pop()\n      }\n    }\n  }\n})\n\nexport const {\n  appendInlineMessage,\n  updateLatestInlineMessage,\n  popInlineMessages,\n  setInlineMessages\n} = inlineChatSlice.actions\n\nexport default inlineChatSlice.reducer\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { RootState } from '.'\n\nexport enum PageType {\n  MainPage = 'mainpage',\n  Settings = 'setting'\n}\n\nconst initialState = {\n  page: PageType.MainPage,\n  anchor: ''\n}\n\nconst pageSlice = createSlice({\n  name: 'page',\n  initialState,\n  reducers: {\n    setAnchor(state, action: PayloadAction<string>) {\n      state.anchor = action.payload\n    },\n    changePage(state, action: PayloadAction<PageType>) {\n      state.page = action.payload\n    },\n    resetAnchor(state) {\n      state.anchor = ''\n    }\n  }\n})\n\nexport const { changePage, setAnchor, resetAnchor } = pageSlice.actions\nexport default pageSlice.reducer\n\nexport const selectPage = (state: RootState) => state.page.page\n","import debounce from 'lodash/debounce'\nimport { BetterToast } from './toast'\nimport { isProtectedAPIRoutePath } from './utils'\n\nconst redirectToLogin = debounce(() => {\n  BetterToast.error('Your session has expired. Please log in again.')\n  window.location.href = '/api/user/signout'\n}, 500)\n\nlet unauthorizedAttemptsCount = 0\nconst SESSION_EXPIRED_MAX_ALLOWED_ATTEMPTS = 3\n\nexport const fetchWrapper = async (url: string, options: RequestInit = {}): Promise<Response> => {\n  const response = await fetch(url, options)\n\n  if (isProtectedAPIRoutePath(url)) {\n    if (response.status === 403) {\n      unauthorizedAttemptsCount++\n      console.error('Unauthorized attempts count:', unauthorizedAttemptsCount)\n      if (unauthorizedAttemptsCount >= SESSION_EXPIRED_MAX_ALLOWED_ATTEMPTS) {\n        unauthorizedAttemptsCount = 0\n        redirectToLogin()\n        return response\n      }\n    } else if (response.status >= 200 && response.status < 300) {\n      if (unauthorizedAttemptsCount != 0) {\n        console.info(`Unauthorized attempts count reset from ${unauthorizedAttemptsCount} to 0`)\n      }\n\n      unauthorizedAttemptsCount = 0\n    }\n  }\n\n  return response\n}\n","import toast from 'react-hot-toast'\n\nexport enum ToastIds {\n  AgentUnavailable = 'agent-unavailable',\n  IndexingRepositories = 'indexing-repositories'\n}\n\ninterface ToastOptions {\n  message: string\n  id?: string\n  duration?: number\n  style?: Record<string, string>\n  iconTheme?: Record<string, string>\n  loading?: boolean\n}\n\ntype ToastData = {\n  toastId: string\n  timerId?: number\n}\n\nconst TOAST_STYLES = {\n  success: {\n    borderColor: 'rgb(34, 197, 94)',\n    backgroundColor: 'rgb(240, 253, 244)',\n    iconColor: 'rgb(34, 197, 94)',\n    title: 'Success'\n  },\n  error: {\n    borderColor: 'rgb(239, 68, 68)',\n    backgroundColor: 'rgb(254, 242, 242)',\n    iconColor: 'rgb(239, 68, 68)',\n    title: 'Error'\n  }\n} as const\n\nconst defaultToastStyle = {\n  maxWidth: '400px',\n  border: '1px solid',\n  borderRadius: '8px',\n  padding: '12px 16px',\n  display: 'flex',\n  flexDirection: 'column',\n  gap: '4px',\n  wordBreak: 'break-word'\n} as const\n\nexport class BetterToast {\n  private static _activeToasts = new Map<string, ToastData>()\n\n  private static _toast(type: 'success' | 'error' | 'loading', args: ToastOptions | string) {\n    let options: ToastOptions\n    if (typeof args === 'string') {\n      options = { message: args }\n    } else {\n      options = args\n    }\n\n    const { message, id, duration = 1500, style = {}, ...rest } = options\n    const idToUse = id || message + Date.now()\n\n    if (this._activeToasts.has(idToUse)) {\n      const { toastId, timerId } = this._activeToasts.get(idToUse) as ToastData\n      clearTimeout(timerId)\n      const newTimerId = this._setDismissTimer(idToUse, duration)\n      this._activeToasts.set(idToUse, { toastId, timerId: newTimerId })\n      return idToUse\n    }\n\n    const styleConfig = TOAST_STYLES[type === 'loading' ? 'error' : type]\n\n    const toastId = toast.custom(\n      t => (\n        <div\n          className={`${t.visible ? 'animate-enter' : 'animate-leave'}`}\n          style={{\n            ...defaultToastStyle,\n            borderColor: styleConfig.borderColor,\n            backgroundColor: styleConfig.backgroundColor,\n            ...style\n          }}\n        >\n          <div className='flex items-center gap-3'>\n            <div className='flex flex-col'>\n              <span className='text-sm'>{message}</span>\n            </div>\n          </div>\n        </div>\n      ),\n      {\n        duration: duration === Infinity ? Infinity : duration,\n        ...rest\n      } as any\n    )\n\n    const timerId = this._setDismissTimer(idToUse, duration)\n    this._activeToasts.set(idToUse, { toastId, timerId })\n    return idToUse\n  }\n\n  private static _setDismissTimer(id: string, duration: number) {\n    let timerId: number | undefined\n    if (duration !== Infinity) {\n      timerId = setTimeout(() => {\n        BetterToast.dismiss(id)\n      }, duration) as unknown as number\n    }\n    return timerId\n  }\n\n  public static success(options: ToastOptions | string) {\n    return this._toast('success', options)\n  }\n\n  public static error(options: ToastOptions | string) {\n    return this._toast('error', options)\n  }\n\n  public static stickyError(options: ToastOptions) {\n    return this._toast(options.loading ? 'loading' : 'error', {\n      ...options,\n      duration: Infinity\n    })\n  }\n\n  public static dismiss(id: string) {\n    if (this._activeToasts.has(id)) {\n      const { toastId, timerId } = this._activeToasts.get(id) as ToastData\n      clearTimeout(timerId)\n      toast.dismiss(toastId)\n      this._activeToasts.delete(id)\n    }\n  }\n}\n"],"names":["queryClient","QueryClient","localStoragePersister","createSyncStoragePersister","window","removeOldestQuery","data","query","JSON","QueryKeys","throttle","appSlice","createSlice","initialState","state","action","setIsAgentUnavailable","conversationSlice","uuid","title","setConversationTitle","clearConversationTitles","inlineChatSlice","initialConversationUUID","serverSideProps","messages","message","lastestMessage","count","i","appendInlineMessage","updateLatestInlineMessage","popInlineMessages","setInlineMessages","pageSlice","changePage","setAnchor","resetAnchor","redirectToLogin","debounce","BetterToast","unauthorizedAttemptsCount","fetchWrapper","url","options","response","fetch","isProtectedAPIRoutePath","console","TOAST_STYLES","defaultToastStyle","Map","type","args","id","duration","style","rest","idToUse","Date","toastId","timerId","clearTimeout","newTimerId","styleConfig","toast","t","Infinity","setTimeout"],"mappings":"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"}