@hkyhy/marsun-components-core 0.1.11 → 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/README.md +31 -6
  2. package/dist/components/AgentHub/Chat/Action/CreateButton.js +8 -0
  3. package/dist/components/AgentHub/Chat/Action/CreateButton.js.map +1 -0
  4. package/dist/components/AgentHub/Chat/Action/ManageActionButtons.js +20 -0
  5. package/dist/components/AgentHub/Chat/Action/ManageActionButtons.js.map +1 -0
  6. package/dist/components/AgentHub/Chat/Action/SessionActionButtons.js +24 -0
  7. package/dist/components/AgentHub/Chat/Action/SessionActionButtons.js.map +1 -0
  8. package/dist/components/AgentHub/Chat/Action/handlers.d.ts +0 -5
  9. package/dist/components/AgentHub/Chat/Detail/ChatInput/index.js +65 -0
  10. package/dist/components/AgentHub/Chat/Detail/ChatInput/index.js.map +1 -0
  11. package/dist/components/AgentHub/Chat/Detail/ChatInput/style.module.scss.js +12 -0
  12. package/dist/components/AgentHub/Chat/Detail/ChatInput/style.module.scss.js.map +1 -0
  13. package/dist/components/AgentHub/Chat/Detail/ChatPanel/index.d.ts +31 -0
  14. package/dist/components/AgentHub/Chat/Detail/ChatPanel/index.js +85 -0
  15. package/dist/components/AgentHub/Chat/Detail/ChatPanel/index.js.map +1 -0
  16. package/dist/components/AgentHub/Chat/Detail/ChatPanel/style.module.scss.js +14 -0
  17. package/dist/components/AgentHub/Chat/Detail/ChatPanel/style.module.scss.js.map +1 -0
  18. package/dist/components/AgentHub/Chat/Detail/ChatSuggestionRow/index.d.ts +9 -0
  19. package/dist/components/AgentHub/Chat/Detail/ChatSuggestionRow/index.js +22 -0
  20. package/dist/components/AgentHub/Chat/Detail/ChatSuggestionRow/index.js.map +1 -0
  21. package/dist/components/AgentHub/Chat/Detail/ChatSuggestionRow/style.module.scss.js +8 -0
  22. package/dist/components/AgentHub/Chat/Detail/ChatSuggestionRow/style.module.scss.js.map +1 -0
  23. package/dist/components/AgentHub/Chat/Detail/CitationContent/index.js +21 -0
  24. package/dist/components/AgentHub/Chat/Detail/CitationContent/index.js.map +1 -0
  25. package/dist/components/AgentHub/Chat/Detail/CitationContent/style.module.scss.js +8 -0
  26. package/dist/components/AgentHub/Chat/Detail/CitationContent/style.module.scss.js.map +1 -0
  27. package/dist/components/AgentHub/Chat/Detail/CitationInlineBadge/index.js +17 -0
  28. package/dist/components/AgentHub/Chat/Detail/CitationInlineBadge/index.js.map +1 -0
  29. package/dist/components/AgentHub/Chat/Detail/CitationInlineBadge/style.module.scss.js +7 -0
  30. package/dist/components/AgentHub/Chat/Detail/CitationInlineBadge/style.module.scss.js.map +1 -0
  31. package/dist/components/AgentHub/Chat/Detail/CitationMarkdownContent/index.js +68 -0
  32. package/dist/components/AgentHub/Chat/Detail/CitationMarkdownContent/index.js.map +1 -0
  33. package/dist/components/AgentHub/Chat/Detail/CitationMarkdownContent/style.module.scss.js +7 -0
  34. package/dist/components/AgentHub/Chat/Detail/CitationMarkdownContent/style.module.scss.js.map +1 -0
  35. package/dist/components/AgentHub/Chat/Detail/CitationPanel/index.js +247 -0
  36. package/dist/components/AgentHub/Chat/Detail/CitationPanel/index.js.map +1 -0
  37. package/dist/components/AgentHub/Chat/Detail/CitationPanel/style.module.scss.js +31 -0
  38. package/dist/components/AgentHub/Chat/Detail/CitationPanel/style.module.scss.js.map +1 -0
  39. package/dist/components/AgentHub/Chat/Detail/MermaidBlock/index.js +43 -0
  40. package/dist/components/AgentHub/Chat/Detail/MermaidBlock/index.js.map +1 -0
  41. package/dist/components/AgentHub/Chat/Detail/MermaidBlock/style.module.scss.js +8 -0
  42. package/dist/components/AgentHub/Chat/Detail/MermaidBlock/style.module.scss.js.map +1 -0
  43. package/dist/components/AgentHub/Chat/Detail/MessageActions/index.js +103 -0
  44. package/dist/components/AgentHub/Chat/Detail/MessageActions/index.js.map +1 -0
  45. package/dist/components/AgentHub/Chat/Detail/MessageActions/style.module.scss.js +14 -0
  46. package/dist/components/AgentHub/Chat/Detail/MessageActions/style.module.scss.js.map +1 -0
  47. package/dist/components/AgentHub/Chat/Detail/MessageEditPopover/index.js +58 -0
  48. package/dist/components/AgentHub/Chat/Detail/MessageEditPopover/index.js.map +1 -0
  49. package/dist/components/AgentHub/Chat/Detail/MessageEditPopover/style.module.scss.js +9 -0
  50. package/dist/components/AgentHub/Chat/Detail/MessageEditPopover/style.module.scss.js.map +1 -0
  51. package/dist/components/AgentHub/Chat/Detail/MessageItem/index.js +309 -0
  52. package/dist/components/AgentHub/Chat/Detail/MessageItem/index.js.map +1 -0
  53. package/dist/components/AgentHub/Chat/Detail/MessageItem/style.module.scss.js +24 -0
  54. package/dist/components/AgentHub/Chat/Detail/MessageItem/style.module.scss.js.map +1 -0
  55. package/dist/components/AgentHub/Chat/Detail/ThinkingSection/index.js +122 -0
  56. package/dist/components/AgentHub/Chat/Detail/ThinkingSection/index.js.map +1 -0
  57. package/dist/components/AgentHub/Chat/Detail/ThinkingSection/style.module.scss.js +25 -0
  58. package/dist/components/AgentHub/Chat/Detail/ThinkingSection/style.module.scss.js.map +1 -0
  59. package/dist/components/AgentHub/Chat/Detail/index.d.ts +12 -0
  60. package/dist/components/AgentHub/Chat/Form/Form.js +37 -0
  61. package/dist/components/AgentHub/Chat/Form/Form.js.map +1 -0
  62. package/dist/components/AgentHub/Chat/List/ChatCard/index.js +86 -0
  63. package/dist/components/AgentHub/Chat/List/ChatCard/index.js.map +1 -0
  64. package/dist/components/AgentHub/Chat/List/ChatCard/style.module.scss.js +25 -0
  65. package/dist/components/AgentHub/Chat/List/ChatCard/style.module.scss.js.map +1 -0
  66. package/dist/components/AgentHub/Chat/List/FilterBar.js +17 -0
  67. package/dist/components/AgentHub/Chat/List/FilterBar.js.map +1 -0
  68. package/dist/components/AgentHub/Chat/List/SessionSidebar/index.js +156 -0
  69. package/dist/components/AgentHub/Chat/List/SessionSidebar/index.js.map +1 -0
  70. package/dist/components/AgentHub/Chat/List/SessionSidebar/style.module.scss.js +28 -0
  71. package/dist/components/AgentHub/Chat/List/SessionSidebar/style.module.scss.js.map +1 -0
  72. package/dist/components/AgentHub/Chat/Modal/FormModal.js +58 -0
  73. package/dist/components/AgentHub/Chat/Modal/FormModal.js.map +1 -0
  74. package/dist/components/AgentHub/Chat/hooks/useAutoScrollToBottom.js +35 -0
  75. package/dist/components/AgentHub/Chat/hooks/useAutoScrollToBottom.js.map +1 -0
  76. package/dist/components/AgentHub/Chat/hooks/useChat.js +51 -0
  77. package/dist/components/AgentHub/Chat/hooks/useChat.js.map +1 -0
  78. package/dist/components/AgentHub/Chat/hooks/useChatSessions.js +60 -0
  79. package/dist/components/AgentHub/Chat/hooks/useChatSessions.js.map +1 -0
  80. package/dist/components/AgentHub/Chat/hooks/useSSECompletion.js +69 -0
  81. package/dist/components/AgentHub/Chat/hooks/useSSECompletion.js.map +1 -0
  82. package/dist/components/AgentHub/Chat/hooks/useTypewriter.js +39 -0
  83. package/dist/components/AgentHub/Chat/hooks/useTypewriter.js.map +1 -0
  84. package/dist/components/AgentHub/Chat/index.d.ts +1 -0
  85. package/dist/components/AgentHub/Chat/utils/citationContent.js +169 -0
  86. package/dist/components/AgentHub/Chat/utils/citationContent.js.map +1 -0
  87. package/dist/components/AgentHub/Chat/utils/messageContent.js +85 -0
  88. package/dist/components/AgentHub/Chat/utils/messageContent.js.map +1 -0
  89. package/dist/components/AgentHub/Chat/utils/sanitizeMermaidChart.js +22 -0
  90. package/dist/components/AgentHub/Chat/utils/sanitizeMermaidChart.js.map +1 -0
  91. package/dist/components/AgentHub/Chat/utils/sessionMessages.js +151 -0
  92. package/dist/components/AgentHub/Chat/utils/sessionMessages.js.map +1 -0
  93. package/dist/components/AgentHub/KnowledgeBase/Action/CreateButton.js +8 -0
  94. package/dist/components/AgentHub/KnowledgeBase/Action/CreateButton.js.map +1 -0
  95. package/dist/components/AgentHub/KnowledgeBase/Action/ManageActionButtons.js +20 -0
  96. package/dist/components/AgentHub/KnowledgeBase/Action/ManageActionButtons.js.map +1 -0
  97. package/dist/components/AgentHub/KnowledgeBase/Detail/DocumentTable/index.js +110 -0
  98. package/dist/components/AgentHub/KnowledgeBase/Detail/DocumentTable/index.js.map +1 -0
  99. package/dist/components/AgentHub/KnowledgeBase/Detail/DocumentTable/style.module.scss.js +7 -0
  100. package/dist/components/AgentHub/KnowledgeBase/Detail/DocumentTable/style.module.scss.js.map +1 -0
  101. package/dist/components/AgentHub/KnowledgeBase/Detail/ParseStatusTag/index.js +18 -0
  102. package/dist/components/AgentHub/KnowledgeBase/Detail/ParseStatusTag/index.js.map +1 -0
  103. package/dist/components/AgentHub/KnowledgeBase/Detail/ParseStatusTag/style.module.scss.js +7 -0
  104. package/dist/components/AgentHub/KnowledgeBase/Detail/ParseStatusTag/style.module.scss.js.map +1 -0
  105. package/dist/components/AgentHub/KnowledgeBase/Form/Form.js +31 -0
  106. package/dist/components/AgentHub/KnowledgeBase/Form/Form.js.map +1 -0
  107. package/dist/components/AgentHub/KnowledgeBase/List/FilterBar.js +17 -0
  108. package/dist/components/AgentHub/KnowledgeBase/List/FilterBar.js.map +1 -0
  109. package/dist/components/AgentHub/KnowledgeBase/List/KnowledgeCard/index.js +118 -0
  110. package/dist/components/AgentHub/KnowledgeBase/List/KnowledgeCard/index.js.map +1 -0
  111. package/dist/components/AgentHub/KnowledgeBase/List/KnowledgeCard/style.module.scss.js +23 -0
  112. package/dist/components/AgentHub/KnowledgeBase/List/KnowledgeCard/style.module.scss.js.map +1 -0
  113. package/dist/components/AgentHub/KnowledgeBase/Modal/FormModal.js +47 -0
  114. package/dist/components/AgentHub/KnowledgeBase/Modal/FormModal.js.map +1 -0
  115. package/dist/components/AgentHub/KnowledgeBase/constants/types.js +28 -0
  116. package/dist/components/AgentHub/KnowledgeBase/constants/types.js.map +1 -0
  117. package/dist/components/AgentHub/KnowledgeBase/hooks/useKBDocuments.js +21 -0
  118. package/dist/components/AgentHub/KnowledgeBase/hooks/useKBDocuments.js.map +1 -0
  119. package/dist/components/AgentHub/KnowledgeBase/hooks/useKnowledgeBase.js +32 -0
  120. package/dist/components/AgentHub/KnowledgeBase/hooks/useKnowledgeBase.js.map +1 -0
  121. package/dist/components/Filter/FilterDateRange/index.d.ts +2 -0
  122. package/dist/components/Filter/FilterDateRange/index.js +62 -51
  123. package/dist/components/Filter/FilterDateRange/index.js.map +1 -1
  124. package/dist/components/Filter/FilterSelect/index.d.ts +6 -2
  125. package/dist/components/Filter/FilterSelect/index.js +132 -107
  126. package/dist/components/Filter/FilterSelect/index.js.map +1 -1
  127. package/dist/components/Filter/FilterTrigger/index.d.ts +2 -2
  128. package/dist/components/Filter/FilterTrigger/index.js.map +1 -1
  129. package/dist/components/Filter/FilterTrigger/style.module.scss.js +4 -4
  130. package/dist/components/Filter/index.d.ts +1 -1
  131. package/dist/components/Icons/index.js +153 -145
  132. package/dist/components/Icons/index.js.map +1 -1
  133. package/dist/components/LlmFormattedText/LlmFormattedText/index.d.ts +8 -0
  134. package/dist/components/LlmFormattedText/LlmFormattedText/index.js +42 -0
  135. package/dist/components/LlmFormattedText/LlmFormattedText/index.js.map +1 -0
  136. package/dist/components/LlmFormattedText/LlmFormattedText/style.module.scss.js +17 -0
  137. package/dist/components/LlmFormattedText/LlmFormattedText/style.module.scss.js.map +1 -0
  138. package/dist/components/LlmFormattedText/index.d.ts +4 -0
  139. package/dist/components/LlmFormattedText/parseLlmText.d.ts +14 -0
  140. package/dist/components/LlmFormattedText/parseLlmText.js +77 -0
  141. package/dist/components/LlmFormattedText/parseLlmText.js.map +1 -0
  142. package/dist/components/Sparkline/Sparkline/index.d.ts +11 -0
  143. package/dist/components/Sparkline/Sparkline/index.js +46 -0
  144. package/dist/components/Sparkline/Sparkline/index.js.map +1 -0
  145. package/dist/components/Sparkline/Sparkline/style.module.scss.js +8 -0
  146. package/dist/components/Sparkline/Sparkline/style.module.scss.js.map +1 -0
  147. package/dist/components/Sparkline/index.d.ts +2 -0
  148. package/dist/components/TooltipInfo/TooltipInfo.js +29 -20
  149. package/dist/components/TooltipInfo/TooltipInfo.js.map +1 -1
  150. package/dist/components/index.d.ts +2 -0
  151. package/dist/index.d.ts +5 -1
  152. package/dist/index.js +291 -175
  153. package/dist/index.js.map +1 -1
  154. package/dist/marsun-components-core.css +1 -1
  155. package/dist/styles/global.css +1 -1
  156. package/dist/theme/constants.d.ts +47 -1
  157. package/dist/theme/constants.js +50 -5
  158. package/dist/theme/constants.js.map +1 -1
  159. package/dist/theme/index.d.ts +2 -2
  160. package/dist/theme/index.js +8 -6
  161. package/dist/theme/theme.d.ts +10 -0
  162. package/dist/theme/theme.js +24 -34
  163. package/dist/theme/theme.js.map +1 -1
  164. package/dist/theme/tokens.css +139 -0
  165. package/package.json +6 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionMessages.js","sources":["../../../../../src/components/AgentHub/Chat/utils/sessionMessages.ts"],"sourcesContent":["import type { ChatMessage, ChatSession, Citation, MessageRole } from '@/components/AgentHub/types';\nimport { normalizeCitation } from './citationContent';\nimport { hasCitationMarkers } from './messageContent';\n\ninterface RawSessionMessage {\n id?: string;\n role: MessageRole;\n content?: unknown;\n reference?: SessionReference;\n created_at?: number;\n create_time?: number;\n thumbup?: boolean;\n}\n\ntype SessionReference =\n | { chunks?: Citation[] | Record<string, Citation> }\n | Citation[]\n | Record<string, unknown>\n | null;\n\nconst DEFAULT_SESSION_NAMES = new Set(['New session', '新会话']);\nconst SPURIOUS_NUMERIC_USER_RE = /^\\d{1,4}$/;\n\nexport const formatSessionTime = (value?: string | number): string => {\n if (value == null) return '';\n const date = new Date(typeof value === 'number' && value < 1e12 ? value * 1000 : value);\n if (Number.isNaN(date.getTime())) return '';\n\n const now = new Date();\n const isToday =\n date.getFullYear() === now.getFullYear() &&\n date.getMonth() === now.getMonth() &&\n date.getDate() === now.getDate();\n\n if (isToday) {\n return date.toLocaleTimeString('zh-CN', { hour: '2-digit', minute: '2-digit' });\n }\n\n return date.toLocaleString('zh-CN', {\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n });\n};\n\nexport const normalizeMessageContent = (content: unknown): string => {\n if (content == null) return '';\n if (typeof content === 'string') return content;\n if (typeof content === 'number' || typeof content === 'boolean') return String(content);\n\n if (Array.isArray(content)) {\n return content\n .map((part) => {\n if (typeof part === 'string') return part;\n if (part && typeof part === 'object') {\n const record = part as Record<string, unknown>;\n if (typeof record.text === 'string') return record.text;\n if (typeof record.content === 'string') return record.content;\n }\n return '';\n })\n .filter(Boolean)\n .join('\\n');\n }\n\n if (typeof content === 'object') {\n const record = content as Record<string, unknown>;\n if (typeof record.text === 'string') return record.text;\n if (typeof record.content === 'string') return record.content;\n if (typeof record.answer === 'string') return record.answer;\n }\n\n return '';\n};\n\nconst getMessageTimestamp = (message: RawSessionMessage): number | undefined => {\n const value = message.created_at ?? message.create_time;\n return typeof value === 'number' ? value : undefined;\n};\n\nconst sortMessagesChronologically = (messages: RawSessionMessage[]): RawSessionMessage[] => {\n const withTimestamp = messages.filter((item) => getMessageTimestamp(item) != null);\n // RAGFlow 常仅给 assistant 回复写 created_at;缺 timestamp 的消息不能当作 0 参与排序,否则会打乱 API 原始顺序\n if (withTimestamp.length < 2 || withTimestamp.length < messages.length) return messages;\n\n return [...messages].sort((left, right) => {\n const leftTime = getMessageTimestamp(left)!;\n const rightTime = getMessageTimestamp(right)!;\n return leftTime - rightTime;\n });\n};\n\nconst isPlaceholderContent = (content: string): boolean => {\n const trimmed = content.trim();\n if (!trimmed) return true;\n return !/[\\S\\u4e00-\\u9fff]/.test(trimmed);\n};\n\nexport const getSessionDisplayName = (session: ChatSession): string => {\n const customName = session.name?.trim();\n if (customName && !DEFAULT_SESSION_NAMES.has(customName)) {\n return customName;\n }\n\n const rawMessages = session.messages ?? session.message ?? [];\n const firstUserMessage = rawMessages.find((item) => item.role === 'user');\n const text = normalizeMessageContent(firstUserMessage?.content).trim();\n if (text) {\n return text.length > 24 ? `${text.slice(0, 24)}…` : text;\n }\n\n return '新会话';\n};\n\nexport const isWelcomeOnlyMessages = (messages: ChatMessage[], prologue?: string): boolean => {\n if (messages.length === 0) return true;\n if (messages.length !== 1 || messages[0]?.role !== 'assistant') return false;\n\n const content = messages[0].content.trim();\n if (!content) return true;\n if (!prologue?.trim()) return false;\n\n return content === prologue.trim();\n};\n\nconst dedupeCitations = (chunks: Citation[]): Citation[] => {\n const seen = new Set<string>();\n return chunks.filter((chunk) => {\n const key = `${chunk.doc_id ?? ''}:${chunk.id ?? ''}:${chunk.content?.slice(0, 80) ?? ''}`;\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n};\n\nconst toCitationArray = (chunks: unknown): Citation[] => {\n if (Array.isArray(chunks)) {\n return chunks\n .filter((chunk) => chunk && typeof chunk === 'object')\n .map((chunk) => normalizeCitation(chunk as Record<string, unknown>));\n }\n\n if (chunks && typeof chunks === 'object') {\n return Object.values(chunks as Record<string, unknown>)\n .filter((chunk) => chunk && typeof chunk === 'object')\n .map((chunk) => normalizeCitation(chunk as Record<string, unknown>));\n }\n\n return [];\n};\n\nexport const extractCitations = (reference?: SessionReference): Citation[] | undefined => {\n if (reference == null) return undefined;\n\n if (Array.isArray(reference)) {\n const chunks = toCitationArray(reference);\n return chunks.length > 0 ? dedupeCitations(chunks) : undefined;\n }\n\n if (typeof reference !== 'object' || !('chunks' in reference)) {\n return undefined;\n }\n\n const chunks = toCitationArray(reference.chunks);\n return chunks.length > 0 ? dedupeCitations(chunks) : undefined;\n};\n\nconst collectSessionCitations = (references: SessionReference[]): Citation[] => {\n const chunks: Citation[] = [];\n references.forEach((reference) => {\n const list = extractCitations(reference);\n if (list) chunks.push(...list);\n });\n return dedupeCitations(chunks);\n};\n\nconst countUserMessagesBefore = (messages: RawSessionMessage[], index: number): number =>\n messages.slice(0, index).filter((message) => message.role === 'user').length;\n\nconst resolveMessageCitations = (\n item: RawSessionMessage,\n index: number,\n messages: RawSessionMessage[],\n references: SessionReference[],\n sessionCitations: Citation[],\n content: string,\n): Citation[] | undefined => {\n // 引用仅属于 assistant 回复;RAGFlow reference[n] 按第 n 轮用户提问对齐,不能按消息下标直接挂到 user\n if (item.role !== 'assistant') return undefined;\n\n const fromMessage = extractCitations(item.reference);\n if (fromMessage?.length) return fromMessage;\n\n const userTurnsBefore = countUserMessagesBefore(messages, index);\n if (userTurnsBefore === 0) return undefined;\n\n const fromMessageIndex = extractCitations(references[index]);\n if (fromMessageIndex?.length) return fromMessageIndex;\n\n const fromTurnIndex = extractCitations(references[userTurnsBefore - 1]);\n if (fromTurnIndex?.length) return fromTurnIndex;\n\n if (hasCitationMarkers(content) && sessionCitations.length) {\n return sessionCitations;\n }\n\n return undefined;\n};\n\nexport const parseSessionMessages = (\n rawMessages: RawSessionMessage[] = [],\n references: SessionReference[] = [],\n): ChatMessage[] => {\n const sessionCitations = collectSessionCitations(references);\n const orderedMessages = sortMessagesChronologically(rawMessages);\n\n return orderedMessages\n .filter((item) => item.role === 'user' || item.role === 'assistant')\n .map((item, index) => {\n const content = normalizeMessageContent(item.content);\n return {\n id: item.id ?? `msg_${index}_${item.role}`,\n role: item.role,\n content,\n citations: resolveMessageCitations(\n item,\n index,\n orderedMessages,\n references,\n sessionCitations,\n content,\n ),\n thumbup: typeof item.thumbup === 'boolean' ? item.thumbup : undefined,\n };\n })\n .filter((item) => !isPlaceholderContent(item.content));\n};\n\nconst stripPrologueMessages = (messages: ChatMessage[], prologue?: string): ChatMessage[] => {\n if (!prologue?.trim() || messages.length === 0) return messages;\n\n const trimmedPrologue = prologue.trim();\n let result = [...messages];\n\n while (\n result.length > 0 &&\n result[0]?.role === 'assistant' &&\n result[0]?.content.trim() === trimmedPrologue\n ) {\n result = result.slice(1);\n }\n\n while (\n result.length > 1 &&\n result[result.length - 1]?.role === 'assistant' &&\n result[result.length - 1]?.content.trim() === trimmedPrologue\n ) {\n result = result.slice(0, -1);\n }\n\n return result;\n};\n\nconst filterSpuriousNumericUserMessages = (messages: ChatMessage[]): ChatMessage[] => {\n const numericCounts = new Map<string, number>();\n\n messages.forEach((item) => {\n if (item.role !== 'user') return;\n const content = item.content.trim();\n if (!SPURIOUS_NUMERIC_USER_RE.test(content)) return;\n numericCounts.set(content, (numericCounts.get(content) ?? 0) + 1);\n });\n\n const duplicatedNumerics = new Set(\n [...numericCounts.entries()].filter(([, count]) => count > 1).map(([content]) => content),\n );\n if (duplicatedNumerics.size === 0) return messages;\n\n // 仅过滤 RAGFlow 偶发的重复纯数字 user 消息(如连续两条 \"12\"),保留 \"22\"/\"11\" 等真实追问\n return messages.filter(\n (item) =>\n !(\n item.role === 'user' &&\n duplicatedNumerics.has(item.content.trim()) &&\n SPURIOUS_NUMERIC_USER_RE.test(item.content.trim())\n ),\n );\n};\n\nexport const toDisplayMessages = (messages: ChatMessage[], prologue?: string): ChatMessage[] => {\n const withoutPrologue = stripPrologueMessages(messages, prologue);\n const cleaned = filterSpuriousNumericUserMessages(withoutPrologue);\n\n // 无用户消息时视为欢迎态(RAGFlow 新会话仅含 assistant 开场白)\n if (!cleaned.some((item) => item.role === 'user')) {\n return [];\n }\n\n return isWelcomeOnlyMessages(cleaned, prologue) ? [] : cleaned;\n};\n"],"names":["DEFAULT_SESSION_NAMES","SPURIOUS_NUMERIC_USER_RE","formatSessionTime","value","date","now","normalizeMessageContent","content","part","record","getMessageTimestamp","message","sortMessagesChronologically","messages","withTimestamp","item","left","right","leftTime","rightTime","isPlaceholderContent","trimmed","getSessionDisplayName","session","customName","_a","firstUserMessage","text","isWelcomeOnlyMessages","prologue","dedupeCitations","chunks","seen","chunk","key","toCitationArray","normalizeCitation","extractCitations","reference","collectSessionCitations","references","list","countUserMessagesBefore","index","resolveMessageCitations","sessionCitations","fromMessage","userTurnsBefore","fromMessageIndex","fromTurnIndex","hasCitationMarkers","parseSessionMessages","rawMessages","orderedMessages","stripPrologueMessages","trimmedPrologue","result","_b","_c","_d","filterSpuriousNumericUserMessages","numericCounts","duplicatedNumerics","count","toDisplayMessages","withoutPrologue","cleaned"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { Plus as r } from "../../../Icons/index.js";
3
+ import { Button as m } from "antd";
4
+ const n = ({ onClick: o }) => /* @__PURE__ */ t(m, { type: "primary", icon: /* @__PURE__ */ t(r, {}), onClick: o, children: "新建知识库" });
5
+ export {
6
+ n as default
7
+ };
8
+ //# sourceMappingURL=CreateButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateButton.js","sources":["../../../../../src/components/AgentHub/KnowledgeBase/Action/CreateButton.tsx"],"sourcesContent":["import { Plus } from '@/components/Icons';\nimport { Button } from 'antd';\nimport React from 'react';\n\nexport interface CreateButtonProps {\n onClick?: () => void;\n}\n\nconst CreateButton: React.FC<CreateButtonProps> = ({ onClick }) => (\n <Button type=\"primary\" icon={<Plus />} onClick={onClick}>\n 新建知识库\n </Button>\n);\n\nexport default CreateButton;\n"],"names":["CreateButton","onClick","jsx","Button","Plus"],"mappings":";;;AAQA,MAAMA,IAA4C,CAAC,EAAE,SAAAC,EAAA,MACnD,gBAAAC,EAACC,GAAA,EAAO,MAAK,WAAU,MAAM,gBAAAD,EAACE,GAAA,CAAA,CAAK,GAAI,SAAAH,GAAkB,UAAA,QAAA,CAEzD;"}
@@ -0,0 +1,20 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import r from "@kne/button-group";
3
+ import { Plus as i } from "../../../Icons/index.js";
4
+ const s = ({ onCreateClick: t }) => /* @__PURE__ */ o(
5
+ r,
6
+ {
7
+ list: [
8
+ {
9
+ children: "新建知识库",
10
+ type: "primary",
11
+ icon: /* @__PURE__ */ o(i, {}),
12
+ onClick: t
13
+ }
14
+ ]
15
+ }
16
+ );
17
+ export {
18
+ s as default
19
+ };
20
+ //# sourceMappingURL=ManageActionButtons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManageActionButtons.js","sources":["../../../../../src/components/AgentHub/KnowledgeBase/Action/ManageActionButtons.tsx"],"sourcesContent":["import ButtonGroup from '@kne/button-group';\nimport { Plus } from '@/components/Icons';\nimport React from 'react';\n\nexport interface ManageActionButtonsProps {\n onCreateClick: () => void;\n}\n\nconst ManageActionButtons: React.FC<ManageActionButtonsProps> = ({ onCreateClick }) => (\n <ButtonGroup\n list={[\n {\n children: '新建知识库',\n type: 'primary',\n icon: <Plus />,\n onClick: onCreateClick,\n },\n ]}\n />\n);\n\nexport default ManageActionButtons;\n"],"names":["ManageActionButtons","onCreateClick","jsx","ButtonGroup","Plus"],"mappings":";;;AAQA,MAAMA,IAA0D,CAAC,EAAE,eAAAC,EAAA,MACjE,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,MAAM;AAAA,MACJ;AAAA,QACE,UAAU;AAAA,QACV,MAAM;AAAA,QACN,wBAAOC,GAAA,EAAK;AAAA,QACZ,SAASH;AAAA,MAAA;AAAA,IACX;AAAA,EACF;AACF;"}
@@ -0,0 +1,110 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import h from "@kne/button-group";
3
+ import { CirclePlay as p, Square as f } from "../../../../Icons/index.js";
4
+ import { Table as y, Empty as x, Typography as g } from "antd";
5
+ import w from "../ParseStatusTag/index.js";
6
+ import N from "./style.module.scss.js";
7
+ import T from "classnames";
8
+ const { Text: i } = g, I = (t) => t ? t < 1024 ? `${t} B` : t < 1024 * 1024 ? `${(t / 1024).toFixed(1)} KB` : `${(t / 1024 / 1024).toFixed(1)} MB` : "-", C = (t) => t ? (typeof t == "number" ? new Date(t) : new Date(t)).toLocaleDateString("zh-CN", { year: "numeric", month: "2-digit", day: "2-digit" }) : "-", F = ({
9
+ data: t,
10
+ loading: o,
11
+ total: a,
12
+ page: d,
13
+ pageSize: l,
14
+ onPageChange: c,
15
+ onParse: m,
16
+ onStopParse: s,
17
+ onDelete: u
18
+ }) => /* @__PURE__ */ r(
19
+ y,
20
+ {
21
+ rowKey: "id",
22
+ columns: [
23
+ {
24
+ title: "文档名称",
25
+ dataIndex: "name",
26
+ ellipsis: !0,
27
+ render: (e) => /* @__PURE__ */ r(i, { className: T("document-table-root", N["document-table-root"]), ellipsis: { tooltip: e }, children: e })
28
+ },
29
+ {
30
+ title: "类型",
31
+ dataIndex: "type",
32
+ width: 80,
33
+ render: (e) => /* @__PURE__ */ r(i, { type: "secondary", children: e ?? "-" })
34
+ },
35
+ {
36
+ title: "大小",
37
+ dataIndex: "size",
38
+ width: 100,
39
+ render: (e) => /* @__PURE__ */ r(i, { type: "secondary", children: I(e) })
40
+ },
41
+ {
42
+ title: "解析状态",
43
+ dataIndex: "run",
44
+ width: 110,
45
+ render: (e) => /* @__PURE__ */ r(w, { status: e })
46
+ },
47
+ {
48
+ title: "分块数",
49
+ dataIndex: "chunk_count",
50
+ width: 80,
51
+ render: (e) => /* @__PURE__ */ r(i, { type: "secondary", children: e ?? 0 })
52
+ },
53
+ {
54
+ title: "上传时间",
55
+ dataIndex: "create_time",
56
+ width: 120,
57
+ render: (e) => /* @__PURE__ */ r(i, { type: "secondary", children: C(e) })
58
+ },
59
+ {
60
+ title: "操作",
61
+ key: "actions",
62
+ width: 140,
63
+ fixed: "right",
64
+ render: (e, n) => /* @__PURE__ */ r(
65
+ h,
66
+ {
67
+ moreType: "link",
68
+ list: [
69
+ {
70
+ children: "解析",
71
+ icon: /* @__PURE__ */ r(p, {}),
72
+ hidden: n.run === "RUNNING",
73
+ onClick: () => m(n)
74
+ },
75
+ {
76
+ children: "停止",
77
+ icon: /* @__PURE__ */ r(f, {}),
78
+ hidden: n.run !== "RUNNING",
79
+ onClick: () => s(n)
80
+ },
81
+ {
82
+ children: "删除",
83
+ danger: !0,
84
+ message: `确认删除文档「${n.name}」?`,
85
+ isDelete: !0,
86
+ onClick: () => u(n)
87
+ }
88
+ ]
89
+ }
90
+ )
91
+ }
92
+ ],
93
+ dataSource: t,
94
+ loading: o,
95
+ scroll: { x: "max-content" },
96
+ locale: { emptyText: /* @__PURE__ */ r(x, { description: "暂无文档" }) },
97
+ pagination: {
98
+ current: d,
99
+ pageSize: l,
100
+ total: a,
101
+ showSizeChanger: !0,
102
+ showTotal: (e) => `共 ${e} 篇文档`,
103
+ onChange: c
104
+ }
105
+ }
106
+ );
107
+ export {
108
+ F as default
109
+ };
110
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../../src/components/AgentHub/KnowledgeBase/Detail/DocumentTable/index.tsx"],"sourcesContent":["import type { KBDocument } from '@/components/AgentHub/types';\nimport ButtonGroup from '@kne/button-group';\nimport { CirclePlay, Square } from '@/components/Icons';\nimport { Empty, Table, Typography } from 'antd';\nimport type { ColumnsType } from 'antd/es/table';\nimport React from 'react';\nimport ParseStatusTag from '../ParseStatusTag';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\nconst { Text } = Typography;\n\nconst formatSize = (bytes?: number) => {\n if (!bytes) return '-';\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / 1024 / 1024).toFixed(1)} MB`;\n};\n\nconst formatTime = (ts?: string | number) => {\n if (!ts) return '-';\n const d = typeof ts === 'number' ? new Date(ts) : new Date(ts);\n return d.toLocaleDateString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit' });\n};\n\nexport interface DocumentTableProps {\n datasetId: string;\n data: KBDocument[];\n loading: boolean;\n total: number;\n page: number;\n pageSize: number;\n onPageChange: (page: number, pageSize: number) => void;\n onParse: (doc: KBDocument) => void;\n onStopParse: (doc: KBDocument) => void;\n onDelete: (doc: KBDocument) => void;\n}\n\nconst DocumentTable: React.FC<DocumentTableProps> = ({\n data,\n loading,\n total,\n page,\n pageSize,\n onPageChange,\n onParse,\n onStopParse,\n onDelete,\n}) => {\n const columns: ColumnsType<KBDocument> = [\n {\n title: '文档名称',\n dataIndex: 'name',\n ellipsis: true,\n render: (name: string) => (\n <Text className={classNames('document-table-root', styles['document-table-root'])} ellipsis={{ tooltip: name }}>\n {name}\n </Text>\n ),\n },\n {\n title: '类型',\n dataIndex: 'type',\n width: 80,\n render: (type?: string) => <Text type=\"secondary\">{type ?? '-'}</Text>,\n },\n {\n title: '大小',\n dataIndex: 'size',\n width: 100,\n render: (size?: number) => <Text type=\"secondary\">{formatSize(size)}</Text>,\n },\n {\n title: '解析状态',\n dataIndex: 'run',\n width: 110,\n render: (run?: string) => <ParseStatusTag status={run} />,\n },\n {\n title: '分块数',\n dataIndex: 'chunk_count',\n width: 80,\n render: (count?: number) => <Text type=\"secondary\">{count ?? 0}</Text>,\n },\n {\n title: '上传时间',\n dataIndex: 'create_time',\n width: 120,\n render: (t?: string | number) => <Text type=\"secondary\">{formatTime(t)}</Text>,\n },\n {\n title: '操作',\n key: 'actions',\n width: 140,\n fixed: 'right',\n render: (_, record) => (\n <ButtonGroup\n moreType=\"link\"\n list={[\n {\n children: '解析',\n icon: <CirclePlay />,\n hidden: record.run === 'RUNNING',\n onClick: () => onParse(record),\n },\n {\n children: '停止',\n icon: <Square />,\n hidden: record.run !== 'RUNNING',\n onClick: () => onStopParse(record),\n },\n {\n children: '删除',\n danger: true,\n message: `确认删除文档「${record.name}」?`,\n isDelete: true,\n onClick: () => onDelete(record),\n },\n ]}\n />\n ),\n },\n ];\n\n return (\n <Table<KBDocument>\n rowKey=\"id\"\n columns={columns}\n dataSource={data}\n loading={loading}\n scroll={{ x: 'max-content' }}\n locale={{ emptyText: <Empty description=\"暂无文档\" /> }}\n pagination={{\n current: page,\n pageSize,\n total,\n showSizeChanger: true,\n showTotal: (t) => `共 ${t} 篇文档`,\n onChange: onPageChange,\n }}\n />\n );\n};\n\nexport default DocumentTable;\n"],"names":["Text","Typography","formatSize","bytes","formatTime","ts","DocumentTable","data","loading","total","page","pageSize","onPageChange","onParse","onStopParse","onDelete","jsx","Table","name","classNames","styles","type","size","run","ParseStatusTag","count","t","_","record","ButtonGroup","CirclePlay","Square","Empty"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ const t = {
2
+ "document-table-root": "_document-table-root_6pilq_1"
3
+ };
4
+ export {
5
+ t as default
6
+ };
7
+ //# sourceMappingURL=style.module.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -0,0 +1,18 @@
1
+ import { jsxs as a, jsx as o } from "react/jsx-runtime";
2
+ import { Loader2 as i } from "../../../../Icons/index.js";
3
+ import { Spin as m } from "antd";
4
+ import e from "./style.module.scss.js";
5
+ import n from "classnames";
6
+ import { PARSE_STATUS_CONFIG as t } from "../../constants/types.js";
7
+ import c from "../../../../Tag/SemanticTag.js";
8
+ const N = ({ status: s }) => {
9
+ const r = t[s ?? "UNSTART"] ?? t.UNSTART;
10
+ return /* @__PURE__ */ a(c, { color: r.color, children: [
11
+ r.spinning && /* @__PURE__ */ o(m, { indicator: /* @__PURE__ */ o(i, {}), size: "small", className: n("parse-status-tag-container", e["parse-status-tag-container"]) }),
12
+ r.label
13
+ ] });
14
+ };
15
+ export {
16
+ N as default
17
+ };
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../../src/components/AgentHub/KnowledgeBase/Detail/ParseStatusTag/index.tsx"],"sourcesContent":["import { SemanticTag } from '@/components';\nimport { Loader2 } from '@/components/Icons';\nimport { Spin } from 'antd';\nimport React from 'react';\nimport { PARSE_STATUS_CONFIG } from '../../constants';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\nexport interface ParseStatusTagProps {\n status?: string;\n}\n\nconst ParseStatusTag: React.FC<ParseStatusTagProps> = ({ status }) => {\n const config = PARSE_STATUS_CONFIG[status ?? 'UNSTART'] ?? PARSE_STATUS_CONFIG['UNSTART']!;\n\n return (\n <SemanticTag color={config!.color}>\n {config!.spinning && <Spin indicator={<Loader2 />} size=\"small\" className={classNames('parse-status-tag-container', styles['parse-status-tag-container'])} />}\n {config!.label}\n </SemanticTag>\n );\n};\n\nexport default ParseStatusTag;\n"],"names":["ParseStatusTag","status","config","PARSE_STATUS_CONFIG","jsxs","SemanticTag","jsx","Spin","Loader2","classNames","styles"],"mappings":";;;;;;;AAYA,MAAMA,IAAgD,CAAC,EAAE,QAAAC,QAAa;AACpE,QAAMC,IAASC,EAAoBF,KAAU,SAAS,KAAKE,EAAoB;AAE/E,SACE,gBAAAC,EAACC,GAAA,EAAY,OAAOH,EAAQ,OACzB,UAAA;AAAA,IAAAA,EAAQ,YAAY,gBAAAI,EAACC,GAAA,EAAK,6BAAYC,GAAA,CAAA,CAAQ,GAAI,MAAK,SAAQ,WAAWC,EAAW,8BAA8BC,EAAO,4BAA4B,CAAC,GAAG;AAAA,IAC1JR,EAAQ;AAAA,EAAA,GACX;AAEJ;"}
@@ -0,0 +1,7 @@
1
+ const t = {
2
+ "parse-status-tag-container": "_parse-status-tag-container_40gl6_1"
3
+ };
4
+ export {
5
+ t as default
6
+ };
7
+ //# sourceMappingURL=style.module.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -0,0 +1,31 @@
1
+ import { jsxs as t, jsx as e } from "react/jsx-runtime";
2
+ import { Form as l, Input as r, Select as a } from "antd";
3
+ import { EMBEDDING_MODEL_OPTIONS as d, CHUNK_METHOD_OPTIONS as n } from "../constants/types.js";
4
+ const p = ({ form: o, initialValues: m }) => /* @__PURE__ */ t(l, { form: o, layout: "vertical", initialValues: m, children: [
5
+ /* @__PURE__ */ e(
6
+ l.Item,
7
+ {
8
+ name: "name",
9
+ label: "知识库名称",
10
+ rules: [
11
+ { required: !0, message: "请输入知识库名称" },
12
+ { max: 64, message: "名称不超过 64 个字符" }
13
+ ],
14
+ children: /* @__PURE__ */ e(r, { placeholder: "请输入知识库名称" })
15
+ }
16
+ ),
17
+ /* @__PURE__ */ e(l.Item, { name: "description", label: "描述", children: /* @__PURE__ */ e(r.TextArea, { rows: 3, placeholder: "请输入知识库描述(可选)" }) }),
18
+ /* @__PURE__ */ e(l.Item, { name: "embedding_model", label: "Embedding 模型", children: /* @__PURE__ */ e(
19
+ a,
20
+ {
21
+ options: d,
22
+ placeholder: "请选择 Embedding 模型(可选)",
23
+ allowClear: !0
24
+ }
25
+ ) }),
26
+ /* @__PURE__ */ e(l.Item, { name: "chunk_method", label: "分块方式", children: /* @__PURE__ */ e(a, { options: n, placeholder: "请选择分块方式(可选)", allowClear: !0 }) })
27
+ ] });
28
+ export {
29
+ p as default
30
+ };
31
+ //# sourceMappingURL=Form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form.js","sources":["../../../../../src/components/AgentHub/KnowledgeBase/Form/Form.tsx"],"sourcesContent":["import { CHUNK_METHOD_OPTIONS, EMBEDDING_MODEL_OPTIONS } from '../constants';\nimport { Form, Input, Select } from 'antd';\nimport type { FormInstance } from 'antd';\nimport React from 'react';\n\nexport interface KnowledgeBaseFormProps {\n form: FormInstance;\n initialValues?: {\n name?: string;\n description?: string;\n embedding_model?: string;\n chunk_method?: string;\n };\n}\n\nconst KnowledgeBaseForm: React.FC<KnowledgeBaseFormProps> = ({ form, initialValues }) => {\n return (\n <Form form={form} layout=\"vertical\" initialValues={initialValues}>\n <Form.Item\n name=\"name\"\n label=\"知识库名称\"\n rules={[\n { required: true, message: '请输入知识库名称' },\n { max: 64, message: '名称不超过 64 个字符' },\n ]}\n >\n <Input placeholder=\"请输入知识库名称\" />\n </Form.Item>\n\n <Form.Item name=\"description\" label=\"描述\">\n <Input.TextArea rows={3} placeholder=\"请输入知识库描述(可选)\" />\n </Form.Item>\n\n <Form.Item name=\"embedding_model\" label=\"Embedding 模型\">\n <Select\n options={EMBEDDING_MODEL_OPTIONS}\n placeholder=\"请选择 Embedding 模型(可选)\"\n allowClear\n />\n </Form.Item>\n\n <Form.Item name=\"chunk_method\" label=\"分块方式\">\n <Select options={CHUNK_METHOD_OPTIONS} placeholder=\"请选择分块方式(可选)\" allowClear />\n </Form.Item>\n </Form>\n );\n};\n\nexport default KnowledgeBaseForm;\n"],"names":["KnowledgeBaseForm","form","initialValues","jsxs","Form","jsx","Input","Select","EMBEDDING_MODEL_OPTIONS","CHUNK_METHOD_OPTIONS"],"mappings":";;;AAeA,MAAMA,IAAsD,CAAC,EAAE,MAAAC,GAAM,eAAAC,QAEjE,gBAAAC,EAACC,GAAA,EAAK,MAAAH,GAAY,QAAO,YAAW,eAAAC,GAClC,UAAA;AAAA,EAAA,gBAAAG;AAAA,IAACD,EAAK;AAAA,IAAL;AAAA,MACC,MAAK;AAAA,MACL,OAAM;AAAA,MACN,OAAO;AAAA,QACL,EAAE,UAAU,IAAM,SAAS,WAAA;AAAA,QAC3B,EAAE,KAAK,IAAI,SAAS,eAAA;AAAA,MAAe;AAAA,MAGrC,UAAA,gBAAAC,EAACC,GAAA,EAAM,aAAY,WAAA,CAAW;AAAA,IAAA;AAAA,EAAA;AAAA,oBAG/BF,EAAK,MAAL,EAAU,MAAK,eAAc,OAAM,MAClC,UAAA,gBAAAC,EAACC,EAAM,UAAN,EAAe,MAAM,GAAG,aAAY,gBAAe,GACtD;AAAA,oBAECF,EAAK,MAAL,EAAU,MAAK,mBAAkB,OAAM,gBACtC,UAAA,gBAAAC;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,SAASC;AAAA,MACT,aAAY;AAAA,MACZ,YAAU;AAAA,IAAA;AAAA,EAAA,GAEd;AAAA,oBAECJ,EAAK,MAAL,EAAU,MAAK,gBAAe,OAAM,QACnC,UAAA,gBAAAC,EAACE,GAAA,EAAO,SAASE,GAAsB,aAAY,eAAc,YAAU,IAAC,EAAA,CAC9E;AAAA,GACF;"}
@@ -0,0 +1,17 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import t from "../../../Filter/CommonFilter/index.js";
3
+ import i from "../../../Filter/FilterInput/index.js";
4
+ const p = ({ keyword: r, onKeywordChange: o }) => /* @__PURE__ */ e(t, { label: "筛选", children: /* @__PURE__ */ e(
5
+ i,
6
+ {
7
+ filterKey: "keyword",
8
+ label: "知识库名称",
9
+ value: r || void 0,
10
+ onChange: (l) => o(l ?? ""),
11
+ placeholder: "搜索知识库名称"
12
+ }
13
+ ) });
14
+ export {
15
+ p as default
16
+ };
17
+ //# sourceMappingURL=FilterBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterBar.js","sources":["../../../../../src/components/AgentHub/KnowledgeBase/List/FilterBar.tsx"],"sourcesContent":["import { CommonFilter, FilterInput } from '@/components';\nimport React from 'react';\n\nexport interface KBFilterBarProps {\n keyword: string;\n onKeywordChange: (v: string) => void;\n}\n\nconst KBFilterBar: React.FC<KBFilterBarProps> = ({ keyword, onKeywordChange }) => (\n <CommonFilter label=\"筛选\">\n <FilterInput\n filterKey=\"keyword\"\n label=\"知识库名称\"\n value={keyword || undefined}\n onChange={(v) => onKeywordChange(v ?? '')}\n placeholder=\"搜索知识库名称\"\n />\n </CommonFilter>\n);\n\nexport default KBFilterBar;\n"],"names":["KBFilterBar","keyword","onKeywordChange","jsx","CommonFilter","FilterInput","v"],"mappings":";;;AAQA,MAAMA,IAA0C,CAAC,EAAE,SAAAC,GAAS,iBAAAC,QAC1D,gBAAAC,EAACC,GAAA,EAAa,OAAM,MAClB,UAAA,gBAAAD;AAAA,EAACE;AAAA,EAAA;AAAA,IACC,WAAU;AAAA,IACV,OAAM;AAAA,IACN,OAAOJ,KAAW;AAAA,IAClB,UAAU,CAACK,MAAMJ,EAAgBI,KAAK,EAAE;AAAA,IACxC,aAAY;AAAA,EAAA;AACd,EAAA,CACF;"}
@@ -0,0 +1,118 @@
1
+ import { jsxs as o, jsx as r } from "react/jsx-runtime";
2
+ import { LayoutGrid as y } from "../../../../Icons/index.js";
3
+ import _ from "@kne/button-group";
4
+ import { Tooltip as f, Typography as C, Progress as b } from "antd";
5
+ import l from "./style.module.scss.js";
6
+ import e from "classnames";
7
+ import x, { SEMANTIC_COLORS as T } from "../../../../Tag/SemanticTag.js";
8
+ const { Text: c, Paragraph: P } = C, I = ({
9
+ dataset: n,
10
+ onView: s,
11
+ onUpload: w,
12
+ onEdit: p,
13
+ onDelete: u
14
+ }) => {
15
+ var m, t;
16
+ const h = n.document_count ?? 0, N = n.chunk_count ?? 0, a = n.token_num ?? 0, k = ((t = (m = n.embedding_model) == null ? void 0 : m.split("/").pop()) == null ? void 0 : t.split("___")[0]) ?? "", i = (n.done_count ?? 0) + (n.running_count ?? 0) + (n.fail_count ?? 0) + (n.unstart_count ?? 0), g = n.done_count ?? 0, d = i > 0 ? Math.round(g / i * 100) : null;
17
+ return /* @__PURE__ */ o(
18
+ "div",
19
+ {
20
+ className: e("knowledge-card-wrapper", l["knowledge-card-wrapper"]),
21
+ onClick: () => s(n),
22
+ children: [
23
+ /* @__PURE__ */ r("div", { className: e("bg-primary", e("knowledge-card-inner", l["knowledge-card-inner"])) }),
24
+ /* @__PURE__ */ o("div", { className: e("knowledge-card-header", l["knowledge-card-header"]), children: [
25
+ /* @__PURE__ */ o("div", { className: e("knowledge-card-body", l["knowledge-card-body"]), children: [
26
+ /* @__PURE__ */ r("div", { className: e("knowledge-card-footer", l["knowledge-card-footer"]), children: /* @__PURE__ */ r(y, { className: e("text-primary", e("knowledge-card-row", l["knowledge-card-row"])) }) }),
27
+ /* @__PURE__ */ o("div", { className: e("knowledge-card-col", l["knowledge-card-col"]), children: [
28
+ /* @__PURE__ */ r(f, { title: n.name, children: /* @__PURE__ */ r(
29
+ c,
30
+ {
31
+ strong: !0,
32
+ className: e("knowledge-card-wrap", l["knowledge-card-wrap"]),
33
+ style: { lineHeight: "1.4" },
34
+ children: n.name
35
+ }
36
+ ) }),
37
+ k && /* @__PURE__ */ r(x, { color: T.INFO, className: e("knowledge-card-panel", l["knowledge-card-panel"]), children: k })
38
+ ] })
39
+ ] }),
40
+ /* @__PURE__ */ r(P, { type: "secondary", className: e("knowledge-card-card", l["knowledge-card-card"]), ellipsis: { rows: 2 }, children: n.description || "暂无描述" }),
41
+ /* @__PURE__ */ o("div", { className: e("knowledge-card-item", l["knowledge-card-item"]), children: [
42
+ /* @__PURE__ */ o("div", { className: e("knowledge-card-link", l["knowledge-card-link"]), children: [
43
+ /* @__PURE__ */ r(c, { strong: !0, className: e("knowledge-card-label", l["knowledge-card-label"]), children: h }),
44
+ /* @__PURE__ */ r(c, { type: "secondary", className: e("knowledge-card-value", l["knowledge-card-value"]), children: "文档" })
45
+ ] }),
46
+ /* @__PURE__ */ o("div", { className: e("knowledge-card-link", l["knowledge-card-link"]), children: [
47
+ /* @__PURE__ */ r(c, { strong: !0, className: e("knowledge-card-label", l["knowledge-card-label"]), children: N }),
48
+ /* @__PURE__ */ r(c, { type: "secondary", className: e("knowledge-card-value", l["knowledge-card-value"]), children: "分块" })
49
+ ] }),
50
+ /* @__PURE__ */ o("div", { className: e("knowledge-card-link", l["knowledge-card-link"]), children: [
51
+ /* @__PURE__ */ r(c, { strong: !0, className: e("knowledge-card-label", l["knowledge-card-label"]), children: a > 1e3 ? `${(a / 1e3).toFixed(0)}k` : a }),
52
+ /* @__PURE__ */ r(c, { type: "secondary", className: e("knowledge-card-value", l["knowledge-card-value"]), children: "Tokens" })
53
+ ] })
54
+ ] }),
55
+ d !== null && /* @__PURE__ */ o("div", { className: e("knowledge-card-meta", l["knowledge-card-meta"]), children: [
56
+ /* @__PURE__ */ o("div", { className: e("knowledge-card-icon", l["knowledge-card-icon"]), children: [
57
+ /* @__PURE__ */ r("span", { children: "解析进度" }),
58
+ /* @__PURE__ */ o("span", { children: [
59
+ g,
60
+ "/",
61
+ i
62
+ ] })
63
+ ] }),
64
+ /* @__PURE__ */ r(
65
+ b,
66
+ {
67
+ percent: d,
68
+ size: "small",
69
+ status: n.fail_count && n.fail_count > 0 ? "exception" : d === 100 ? "success" : "active",
70
+ strokeColor: d === 100 ? void 0 : "var(--primary-color)"
71
+ }
72
+ )
73
+ ] })
74
+ ] }),
75
+ /* @__PURE__ */ r(
76
+ "div",
77
+ {
78
+ className: e("knowledge-card-title", l["knowledge-card-title"]),
79
+ onClick: (v) => v.stopPropagation(),
80
+ children: /* @__PURE__ */ r(
81
+ _,
82
+ {
83
+ moreType: "link",
84
+ showLength: 1,
85
+ list: [
86
+ {
87
+ children: "查看文档",
88
+ onClick: () => s(n),
89
+ type: "link"
90
+ },
91
+ {
92
+ children: "上传文档",
93
+ onClick: () => w(n)
94
+ },
95
+ {
96
+ children: "编辑",
97
+ onClick: () => p(n)
98
+ },
99
+ {
100
+ children: "删除",
101
+ danger: !0,
102
+ message: `确认删除知识库「${n.name}」?删除后无法恢复。`,
103
+ isDelete: !0,
104
+ onClick: () => u(n)
105
+ }
106
+ ]
107
+ }
108
+ )
109
+ }
110
+ )
111
+ ]
112
+ }
113
+ );
114
+ };
115
+ export {
116
+ I as default
117
+ };
118
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../../src/components/AgentHub/KnowledgeBase/List/KnowledgeCard/index.tsx"],"sourcesContent":["import { SEMANTIC_COLORS, SemanticTag } from '@/components';\nimport type { Dataset } from '@/components/AgentHub/types';\nimport { LayoutGrid } from '@/components/Icons';\nimport ButtonGroup from '@kne/button-group';\nimport { Progress, Tooltip, Typography } from 'antd';\nimport React from 'react';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\nconst { Text, Paragraph } = Typography;\n\nexport interface KnowledgeCardProps {\n dataset: Dataset;\n onView: (dataset: Dataset) => void;\n onUpload: (dataset: Dataset) => void;\n onEdit: (dataset: Dataset) => void;\n onDelete: (dataset: Dataset) => void;\n}\n\nconst KnowledgeCard: React.FC<KnowledgeCardProps> = ({\n dataset,\n onView,\n onUpload,\n onEdit,\n onDelete,\n}) => {\n const docCount = dataset.document_count ?? 0;\n const chunkCount = dataset.chunk_count ?? 0;\n const tokenNum = dataset.token_num ?? 0;\n const modelShort = dataset.embedding_model?.split('/').pop()?.split('___')[0] ?? '';\n\n const totalDocs =\n (dataset.done_count ?? 0) +\n (dataset.running_count ?? 0) +\n (dataset.fail_count ?? 0) +\n (dataset.unstart_count ?? 0);\n const doneCount = dataset.done_count ?? 0;\n const parseProgress = totalDocs > 0 ? Math.round((doneCount / totalDocs) * 100) : null;\n\n return (\n <div\n className={classNames('knowledge-card-wrapper', styles['knowledge-card-wrapper'])}\n onClick={() => onView(dataset)}\n >\n {/* Top primary accent strip */}\n <div className={classNames('bg-primary', classNames('knowledge-card-inner', styles['knowledge-card-inner']))} />\n\n {/* Card body */}\n <div className={classNames('knowledge-card-header', styles['knowledge-card-header'])}>\n {/* Header: icon + name + model tag */}\n <div className={classNames('knowledge-card-body', styles['knowledge-card-body'])}>\n <div className={classNames('knowledge-card-footer', styles['knowledge-card-footer'])}>\n <LayoutGrid className={classNames('text-primary', classNames('knowledge-card-row', styles['knowledge-card-row']))} />\n </div>\n <div className={classNames('knowledge-card-col', styles['knowledge-card-col'])}>\n <Tooltip title={dataset.name}>\n <Text\n strong\n className={classNames('knowledge-card-wrap', styles['knowledge-card-wrap'])}\n style={{ lineHeight: '1.4' }}\n >\n {dataset.name}\n </Text>\n </Tooltip>\n {modelShort && (\n <SemanticTag color={SEMANTIC_COLORS.INFO} className={classNames('knowledge-card-panel', styles['knowledge-card-panel'])}>\n {modelShort}\n </SemanticTag>\n )}\n </div>\n </div>\n\n {/* Description */}\n <Paragraph type=\"secondary\" className={classNames('knowledge-card-card', styles['knowledge-card-card'])} ellipsis={{ rows: 2 }}>\n {dataset.description || '暂无描述'}\n </Paragraph>\n\n {/* Stats pills */}\n <div className={classNames('knowledge-card-item', styles['knowledge-card-item'])}>\n <div className={classNames('knowledge-card-link', styles['knowledge-card-link'])}>\n <Text strong className={classNames('knowledge-card-label', styles['knowledge-card-label'])}>\n {docCount}\n </Text>\n <Text type=\"secondary\" className={classNames('knowledge-card-value', styles['knowledge-card-value'])}>\n 文档\n </Text>\n </div>\n <div className={classNames('knowledge-card-link', styles['knowledge-card-link'])}>\n <Text strong className={classNames('knowledge-card-label', styles['knowledge-card-label'])}>\n {chunkCount}\n </Text>\n <Text type=\"secondary\" className={classNames('knowledge-card-value', styles['knowledge-card-value'])}>\n 分块\n </Text>\n </div>\n <div className={classNames('knowledge-card-link', styles['knowledge-card-link'])}>\n <Text strong className={classNames('knowledge-card-label', styles['knowledge-card-label'])}>\n {tokenNum > 1000 ? `${(tokenNum / 1000).toFixed(0)}k` : tokenNum}\n </Text>\n <Text type=\"secondary\" className={classNames('knowledge-card-value', styles['knowledge-card-value'])}>\n Tokens\n </Text>\n </div>\n </div>\n\n {/* Parse progress */}\n {parseProgress !== null && (\n <div className={classNames('knowledge-card-meta', styles['knowledge-card-meta'])}>\n <div className={classNames('knowledge-card-icon', styles['knowledge-card-icon'])}>\n <span>解析进度</span>\n <span>\n {doneCount}/{totalDocs}\n </span>\n </div>\n <Progress\n percent={parseProgress}\n size=\"small\"\n status={\n dataset.fail_count && dataset.fail_count > 0\n ? 'exception'\n : parseProgress === 100\n ? 'success'\n : 'active'\n }\n strokeColor={parseProgress === 100 ? undefined : 'var(--primary-color)'}\n />\n </div>\n )}\n </div>\n\n {/* Action footer */}\n <div\n className={classNames('knowledge-card-title', styles['knowledge-card-title'])}\n onClick={(e) => e.stopPropagation()}\n >\n <ButtonGroup\n moreType=\"link\"\n showLength={1}\n list={[\n {\n children: '查看文档',\n onClick: () => onView(dataset),\n type: 'link',\n },\n {\n children: '上传文档',\n onClick: () => onUpload(dataset),\n },\n {\n children: '编辑',\n onClick: () => onEdit(dataset),\n },\n {\n children: '删除',\n danger: true,\n message: `确认删除知识库「${dataset.name}」?删除后无法恢复。`,\n isDelete: true,\n onClick: () => onDelete(dataset),\n },\n ]}\n />\n </div>\n </div>\n );\n};\n\nexport default KnowledgeCard;\n"],"names":["Text","Paragraph","Typography","KnowledgeCard","dataset","onView","onUpload","onEdit","onDelete","docCount","chunkCount","tokenNum","modelShort","_b","_a","totalDocs","doneCount","parseProgress","jsxs","classNames","styles","jsx","LayoutGrid","Tooltip","SemanticTag","SEMANTIC_COLORS","Progress","e","ButtonGroup"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ const e = {
2
+ "knowledge-card-wrapper": "_knowledge-card-wrapper_a20ij_1",
3
+ "knowledge-card-inner": "_knowledge-card-inner_a20ij_20",
4
+ "knowledge-card-header": "_knowledge-card-header_a20ij_25",
5
+ "knowledge-card-body": "_knowledge-card-body_a20ij_32",
6
+ "knowledge-card-footer": "_knowledge-card-footer_a20ij_39",
7
+ "knowledge-card-row": "_knowledge-card-row_a20ij_50",
8
+ "knowledge-card-col": "_knowledge-card-col_a20ij_55",
9
+ "knowledge-card-wrap": "_knowledge-card-wrap_a20ij_1",
10
+ "knowledge-card-panel": "_knowledge-card-panel_a20ij_68",
11
+ "knowledge-card-card": "_knowledge-card-card_a20ij_73",
12
+ "knowledge-card-item": "_knowledge-card-item_a20ij_78",
13
+ "knowledge-card-link": "_knowledge-card-link_a20ij_85",
14
+ "knowledge-card-label": "_knowledge-card-label_a20ij_96",
15
+ "knowledge-card-value": "_knowledge-card-value_a20ij_100",
16
+ "knowledge-card-meta": "_knowledge-card-meta_a20ij_105",
17
+ "knowledge-card-icon": "_knowledge-card-icon_a20ij_109",
18
+ "knowledge-card-title": "_knowledge-card-title_a20ij_117"
19
+ };
20
+ export {
21
+ e as default
22
+ };
23
+ //# sourceMappingURL=style.module.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,47 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { Form as u, Modal as c } from "antd";
3
+ import s from "react";
4
+ import h from "../Form/Form.js";
5
+ const x = ({
6
+ open: i,
7
+ record: e,
8
+ onSubmit: d,
9
+ onSuccess: l,
10
+ onCancel: m
11
+ }) => {
12
+ const [t] = u.useForm(), [f, a] = s.useState(!1), n = !!e;
13
+ return s.useEffect(() => {
14
+ i && e && t.setFieldsValue({
15
+ name: e.name,
16
+ description: e.description,
17
+ embedding_model: e.embedding_model,
18
+ chunk_method: e.chunk_method
19
+ }), i || t.resetFields();
20
+ }, [i, e, t]), /* @__PURE__ */ o(
21
+ c,
22
+ {
23
+ title: n ? "编辑知识库" : "新建知识库",
24
+ open: i,
25
+ onOk: async () => {
26
+ const r = await t.validateFields();
27
+ a(!0);
28
+ try {
29
+ await d(r, e), l();
30
+ } finally {
31
+ a(!1);
32
+ }
33
+ },
34
+ onCancel: m,
35
+ okText: n ? "保存" : "创建",
36
+ cancelText: "取消",
37
+ confirmLoading: f,
38
+ destroyOnHidden: !0,
39
+ width: 520,
40
+ children: /* @__PURE__ */ o(h, { form: t })
41
+ }
42
+ );
43
+ };
44
+ export {
45
+ x as default
46
+ };
47
+ //# sourceMappingURL=FormModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormModal.js","sources":["../../../../../src/components/AgentHub/KnowledgeBase/Modal/FormModal.tsx"],"sourcesContent":["import type { Dataset } from '@/components/AgentHub/types';\nimport { Form, Modal } from 'antd';\nimport React from 'react';\nimport { KnowledgeBaseForm } from '../Form';\n\nexport interface KBFormModalProps {\n open: boolean;\n record?: Dataset | null;\n onSubmit: (values: Record<string, unknown>, record?: Dataset | null) => Promise<void>;\n onSuccess: () => void;\n onCancel: () => void;\n}\n\nconst KBFormModal: React.FC<KBFormModalProps> = ({\n open,\n record,\n onSubmit,\n onSuccess,\n onCancel,\n}) => {\n const [form] = Form.useForm();\n const [loading, setLoading] = React.useState(false);\n const isEdit = !!record;\n\n React.useEffect(() => {\n if (open && record) {\n form.setFieldsValue({\n name: record.name,\n description: record.description,\n embedding_model: record.embedding_model,\n chunk_method: record.chunk_method,\n });\n }\n if (!open) form.resetFields();\n }, [open, record, form]);\n\n const handleOk = async () => {\n const values = await form.validateFields();\n setLoading(true);\n try {\n await onSubmit(values, record);\n onSuccess();\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <Modal\n title={isEdit ? '编辑知识库' : '新建知识库'}\n open={open}\n onOk={handleOk}\n onCancel={onCancel}\n okText={isEdit ? '保存' : '创建'}\n cancelText=\"取消\"\n confirmLoading={loading}\n destroyOnHidden\n width={520}\n >\n <KnowledgeBaseForm form={form} />\n </Modal>\n );\n};\n\nexport default KBFormModal;\n"],"names":["KBFormModal","open","record","onSubmit","onSuccess","onCancel","form","Form","loading","setLoading","React","isEdit","jsx","Modal","values","KnowledgeBaseForm"],"mappings":";;;;AAaA,MAAMA,IAA0C,CAAC;AAAA,EAC/C,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AACF,MAAM;AACJ,QAAM,CAACC,CAAI,IAAIC,EAAK,QAAA,GACd,CAACC,GAASC,CAAU,IAAIC,EAAM,SAAS,EAAK,GAC5CC,IAAS,CAAC,CAACT;AAEjB,SAAAQ,EAAM,UAAU,MAAM;AACpB,IAAIT,KAAQC,KACVI,EAAK,eAAe;AAAA,MAClB,MAAMJ,EAAO;AAAA,MACb,aAAaA,EAAO;AAAA,MACpB,iBAAiBA,EAAO;AAAA,MACxB,cAAcA,EAAO;AAAA,IAAA,CACtB,GAEED,KAAMK,EAAK,YAAA;AAAA,EAClB,GAAG,CAACL,GAAMC,GAAQI,CAAI,CAAC,GAcrB,gBAAAM;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAOF,IAAS,UAAU;AAAA,MAC1B,MAAAV;AAAA,MACA,MAfa,YAAY;AAC3B,cAAMa,IAAS,MAAMR,EAAK,eAAA;AAC1B,QAAAG,EAAW,EAAI;AACf,YAAI;AACF,gBAAMN,EAASW,GAAQZ,CAAM,GAC7BE,EAAA;AAAA,QACF,UAAA;AACE,UAAAK,EAAW,EAAK;AAAA,QAClB;AAAA,MACF;AAAA,MAOI,UAAAJ;AAAA,MACA,QAAQM,IAAS,OAAO;AAAA,MACxB,YAAW;AAAA,MACX,gBAAgBH;AAAA,MAChB,iBAAe;AAAA,MACf,OAAO;AAAA,MAEP,UAAA,gBAAAI,EAACG,KAAkB,MAAAT,EAAA,CAAY;AAAA,IAAA;AAAA,EAAA;AAGrC;"}
@@ -0,0 +1,28 @@
1
+ const e = {
2
+ UNSTART: { label: "待解析", color: "warning" },
3
+ RUNNING: { label: "解析中", color: "processing", spinning: !0 },
4
+ DONE: { label: "已完成", color: "success" },
5
+ FAIL: { label: "解析失败", color: "error" },
6
+ CANCEL: { label: "已取消", color: "default" }
7
+ }, l = [
8
+ { label: "智能分块", value: "naive" },
9
+ { label: "手册/书籍", value: "book" },
10
+ { label: "问答对", value: "qa" },
11
+ { label: "表格", value: "table" },
12
+ { label: "图文混合", value: "paper" },
13
+ { label: "法律条文", value: "laws" },
14
+ { label: "演示文稿", value: "presentation" },
15
+ { label: "图片", value: "picture" },
16
+ { label: "One-pager", value: "one_pager" }
17
+ ], a = [
18
+ { label: "BAAI/bge-m3", value: "BAAI/bge-m3" },
19
+ { label: "BAAI/bge-large-zh-v1.5", value: "BAAI/bge-large-zh-v1.5" },
20
+ { label: "text-embedding-3-small", value: "text-embedding-3-small" },
21
+ { label: "text-embedding-3-large", value: "text-embedding-3-large" }
22
+ ];
23
+ export {
24
+ l as CHUNK_METHOD_OPTIONS,
25
+ a as EMBEDDING_MODEL_OPTIONS,
26
+ e as PARSE_STATUS_CONFIG
27
+ };
28
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":["../../../../../src/components/AgentHub/KnowledgeBase/constants/types.ts"],"sourcesContent":["import type { Dataset, KBDocument, ParseStatus } from '@/components/AgentHub/types';\n\nexport type { Dataset, KBDocument };\nexport { ParseStatus };\n\nexport const PARSE_STATUS_CONFIG: Record<\n string,\n { label: string; color: string; spinning?: boolean }\n> = {\n UNSTART: { label: '待解析', color: 'warning' },\n RUNNING: { label: '解析中', color: 'processing', spinning: true },\n DONE: { label: '已完成', color: 'success' },\n FAIL: { label: '解析失败', color: 'error' },\n CANCEL: { label: '已取消', color: 'default' },\n};\n\nexport const CHUNK_METHOD_OPTIONS = [\n { label: '智能分块', value: 'naive' },\n { label: '手册/书籍', value: 'book' },\n { label: '问答对', value: 'qa' },\n { label: '表格', value: 'table' },\n { label: '图文混合', value: 'paper' },\n { label: '法律条文', value: 'laws' },\n { label: '演示文稿', value: 'presentation' },\n { label: '图片', value: 'picture' },\n { label: 'One-pager', value: 'one_pager' },\n];\n\nexport const EMBEDDING_MODEL_OPTIONS = [\n { label: 'BAAI/bge-m3', value: 'BAAI/bge-m3' },\n { label: 'BAAI/bge-large-zh-v1.5', value: 'BAAI/bge-large-zh-v1.5' },\n { label: 'text-embedding-3-small', value: 'text-embedding-3-small' },\n { label: 'text-embedding-3-large', value: 'text-embedding-3-large' },\n];\n"],"names":["PARSE_STATUS_CONFIG","CHUNK_METHOD_OPTIONS","EMBEDDING_MODEL_OPTIONS"],"mappings":"AAKO,MAAMA,IAGT;AAAA,EACF,SAAS,EAAE,OAAO,OAAO,OAAO,UAAA;AAAA,EAChC,SAAS,EAAE,OAAO,OAAO,OAAO,cAAc,UAAU,GAAA;AAAA,EACxD,MAAM,EAAE,OAAO,OAAO,OAAO,UAAA;AAAA,EAC7B,MAAM,EAAE,OAAO,QAAQ,OAAO,QAAA;AAAA,EAC9B,QAAQ,EAAE,OAAO,OAAO,OAAO,UAAA;AACjC,GAEaC,IAAuB;AAAA,EAClC,EAAE,OAAO,QAAQ,OAAO,QAAA;AAAA,EACxB,EAAE,OAAO,SAAS,OAAO,OAAA;AAAA,EACzB,EAAE,OAAO,OAAO,OAAO,KAAA;AAAA,EACvB,EAAE,OAAO,MAAM,OAAO,QAAA;AAAA,EACtB,EAAE,OAAO,QAAQ,OAAO,QAAA;AAAA,EACxB,EAAE,OAAO,QAAQ,OAAO,OAAA;AAAA,EACxB,EAAE,OAAO,QAAQ,OAAO,eAAA;AAAA,EACxB,EAAE,OAAO,MAAM,OAAO,UAAA;AAAA,EACtB,EAAE,OAAO,aAAa,OAAO,YAAA;AAC/B,GAEaC,IAA0B;AAAA,EACrC,EAAE,OAAO,eAAe,OAAO,cAAA;AAAA,EAC/B,EAAE,OAAO,0BAA0B,OAAO,yBAAA;AAAA,EAC1C,EAAE,OAAO,0BAA0B,OAAO,yBAAA;AAAA,EAC1C,EAAE,OAAO,0BAA0B,OAAO,yBAAA;AAC5C;"}
@@ -0,0 +1,21 @@
1
+ import { useFetchData as d } from "../../../../hooks/useFetchData.js";
2
+ import { useMarsunFetch as m } from "../../../../provider/context.js";
3
+ const h = (e, r = {}) => {
4
+ var o;
5
+ const a = m(), s = (o = r.listUrl) == null ? void 0 : o.replace("{datasetId}", e ?? ""), { data: c, loading: n, reload: l } = d({
6
+ fetchUrl: s,
7
+ transformData: r.transformList ?? ((u) => {
8
+ const t = u;
9
+ return Array.isArray(t == null ? void 0 : t.data) ? t.data : [];
10
+ }),
11
+ enabled: !!s && !!e,
12
+ baseUrl: a.baseUrl,
13
+ defaultHeaders: a.headers,
14
+ timeoutMs: a.timeoutMs
15
+ });
16
+ return { data: c ?? [], loading: n, fetchData: l };
17
+ };
18
+ export {
19
+ h as useKBDocuments
20
+ };
21
+ //# sourceMappingURL=useKBDocuments.js.map