diff --git a/PROMPT.md b/PROMPT.md new file mode 100644 index 0000000..17a0825 --- /dev/null +++ b/PROMPT.md @@ -0,0 +1,51 @@ +Always build and test. +Maintain the full testing pyramid: unit tests, static analysis, +linters, integration tests, and end-to-end coverage. +Continuously execute against the roadmap. + +Keep files small and focused. +Target <100 LOC per file unless there is a clear and +documented reason otherwise. +Enforce one responsibility per file. + +Decompose aggressively. +Break up large blobs of logic into composable units. +Large files are a smell. + +Use structured architecture. +Prefer plugin / service / controller patterns with explicit dependency injection. + +Favor declarative designs. +Declarative workflows are strongly preferred over imperative glue code. + +Everything as a workflow. +If something is not part of a workflow, question whether it should be executed at all. +Even complex systems (including game engines) can be expressed this way. + +Eliminate repetition. +Loop, parameterize, and abstract instead of copy-pasting similar code. + +Externalize data. +If you see a list, map, or configuration embedded in code, +it likely belongs in JSON (or equivalent). + +Modular configuration. +If JSON files grow large, +split them and reference them hierarchically. + +Ship templates, not chores. +Package concepts as reusable templates instead of forcing users to configure from scratch. + +Logging is mandatory. +Use structured logging with clear +levels (DEBUG / INFO / TRACE / ERROR) throughout the system. + +Declarative workflows first. +Increase usage wherever possible. + +Innovate continuously. +Avoid stagnation; improve structure, clarity, and expressiveness over time. + +Roadmap discipline. +If you run out of ROADMAP.md tasks, stop and report. +We should reassess priorities before inventing work. diff --git a/src/autometabuilder/messages_en.json b/src/autometabuilder/messages_en.json index 46b3f45..b5236cf 100644 --- a/src/autometabuilder/messages_en.json +++ b/src/autometabuilder/messages_en.json @@ -182,8 +182,18 @@ "meta.settings.litellm_api_key.description": "Alternative API key if using LiteLLM proxy for multiple LLM providers.", "meta.settings.log_level.label": "Log Level", "meta.settings.log_level.description": "Controls how much detail is written to logs. DEBUG shows everything, ERROR shows only errors.", + "meta.settings.log_level.options.trace": "Trace", + "meta.settings.log_level.options.debug": "Debug", + "meta.settings.log_level.options.info": "Info", + "meta.settings.log_level.options.warning": "Warning", + "meta.settings.log_level.options.error": "Error", "meta.settings.app_lang.label": "Application Language", "meta.settings.app_lang.description": "Language for bot messages and UI text.", + "meta.settings.app_lang.options.en": "English", + "meta.settings.app_lang.options.es": "Spanish", + "meta.settings.app_lang.options.fr": "French", + "meta.settings.app_lang.options.nl": "Dutch", + "meta.settings.app_lang.options.pirate": "Pirate", "meta.settings.prompt_path.label": "Prompt File Path", "meta.settings.prompt_path.description": "Path to the YAML file containing the system prompt configuration.", "meta.settings.web_user.label": "Web UI Username", @@ -378,6 +388,16 @@ "ui.workflow.templates.loaded": "Template loaded.", "ui.workflow.templates.error": "Unable to load templates.", "ui.workflow.templates.error_load": "Unable to load the selected template.", + "ui.workflow.palette.title": "Node Palette", + "ui.workflow.palette.search_label": "Find nodes", + "ui.workflow.palette.search_placeholder": "Search nodes or keywords...", + "ui.workflow.palette.loading": "Loading nodes...", + "ui.workflow.palette.empty": "No matching nodes.", + "ui.workflow.palette.group.core": "Core", + "ui.workflow.palette.group.tools": "Tools", + "ui.workflow.palette.group.utils": "Utilities", + "ui.workflow.palette.group.control": "Control", + "ui.workflow.palette.group.other": "Other", "meta.workflow_packages.blank.label": "Blank Canvas", "meta.workflow_packages.blank.description": "Start with an empty workflow.", "meta.workflow_packages.iterative_loop.label": "Iterative Agent Loop", diff --git a/src/autometabuilder/web/static/css/workflow_palette.css b/src/autometabuilder/web/static/css/workflow_palette.css new file mode 100644 index 0000000..eeda8f7 --- /dev/null +++ b/src/autometabuilder/web/static/css/workflow_palette.css @@ -0,0 +1,55 @@ +.amb-workflow-palette-list { + margin-top: 0.75rem; + display: flex; + flex-direction: column; + gap: 1rem; + max-height: 420px; + overflow-y: auto; + padding-right: 0.25rem; +} + +.amb-workflow-palette-group { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.amb-workflow-palette-heading { + font-size: 0.7rem; + letter-spacing: 0.08em; + text-transform: uppercase; + color: var(--amb-text-muted); +} + +.amb-workflow-palette-items { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.amb-workflow-palette-item { + text-align: left; + background: var(--amb-bg-secondary); + border: 1px solid var(--amb-border-color); + border-radius: 0.75rem; + padding: 0.6rem 0.75rem; + transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease; +} + +.amb-workflow-palette-item:hover { + border-color: var(--amb-text-secondary); + box-shadow: 0 0.4rem 1rem rgba(0, 0, 0, 0.08); + transform: translateY(-1px); +} + +.amb-workflow-palette-title { + display: block; + font-weight: 600; + color: var(--amb-text-primary); +} + +.amb-workflow-palette-subtitle { + display: block; + font-size: 0.75rem; + color: var(--amb-text-muted); +}