{{ tool?.title || tool?.name || t('Tool Details') }}
+{{ tool.title || tool.name || t('Untitled Tool') }}
+{{ t('Description') }}
+ +{{ t('Tool Marketplace') }}
+{{ t('Browse and install tools from Jingrow Tool Marketplace') }}
+diff --git a/apps/jingrow/frontend/src/app/router/index.ts b/apps/jingrow/frontend/src/app/router/index.ts index 7e82b34..0c88a54 100644 --- a/apps/jingrow/frontend/src/app/router/index.ts +++ b/apps/jingrow/frontend/src/app/router/index.ts @@ -87,7 +87,7 @@ const router = createRouter({ { path: 'tools', name: 'Tools', - component: () => import('../../views/tools/Tools.vue') + component: () => import('../../views/Tools.vue') }, { path: 'tools/remove-background', @@ -145,6 +145,16 @@ const router = createRouter({ name: 'AgentDetail', component: () => import('../../views/dev/AgentDetail.vue') }, + { + path: 'tool-marketplace', + name: 'ToolMarketplace', + component: () => import('../../views/dev/ToolMarketplace.vue') + }, + { + path: 'tool-marketplace/:name', + name: 'ToolDetail', + component: () => import('../../views/dev/ToolDetail.vue') + }, { path: 'app-marketplace/:name', name: 'AppDetail', diff --git a/apps/jingrow/frontend/src/shared/stores/menu.ts b/apps/jingrow/frontend/src/shared/stores/menu.ts index bced554..b0a2488 100644 --- a/apps/jingrow/frontend/src/shared/stores/menu.ts +++ b/apps/jingrow/frontend/src/shared/stores/menu.ts @@ -68,6 +68,7 @@ function getDefaultMenus(): AppMenuItem[] { { id: 'app-marketplace', key: 'AppMarketplace', label: 'App Marketplace', icon: 'tabler:shopping-cart', type: 'route', routeName: 'AppMarketplace', parentId: 'dev-group', order: 7.5 }, { id: 'node-marketplace', key: 'NodeMarketplace', label: 'Node Marketplace', icon: 'carbon:add-child-node', type: 'route', routeName: 'NodeMarketplace', parentId: 'dev-group', order: 8 }, { id: 'agent-marketplace', key: 'AgentMarketplace', label: 'Agent Marketplace', icon: 'hugeicons:robotic', type: 'route', routeName: 'AgentMarketplace', parentId: 'dev-group', order: 8.5 }, + { id: 'tool-marketplace', key: 'ToolMarketplace', label: 'Tool Marketplace', icon: 'tabler:tool', type: 'route', routeName: 'ToolMarketplace', parentId: 'dev-group', order: 8.7 }, { id: 'menuManager', key: 'MenuManager', label: 'Menu Management', icon: 'tabler:menu-2', type: 'route', routeName: 'MenuManager', order: 11 }, { id: 'settings', key: 'Settings', label: 'Settings', icon: 'tabler:settings', routeName: 'Settings', order: 12, type: 'route' } ] @@ -189,9 +190,9 @@ export const useMenuStore = defineStore('menu', () => { return false } - // 开发分组下只允许显示:应用市场、节点市场、智能体市场 + // 开发分组下只允许显示:应用市场、节点市场、智能体市场、工具市场 if (m.parentId === 'dev-group') { - const allowedDevMenus = ['app-marketplace', 'node-marketplace', 'agent-marketplace'] + const allowedDevMenus = ['app-marketplace', 'node-marketplace', 'agent-marketplace', 'tool-marketplace'] if (!allowedDevMenus.includes(m.id)) { return false } diff --git a/apps/jingrow/frontend/src/shared/stores/tools.ts b/apps/jingrow/frontend/src/shared/stores/tools.ts index 814ce57..2b6bf83 100644 --- a/apps/jingrow/frontend/src/shared/stores/tools.ts +++ b/apps/jingrow/frontend/src/shared/stores/tools.ts @@ -15,6 +15,13 @@ export interface Tool { order?: number isDefault?: boolean hidden?: boolean + // 市场工具相关 + fromMarketplace?: boolean + marketplaceId?: string + version?: string + author?: string + rating?: number + downloads?: number } const STORAGE_KEY = 'tools.userItems' diff --git a/apps/jingrow/frontend/src/views/tools/Tools.vue b/apps/jingrow/frontend/src/views/Tools.vue similarity index 95% rename from apps/jingrow/frontend/src/views/tools/Tools.vue rename to apps/jingrow/frontend/src/views/Tools.vue index ff6d898..c51da8b 100644 --- a/apps/jingrow/frontend/src/views/tools/Tools.vue +++ b/apps/jingrow/frontend/src/views/Tools.vue @@ -2,10 +2,16 @@
{{ t('Browse and install tools from Jingrow Tool Marketplace') }}
+