{"version":3,"file":"index-C64kNXxs.mjs","sources":["../node_modules/es-toolkit/dist/predicate/isPrimitive.mjs","../node_modules/es-toolkit/dist/compat/_internal/getSymbols.mjs","../node_modules/es-toolkit/dist/object/cloneDeepWith.mjs","../node_modules/es-toolkit/dist/object/cloneDeep.mjs","../node_modules/es-toolkit/dist/object/pick.mjs","../src/services/getMessage/getMessage.ts","../src/services/updateMessage/updateMessage.ts","../src/queries/useGetMessage/useGetMessage.ts","../src/queries/useUpdateMessage/useUpdateMessage.ts","../node_modules/zustand/esm/vanilla/shallow.mjs","../node_modules/zustand/esm/react/shallow.mjs","../src/components/ConversationMessage/components/RequestDatasouce/RequestDatasource.tsx"],"sourcesContent":["function isPrimitive(value) {\n    return value == null || (typeof value !== 'object' && typeof value !== 'function');\n}\n\nexport { isPrimitive };\n","function getSymbols(object) {\n    return Object.getOwnPropertySymbols(object).filter(symbol => Object.prototype.propertyIsEnumerable.call(object, symbol));\n}\n\nexport { getSymbols };\n","import { getSymbols } from '../compat/_internal/getSymbols.mjs';\nimport { isPrimitive } from '../predicate/isPrimitive.mjs';\nimport { isTypedArray } from '../predicate/isTypedArray.mjs';\n\nfunction cloneDeepWith(obj, cloneValue) {\n    return cloneDeepWithImpl(obj, undefined, obj, new Map(), cloneValue);\n}\nfunction cloneDeepWithImpl(valueToClone, keyToClone, objectToClone, stack = new Map(), cloneValue = undefined) {\n    const cloned = cloneValue?.(valueToClone, keyToClone, objectToClone, stack);\n    if (cloned != null) {\n        return cloned;\n    }\n    if (isPrimitive(valueToClone)) {\n        return valueToClone;\n    }\n    if (stack.has(valueToClone)) {\n        return stack.get(valueToClone);\n    }\n    if (Array.isArray(valueToClone)) {\n        const result = new Array(valueToClone.length);\n        stack.set(valueToClone, result);\n        for (let i = 0; i < valueToClone.length; i++) {\n            result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue);\n        }\n        if (Object.hasOwn(valueToClone, 'index')) {\n            result.index = valueToClone.index;\n        }\n        if (Object.hasOwn(valueToClone, 'input')) {\n            result.input = valueToClone.input;\n        }\n        return result;\n    }\n    if (valueToClone instanceof Date) {\n        return new Date(valueToClone.getTime());\n    }\n    if (valueToClone instanceof RegExp) {\n        const result = new RegExp(valueToClone.source, valueToClone.flags);\n        result.lastIndex = valueToClone.lastIndex;\n        return result;\n    }\n    if (valueToClone instanceof Map) {\n        const result = new Map();\n        stack.set(valueToClone, result);\n        for (const [key, value] of valueToClone) {\n            result.set(key, cloneDeepWithImpl(value, key, objectToClone, stack, cloneValue));\n        }\n        return result;\n    }\n    if (valueToClone instanceof Set) {\n        const result = new Set();\n        stack.set(valueToClone, result);\n        for (const value of valueToClone) {\n            result.add(cloneDeepWithImpl(value, undefined, objectToClone, stack, cloneValue));\n        }\n        return result;\n    }\n    if (typeof Buffer !== 'undefined' && Buffer.isBuffer(valueToClone)) {\n        return valueToClone.subarray();\n    }\n    if (isTypedArray(valueToClone)) {\n        const result = new (Object.getPrototypeOf(valueToClone).constructor)(valueToClone.length);\n        stack.set(valueToClone, result);\n        for (let i = 0; i < valueToClone.length; i++) {\n            result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue);\n        }\n        return result;\n    }\n    if (valueToClone instanceof ArrayBuffer ||\n        (typeof SharedArrayBuffer !== 'undefined' && valueToClone instanceof SharedArrayBuffer)) {\n        return valueToClone.slice(0);\n    }\n    if (valueToClone instanceof DataView) {\n        const result = new DataView(valueToClone.buffer.slice(0), valueToClone.byteOffset, valueToClone.byteLength);\n        stack.set(valueToClone, result);\n        copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n        return result;\n    }\n    if (typeof File !== 'undefined' && valueToClone instanceof File) {\n        const result = new File([valueToClone], valueToClone.name, {\n            type: valueToClone.type,\n        });\n        stack.set(valueToClone, result);\n        copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n        return result;\n    }\n    if (valueToClone instanceof Blob) {\n        const result = new Blob([valueToClone], { type: valueToClone.type });\n        stack.set(valueToClone, result);\n        copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n        return result;\n    }\n    if (valueToClone instanceof Error) {\n        const result = new valueToClone.constructor();\n        stack.set(valueToClone, result);\n        result.message = valueToClone.message;\n        result.name = valueToClone.name;\n        result.stack = valueToClone.stack;\n        result.cause = valueToClone.cause;\n        copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n        return result;\n    }\n    if (typeof valueToClone === 'object' && valueToClone !== null) {\n        const result = Object.create(Object.getPrototypeOf(valueToClone));\n        stack.set(valueToClone, result);\n        copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n        return result;\n    }\n    return valueToClone;\n}\nfunction copyProperties(target, source, objectToClone = target, stack, cloneValue) {\n    const keys = [...Object.keys(source), ...getSymbols(source)];\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        const descriptor = Object.getOwnPropertyDescriptor(target, key);\n        if (descriptor == null || descriptor.writable) {\n            target[key] = cloneDeepWithImpl(source[key], key, objectToClone, stack, cloneValue);\n        }\n    }\n}\n\nexport { cloneDeepWith, cloneDeepWithImpl, copyProperties };\n","import { cloneDeepWithImpl } from './cloneDeepWith.mjs';\n\nfunction cloneDeep(obj) {\n    return cloneDeepWithImpl(obj, undefined, obj, new Map(), undefined);\n}\n\nexport { cloneDeep };\n","function pick(obj, keys) {\n    const result = {};\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        if (Object.hasOwn(obj, key)) {\n            result[key] = obj[key];\n        }\n    }\n    return result;\n}\n\nexport { pick };\n","import type { ApiMessage, AuthInfo, Message } from '@/types';\nimport { Utils } from '@/utils';\nimport { antsomiAIAPI } from '../instances';\n\ntype Params = {\n\tauth: AuthInfo;\n\tmessageId: Message['id'];\n\tsignal?: AbortSignal;\n};\n\nexport type ReponseData = {\n\tcode: number;\n\tdata: ApiMessage;\n};\n\nexport const getMessage = async (params: Params) => {\n\tconst { messageId, auth, signal } = params;\n\n\tconst { data } = await antsomiAIAPI.instance.get<ReponseData>(`/api/v1/message/${messageId}`, {\n\t\tparams: { auth },\n\t\tsignal,\n\t});\n\n\tif (data.code !== 200) {\n\t\tthrow new Error('Get message fail');\n\t}\n\n\treturn Utils.message.parseApiMsg(data.data);\n};\n","import { pick } from 'es-toolkit';\nimport type { ApiMessage, AuthInfo } from '@/types';\nimport { antsomiAIAPI } from '../instances';\n\ntype Params = {\n\tmessage: ApiMessage;\n\tauth: AuthInfo;\n\tsignal?: AbortSignal;\n};\n\nexport type RequestBody = ApiMessage;\n\nexport type ResponseData = {\n\tdata: {\n\t\tcode: number;\n\t\tdata: ApiMessage;\n\t};\n};\n\nexport const updateMesasge = async (params: Params) => {\n\tconst { message, auth, signal } = params;\n\n\tconst res = await antsomiAIAPI.instance.put<RequestBody, ResponseData>(\n\t\t`api/v1/message/${message.message_id}`,\n\t\t{\n\t\t\t...pick(message, ['properties', 'content']),\n\t\t},\n\t\t{\n\t\t\tsignal,\n\t\t\tparams: { auth },\n\t\t},\n\t);\n\n\tif (res.data.code !== 200) {\n\t\tthrow new Error(`Update Message Fail with code ${res.data.code}`);\n\t}\n\n\treturn res.data.data;\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { getMessage } from '@/services';\nimport type { AuthInfo, Message } from '@/types';\n\ntype Params = {\n\tauth: AuthInfo;\n\tmessageId?: Message['id'];\n\tenabled?: boolean;\n};\n\nexport const UseGetMessage = {\n\tmakeQueryKey: (params: { auth: AuthInfo; messageId: Message['id'] }) => ['GET_MESSAGE', params],\n\n\tquery: (params: Params) => {\n\t\tconst { auth, messageId = '', enabled = true } = params;\n\n\t\tconst { data, isLoading, isFetching, error } = useQuery({\n\t\t\tqueryKey: UseGetMessage.makeQueryKey({ auth, messageId }),\n\t\t\tqueryFn: ({ signal }) => getMessage({ signal, auth, messageId }),\n\t\t\tenabled,\n\t\t});\n\n\t\treturn { message: data, isLoading, isFetching, error };\n\t},\n};\n","import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { updateMesasge } from '@/services';\nimport type { AuthInfo, Message } from '@/types';\nimport { Utils } from '@/utils';\nimport { UseGetConversation } from '../useGetConversation/useGetConversation';\nimport { UseGetMessage } from '../useGetMessage';\n\ntype Params = {\n\tauth: AuthInfo;\n};\n\nconst mutation = (params: Params) => {\n\tconst { auth } = params;\n\n\tconst queryClient = useQueryClient();\n\n\tconst {\n\t\tdata,\n\t\tisLoading,\n\t\tisError,\n\t\tmutateAsync: updateAsync,\n\t\tmutate: update,\n\t} = useMutation({\n\t\tmutationFn: async ({ message }: { message: Message }) =>\n\t\t\tupdateMesasge({\n\t\t\t\tauth,\n\t\t\t\tmessage: await Utils.message.toApiMsg(message, {\n\t\t\t\t\tqueryClient,\n\t\t\t\t\tauth,\n\t\t\t\t}),\n\t\t\t}),\n\n\t\tonSuccess: ({ message_id, conversation_id }) => {\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: UseGetConversation.makeQueryKey({ auth, id: conversation_id }),\n\t\t\t});\n\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: UseGetMessage.makeQueryKey({ auth, messageId: message_id }),\n\t\t\t});\n\t\t},\n\t});\n\n\treturn { data, isLoading, isError, updateAsync, update };\n};\n\nexport const UseUpdateMessage = {\n\tmutation,\n};\n","const isIterable = (obj) => Symbol.iterator in obj;\nconst hasIterableEntries = (value) => (\n  // HACK: avoid checking entries type\n  \"entries\" in value\n);\nconst compareEntries = (valueA, valueB) => {\n  const mapA = valueA instanceof Map ? valueA : new Map(valueA.entries());\n  const mapB = valueB instanceof Map ? valueB : new Map(valueB.entries());\n  if (mapA.size !== mapB.size) {\n    return false;\n  }\n  for (const [key, value] of mapA) {\n    if (!mapB.has(key) || !Object.is(value, mapB.get(key))) {\n      return false;\n    }\n  }\n  return true;\n};\nconst compareIterables = (valueA, valueB) => {\n  const iteratorA = valueA[Symbol.iterator]();\n  const iteratorB = valueB[Symbol.iterator]();\n  let nextA = iteratorA.next();\n  let nextB = iteratorB.next();\n  while (!nextA.done && !nextB.done) {\n    if (!Object.is(nextA.value, nextB.value)) {\n      return false;\n    }\n    nextA = iteratorA.next();\n    nextB = iteratorB.next();\n  }\n  return !!nextA.done && !!nextB.done;\n};\nfunction shallow(valueA, valueB) {\n  if (Object.is(valueA, valueB)) {\n    return true;\n  }\n  if (typeof valueA !== \"object\" || valueA === null || typeof valueB !== \"object\" || valueB === null) {\n    return false;\n  }\n  if (Object.getPrototypeOf(valueA) !== Object.getPrototypeOf(valueB)) {\n    return false;\n  }\n  if (isIterable(valueA) && isIterable(valueB)) {\n    if (hasIterableEntries(valueA) && hasIterableEntries(valueB)) {\n      return compareEntries(valueA, valueB);\n    }\n    return compareIterables(valueA, valueB);\n  }\n  return compareEntries(\n    { entries: () => Object.entries(valueA) },\n    { entries: () => Object.entries(valueB) }\n  );\n}\n\nexport { shallow };\n","import React from 'react';\nimport { shallow } from 'zustand/vanilla/shallow';\n\nfunction useShallow(selector) {\n  const prev = React.useRef(void 0);\n  return (state) => {\n    const next = selector(state);\n    return shallow(prev.current, next) ? prev.current : prev.current = next;\n  };\n}\n\nexport { useShallow };\n","import { Flex, Typography } from '@antscorp/antsomi-ui';\nimport { cloneDeep } from 'es-toolkit';\nimport { useRef } from 'react';\nimport { useShallow } from 'zustand/shallow';\nimport { DatasourceSelect, type DatasourceSelectRef } from '@/components/DatasourceSelect';\nimport { ANTSOMI_AI_AGENT_ID, MESSAGE_TYPE } from '@/constants';\nimport { useAuthContext } from '@/hooks';\nimport { useChatCompletion } from '@/hooks/useChatCompletion';\nimport { useDSIdsByConversation } from '@/hooks/useDSIdsByConversation';\nimport { UseGetMessage, UseUpdateMessage } from '@/queries';\nimport { Utils } from '@/utils';\nimport { useCMStore } from '../../hooks';\nimport type { ConversationMessageStore } from '../../types';\nimport styles from './styles.module.css';\n\nconst selectProps = (store: ConversationMessageStore) => {\n\tif (store.message.content.type === MESSAGE_TYPE.reqDatasource) {\n\t\tconst { conversationId, id: messageId } = store.message;\n\n\t\treturn {\n\t\t\tconversationId,\n\t\t\tshowSelect: !store.message.content.userSelected,\n\t\t\tmessageId,\n\t\t};\n\t}\n\n\treturn undefined;\n};\n\nexport const RequestDatasouce = () => {\n\tconst {\n\t\tconversationId,\n\t\tshowSelect = true,\n\t\tmessageId,\n\t} = useCMStore(useShallow(selectProps)) || {};\n\n\tconst ref = useRef<DatasourceSelectRef>(null);\n\n\tconst auth = useAuthContext();\n\n\tconst { sendMessage } = useChatCompletion({ conversationId });\n\n\tconst { message: reqDSMessage } = UseGetMessage.query({ auth, messageId });\n\n\tconst { updateAsync: updateMessageAsync } = UseUpdateMessage.mutation({ auth });\n\n\tconst { dataSourceIds: usedDataSouceIds } = useDSIdsByConversation({ conversationId });\n\n\tconst handleSelect = (dataSourceId: number) => {\n\t\tif (!conversationId) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newMessage = Utils.message.make({\n\t\t\tagentId: ANTSOMI_AI_AGENT_ID.chart,\n\t\t\tconversationId,\n\t\t\tdataSourceId,\n\t\t\tcontent: {\n\t\t\t\ttype: MESSAGE_TYPE.selectDatasource,\n\t\t\t\tdataSourceId,\n\t\t\t},\n\t\t});\n\n\t\tsendMessage(newMessage, {\n\t\t\t// After the \"select datasource\" message successfully sent.\n\t\t\t// we need to update the userSelected property in the provious \"request data source\" message.\n\t\t\tonSuccess: async ({ questionMsg }) => {\n\t\t\t\tnewMessage.id = questionMsg.id;\n\n\t\t\t\tif (!(messageId && reqDSMessage?.id === messageId)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst updatedReqtDSMsg = cloneDeep(reqDSMessage);\n\n\t\t\t\tif (updatedReqtDSMsg.content.type === MESSAGE_TYPE.reqDatasource) {\n\t\t\t\t\tupdatedReqtDSMsg.content.userSelected = true;\n\t\t\t\t}\n\n\t\t\t\tawait updateMessageAsync({ message: updatedReqtDSMsg });\n\t\t\t},\n\t\t});\n\n\t\tref.current?.toggle();\n\t};\n\n\treturn (\n\t\t<Flex gap={8} vertical={true} className={styles['request-datasouce-root']}>\n\t\t\t<Typography.Text>Please select a datasouce.</Typography.Text>\n\n\t\t\t{showSelect && (\n\t\t\t\t<DatasourceSelect\n\t\t\t\t\tusedIds={usedDataSouceIds}\n\t\t\t\t\tplacement=\"topLeft\"\n\t\t\t\t\tclassName={styles['ds-select']}\n\t\t\t\t\tref={ref}\n\t\t\t\t\tonSelect={handleSelect}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Flex>\n\t);\n};\n"],"names":["isPrimitive","value","getSymbols","object","symbol","cloneDeepWithImpl","valueToClone","keyToClone","objectToClone","stack","cloneValue","cloned","result","i","key","isTypedArray","copyProperties","target","source","keys","descriptor","cloneDeep","obj","pick","getMessage","params","messageId","auth","signal","data","antsomiAIAPI","Utils","updateMesasge","message","res","UseGetMessage","enabled","isLoading","isFetching","error","useQuery","mutation","queryClient","useQueryClient","isError","updateAsync","update","useMutation","message_id","conversation_id","UseGetConversation","UseUpdateMessage","isIterable","hasIterableEntries","compareEntries","valueA","valueB","mapA","mapB","compareIterables","iteratorA","iteratorB","nextA","nextB","shallow","useShallow","selector","prev","React","state","next","selectProps","store","MESSAGE_TYPE","conversationId","RequestDatasouce","showSelect","useCMStore","ref","useRef","useAuthContext","sendMessage","useChatCompletion","reqDSMessage","updateMessageAsync","usedDataSouceIds","useDSIdsByConversation","handleSelect","dataSourceId","newMessage","ANTSOMI_AI_AGENT_ID","questionMsg","updatedReqtDSMsg","Flex","styles","Typography","DatasourceSelect"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,9,10]}