{"version":3,"file":"index-Ddza-lgc.mjs","sources":["../src/services/createConnversation/createConversation.ts","../src/queries/useCreateConversation/useCreateConversation.ts","../src/components/ConversationAnalytic/utils.ts","../src/components/ConversationAnalytic/hooks/useAllowSendMsg.ts","../src/components/ConversationAnalytic/hooks/useCreateConversation.ts","../src/components/ConversationAnalytic/components/Home/Home.tsx"],"sourcesContent":["import { ENTITY_STATUS } from '@antscorp/antsomi-constants';\nimport type { AuthInfo, Conversation, Message } from '@/types';\nimport { antsomiAIAPI } from '../instances';\n\ntype Params = {\n\tauth: AuthInfo;\n\tcreateData: {\n\t\tinitialMessage: Omit<Message, 'conversationId'>;\n\t};\n};\n\nexport type RequestBody = {\n\tmessages: { role: string; content: string }[];\n};\n\nexport type ResponseData = {\n\tdata: {\n\t\tconversation_id: string;\n\t\ttitle: string;\n\t};\n};\n\nexport const createConversation = async (params: Params): Promise<Conversation> => {\n\tconst { auth, createData } = params;\n\n\tconst { initialMessage } = createData;\n\n\tconst messageContent = initialMessage.content;\n\n\tif (messageContent?.type !== 'text') {\n\t\tthrow new Error('Initial messasge should be type text');\n\t}\n\n\tconst { data } = await antsomiAIAPI.instance.post<RequestBody, { data: ResponseData }>(\n\t\t'/api/v1/conversation',\n\t\t{\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\trole: initialMessage.sender,\n\t\t\t\t\tcontent: messageContent.text,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tparams: { auth },\n\t\t},\n\t);\n\n\tconst conversation: Conversation = {\n\t\tid: data.data.conversation_id,\n\t\tname: data.data.title,\n\t\tcreatedAt: new Date(),\n\t\tupdatedAt: new Date(),\n\t\tstatus: ENTITY_STATUS.ENABLED,\n\t\tmessages: [],\n\t};\n\n\treturn conversation;\n};\n","import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { QUERY_KEY } from '@/constants';\nimport { createConversation } from '@/services';\nimport type { AuthInfo, Conversation, Message } from '@/types';\nimport { UseCreateMessage } from '../useCreateMessage';\n\ntype Params = {\n\tauth: AuthInfo;\n\tonSuccess?: (newConversation: Conversation) => void;\n};\n\nexport const UseCreateConversation = {\n\tmutate: (params: Params) => {\n\t\tconst { auth, onSuccess } = params;\n\n\t\tconst queryClient = useQueryClient();\n\n\t\tconst { sendAsync: sendMessageAsync } = UseCreateMessage.mutate({\n\t\t\tauth,\n\t\t});\n\n\t\tconst { mutate: create, isLoading } = useMutation({\n\t\t\tmutationFn: async (params: {\n\t\t\t\tinitialMessage: Message;\n\t\t\t\tonInitialized?: (id: Conversation['id']) => void;\n\t\t\t}) => {\n\t\t\t\tconst { initialMessage, onInitialized } = params;\n\n\t\t\t\tconst createResult = await createConversation({\n\t\t\t\t\tauth,\n\t\t\t\t\tcreateData: {\n\t\t\t\t\t\tinitialMessage,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tpredicate: (query) => {\n\t\t\t\t\t\treturn query.queryKey.at(0) === QUERY_KEY.getConversationHistories;\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tonInitialized?.(createResult.id);\n\n\t\t\t\tawait sendMessageAsync({\n\t\t\t\t\tmessages: [{ ...initialMessage, conversationId: createResult.id }],\n\t\t\t\t});\n\n\t\t\t\treturn createResult;\n\t\t\t},\n\t\t\tonSuccess: (conversation) => {\n\t\t\t\tonSuccess?.(conversation);\n\t\t\t},\n\t\t});\n\n\t\treturn { create, isCreating: isLoading };\n\t},\n};\n","import { ANTSOMI_AI_AGENT_ID } from '@/constants';\nimport type { HomeDrawerState } from './types';\n\nexport const checkAllowSendMessage = (homeState: HomeDrawerState) => {\n\tconst { actAgentId } = homeState;\n\n\tconst noDatasouce = actAgentId === ANTSOMI_AI_AGENT_ID.chart && !homeState.dataSourceId;\n\n\treturn !noDatasouce;\n};\n","import { checkAllowSendMessage } from '../utils';\nimport { useCAStore } from './useCAStore';\n\nexport const useAllowSendMsg = () => {\n\tconst homeState = useCAStore((s) => s.home);\n\tconst isInitializingConversation = useCAStore((s) => s.conversation.isInitializing);\n\n\tconst isAllowSend = !isInitializingConversation && checkAllowSendMessage(homeState);\n\n\treturn { isAllowSend };\n};\n","import { ANTSOMI_AI_AGENT_ID } from '@/constants';\nimport { useAuthContext } from '@/hooks';\nimport { UseCreateConversation } from '@/queries';\nimport type { Message } from '@/types';\nimport { Utils } from '@/utils';\nimport { useAllowSendMsg } from './useAllowSendMsg';\nimport { useCAStore } from './useCAStore';\n\nexport const useCreateConversation = () => {\n\tconst auth = useAuthContext();\n\n\tconst homeState = useCAStore((store) => store.home);\n\n\tconst updateConversationState = useCAStore((store) => store.updateConversation);\n\n\tconst { create: createConversation, isCreating } = UseCreateConversation.mutate({\n\t\tauth,\n\t\tonSuccess: (newConversation) => {\n\t\t\tupdateConversationState({\n\t\t\t\tid: newConversation.id,\n\t\t\t\tisInitializing: false,\n\t\t\t\ttemporaryMessages: [],\n\t\t\t});\n\t\t},\n\t});\n\n\tconst { isAllowSend } = useAllowSendMsg();\n\n\tconst { actAgentId } = homeState;\n\n\tconst handleCreate = (questionTxt: string | { text: string }) => {\n\t\tif (!isAllowSend) {\n\t\t\treturn;\n\t\t}\n\n\t\tupdateConversationState({\n\t\t\tid: null,\n\t\t\tisInitializing: true,\n\t\t});\n\n\t\tconst msgText = typeof questionTxt === 'string' ? questionTxt : questionTxt.text;\n\n\t\tconst tempConversation = Utils.conversation.make();\n\n\t\tconst initialMessage: Message = Utils.message.make({\n\t\t\tagentId: actAgentId,\n\t\t\tisTemp: true,\n\t\t\tconversationId: tempConversation.id,\n\t\t\tcontent: {\n\t\t\t\ttype: 'text',\n\t\t\t\ttext: msgText,\n\t\t\t},\n\n\t\t\t...(actAgentId === ANTSOMI_AI_AGENT_ID.chart && {\n\t\t\t\tdataSourceId: homeState.dataSourceId,\n\t\t\t}),\n\t\t});\n\n\t\tcreateConversation({ initialMessage });\n\t};\n\n\treturn { create: handleCreate, isCreating };\n};\n","import { Text } from '@antscorp/antsomi-ui';\nimport { AntsomiAIIcon } from '@antscorp/antsomi-ui/es/components/icons';\nimport { produce } from 'immer';\nimport { useRef } from 'react';\nimport { ChatInput } from '@/components/ChatInput';\nimport type { DatasourceSelectRef } from '@/components/DatasourceSelect';\nimport { DatasourceSelect } from '@/components/DatasourceSelect';\nimport { ANTSOMI_AI_AGENT_ID } from '@/constants';\nimport type { AgentId } from '@/types';\nimport { useAllowSendMsg, useCAStore, useCreateConversation } from '../../hooks';\nimport styles from '../../styles.module.css';\nimport { PromptList } from '../PromptList';\n\nfunction Home() {\n\tconst homeState = useCAStore((s) => s.home);\n\tconst isInitializing = useCAStore((s) => s.conversation.isInitializing);\n\n\tconst updateHomeState = useCAStore((s) => s.updateHome);\n\n\tconst { actAgentId } = homeState;\n\n\tconst { create: createConversation } = useCreateConversation();\n\n\tconst { isAllowSend } = useAllowSendMsg();\n\n\tconst dsSelectRef = useRef<DatasourceSelectRef>(null);\n\n\tconst handleSelectAgent = (agentId: AgentId) => {\n\t\tconst newHomeState = produce(homeState, (draft) => {\n\t\t\tif (agentId === actAgentId) {\n\t\t\t\tdraft.actAgentId = ANTSOMI_AI_AGENT_ID.general;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (agentId) {\n\t\t\t\tcase ANTSOMI_AI_AGENT_ID.chart: {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...homeState,\n\t\t\t\t\t\tactAgentId: ANTSOMI_AI_AGENT_ID.chart,\n\t\t\t\t\t\tdataSourceId: undefined,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tdraft.actAgentId = agentId;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tupdateHomeState(newHomeState);\n\t};\n\n\treturn (\n\t\t<div className={styles.home}>\n\t\t\t<div className={styles['home-content']}>\n\t\t\t\t<AntsomiAIIcon className={styles['ai-icon']} width={60} height={60} />\n\n\t\t\t\t<Text className={styles['home-title']}>What can I help with?</Text>\n\n\t\t\t\t<ChatInput\n\t\t\t\t\tdisabled={!isAllowSend}\n\t\t\t\t\tisLoading={isInitializing}\n\t\t\t\t\tslotStart={\n\t\t\t\t\t\tactAgentId === ANTSOMI_AI_AGENT_ID.chart ? (\n\t\t\t\t\t\t\t<DatasourceSelect\n\t\t\t\t\t\t\t\tref={dsSelectRef}\n\t\t\t\t\t\t\t\tplacement=\"rightBottom\"\n\t\t\t\t\t\t\t\tselected={homeState.dataSourceId}\n\t\t\t\t\t\t\t\tonSelect={(id) => {\n\t\t\t\t\t\t\t\t\tupdateHomeState(\n\t\t\t\t\t\t\t\t\t\tproduce(homeState, (draft) => {\n\t\t\t\t\t\t\t\t\t\t\tdraft.dataSourceId = id;\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\tdsSelectRef.current?.toggle();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null\n\t\t\t\t\t}\n\t\t\t\t\tonSubmit={createConversation}\n\t\t\t\t/>\n\n\t\t\t\t<PromptList selected={actAgentId} onClickTag={handleSelectAgent} />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default Home;\n"],"names":["createConversation","params","auth","createData","initialMessage","messageContent","data","antsomiAIAPI","ENTITY_STATUS","UseCreateConversation","onSuccess","queryClient","useQueryClient","sendMessageAsync","UseCreateMessage","create","isLoading","useMutation","onInitialized","createResult","query","QUERY_KEY","conversation","checkAllowSendMessage","homeState","actAgentId","ANTSOMI_AI_AGENT_ID","useAllowSendMsg","useCAStore","s","useCreateConversation","useAuthContext","store","updateConversationState","isCreating","newConversation","isAllowSend","questionTxt","msgText","tempConversation","Utils","Home","isInitializing","updateHomeState","dsSelectRef","useRef","handleSelectAgent","agentId","newHomeState","produce","draft","styles","AntsomiAIIcon","Text","ChatInput","DatasourceSelect","id","PromptList"],"mappings":"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"}