diff --git a/web/src/hooks/logic-hooks/navigate-hooks.ts b/web/src/hooks/logic-hooks/navigate-hooks.ts index aaa4557d2..785b5add7 100644 --- a/web/src/hooks/logic-hooks/navigate-hooks.ts +++ b/web/src/hooks/logic-hooks/navigate-hooks.ts @@ -38,6 +38,14 @@ export const useNavigatePage = () => { navigate(Routes.Chat); }, [navigate]); + const navigateToAgentList = useCallback(() => { + navigate(Routes.Agents); + }, [navigate]); + + const navigateToAgent = useCallback(() => { + navigate(Routes.Agent); + }, [navigate]); + const navigateToChunkParsedResult = useCallback( (id: string, knowledgeId?: string) => () => { navigate( @@ -81,5 +89,7 @@ export const useNavigatePage = () => { navigateToChunkParsedResult, getQueryString, navigateToChunk, + navigateToAgentList, + navigateToAgent, }; }; diff --git a/web/src/layouts/next-header.tsx b/web/src/layouts/next-header.tsx index fe0dc175b..ec7d08080 100644 --- a/web/src/layouts/next-header.tsx +++ b/web/src/layouts/next-header.tsx @@ -33,7 +33,7 @@ export function Header() { { path: Routes.Datasets, name: t('knowledgeBase'), icon: Library }, { path: Routes.Chats, name: t('chat'), icon: MessageSquareText }, { path: Routes.Search, name: t('search'), icon: Search }, - { path: Routes.Agent, name: t('flow'), icon: Cpu }, + { path: Routes.Agents, name: t('flow'), icon: Cpu }, { path: Routes.Files, name: t('fileManager'), icon: File }, ], [t], diff --git a/web/src/pages/agent/index.tsx b/web/src/pages/agent/index.tsx index fe5b35f96..0822716aa 100644 --- a/web/src/pages/agent/index.tsx +++ b/web/src/pages/agent/index.tsx @@ -1,3 +1,33 @@ +import { PageHeader } from '@/components/page-header'; +import { Button } from '@/components/ui/button'; +import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks'; +import { Trash2 } from 'lucide-react'; + export default function Agent() { - return
Agent
; + const { navigateToAgentList } = useNavigatePage(); + + return ( +
+ +
+ + + + + + +
+
+
+ ); } diff --git a/web/src/pages/agents/agent-card.tsx b/web/src/pages/agents/agent-card.tsx new file mode 100644 index 000000000..7524f96c6 --- /dev/null +++ b/web/src/pages/agents/agent-card.tsx @@ -0,0 +1,53 @@ +import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; +import { Button } from '@/components/ui/button'; +import { Card, CardContent } from '@/components/ui/card'; +import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks'; +import { IFlow } from '@/interfaces/database/flow'; +import { formatPureDate } from '@/utils/date'; +import { ChevronRight, Trash2 } from 'lucide-react'; + +interface IProps { + data: IFlow; +} + +export function AgentCard({ data }: IProps) { + const { navigateToAgent } = useNavigatePage(); + + return ( + + +
+ {data.avatar ? ( +
+ ) : ( + + + CN + + )} +
+

{data.title}

+

An app that does things An app that does things

+
+
+ Search app +

+ {formatPureDate(data.update_time)} +

+
+
+ + +
+
+ + + ); +} diff --git a/web/src/pages/agents/index.tsx b/web/src/pages/agents/index.tsx new file mode 100644 index 000000000..7a037758c --- /dev/null +++ b/web/src/pages/agents/index.tsx @@ -0,0 +1,24 @@ +import ListFilterBar from '@/components/list-filter-bar'; +import { useFetchFlowList } from '@/hooks/flow-hooks'; +import { Plus } from 'lucide-react'; +import { AgentCard } from './agent-card'; + +export default function Agent() { + const { data } = useFetchFlowList(); + + return ( +
+
+ + + Create app + +
+
+ {data.map((x) => { + return ; + })} +
+
+ ); +} diff --git a/web/src/routes.ts b/web/src/routes.ts index d3689f5b6..88bbf9858 100644 --- a/web/src/routes.ts +++ b/web/src/routes.ts @@ -5,6 +5,7 @@ export enum Routes { DatasetBase = '/dataset', Dataset = `${Routes.DatasetBase}${Routes.DatasetBase}`, Agent = '/agent', + Agents = '/agents', Search = '/next-search', Chats = '/next-chats', Chat = '/next-chat', @@ -196,16 +197,21 @@ const routes = [ ], }, { - path: Routes.Agent, + path: Routes.Agents, layout: false, component: '@/layouts/next', routes: [ { - path: Routes.Agent, - component: `@/pages${Routes.Agent}`, + path: Routes.Agents, + component: `@/pages${Routes.Agents}`, }, ], }, + { + path: Routes.Agent, + layout: false, + component: `@/pages${Routes.Agent}`, + }, { path: Routes.Files, layout: false,