From f3c8f2e1abeb7d677698ee14811661fee4b8fcc0 Mon Sep 17 00:00:00 2001 From: fengxiangdebaozi <10845145+fengxiangdebaozi@user.noreply.gitee.com> Date: Thu, 28 May 2026 11:45:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workspace/agents/agent-card.tsx | 30 +- frontend-web/src/pages/StrategyRoutes.tsx | 271 ++++++++++-------- .../components/MessageStepsCard.tsx | 9 +- .../components/Step1Panel.tsx | 8 +- .../components/Step2Panel.tsx | 17 ++ .../hooks/useStep2Orchestration.ts | 76 ++++- .../lib/roundtable-constants.ts | 80 +++++- .../roundtable-planning/lib/step-display.tsx | 27 +- .../pages/RoundtablePlanningPage.tsx | 1 + .../task-components/TaskManagement.tsx | 166 +++++++++++ .../components/task-components/TaskXkFrom.tsx | 23 ++ .../backend/app/gateway/routers/intent.py | 153 ++++++++-- 12 files changed, 689 insertions(+), 172 deletions(-) create mode 100644 frontend-web/src/strategy-components/components/task-components/TaskManagement.tsx create mode 100644 frontend-web/src/strategy-components/components/task-components/TaskXkFrom.tsx diff --git a/frontend-web/src/components/workspace/agents/agent-card.tsx b/frontend-web/src/components/workspace/agents/agent-card.tsx index 0842da4e..7a2c63fc 100644 --- a/frontend-web/src/components/workspace/agents/agent-card.tsx +++ b/frontend-web/src/components/workspace/agents/agent-card.tsx @@ -40,6 +40,7 @@ import { SkillDetailDialog } from "@/components/workspace/skills/skill-detail-di import { TagChipList } from "@/components/workspace/tags/tag-chip"; import { TagPickerDialog } from "@/components/workspace/tags/tag-picker-dialog"; import { + useAgent, useDeleteAgent, useSetAgentFeatured, useUpdateAgent, @@ -74,6 +75,13 @@ export function AgentCard({ agent }: AgentCardProps) { ); const [detailSkillName, setDetailSkillName] = useState(null); + // The /api/agents list response intentionally omits `soul` (perf optimization + // — SOUL.md is only read on demand). Fetch the detail row when the edit + // dialog opens so the SOUL textarea can be hydrated. + const { agent: agentDetail, isLoading: isAgentDetailLoading } = useAgent( + editOpen ? agent.id : null, + ); + const storedAuth = useMemo(() => getStoredAuth(), []); const currentUserId = storedAuth?.user_id ?? null; const isAdmin = storedAuth?.system_role === "admin"; @@ -93,7 +101,6 @@ export function AgentCard({ agent }: AgentCardProps) { } setEditName(agent.name); setEditDescription(agent.description ?? ""); - setEditSoul(agent.soul ?? ""); setEditPublished(agent.published); setSelectedSkills(agent.skills ?? []); }, [ @@ -101,10 +108,23 @@ export function AgentCard({ agent }: AgentCardProps) { agent.name, agent.published, agent.skills, - agent.soul, editOpen, ]); + useEffect(() => { + if (!editOpen) { + return; + } + // SOUL.md only ships on the detail endpoint; fall back to whatever the list + // happened to carry so older deployments (or cached objects that still + // include `soul`) keep working. + if (agentDetail) { + setEditSoul(agentDetail.soul ?? ""); + } else { + setEditSoul(agent.soul ?? ""); + } + }, [agent.soul, agentDetail, editOpen]); + function handleChat() { router.push(`/page/workspace/agents/${agent.id}/chats/new`); } @@ -459,7 +479,11 @@ export function AgentCard({ agent }: AgentCardProps) {