Add new workflow plugins and update documentation

Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-01-10 13:39:13 +00:00
parent 4b96b640a9
commit 43fa5b80df
13 changed files with 235 additions and 79 deletions

View File

@@ -1,80 +1,86 @@
{
"core.load_context": "autometabuilder.workflow.plugins.core.core_load_context.run",
"core.seed_messages": "autometabuilder.workflow.plugins.core.core_seed_messages.run",
"core.append_context_message": "autometabuilder.workflow.plugins.core.core_append_context_message.run",
"core.append_user_instruction": "autometabuilder.workflow.plugins.core.core_append_user_instruction.run",
"core.ai_request": "autometabuilder.workflow.plugins.core.core_ai_request.run",
"core.run_tool_calls": "autometabuilder.workflow.plugins.core.core_run_tool_calls.run",
"core.append_tool_results": "autometabuilder.workflow.plugins.core.core_append_tool_results.run",
"tools.list_files": "autometabuilder.workflow.plugins.tools.tools_list_files.run",
"tools.read_file": "autometabuilder.workflow.plugins.tools.tools_read_file.run",
"tools.run_tests": "autometabuilder.workflow.plugins.tools.tools_run_tests.run",
"tools.run_lint": "autometabuilder.workflow.plugins.tools.tools_run_lint.run",
"tools.create_branch": "autometabuilder.workflow.plugins.tools.tools_create_branch.run",
"tools.create_pull_request": "autometabuilder.workflow.plugins.tools.tools_create_pull_request.run",
"utils.filter_list": "autometabuilder.workflow.plugins.utils.utils_filter_list.run",
"utils.map_list": "autometabuilder.workflow.plugins.utils.utils_map_list.run",
"utils.reduce_list": "autometabuilder.workflow.plugins.utils.utils_reduce_list.run",
"utils.branch_condition": "autometabuilder.workflow.plugins.utils.utils_branch_condition.run",
"utils.not": "autometabuilder.workflow.plugins.utils.utils_not.run",
"logic.and": "autometabuilder.workflow.plugins.logic.logic_and.run",
"logic.or": "autometabuilder.workflow.plugins.logic.logic_or.run",
"logic.xor": "autometabuilder.workflow.plugins.logic.logic_xor.run",
"logic.equals": "autometabuilder.workflow.plugins.logic.logic_equals.run",
"logic.gt": "autometabuilder.workflow.plugins.logic.logic_gt.run",
"logic.lt": "autometabuilder.workflow.plugins.logic.logic_lt.run",
"logic.gte": "autometabuilder.workflow.plugins.logic.logic_gte.run",
"logic.lte": "autometabuilder.workflow.plugins.logic.logic_lte.run",
"logic.in": "autometabuilder.workflow.plugins.logic.logic_in.run",
"list.find": "autometabuilder.workflow.plugins.list.list_find.run",
"list.some": "autometabuilder.workflow.plugins.list.list_some.run",
"list.every": "autometabuilder.workflow.plugins.list.list_every.run",
"list.concat": "autometabuilder.workflow.plugins.list.list_concat.run",
"list.slice": "autometabuilder.workflow.plugins.list.list_slice.run",
"list.sort": "autometabuilder.workflow.plugins.list.list_sort.run",
"list.length": "autometabuilder.workflow.plugins.list.list_length.run",
"dict.get": "autometabuilder.workflow.plugins.dict.dict_get.run",
"dict.set": "autometabuilder.workflow.plugins.dict.dict_set.run",
"dict.merge": "autometabuilder.workflow.plugins.dict.dict_merge.run",
"dict.keys": "autometabuilder.workflow.plugins.dict.dict_keys.run",
"dict.values": "autometabuilder.workflow.plugins.dict.dict_values.run",
"dict.items": "autometabuilder.workflow.plugins.dict.dict_items.run",
"string.concat": "autometabuilder.workflow.plugins.string.string_concat.run",
"string.split": "autometabuilder.workflow.plugins.string.string_split.run",
"string.replace": "autometabuilder.workflow.plugins.string.string_replace.run",
"string.trim": "autometabuilder.workflow.plugins.string.string_trim.run",
"string.upper": "autometabuilder.workflow.plugins.string.string_upper.run",
"string.lower": "autometabuilder.workflow.plugins.string.string_lower.run",
"string.format": "autometabuilder.workflow.plugins.string.string_format.run",
"string.length": "autometabuilder.workflow.plugins.string.string_length.run",
"math.add": "autometabuilder.workflow.plugins.math.math_add.run",
"math.subtract": "autometabuilder.workflow.plugins.math.math_subtract.run",
"math.multiply": "autometabuilder.workflow.plugins.math.math_multiply.run",
"math.divide": "autometabuilder.workflow.plugins.math.math_divide.run",
"math.modulo": "autometabuilder.workflow.plugins.math.math_modulo.run",
"math.power": "autometabuilder.workflow.plugins.math.math_power.run",
"math.min": "autometabuilder.workflow.plugins.math.math_min.run",
"math.max": "autometabuilder.workflow.plugins.math.math_max.run",
"math.abs": "autometabuilder.workflow.plugins.math.math_abs.run",
"math.round": "autometabuilder.workflow.plugins.math.math_round.run",
"convert.to_string": "autometabuilder.workflow.plugins.convert.convert_to_string.run",
"convert.to_number": "autometabuilder.workflow.plugins.convert.convert_to_number.run",
"convert.to_boolean": "autometabuilder.workflow.plugins.convert.convert_to_boolean.run",
"convert.to_list": "autometabuilder.workflow.plugins.convert.convert_to_list.run",
"convert.to_dict": "autometabuilder.workflow.plugins.convert.convert_to_dict.run",
"convert.parse_json": "autometabuilder.workflow.plugins.convert.convert_parse_json.run",
"convert.to_json": "autometabuilder.workflow.plugins.convert.convert_to_json.run",
"control.switch": "autometabuilder.workflow.plugins.control.control_switch.run",
"var.get": "autometabuilder.workflow.plugins.var.var_get.run",
"var.set": "autometabuilder.workflow.plugins.var.var_set.run",
"var.delete": "autometabuilder.workflow.plugins.var.var_delete.run",
"var.exists": "autometabuilder.workflow.plugins.var.var_exists.run",
"backend.build_tool_map": "autometabuilder.workflow.plugins.backend.backend_build_tool_map.run",
"backend.create_github": "autometabuilder.workflow.plugins.backend.backend_create_github.run",
"backend.create_openai": "autometabuilder.workflow.plugins.backend.backend_create_openai.run",
"backend.load_metadata": "autometabuilder.workflow.plugins.backend.backend_load_metadata.run",
"backend.load_env": "autometabuilder.workflow.plugins.backend.backend_load_env.run",
"backend.load_messages": "autometabuilder.workflow.plugins.backend.backend_load_messages.run",
"backend.load_tools": "autometabuilder.workflow.plugins.backend.backend_load_tools.run",
"backend.load_metadata": "autometabuilder.workflow.plugins.backend.backend_load_metadata.run",
"backend.load_plugins": "autometabuilder.workflow.plugins.backend.backend_load_plugins.run",
"backend.load_prompt": "autometabuilder.workflow.plugins.backend.backend_load_prompt.run",
"backend.build_tool_map": "autometabuilder.workflow.plugins.backend.backend_build_tool_map.run",
"backend.load_plugins": "autometabuilder.workflow.plugins.backend.backend_load_plugins.run"
"backend.load_tool_registry": "autometabuilder.workflow.plugins.backend.backend_load_tool_registry.run",
"backend.load_tools": "autometabuilder.workflow.plugins.backend.backend_load_tools.run",
"backend.parse_cli_args": "autometabuilder.workflow.plugins.backend.backend_parse_cli_args.run",
"control.switch": "autometabuilder.workflow.plugins.control.control_switch.run",
"convert.parse_json": "autometabuilder.workflow.plugins.convert.convert_parse_json.run",
"convert.to_boolean": "autometabuilder.workflow.plugins.convert.convert_to_boolean.run",
"convert.to_dict": "autometabuilder.workflow.plugins.convert.convert_to_dict.run",
"convert.to_json": "autometabuilder.workflow.plugins.convert.convert_to_json.run",
"convert.to_list": "autometabuilder.workflow.plugins.convert.convert_to_list.run",
"convert.to_number": "autometabuilder.workflow.plugins.convert.convert_to_number.run",
"convert.to_string": "autometabuilder.workflow.plugins.convert.convert_to_string.run",
"core.ai_request": "autometabuilder.workflow.plugins.core.core_ai_request.run",
"core.append_context_message": "autometabuilder.workflow.plugins.core.core_append_context_message.run",
"core.append_tool_results": "autometabuilder.workflow.plugins.core.core_append_tool_results.run",
"core.append_user_instruction": "autometabuilder.workflow.plugins.core.core_append_user_instruction.run",
"core.load_context": "autometabuilder.workflow.plugins.core.core_load_context.run",
"core.run_tool_calls": "autometabuilder.workflow.plugins.core.core_run_tool_calls.run",
"core.seed_messages": "autometabuilder.workflow.plugins.core.core_seed_messages.run",
"dict.get": "autometabuilder.workflow.plugins.dict.dict_get.run",
"dict.items": "autometabuilder.workflow.plugins.dict.dict_items.run",
"dict.keys": "autometabuilder.workflow.plugins.dict.dict_keys.run",
"dict.merge": "autometabuilder.workflow.plugins.dict.dict_merge.run",
"dict.set": "autometabuilder.workflow.plugins.dict.dict_set.run",
"dict.values": "autometabuilder.workflow.plugins.dict.dict_values.run",
"list.concat": "autometabuilder.workflow.plugins.list.list_concat.run",
"list.every": "autometabuilder.workflow.plugins.list.list_every.run",
"list.find": "autometabuilder.workflow.plugins.list.list_find.run",
"list.length": "autometabuilder.workflow.plugins.list.list_length.run",
"list.slice": "autometabuilder.workflow.plugins.list.list_slice.run",
"list.some": "autometabuilder.workflow.plugins.list.list_some.run",
"list.sort": "autometabuilder.workflow.plugins.list.list_sort.run",
"logic.and": "autometabuilder.workflow.plugins.logic.logic_and.run",
"logic.equals": "autometabuilder.workflow.plugins.logic.logic_equals.run",
"logic.gt": "autometabuilder.workflow.plugins.logic.logic_gt.run",
"logic.gte": "autometabuilder.workflow.plugins.logic.logic_gte.run",
"logic.in": "autometabuilder.workflow.plugins.logic.logic_in.run",
"logic.lt": "autometabuilder.workflow.plugins.logic.logic_lt.run",
"logic.lte": "autometabuilder.workflow.plugins.logic.logic_lte.run",
"logic.or": "autometabuilder.workflow.plugins.logic.logic_or.run",
"logic.xor": "autometabuilder.workflow.plugins.logic.logic_xor.run",
"math.abs": "autometabuilder.workflow.plugins.math.math_abs.run",
"math.add": "autometabuilder.workflow.plugins.math.math_add.run",
"math.divide": "autometabuilder.workflow.plugins.math.math_divide.run",
"math.max": "autometabuilder.workflow.plugins.math.math_max.run",
"math.min": "autometabuilder.workflow.plugins.math.math_min.run",
"math.modulo": "autometabuilder.workflow.plugins.math.math_modulo.run",
"math.multiply": "autometabuilder.workflow.plugins.math.math_multiply.run",
"math.power": "autometabuilder.workflow.plugins.math.math_power.run",
"math.round": "autometabuilder.workflow.plugins.math.math_round.run",
"math.subtract": "autometabuilder.workflow.plugins.math.math_subtract.run",
"string.concat": "autometabuilder.workflow.plugins.string.string_concat.run",
"string.format": "autometabuilder.workflow.plugins.string.string_format.run",
"string.length": "autometabuilder.workflow.plugins.string.string_length.run",
"string.lower": "autometabuilder.workflow.plugins.string.string_lower.run",
"string.replace": "autometabuilder.workflow.plugins.string.string_replace.run",
"string.split": "autometabuilder.workflow.plugins.string.string_split.run",
"string.trim": "autometabuilder.workflow.plugins.string.string_trim.run",
"string.upper": "autometabuilder.workflow.plugins.string.string_upper.run",
"tools.create_branch": "autometabuilder.workflow.plugins.tools.tools_create_branch.run",
"tools.create_pull_request": "autometabuilder.workflow.plugins.tools.tools_create_pull_request.run",
"tools.list_files": "autometabuilder.workflow.plugins.tools.tools_list_files.run",
"tools.read_file": "autometabuilder.workflow.plugins.tools.tools_read_file.run",
"tools.run_docker": "autometabuilder.workflow.plugins.tools.tools_run_docker.run",
"tools.run_lint": "autometabuilder.workflow.plugins.tools.tools_run_lint.run",
"tools.run_tests": "autometabuilder.workflow.plugins.tools.tools_run_tests.run",
"utils.branch_condition": "autometabuilder.workflow.plugins.utils.utils_branch_condition.run",
"utils.check_mvp": "autometabuilder.workflow.plugins.utils.utils_check_mvp.run",
"utils.filter_list": "autometabuilder.workflow.plugins.utils.utils_filter_list.run",
"utils.map_list": "autometabuilder.workflow.plugins.utils.utils_map_list.run",
"utils.not": "autometabuilder.workflow.plugins.utils.utils_not.run",
"utils.reduce_list": "autometabuilder.workflow.plugins.utils.utils_reduce_list.run",
"utils.update_roadmap": "autometabuilder.workflow.plugins.utils.utils_update_roadmap.run",
"var.delete": "autometabuilder.workflow.plugins.var.var_delete.run",
"var.exists": "autometabuilder.workflow.plugins.var.var_exists.run",
"var.get": "autometabuilder.workflow.plugins.var.var_get.run",
"var.set": "autometabuilder.workflow.plugins.var.var_set.run"
}

View File

@@ -2,6 +2,24 @@
This document describes all available workflow plugins for building declarative n8n-style workflows.
## Directory Structure
Plugins are now organized into subdirectories by category:
- **backend/** - Backend infrastructure and initialization plugins (12 plugins)
- **core/** - Core workflow orchestration plugins (7 plugins)
- **tools/** - Tool execution and development plugins (7 plugins)
- **logic/** - Logic and comparison operations (9 plugins)
- **list/** - List/array operations (7 plugins)
- **dict/** - Dictionary/object operations (6 plugins)
- **string/** - String manipulation (8 plugins)
- **math/** - Mathematical operations (10 plugins)
- **convert/** - Type conversions (7 plugins)
- **control/** - Control flow (1 plugin)
- **var/** - Variable management (4 plugins)
- **utils/** - Utility functions (7 plugins)
**Total: 85 plugins**
## Categories
- [Core Plugins](#core-plugins) - AI and context management
@@ -137,6 +155,19 @@ Create GitHub pull request.
**Outputs:**
- `pr_number` - PR number
### `tools.run_docker`
Run command inside Docker container.
**Inputs:**
- `image` - Docker image name
- `command` - Command to execute
- `volumes` - Optional volume mappings dict
- `workdir` - Optional working directory
**Outputs:**
- `output` - Command output
- `error` - Error message (if any)
---
## Logic Plugins
@@ -746,6 +777,33 @@ Load and register plugins.
**Outputs:**
- `result` - Boolean (success)
### `backend.parse_cli_args`
Parse command line arguments.
**Outputs:**
- `dry_run` - Boolean (dry-run mode)
- `yolo` - Boolean (execute without confirmation)
- `once` - Boolean (run single iteration)
- `web` - Boolean (start web UI)
### `backend.load_env`
Load environment variables from .env file.
**Outputs:**
- `result` - String (status message)
### `backend.load_tool_registry`
Load tool registry entries.
**Outputs:**
- `result` - Tool registry array
### `backend.load_tool_policies`
Load tool policies from JSON.
**Outputs:**
- `result` - Tool policies dictionary
---
## Utility Plugins
@@ -790,6 +848,21 @@ Logical NOT operation.
**Outputs:**
- `result` - Negated boolean
### `utils.check_mvp`
Check if MVP section in ROADMAP.md is completed.
**Outputs:**
- `mvp_reached` - Boolean
### `utils.update_roadmap`
Update ROADMAP.md with new content.
**Inputs:**
- `content` - New roadmap content
**Outputs:**
- `result` - Status message
---
## Variable Binding

View File

@@ -0,0 +1,8 @@
"""Workflow plugin: load environment variables."""
from ....env_loader import load_env
def run(_runtime, _inputs):
"""Load environment variables from .env file."""
load_env()
return {"result": "Environment loaded"}

View File

@@ -0,0 +1,10 @@
"""Workflow plugin: load tool registry."""
from ....tool_registry_loader import load_tool_registry
def run(runtime, _inputs):
"""Load tool registry entries."""
tool_registry = load_tool_registry()
# Store in context for other plugins
runtime.context["tool_registry"] = tool_registry
return {"result": tool_registry}

View File

@@ -0,0 +1,15 @@
"""Workflow plugin: parse CLI arguments."""
from ....cli_args import parse_args
def run(runtime, _inputs):
"""Parse command line arguments."""
args = parse_args()
# Store in context for other plugins
runtime.context["args"] = args
return {
"dry_run": args.dry_run,
"yolo": args.yolo,
"once": args.once,
"web": args.web
}

View File

@@ -0,0 +1,24 @@
"""Workflow plugin: run command in Docker container."""
from ....docker_utils import run_command_in_docker
def run(_runtime, inputs):
"""
Run a command inside a Docker container.
Inputs:
- image: Docker image to use
- command: Command to execute
- volumes: Optional dict of volume mappings {host_path: container_path}
- workdir: Optional working directory inside the container
"""
image = inputs.get("image")
command = inputs.get("command")
volumes = inputs.get("volumes")
workdir = inputs.get("workdir")
if not image or not command:
return {"error": "Both 'image' and 'command' are required"}
output = run_command_in_docker(image, command, volumes, workdir)
return {"output": output}

View File

@@ -1,6 +1,6 @@
"""Workflow plugin: branch condition."""
import re
from ..value_helpers import ValueHelpers
from ...value_helpers import ValueHelpers
def run(_runtime, inputs):

View File

@@ -0,0 +1,8 @@
"""Workflow plugin: check if MVP is reached."""
from ....roadmap_utils import is_mvp_reached
def run(_runtime, _inputs):
"""Check if the MVP section in ROADMAP.md is completed."""
mvp_reached = is_mvp_reached()
return {"mvp_reached": mvp_reached}

View File

@@ -1,6 +1,6 @@
"""Workflow plugin: filter list."""
import re
from ..value_helpers import ValueHelpers
from ...value_helpers import ValueHelpers
def run(_runtime, inputs):

View File

@@ -1,5 +1,5 @@
"""Workflow plugin: map list."""
from ..value_helpers import ValueHelpers
from ...value_helpers import ValueHelpers
def run(_runtime, inputs):

View File

@@ -1,5 +1,5 @@
"""Workflow plugin: boolean not."""
from ..value_helpers import ValueHelpers
from ...value_helpers import ValueHelpers
def run(_runtime, inputs):

View File

@@ -1,5 +1,5 @@
"""Workflow plugin: reduce list."""
from ..value_helpers import ValueHelpers
from ...value_helpers import ValueHelpers
def run(_runtime, inputs):

View File

@@ -0,0 +1,12 @@
"""Workflow plugin: update roadmap file."""
from ....roadmap_utils import update_roadmap
def run(_runtime, inputs):
"""Update ROADMAP.md with new content."""
content = inputs.get("content")
if not content:
return {"error": "Content is required"}
update_roadmap(content)
return {"result": "ROADMAP.md updated successfully"}