diff --git a/src/agentkit/server/frontend/src/App.vue b/src/agentkit/server/frontend/src/App.vue index 91809fc..f3fd2b6 100644 --- a/src/agentkit/server/frontend/src/App.vue +++ b/src/agentkit/server/frontend/src/App.vue @@ -1,13 +1,12 @@ diff --git a/src/agentkit/server/frontend/src/components/layout/AgentLayout.vue b/src/agentkit/server/frontend/src/components/layout/AgentLayout.vue new file mode 100644 index 0000000..6860183 --- /dev/null +++ b/src/agentkit/server/frontend/src/components/layout/AgentLayout.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/src/agentkit/server/frontend/src/components/layout/QuadrantPanel.vue b/src/agentkit/server/frontend/src/components/layout/QuadrantPanel.vue new file mode 100644 index 0000000..84887f7 --- /dev/null +++ b/src/agentkit/server/frontend/src/components/layout/QuadrantPanel.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/src/agentkit/server/frontend/src/components/layout/SplitPane.vue b/src/agentkit/server/frontend/src/components/layout/SplitPane.vue new file mode 100644 index 0000000..5179031 --- /dev/null +++ b/src/agentkit/server/frontend/src/components/layout/SplitPane.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/src/agentkit/server/frontend/src/components/layout/TopNav.vue b/src/agentkit/server/frontend/src/components/layout/TopNav.vue new file mode 100644 index 0000000..a963ac0 --- /dev/null +++ b/src/agentkit/server/frontend/src/components/layout/TopNav.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/src/agentkit/server/frontend/src/router/index.ts b/src/agentkit/server/frontend/src/router/index.ts index 9421ffe..842a6ed 100644 --- a/src/agentkit/server/frontend/src/router/index.ts +++ b/src/agentkit/server/frontend/src/router/index.ts @@ -2,96 +2,135 @@ import { createRouter, createWebHistory } from 'vue-router' import type { RouteRecordRaw } from 'vue-router' const routes: RouteRecordRaw[] = [ + // Agent-First 四象限布局 (新) + { + path: '/agent', + name: 'agent', + component: () => import('@/components/layout/AgentLayout.vue'), + meta: { title: 'AgentKit' }, + children: [ + { + path: '', + redirect: '/agent/chat', + }, + { + path: 'chat', + name: 'agent-chat', + meta: { title: '对话', quadrant: 'tl', tab: 'chat' }, + component: () => import('@/views/ChatView.vue'), + }, + { + path: 'code', + name: 'agent-code', + meta: { title: '代码', quadrant: 'tr', tab: 'code' }, + component: () => import('@/views/ChatView.vue'), + }, + { + path: 'terminal', + name: 'agent-terminal', + meta: { title: '终端', quadrant: 'bl', tab: 'terminal' }, + component: () => import('@/views/TerminalView.vue'), + }, + { + path: 'monitor', + name: 'agent-monitor', + meta: { title: '监控', quadrant: 'br', tab: 'monitor' }, + component: () => import('@/views/EvolutionView.vue'), + }, + ], + }, + + // Default redirect to agent layout { path: '/', - name: 'chat', - component: () => import('@/views/ChatView.vue'), - meta: { title: '智能对话' }, + redirect: '/agent', }, + + // Legacy route redirects → agent quadrant routes { path: '/workflow', - name: 'workflow', - component: () => import('@/views/WorkflowView.vue'), - meta: { title: '工作流' }, + redirect: '/agent/code?tab=workflow', }, { path: '/knowledge', - name: 'knowledge', - component: () => import('@/views/KnowledgeBaseView.vue'), - meta: { title: '知识库' }, + redirect: '/agent/code?tab=knowledge', }, { path: '/skills', - name: 'skills', - component: () => import('@/views/SkillsView.vue'), - meta: { title: '技能' }, + redirect: '/agent/monitor?tab=skills', + }, + { + path: '/evolution', + redirect: '/agent/monitor?tab=monitor', + }, + { + path: '/settings', + redirect: '/agent/monitor?tab=settings', }, { path: '/terminal', - name: 'terminal', - component: () => import('@/views/TerminalView.vue'), - meta: { title: '终端' }, + redirect: '/agent/terminal', }, + + // Computer Use (保留独立路由,显示"即将推出") { path: '/computer-use', name: 'computer-use', component: () => import('@/views/ComputerUseView.vue'), meta: { title: 'Computer Use' }, }, + + // Legacy layout (fallback) { - path: '/evolution', - name: 'evolution', - component: () => import('@/views/EvolutionView.vue'), - meta: { title: '自进化' }, + path: '/legacy', + name: 'legacy', + component: () => import('@/components/layout/AppLayout.vue'), + meta: { title: 'Fischer AgentKit (Legacy)' }, children: [ { - path: '', - redirect: '/evolution/overview', + path: 'chat', + name: 'legacy-chat', + component: () => import('@/views/ChatView.vue'), + meta: { title: '智能对话' }, }, { - path: 'overview', - name: 'evolution-overview', - component: () => import('@/components/evolution/DashboardOverview.vue'), - meta: { title: '概览 - 自进化' }, + path: 'workflow', + name: 'legacy-workflow', + component: () => import('@/views/WorkflowView.vue'), + meta: { title: '工作流' }, }, { - path: 'experiences', - name: 'evolution-experiences', - component: () => import('@/components/evolution/ExperiencePanel.vue'), - meta: { title: '经验记录 - 自进化' }, + path: 'knowledge', + name: 'legacy-knowledge', + component: () => import('@/views/KnowledgeBaseView.vue'), + meta: { title: '知识库' }, }, { - path: 'metrics', - name: 'evolution-metrics', - component: () => import('@/components/evolution/MetricsPanel.vue'), - meta: { title: '指标趋势 - 自进化' }, + path: 'skills', + name: 'legacy-skills', + component: () => import('@/views/SkillsView.vue'), + meta: { title: '技能' }, }, { - path: 'pitfalls', - name: 'evolution-pitfalls', - component: () => import('@/components/evolution/PitfallRoutePanel.vue'), - meta: { title: '避坑预警 - 自进化' }, + path: 'terminal', + name: 'legacy-terminal', + component: () => import('@/views/TerminalView.vue'), + meta: { title: '终端' }, }, { - path: 'optimizations', - name: 'evolution-optimizations', - component: () => import('@/components/evolution/OptimizationPanel.vue'), - meta: { title: '路径优化 - 自进化' }, + path: 'evolution', + name: 'legacy-evolution', + component: () => import('@/views/EvolutionView.vue'), + meta: { title: '自进化' }, }, { - path: 'usage', - name: 'evolution-usage', - component: () => import('@/components/evolution/UsagePanel.vue'), - meta: { title: '用量统计 - 自进化' }, + path: 'settings', + name: 'legacy-settings', + component: () => import('@/views/SettingsView.vue'), + meta: { title: '设置' }, }, ], }, - { - path: '/settings', - name: 'settings', - component: () => import('@/views/SettingsView.vue'), - meta: { title: '设置' }, - }, ] const router = createRouter({