diff --git a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/components/OutputActions.tsx b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/components/OutputActions.tsx similarity index 100% rename from autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/components/OutputActions.tsx rename to autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/components/OutputActions.tsx diff --git a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/components/OutputItem.tsx b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/components/OutputItem.tsx similarity index 100% rename from autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/components/OutputItem.tsx rename to autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/components/OutputItem.tsx diff --git a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/index.ts b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/index.ts similarity index 100% rename from autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/index.ts rename to autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/index.ts diff --git a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/renderers/CodeRenderer.tsx b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/renderers/CodeRenderer.tsx similarity index 100% rename from autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/renderers/CodeRenderer.tsx rename to autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/renderers/CodeRenderer.tsx diff --git a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/renderers/ImageRenderer.tsx b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/renderers/ImageRenderer.tsx similarity index 100% rename from autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/renderers/ImageRenderer.tsx rename to autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/renderers/ImageRenderer.tsx diff --git a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/renderers/JSONRenderer.tsx b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/renderers/JSONRenderer.tsx similarity index 100% rename from autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/renderers/JSONRenderer.tsx rename to autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/renderers/JSONRenderer.tsx diff --git a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/renderers/MarkdownRenderer.tsx b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/renderers/MarkdownRenderer.tsx similarity index 100% rename from autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/renderers/MarkdownRenderer.tsx rename to autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/renderers/MarkdownRenderer.tsx diff --git a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/renderers/TextRenderer.tsx b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/renderers/TextRenderer.tsx similarity index 100% rename from autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/renderers/TextRenderer.tsx rename to autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/renderers/TextRenderer.tsx diff --git a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/renderers/VideoRenderer.tsx b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/renderers/VideoRenderer.tsx similarity index 100% rename from autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/renderers/VideoRenderer.tsx rename to autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/renderers/VideoRenderer.tsx diff --git a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/types.ts b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/types.ts similarity index 100% rename from autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/types.ts rename to autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/types.ts diff --git a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/utils/copy.ts b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/utils/copy.ts similarity index 100% rename from autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/utils/copy.ts rename to autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/utils/copy.ts diff --git a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/utils/download.ts b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/utils/download.ts similarity index 100% rename from autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/output-renderers/utils/download.ts rename to autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers/utils/download.ts diff --git a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/RunDetails/RunDetails.tsx b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/RunDetails/RunDetails.tsx index c495dbfa4f..7f1e71d6a5 100644 --- a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/RunDetails/RunDetails.tsx +++ b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/RunDetails/RunDetails.tsx @@ -14,6 +14,7 @@ import { ErrorCard } from "@/components/molecules/ErrorCard/ErrorCard"; import { Skeleton } from "@/components/ui/skeleton"; import { AgentInputsReadOnly } from "../AgentInputsReadOnly/AgentInputsReadOnly"; import { RunDetailCard } from "../RunDetailCard/RunDetailCard"; +import { RunOutputs } from "./components/RunOutputs"; interface RunDetailsProps { agent: LibraryAgent; @@ -74,28 +75,10 @@ export function RunDetails({ {isLoading ? (
Loading…
- ) : !run || - !("outputs" in run) || - Object.keys(run.outputs || {}).length === 0 ? ( -
No output from this run.
+ ) : run && "outputs" in run ? ( + ) : ( -
- {Object.entries(run.outputs).map(([key, values]) => ( -
- - {values.map((value, i) => ( -

- {typeof value === "object" - ? JSON.stringify(value, undefined, 2) - : String(value)} -

- ))} -
- ))} -
+
No output from this run.
)}
diff --git a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/RunDetails/components/RunOutputs.tsx b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/RunDetails/components/RunOutputs.tsx new file mode 100644 index 0000000000..5676240306 --- /dev/null +++ b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/AgentRunsView/components/RunDetails/components/RunOutputs.tsx @@ -0,0 +1,107 @@ +"use client"; + +import React, { useMemo } from "react"; +import { + globalRegistry, + OutputItem, + OutputActions, +} from "@/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers"; +import type { + OutputMetadata, + OutputRenderer, +} from "@/app/(platform)/library/agents/[id]/components/AgentRunsView/components/OutputRenderers"; + +type OutputsRecord = Record>; + +interface RunOutputsProps { + outputs: OutputsRecord; +} + +export function RunOutputs({ outputs }: RunOutputsProps) { + const items = useMemo(() => { + const list: Array<{ + key: string; + label: string; + value: unknown; + metadata?: OutputMetadata; + renderer: OutputRenderer; + }> = []; + + Object.entries(outputs || {}).forEach(([key, values]) => { + (values || []).forEach((value, index) => { + const metadata: OutputMetadata = {}; + if ( + typeof value === "object" && + value !== null && + !React.isValidElement(value) + ) { + const obj = value as Record; + if (typeof obj["type"] === "string") + metadata.type = obj["type"] as string; + if (typeof obj["mimeType"] === "string") + metadata.mimeType = obj["mimeType"] as string; + if (typeof obj["filename"] === "string") + metadata.filename = obj["filename"] as string; + if (typeof obj["language"] === "string") + metadata.language = obj["language"] as string; + } + + const renderer = globalRegistry.getRenderer(value, metadata); + if (renderer) { + list.push({ + key: `${key}-${index}`, + label: index === 0 ? key : "", + value, + metadata, + renderer, + }); + } else { + const textRenderer = globalRegistry + .getAllRenderers() + .find((r) => r.name === "TextRenderer"); + if (textRenderer) { + list.push({ + key: `${key}-${index}`, + label: index === 0 ? key : "", + value: + typeof value === "string" + ? value + : JSON.stringify(value, null, 2), + metadata, + renderer: textRenderer, + }); + } + } + }); + }); + + return list; + }, [outputs]); + + if (!items.length) { + return
No output from this run.
; + } + + return ( +
+
+ ({ + value: item.value, + metadata: item.metadata, + renderer: item.renderer, + }))} + /> +
+ {items.map((item) => ( + + ))} +
+ ); +} diff --git a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/agent-run-output-view.tsx b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/agent-run-output-view.tsx index f6f5779562..1f13498f0a 100644 --- a/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/agent-run-output-view.tsx +++ b/autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/OldAgentLibraryView/components/agent-run-output-view.tsx @@ -6,8 +6,12 @@ import { Flag, useGetFlag } from "@/services/feature-flags/use-get-flag"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import LoadingBox from "@/components/ui/loading"; -import { globalRegistry, OutputItem, OutputActions } from "./output-renderers"; -import type { OutputMetadata } from "./output-renderers"; +import { + globalRegistry, + OutputItem, + OutputActions, +} from "../../AgentRunsView/components/OutputRenderers"; +import type { OutputMetadata } from "../../AgentRunsView/components/OutputRenderers"; export function AgentRunOutputView({ agentRunOutputs,