From 27d7cc6a0907eed82eeb00e423e026aeaa9ee0c4 Mon Sep 17 00:00:00 2001 From: ddcat666 <26564566+ddcat666@users.noreply.github.com> Date: Thu, 8 Oct 2026 10:54:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(skills):=20=E6=8A=80=E8=83=BD=E5=88=86?= =?UTF-8?q?=E7=B1=BB=20-=20=E5=90=8E=E5=8F=B0=E6=94=B9=E4=B8=BA=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E6=A0=91=E7=BC=96=E8=BE=91=EF=BC=8C=E6=8A=80=E8=83=BD?= =?UTF-8?q?=E5=BA=93=E6=8C=89=E4=B8=80=E7=BA=A7=E5=88=86=E7=B1=BB=E7=AD=9B?= =?UTF-8?q?=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 管理页左侧选择一级分类和子分类,右侧编辑名称、图示、排序和启用;画布技能库与浏览条按平台一级分类和子分类筛选。 --- .../canvas-agent-skill-library-modal.tsx | 43 +- .../components/canvas/canvas-cloud-agent.css | 54 + .../skills/skill-curation-browser.tsx | 26 +- web/src/pages/admin/skill-curation-page.css | 1084 ++++++++++++++++- web/src/pages/admin/skill-curation-page.tsx | 737 +++++++---- web/src/styles/workspace-product.css | 3 + 6 files changed, 1660 insertions(+), 287 deletions(-) diff --git a/web/src/components/canvas/canvas-agent-skill-library-modal.tsx b/web/src/components/canvas/canvas-agent-skill-library-modal.tsx index c77c3d0ae..6fa552c50 100644 --- a/web/src/components/canvas/canvas-agent-skill-library-modal.tsx +++ b/web/src/components/canvas/canvas-agent-skill-library-modal.tsx @@ -1,11 +1,11 @@ -import { useEffect, useMemo, useRef, useState } from "react"; -import { Button, Input } from "antd"; +import { useEffect, useMemo, useRef, useState, type ReactNode } from "react"; +import { Alert, Button, Input } from "antd"; import { Check, LoaderCircle, Plus, Search, Sparkles, Users } from "lucide-react"; import { AppModal } from "@/components/ui/product/app-modal"; import type { CanvasTheme } from "@/lib/canvas-theme"; import type { Skill, SkillCategory, SkillLibraryCategory } from "@/services/api/skills"; -import { SkillCurationBrowser, matchesCuration, effectiveCurationRoot, type useSkillCuration } from "@/components/skills/skill-curation-browser"; +import { curationIcon, matchesCuration, effectiveCurationRoot, type useSkillCuration } from "@/components/skills/skill-curation-browser"; type SkillLibraryTab = "enabled" | "installed" | "market"; @@ -72,6 +72,14 @@ export function CanvasAgentSkillLibraryModal({ listRef.current?.scrollTo({ top: 0 }); }, [category, libraryCategoryId, search, tab]); + useEffect(() => { + const data = curationState.curation; + const valid = platformCategory.startsWith("root:") + ? data?.roots?.some((root) => root.id === platformCategory.slice(5)) + : data?.categories.some((item) => item.id === platformCategory); + if ((!data?.enabled || (platformCategory && platformCategory !== "__uncategorized__" && !valid)) && platformCategory) onPlatformCategoryChange(""); + }, [curationState.curation, onPlatformCategoryChange, platformCategory]); + const librarySource = useMemo(() => tab === "enabled" ? installedSkills.filter((skill) => selectedSkillIds.includes(skill.skillId)) : installedSkills, [installedSkills, selectedSkillIds, tab]); @@ -188,7 +196,29 @@ export function CanvasAgentSkillLibraryModal({ className="canvas-agent-skill-library-search" />