33import { useCallback , useMemo , useRef , useState } from 'react'
44import { createLogger } from '@sim/logger'
55import { useParams , useRouter } from 'next/navigation'
6+ import { Tooltip } from '@/components/emcn'
67import { Database } from '@/components/emcn/icons'
78import type { KnowledgeBaseData } from '@/lib/knowledge/types'
89import type {
910 CreateAction ,
11+ ResourceCell ,
1012 ResourceColumn ,
1113 ResourceRow ,
1214 SearchConfig ,
@@ -23,6 +25,7 @@ import {
2325import { filterKnowledgeBases } from '@/app/workspace/[workspaceId]/knowledge/utils/sort'
2426import { useUserPermissionsContext } from '@/app/workspace/[workspaceId]/providers/workspace-permissions-provider'
2527import { useContextMenu } from '@/app/workspace/[workspaceId]/w/components/sidebar/hooks'
28+ import { CONNECTOR_REGISTRY } from '@/connectors/registry'
2629import { useKnowledgeBasesList } from '@/hooks/kb/use-knowledge'
2730import { useDeleteKnowledgeBase , useUpdateKnowledgeBase } from '@/hooks/queries/kb/knowledge'
2831import { useWorkspaceMembersQuery } from '@/hooks/queries/workspace'
@@ -37,13 +40,42 @@ const COLUMNS: ResourceColumn[] = [
3740 { id : 'name' , header : 'Name' } ,
3841 { id : 'documents' , header : 'Documents' } ,
3942 { id : 'tokens' , header : 'Tokens' } ,
43+ { id : 'connectors' , header : 'Connectors' } ,
4044 { id : 'created' , header : 'Created' } ,
4145 { id : 'owner' , header : 'Owner' } ,
4246 { id : 'updated' , header : 'Last Updated' } ,
4347]
4448
4549const DATABASE_ICON = < Database className = 'h-[14px] w-[14px]' />
4650
51+ function connectorCell ( connectorTypes ?: string [ ] ) : ResourceCell {
52+ if ( ! connectorTypes || connectorTypes . length === 0 ) {
53+ return { label : '—' }
54+ }
55+
56+ return {
57+ content : (
58+ < div className = 'flex items-center gap-1' >
59+ { connectorTypes . map ( ( type ) => {
60+ const def = CONNECTOR_REGISTRY [ type ]
61+ const Icon = def ?. icon
62+ if ( ! Icon ) return null
63+ return (
64+ < Tooltip . Root key = { type } >
65+ < Tooltip . Trigger asChild >
66+ < span className = 'flex-shrink-0' >
67+ < Icon className = 'h-3.5 w-3.5' />
68+ </ span >
69+ </ Tooltip . Trigger >
70+ < Tooltip . Content > { def . name } </ Tooltip . Content >
71+ </ Tooltip . Root >
72+ )
73+ } ) }
74+ </ div >
75+ ) ,
76+ }
77+ }
78+
4779export function Knowledge ( ) {
4880 const params = useParams ( )
4981 const router = useRouter ( )
@@ -168,13 +200,15 @@ export function Knowledge() {
168200 tokens : {
169201 label : kb . tokenCount ? kb . tokenCount . toLocaleString ( ) : '0' ,
170202 } ,
203+ connectors : connectorCell ( kb . connectorTypes ) ,
171204 created : timeCell ( kb . createdAt ) ,
172205 owner : ownerCell ( kb . userId , members ) ,
173206 updated : timeCell ( kb . updatedAt ) ,
174207 } ,
175208 sortValues : {
176209 documents : kbWithCount . docCount || 0 ,
177210 tokens : kb . tokenCount || 0 ,
211+ connectors : kb . connectorTypes ?. length || 0 ,
178212 created : - new Date ( kb . createdAt ) . getTime ( ) ,
179213 updated : - new Date ( kb . updatedAt ) . getTime ( ) ,
180214 } ,
0 commit comments