From f72818bed5755d829e2ce66c617be06269993f88 Mon Sep 17 00:00:00 2001 From: zxhlyh Date: Mon, 30 Dec 2024 11:14:28 +0800 Subject: [PATCH 1/2] fix: agent log structure --- .../run/agent-log/agent-log-nav-more.tsx | 7 +++++ .../workflow/run/agent-log/agent-log-nav.tsx | 20 ++++++++++-- .../run/agent-log/agent-log-trigger.tsx | 2 +- .../run/agent-log/agent-result-panel.tsx | 16 ++++++---- web/app/components/workflow/run/hooks.ts | 31 +++++++++++-------- web/app/components/workflow/run/node.tsx | 2 +- .../components/workflow/run/result-panel.tsx | 2 +- .../workflow/run/special-result-panel.tsx | 10 +++--- .../components/workflow/run/tracing-panel.tsx | 4 +-- 9 files changed, 62 insertions(+), 32 deletions(-) diff --git a/web/app/components/workflow/run/agent-log/agent-log-nav-more.tsx b/web/app/components/workflow/run/agent-log/agent-log-nav-more.tsx index f3179492ce..f965a86f31 100644 --- a/web/app/components/workflow/run/agent-log/agent-log-nav-more.tsx +++ b/web/app/components/workflow/run/agent-log/agent-log-nav-more.tsx @@ -6,12 +6,15 @@ import { PortalToFollowElemTrigger, } from '@/app/components/base/portal-to-follow-elem' import Button from '@/app/components/base/button' +import type { AgentLogItemWithChildren } from '@/types/workflow' type AgentLogNavMoreProps = { options: { id: string; label: string }[] + onShowAgentOrToolLog: (detail?: AgentLogItemWithChildren) => void } const AgentLogNavMore = ({ options, + onShowAgentOrToolLog, }: AgentLogNavMoreProps) => { const [open, setOpen] = useState(false) @@ -40,6 +43,10 @@ const AgentLogNavMore = ({
{ + onShowAgentOrToolLog(option as AgentLogItemWithChildren) + setOpen(false) + }} > {option.label}
diff --git a/web/app/components/workflow/run/agent-log/agent-log-nav.tsx b/web/app/components/workflow/run/agent-log/agent-log-nav.tsx index 00166b398b..50501ef026 100644 --- a/web/app/components/workflow/run/agent-log/agent-log-nav.tsx +++ b/web/app/components/workflow/run/agent-log/agent-log-nav.tsx @@ -1,15 +1,28 @@ import { RiArrowLeftLine } from '@remixicon/react' import AgentLogNavMore from './agent-log-nav-more' import Button from '@/app/components/base/button' +import type { AgentLogItemWithChildren } from '@/types/workflow' + +type AgentLogNavProps = { + agentOrToolLogItemStack: { id: string; label: string }[] + agentOrToolLogListMap: Record + onShowAgentOrToolLog: (detail?: AgentLogItemWithChildren) => void +} +const AgentLogNav = ({ + agentOrToolLogItemStack, + agentOrToolLogListMap, + onShowAgentOrToolLog, +}: AgentLogNavProps) => { + const top = agentOrToolLogItemStack[agentOrToolLogItemStack.length - 1] + const options = agentOrToolLogListMap[top.id] -const AgentLogNav = () => { return (
/
/
diff --git a/web/app/components/workflow/run/agent-log/agent-log-trigger.tsx b/web/app/components/workflow/run/agent-log/agent-log-trigger.tsx index 150d1d713d..825f59f085 100644 --- a/web/app/components/workflow/run/agent-log/agent-log-trigger.tsx +++ b/web/app/components/workflow/run/agent-log/agent-log-trigger.tsx @@ -6,7 +6,7 @@ import type { type AgentLogTriggerProps = { nodeInfo: NodeTracing - onShowAgentOrToolLog: (detail: AgentLogItemWithChildren) => void + onShowAgentOrToolLog: (detail?: AgentLogItemWithChildren) => void } const AgentLogTrigger = ({ nodeInfo, diff --git a/web/app/components/workflow/run/agent-log/agent-result-panel.tsx b/web/app/components/workflow/run/agent-log/agent-result-panel.tsx index 8055ec3486..fe40d751d3 100644 --- a/web/app/components/workflow/run/agent-log/agent-result-panel.tsx +++ b/web/app/components/workflow/run/agent-log/agent-result-panel.tsx @@ -3,21 +3,25 @@ import AgentLogNav from './agent-log-nav' import type { AgentLogItemWithChildren } from '@/types/workflow' type AgentResultPanelProps = { - agentOrToolLogIdStack: string[] + agentOrToolLogItemStack: { id: string; label: string }[] agentOrToolLogListMap: Record - onShowAgentOrToolLog: (detail: AgentLogItemWithChildren) => void + onShowAgentOrToolLog: (detail?: AgentLogItemWithChildren) => void } const AgentResultPanel = ({ - agentOrToolLogIdStack, + agentOrToolLogItemStack, agentOrToolLogListMap, onShowAgentOrToolLog, }: AgentResultPanelProps) => { - const top = agentOrToolLogIdStack[agentOrToolLogIdStack.length - 1] - const list = agentOrToolLogListMap[top] + const top = agentOrToolLogItemStack[agentOrToolLogItemStack.length - 1] + const list = agentOrToolLogListMap[top.id] return (
- + {
{ diff --git a/web/app/components/workflow/run/hooks.ts b/web/app/components/workflow/run/hooks.ts index d14e39ce47..b9c879a204 100644 --- a/web/app/components/workflow/run/hooks.ts +++ b/web/app/components/workflow/run/hooks.ts @@ -33,22 +33,27 @@ export const useLogs = () => { setIterationResultDurationMap(iterDurationMap) }, [setShowIteratingDetailTrue, setIterationResultList, setIterationResultDurationMap]) - const [agentOrToolLogIdStack, setAgentOrToolLogIdStack] = useState([]) - const agentOrToolLogIdStackRef = useRef(agentOrToolLogIdStack) + const [agentOrToolLogItemStack, setAgentOrToolLogItemStack] = useState<{ id: string; label: string }[]>([]) + const agentOrToolLogItemStackRef = useRef(agentOrToolLogItemStack) const [agentOrToolLogListMap, setAgentOrToolLogListMap] = useState>({}) const agentOrToolLogListMapRef = useRef(agentOrToolLogListMap) - const handleShowAgentOrToolLog = useCallback((detail: AgentLogItemWithChildren) => { - const { id, children } = detail - let currentAgentOrToolLogIdStack = agentOrToolLogIdStackRef.current.slice() - const index = currentAgentOrToolLogIdStack.findIndex(logId => logId === id) + const handleShowAgentOrToolLog = useCallback((detail?: AgentLogItemWithChildren) => { + if (!detail) { + setAgentOrToolLogItemStack([]) + agentOrToolLogItemStackRef.current = [] + return + } + const { id, label, children } = detail + let currentAgentOrToolLogItemStack = agentOrToolLogItemStackRef.current.slice() + const index = currentAgentOrToolLogItemStack.findIndex(logItem => logItem.id === id) if (index > -1) - currentAgentOrToolLogIdStack = currentAgentOrToolLogIdStack.slice(0, index + 1) + currentAgentOrToolLogItemStack = currentAgentOrToolLogItemStack.slice(0, index + 1) else - currentAgentOrToolLogIdStack = [...currentAgentOrToolLogIdStack.slice(), id] + currentAgentOrToolLogItemStack = [...currentAgentOrToolLogItemStack.slice(), { id, label }] - setAgentOrToolLogIdStack(currentAgentOrToolLogIdStack) - agentOrToolLogIdStackRef.current = currentAgentOrToolLogIdStack + setAgentOrToolLogItemStack(currentAgentOrToolLogItemStack) + agentOrToolLogItemStackRef.current = currentAgentOrToolLogItemStack if (children) { setAgentOrToolLogListMap({ @@ -56,10 +61,10 @@ export const useLogs = () => { [id]: children, }) } - }, [setAgentOrToolLogIdStack, setAgentOrToolLogListMap]) + }, [setAgentOrToolLogItemStack, setAgentOrToolLogListMap]) return { - showSpecialResultPanel: showRetryDetail || showIteratingDetail || !!agentOrToolLogIdStack.length, + showSpecialResultPanel: showRetryDetail || showIteratingDetail || !!agentOrToolLogItemStack.length, showRetryDetail, setShowRetryDetailTrue, setShowRetryDetailFalse, @@ -76,7 +81,7 @@ export const useLogs = () => { setIterationResultDurationMap, handleShowIterationResultList, - agentOrToolLogIdStack, + agentOrToolLogItemStack, agentOrToolLogListMap, handleShowAgentOrToolLog, } diff --git a/web/app/components/workflow/run/node.tsx b/web/app/components/workflow/run/node.tsx index 010a3db22a..2fdab2bb7b 100644 --- a/web/app/components/workflow/run/node.tsx +++ b/web/app/components/workflow/run/node.tsx @@ -34,7 +34,7 @@ type Props = { hideProcessDetail?: boolean onShowIterationDetail?: (detail: NodeTracing[][], iterDurationMap: IterationDurationMap) => void onShowRetryDetail?: (detail: NodeTracing[]) => void - onShowAgentOrToolLog?: (detail: AgentLogItemWithChildren) => void + onShowAgentOrToolLog?: (detail?: AgentLogItemWithChildren) => void notShowIterationNav?: boolean } diff --git a/web/app/components/workflow/run/result-panel.tsx b/web/app/components/workflow/run/result-panel.tsx index 727536ced3..a39bfe40ab 100644 --- a/web/app/components/workflow/run/result-panel.tsx +++ b/web/app/components/workflow/run/result-panel.tsx @@ -34,7 +34,7 @@ type ResultPanelProps = { execution_metadata?: any handleShowIterationResultList?: (detail: NodeTracing[][], iterDurationMap: any) => void onShowRetryDetail?: (detail: NodeTracing[]) => void - handleShowAgentOrToolLog?: (detail: AgentLogItemWithChildren) => void + handleShowAgentOrToolLog?: (detail?: AgentLogItemWithChildren) => void } const ResultPanel: FC = ({ diff --git a/web/app/components/workflow/run/special-result-panel.tsx b/web/app/components/workflow/run/special-result-panel.tsx index ec3e93417c..f32487146d 100644 --- a/web/app/components/workflow/run/special-result-panel.tsx +++ b/web/app/components/workflow/run/special-result-panel.tsx @@ -17,9 +17,9 @@ export type SpecialResultPanelProps = { iterationResultList?: NodeTracing[][] iterationResultDurationMap?: IterationDurationMap - agentOrToolLogIdStack?: string[] + agentOrToolLogItemStack?: { id: string; label: string }[] agentOrToolLogListMap?: Record - handleShowAgentOrToolLog?: (detail: AgentLogItemWithChildren) => void + handleShowAgentOrToolLog?: (detail?: AgentLogItemWithChildren) => void } const SpecialResultPanel = ({ showRetryDetail, @@ -31,7 +31,7 @@ const SpecialResultPanel = ({ iterationResultList, iterationResultDurationMap, - agentOrToolLogIdStack, + agentOrToolLogItemStack, agentOrToolLogListMap, handleShowAgentOrToolLog, }: SpecialResultPanelProps) => { @@ -55,9 +55,9 @@ const SpecialResultPanel = ({ ) } { - !!agentOrToolLogIdStack?.length && agentOrToolLogListMap && handleShowAgentOrToolLog && ( + !!agentOrToolLogItemStack?.length && agentOrToolLogListMap && handleShowAgentOrToolLog && ( diff --git a/web/app/components/workflow/run/tracing-panel.tsx b/web/app/components/workflow/run/tracing-panel.tsx index 557c58c532..d65b7b73eb 100644 --- a/web/app/components/workflow/run/tracing-panel.tsx +++ b/web/app/components/workflow/run/tracing-panel.tsx @@ -79,7 +79,7 @@ const TracingPanel: FC = ({ iterationResultDurationMap, handleShowIterationResultList, - agentOrToolLogIdStack, + agentOrToolLogItemStack, agentOrToolLogListMap, handleShowAgentOrToolLog, } = useLogs() @@ -158,7 +158,7 @@ const TracingPanel: FC = ({ iterationResultList={iterationResultList} iterationResultDurationMap={iterationResultDurationMap} - agentOrToolLogIdStack={agentOrToolLogIdStack} + agentOrToolLogItemStack={agentOrToolLogItemStack} agentOrToolLogListMap={agentOrToolLogListMap} handleShowAgentOrToolLog={handleShowAgentOrToolLog} /> From 98a03b0593632b8b842f40d108fb7da23a7b6ddc Mon Sep 17 00:00:00 2001 From: zxhlyh Date: Mon, 30 Dec 2024 11:25:28 +0800 Subject: [PATCH 2/2] fix: agent log structure --- .../workflow/run/agent-log/agent-log-nav.tsx | 21 +++++++++++-------- .../run/agent-log/agent-result-panel.tsx | 1 - 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/web/app/components/workflow/run/agent-log/agent-log-nav.tsx b/web/app/components/workflow/run/agent-log/agent-log-nav.tsx index 50501ef026..a56730a45a 100644 --- a/web/app/components/workflow/run/agent-log/agent-log-nav.tsx +++ b/web/app/components/workflow/run/agent-log/agent-log-nav.tsx @@ -5,16 +5,13 @@ import type { AgentLogItemWithChildren } from '@/types/workflow' type AgentLogNavProps = { agentOrToolLogItemStack: { id: string; label: string }[] - agentOrToolLogListMap: Record onShowAgentOrToolLog: (detail?: AgentLogItemWithChildren) => void } const AgentLogNav = ({ agentOrToolLogItemStack, - agentOrToolLogListMap, onShowAgentOrToolLog, }: AgentLogNavProps) => { - const top = agentOrToolLogItemStack[agentOrToolLogItemStack.length - 1] - const options = agentOrToolLogListMap[top.id] + const options = agentOrToolLogItemStack.slice(2) return (
@@ -37,11 +34,17 @@ const AgentLogNav = ({ Agent strategy -
/
- + { + !!options.length && ( + <> +
/
+ + + ) + }
/
Run Actions diff --git a/web/app/components/workflow/run/agent-log/agent-result-panel.tsx b/web/app/components/workflow/run/agent-log/agent-result-panel.tsx index fe40d751d3..3028384f4a 100644 --- a/web/app/components/workflow/run/agent-log/agent-result-panel.tsx +++ b/web/app/components/workflow/run/agent-log/agent-result-panel.tsx @@ -19,7 +19,6 @@ const AgentResultPanel = ({
{