From 9bac720d730956f21f10d84206fbcfd5ae1e5c3b Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Sat, 10 Jan 2026 02:02:31 +0000 Subject: [PATCH] Introduce AutoMetabuilder core components and workflow packages: - Implement core components: CLI argument parsing, environment loading, GitHub service creation, and logging configuration. - Add support for OpenAI client setup and model resolution. - Develop SDLC context loader from GitHub and repository files. - Implement workflow context and engine builders. - Introduce major workflow packages: `game_tick_loop` and `contextual_iterative_loop`. - Update localization files with new package descriptions and labels. - Streamline web navigation by loading items from a dedicated JSON file. --- .../components/workflow/WorkflowPalette.tsx | 42 ++--------------- .../workflow/WorkflowPaletteCard.tsx | 47 +++++++++++++++++++ 2 files changed, 52 insertions(+), 37 deletions(-) create mode 100644 frontend/autometabuilder/components/workflow/WorkflowPaletteCard.tsx diff --git a/frontend/autometabuilder/components/workflow/WorkflowPalette.tsx b/frontend/autometabuilder/components/workflow/WorkflowPalette.tsx index e736323..857111d 100644 --- a/frontend/autometabuilder/components/workflow/WorkflowPalette.tsx +++ b/frontend/autometabuilder/components/workflow/WorkflowPalette.tsx @@ -1,7 +1,8 @@ import { useEffect, useMemo, useState } from "react"; -import { Box, Chip, Divider, Paper, Stack, TextField, Typography } from "@mui/material"; +import { Divider, Paper, Stack, TextField, Typography } from "@mui/material"; import { fetchWorkflowPlugins } from "../../lib/api"; -import { WorkflowPluginDefinition, WorkflowPluginMap, WorkflowPluginPort } from "../../lib/types"; +import { WorkflowPluginMap } from "../../lib/types"; +import WorkflowPaletteCard from "./WorkflowPaletteCard"; type WorkflowPaletteProps = { t: (key: string, fallback?: string) => string; @@ -62,48 +63,15 @@ export default function WorkflowPalette({ t }: WorkflowPaletteProps) { ) : entries.length === 0 && hasQuery ? ( - {t("ui.workflow.palette.missing", "No nodes match \"{query}\"").replace("{query}", search.trim())} + {`${t("ui.workflow.palette.empty", "No matching nodes.")} "${search.trim()}"`} ) : ( }> {entries.map(([id, plugin]) => ( - - - {plugin.label ? t(plugin.label, id) : id} - - - {t("ui.workflow.palette.node_id", "Node ID")}: {id} - - - {renderPortTags(t, "in", plugin.inputs)} - {renderPortTags(t, "out", plugin.outputs)} - - + ))} )} ); } - -function renderPortTags( - t: (key: string, fallback?: string) => string, - direction: "in" | "out", - ports?: Record -) { - if (!ports) { - return null; - } - return Object.keys(ports).map((name) => { - const port = ports[name]; - const label = port?.label ? t(port.label, name) : name; - return ( - - ); - }); -} diff --git a/frontend/autometabuilder/components/workflow/WorkflowPaletteCard.tsx b/frontend/autometabuilder/components/workflow/WorkflowPaletteCard.tsx new file mode 100644 index 0000000..7f502e7 --- /dev/null +++ b/frontend/autometabuilder/components/workflow/WorkflowPaletteCard.tsx @@ -0,0 +1,47 @@ +import { Box, Chip, Stack, Typography } from "@mui/material"; +import { WorkflowPluginDefinition, WorkflowPluginPort } from "../../lib/types"; + +type WorkflowPaletteCardProps = { + id: string; + plugin: WorkflowPluginDefinition; + t: (key: string, fallback?: string) => string; +}; + +export default function WorkflowPaletteCard({ id, plugin, t }: WorkflowPaletteCardProps) { + const translateLabel = plugin.label ? t(plugin.label, id) : id; + + return ( + + {translateLabel} + + {t("ui.workflow.node_id_label", "Node ID")}: {id} + + + {renderPortChips(t, "in", plugin.inputs)} + {renderPortChips(t, "out", plugin.outputs)} + + + ); +} + +function renderPortChips( + t: (key: string, fallback?: string) => string, + direction: "in" | "out", + ports?: Record +) { + if (!ports) { + return null; + } + return Object.keys(ports).map((name) => { + const port = ports[name]; + const portLabel = port?.label ? t(port.label, name) : name; + return ( + + ); + }); +}