From c16f12a6b3e8109ef7aca30adcc21c870957b770 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 10 Jan 2026 14:32:47 +0000 Subject: [PATCH] Add workflow triggers documentation and default triggers to all workflows Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com> --- WORKFLOW_TRIGGERS.md | 306 ++++++++++++++++++ .../packages/backend_bootstrap/workflow.json | 12 +- .../conditional_logic_demo/workflow.json | 32 +- .../contextual_iterative_loop/workflow.json | 14 +- .../data_processing_demo/workflow.json | 70 +++- .../default_app_workflow/workflow.json | 97 ++++-- .../packages/dict_plugins_test/workflow.json | 262 +++++++++++++-- .../packages/game_tick_loop/workflow.json | 14 +- .../packages/iterative_loop/workflow.json | 14 +- .../packages/list_plugins_test/workflow.json | 233 +++++++++++-- .../packages/logic_plugins_test/workflow.json | 116 +++++-- .../packages/math_plugins_test/workflow.json | 228 +++++++++++-- .../plan_execute_summarize/workflow.json | 14 +- .../packages/repo_scan_context/workflow.json | 14 +- .../string_plugins_test/workflow.json | 198 ++++++++++-- .../packages/testing_triangle/workflow.json | 14 +- backend/tests/test_main.py | 2 +- 17 files changed, 1447 insertions(+), 193 deletions(-) create mode 100644 WORKFLOW_TRIGGERS.md diff --git a/WORKFLOW_TRIGGERS.md b/WORKFLOW_TRIGGERS.md new file mode 100644 index 0000000..e253f35 --- /dev/null +++ b/WORKFLOW_TRIGGERS.md @@ -0,0 +1,306 @@ +# Workflow Triggers Documentation + +## Overview + +Workflow triggers define how and when a workflow should be executed. They are part of the n8n workflow schema and provide a standardized way to specify workflow entry points. + +## Trigger Schema + +According to `n8n_schema.py`, triggers have the following structure: + +```json +{ + "nodeId": "node_id", // ID of the node to start execution from + "kind": "manual|webhook|...", // Type of trigger + "enabled": true, // Whether trigger is active + "meta": { // Optional metadata + "description": "..." + } +} +``` + +### Trigger Kinds + +Valid trigger types defined in `N8NTrigger.VALID_KINDS`: +- **manual**: Manually initiated workflow (CLI, API call) +- **webhook**: HTTP webhook endpoint +- **schedule**: Cron/scheduled execution +- **queue**: Message queue trigger +- **email**: Email-based trigger +- **poll**: Polling-based trigger +- **other**: Custom trigger types + +## Current Usage + +### Example: Single Pass Workflow + +The `single_pass` workflow package demonstrates trigger usage: + +```json +{ + "name": "Single Pass", + "nodes": [...], + "connections": {...}, + "triggers": [ + { + "nodeId": "load_context", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered single-pass workflow execution" + } + } + ] +} +``` + +## Potential Use Cases for Different Trigger Types + +### 1. Manual Triggers +**Current Implementation**: Default for most workflows +- CLI-initiated workflows +- API-triggered workflows +- Development/testing workflows + +### 2. Webhook Triggers (Future) +**Use Cases**: +- GitHub webhook integration (PR creation, issue updates) +- Slack command integration +- Discord bot commands +- External service integrations + +**Example Configuration**: +```json +{ + "nodeId": "handle_github_event", + "kind": "webhook", + "enabled": true, + "meta": { + "path": "/webhooks/github", + "method": "POST", + "event_types": ["pull_request", "issues"] + } +} +``` + +### 3. Schedule Triggers (Future) +**Use Cases**: +- Daily roadmap analysis +- Weekly progress reports +- Periodic issue cleanup +- Automated dependency updates + +**Example Configuration**: +```json +{ + "nodeId": "analyze_roadmap", + "kind": "schedule", + "enabled": true, + "meta": { + "cron": "0 9 * * *", + "timezone": "UTC", + "description": "Daily roadmap analysis at 9 AM UTC" + } +} +``` + +### 4. Queue Triggers (Future) +**Use Cases**: +- Task queue processing +- Background job execution +- Async workflow execution +- Load balancing + +**Example Configuration**: +```json +{ + "nodeId": "process_task", + "kind": "queue", + "enabled": true, + "meta": { + "queue_name": "workflow_tasks", + "concurrency": 5 + } +} +``` + +### 5. Email Triggers (Future) +**Use Cases**: +- Email-based task creation +- Support ticket workflows +- Email monitoring + +**Example Configuration**: +```json +{ + "nodeId": "process_email", + "kind": "email", + "enabled": true, + "meta": { + "filter": "subject:contains('[Task]')", + "folder": "inbox" + } +} +``` + +### 6. Poll Triggers (Future) +**Use Cases**: +- Monitoring external APIs +- Checking for file changes +- Detecting state changes + +**Example Configuration**: +```json +{ + "nodeId": "check_api_status", + "kind": "poll", + "enabled": true, + "meta": { + "interval": "5m", + "endpoint": "https://api.example.com/status" + } +} +``` + +## Implementation Status + +### ✅ Implemented +- Trigger schema validation (`N8NTrigger.validate()`) +- Trigger array validation in workflows +- Manual trigger support (default execution) + +### 🚧 Partially Implemented +- Trigger metadata storage +- Trigger-based entry point selection + +### ❌ Not Yet Implemented +- Webhook trigger handling +- Schedule trigger execution +- Queue trigger processing +- Email trigger monitoring +- Poll trigger execution +- Trigger event routing + +## Recommendations for Better Trigger Utilization + +### 1. Add Trigger Execution Logic + +Create a `TriggerManager` class in the workflow engine: + +```python +class TriggerManager: + """Manage workflow trigger execution.""" + + def get_enabled_triggers(self, workflow): + """Return list of enabled triggers.""" + return [t for t in workflow.get("triggers", []) if t.get("enabled", True)] + + def get_start_nodes(self, workflow, trigger_kind=None): + """Get start node IDs for given trigger kind.""" + triggers = self.get_enabled_triggers(workflow) + if trigger_kind: + triggers = [t for t in triggers if t["kind"] == trigger_kind] + return [t["nodeId"] for t in triggers] +``` + +### 2. Support Multiple Triggers per Workflow + +Current workflows support multiple triggers but execution starts from a fixed point. Enable: +- Trigger-specific entry points +- Parallel trigger execution +- Trigger-specific contexts + +### 3. Create Trigger-Specific Workflow Packages + +Add workflow packages for different trigger types: +- `webhook_handler/` - HTTP webhook workflows +- `scheduled_tasks/` - Cron-based workflows +- `event_processor/` - Queue-based workflows + +### 4. Add Trigger Plugins + +Create workflow plugins for trigger management: +- `trigger.register` - Register new triggers +- `trigger.enable` - Enable/disable triggers +- `trigger.list` - List workflow triggers +- `trigger.invoke` - Manually invoke a trigger + +### 5. Web UI Integration + +Add trigger management to the web interface: +- List all triggers across workflows +- Enable/disable triggers dynamically +- View trigger execution history +- Configure trigger metadata + +## Migration Path + +For existing workflows without triggers, add default manual trigger: + +```json +{ + "triggers": [ + { + "nodeId": "first_node_id", + "kind": "manual", + "enabled": true + } + ] +} +``` + +## Best Practices + +1. **Always define triggers** - Make workflow entry points explicit +2. **Use descriptive metadata** - Document trigger purpose and configuration +3. **Start with manual triggers** - Simplest to implement and test +4. **Plan for multiple triggers** - Design workflows to support different entry points +5. **Validate trigger configuration** - Use `N8NTrigger.validate()` before execution +6. **Document trigger requirements** - List prerequisites in workflow package README + +## Example: Multi-Trigger Workflow + +```json +{ + "name": "CI/CD Pipeline", + "nodes": [...], + "connections": {...}, + "triggers": [ + { + "nodeId": "webhook_handler", + "kind": "webhook", + "enabled": true, + "meta": { + "description": "Triggered by GitHub PR webhook", + "path": "/webhooks/github/pr" + } + }, + { + "nodeId": "scheduled_check", + "kind": "schedule", + "enabled": true, + "meta": { + "description": "Daily scheduled PR review", + "cron": "0 10 * * *" + } + }, + { + "nodeId": "manual_run", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered pipeline run" + } + } + ] +} +``` + +## Future Enhancements + +1. **Trigger History** - Log all trigger executions +2. **Trigger Metrics** - Track trigger performance +3. **Trigger Dependencies** - Define trigger prerequisites +4. **Trigger Chains** - Link triggers across workflows +5. **Conditional Triggers** - Add trigger conditions +6. **Trigger Testing** - Unit test framework for triggers diff --git a/backend/autometabuilder/packages/backend_bootstrap/workflow.json b/backend/autometabuilder/packages/backend_bootstrap/workflow.json index bf06c8f..dc81df0 100644 --- a/backend/autometabuilder/packages/backend_bootstrap/workflow.json +++ b/backend/autometabuilder/packages/backend_bootstrap/workflow.json @@ -145,5 +145,15 @@ ] } } - } + }, + "triggers": [ + { + "nodeId": "load_messages", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Initialize backend services and dependencies" + } + } + ] } diff --git a/backend/autometabuilder/packages/conditional_logic_demo/workflow.json b/backend/autometabuilder/packages/conditional_logic_demo/workflow.json index 1a0ba51..3dad741 100644 --- a/backend/autometabuilder/packages/conditional_logic_demo/workflow.json +++ b/backend/autometabuilder/packages/conditional_logic_demo/workflow.json @@ -7,7 +7,10 @@ "name": "Create User Data", "type": "var.set", "typeVersion": 1, - "position": [0, 100], + "position": [ + 0, + 100 + ], "parameters": { "key": "user", "value": { @@ -23,7 +26,10 @@ "name": "Extract Age", "type": "dict.get", "typeVersion": 1, - "position": [300, 50], + "position": [ + 300, + 50 + ], "parameters": { "object": "$user", "key": "age" @@ -34,7 +40,10 @@ "name": "Check If Adult", "type": "logic.gte", "typeVersion": 1, - "position": [600, 100], + "position": [ + 600, + 100 + ], "parameters": { "a": "$age", "b": 18 @@ -45,7 +54,10 @@ "name": "Format Final Report", "type": "string.format", "typeVersion": 1, - "position": [900, 100], + "position": [ + 900, + 100 + ], "parameters": { "template": "User: {name}, Age: {age}, Adult: {is_adult}", "variables": { @@ -90,5 +102,15 @@ ] } } - } + }, + "triggers": [ + { + "nodeId": "create_user_data", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered Conditional Logic Demo workflow execution" + } + } + ] } diff --git a/backend/autometabuilder/packages/contextual_iterative_loop/workflow.json b/backend/autometabuilder/packages/contextual_iterative_loop/workflow.json index 5e3b90a..d71c2e5 100644 --- a/backend/autometabuilder/packages/contextual_iterative_loop/workflow.json +++ b/backend/autometabuilder/packages/contextual_iterative_loop/workflow.json @@ -173,5 +173,15 @@ ] } } - } -} \ No newline at end of file + }, + "triggers": [ + { + "nodeId": "list_files", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered meta.workflow_packages.contextual_iterative_loop.label workflow execution" + } + } + ] +} diff --git a/backend/autometabuilder/packages/data_processing_demo/workflow.json b/backend/autometabuilder/packages/data_processing_demo/workflow.json index 9d6137e..d92a3b5 100644 --- a/backend/autometabuilder/packages/data_processing_demo/workflow.json +++ b/backend/autometabuilder/packages/data_processing_demo/workflow.json @@ -7,10 +7,24 @@ "name": "Create Sample Data", "type": "var.set", "typeVersion": 1, - "position": [0, 50], + "position": [ + 0, + 50 + ], "parameters": { "key": "numbers", - "value": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + "value": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ] } }, { @@ -18,7 +32,10 @@ "name": "Filter Even Numbers", "type": "utils.filter_list", "typeVersion": 1, - "position": [300, 50], + "position": [ + 300, + 50 + ], "parameters": { "items": "$numbers", "mode": "lambda", @@ -30,7 +47,10 @@ "name": "Square Each Number", "type": "utils.map_list", "typeVersion": 1, - "position": [600, 50], + "position": [ + 600, + 50 + ], "parameters": { "items": "$filtered_numbers", "transform": "lambda x: x * x" @@ -41,7 +61,10 @@ "name": "Sum All Values", "type": "math.add", "typeVersion": 1, - "position": [900, 50], + "position": [ + 900, + 50 + ], "parameters": { "numbers": "$squared_numbers" } @@ -51,7 +74,10 @@ "name": "Check If Sum > 50", "type": "logic.gt", "typeVersion": 1, - "position": [1200, 50], + "position": [ + 1200, + 50 + ], "parameters": { "a": "$sum", "b": 50 @@ -62,7 +88,10 @@ "name": "Branch On Result", "type": "utils.branch_condition", "typeVersion": 1, - "position": [1500, 50], + "position": [ + 1500, + 50 + ], "parameters": { "condition": "$is_greater" } @@ -72,7 +101,10 @@ "name": "Format Success Message", "type": "string.format", "typeVersion": 1, - "position": [1800, 0], + "position": [ + 1800, + 0 + ], "parameters": { "template": "Success! Sum is {sum}, which is greater than 50.", "variables": { @@ -85,7 +117,10 @@ "name": "Format Failure Message", "type": "string.format", "typeVersion": 1, - "position": [1800, 100], + "position": [ + 1800, + 100 + ], "parameters": { "template": "Sum is {sum}, which is not greater than 50.", "variables": { @@ -98,7 +133,10 @@ "name": "Store Final Result", "type": "var.set", "typeVersion": 1, - "position": [2100, 50], + "position": [ + 2100, + 50 + ], "parameters": { "key": "final_message", "value": "$message" @@ -201,5 +239,15 @@ ] } } - } + }, + "triggers": [ + { + "nodeId": "create_sample_data", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered Data Processing Demo workflow execution" + } + } + ] } diff --git a/backend/autometabuilder/packages/default_app_workflow/workflow.json b/backend/autometabuilder/packages/default_app_workflow/workflow.json index 4d4fc53..4e50c1b 100644 --- a/backend/autometabuilder/packages/default_app_workflow/workflow.json +++ b/backend/autometabuilder/packages/default_app_workflow/workflow.json @@ -7,7 +7,10 @@ "name": "Load Messages", "type": "backend.load_messages", "typeVersion": 1, - "position": [0, 0], + "position": [ + 0, + 0 + ], "parameters": {} }, { @@ -15,7 +18,10 @@ "name": "Load Metadata", "type": "backend.load_metadata", "typeVersion": 1, - "position": [300, 0], + "position": [ + 300, + 0 + ], "parameters": {} }, { @@ -23,7 +29,10 @@ "name": "Load Prompt", "type": "backend.load_prompt", "typeVersion": 1, - "position": [600, 0], + "position": [ + 600, + 0 + ], "parameters": {} }, { @@ -31,7 +40,10 @@ "name": "Create GitHub Client", "type": "backend.create_github", "typeVersion": 1, - "position": [900, 0], + "position": [ + 900, + 0 + ], "parameters": {} }, { @@ -39,7 +51,10 @@ "name": "Create OpenAI Client", "type": "backend.create_openai", "typeVersion": 1, - "position": [1200, 0], + "position": [ + 1200, + 0 + ], "parameters": {} }, { @@ -47,7 +62,10 @@ "name": "Load Tools", "type": "backend.load_tools", "typeVersion": 1, - "position": [1500, 0], + "position": [ + 1500, + 0 + ], "parameters": {} }, { @@ -55,7 +73,10 @@ "name": "Build Tool Map", "type": "backend.build_tool_map", "typeVersion": 1, - "position": [1800, 0], + "position": [ + 1800, + 0 + ], "parameters": {} }, { @@ -63,7 +84,10 @@ "name": "Load Plugins", "type": "backend.load_plugins", "typeVersion": 1, - "position": [2100, 0], + "position": [ + 2100, + 0 + ], "parameters": {} }, { @@ -71,7 +95,10 @@ "name": "Load Tool Policies", "type": "backend.load_tool_policies", "typeVersion": 1, - "position": [2400, 0], + "position": [ + 2400, + 0 + ], "parameters": {} }, { @@ -79,7 +106,10 @@ "name": "Load Context", "type": "core.load_context", "typeVersion": 1, - "position": [0, 300], + "position": [ + 0, + 300 + ], "parameters": {} }, { @@ -87,7 +117,10 @@ "name": "Seed Messages", "type": "core.seed_messages", "typeVersion": 1, - "position": [300, 300], + "position": [ + 300, + 300 + ], "parameters": {} }, { @@ -95,7 +128,10 @@ "name": "Append Context", "type": "core.append_context_message", "typeVersion": 1, - "position": [600, 300], + "position": [ + 600, + 300 + ], "parameters": {} }, { @@ -103,7 +139,10 @@ "name": "Append User Instruction", "type": "core.append_user_instruction", "typeVersion": 1, - "position": [900, 300], + "position": [ + 900, + 300 + ], "parameters": {} }, { @@ -111,7 +150,10 @@ "name": "Main Loop", "type": "control.loop", "typeVersion": 1, - "position": [1200, 300], + "position": [ + 1200, + 300 + ], "parameters": { "max_iterations": 10, "stop_when": "$no_tool_calls", @@ -123,7 +165,10 @@ "name": "AI Request", "type": "core.ai_request", "typeVersion": 1, - "position": [1500, 300], + "position": [ + 1500, + 300 + ], "parameters": {} }, { @@ -131,7 +176,10 @@ "name": "Run Tool Calls", "type": "core.run_tool_calls", "typeVersion": 1, - "position": [1800, 300], + "position": [ + 1800, + 300 + ], "parameters": {} }, { @@ -139,7 +187,10 @@ "name": "Append Tool Results", "type": "core.append_tool_results", "typeVersion": 1, - "position": [2100, 300], + "position": [ + 2100, + 300 + ], "parameters": {} } ], @@ -331,5 +382,15 @@ ] } } - } + }, + "triggers": [ + { + "nodeId": "load_messages", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered Default Application Workflow workflow execution" + } + } + ] } diff --git a/backend/autometabuilder/packages/dict_plugins_test/workflow.json b/backend/autometabuilder/packages/dict_plugins_test/workflow.json index 03af664..ad51b14 100644 --- a/backend/autometabuilder/packages/dict_plugins_test/workflow.json +++ b/backend/autometabuilder/packages/dict_plugins_test/workflow.json @@ -7,114 +7,306 @@ "name": "Test Get", "type": "dict.get", "typeVersion": 1, - "position": [0, 0], - "parameters": {"object": {"name": "Alice", "age": 30}, "key": "name"} + "position": [ + 0, + 0 + ], + "parameters": { + "object": { + "name": "Alice", + "age": 30 + }, + "key": "name" + } }, { "id": "assert_get", "name": "Assert Get Value", "type": "test.assert_equals", "typeVersion": 1, - "position": [300, 0], - "parameters": {"actual": "$test_get.result", "expected": "Alice", "message": "dict.get should retrieve value"} + "position": [ + 300, + 0 + ], + "parameters": { + "actual": "$test_get.result", + "expected": "Alice", + "message": "dict.get should retrieve value" + } }, { "id": "assert_get_found", "name": "Assert Get Found", "type": "test.assert_true", "typeVersion": 1, - "position": [600, 0], - "parameters": {"value": "$test_get.found", "message": "dict.get should set found flag"} + "position": [ + 600, + 0 + ], + "parameters": { + "value": "$test_get.found", + "message": "dict.get should set found flag" + } }, { "id": "test_set", "name": "Test Set", "type": "dict.set", "typeVersion": 1, - "position": [0, 100], - "parameters": {"object": {"a": 1}, "key": "b", "value": 2} + "position": [ + 0, + 100 + ], + "parameters": { + "object": { + "a": 1 + }, + "key": "b", + "value": 2 + } }, { "id": "test_get_new_key", "name": "Test Get New Key", "type": "dict.get", "typeVersion": 1, - "position": [300, 100], - "parameters": {"object": "$test_set.result", "key": "b"} + "position": [ + 300, + 100 + ], + "parameters": { + "object": "$test_set.result", + "key": "b" + } }, { "id": "assert_set", "name": "Assert Set Value", "type": "test.assert_equals", "typeVersion": 1, - "position": [600, 100], - "parameters": {"actual": "$test_get_new_key.result", "expected": 2, "message": "dict.set should add new key"} + "position": [ + 600, + 100 + ], + "parameters": { + "actual": "$test_get_new_key.result", + "expected": 2, + "message": "dict.set should add new key" + } }, { "id": "test_keys", "name": "Test Keys", "type": "dict.keys", "typeVersion": 1, - "position": [0, 200], - "parameters": {"object": {"a": 1, "b": 2, "c": 3}} + "position": [ + 0, + 200 + ], + "parameters": { + "object": { + "a": 1, + "b": 2, + "c": 3 + } + } }, { "id": "assert_keys_length", "name": "Assert Keys Length", "type": "list.length", "typeVersion": 1, - "position": [300, 200], - "parameters": {"items": "$test_keys.result"} + "position": [ + 300, + 200 + ], + "parameters": { + "items": "$test_keys.result" + } }, { "id": "assert_keys", "name": "Assert Keys Count", "type": "test.assert_equals", "typeVersion": 1, - "position": [600, 200], - "parameters": {"actual": "$assert_keys_length.result", "expected": 3, "message": "dict.keys should return all keys"} + "position": [ + 600, + 200 + ], + "parameters": { + "actual": "$assert_keys_length.result", + "expected": 3, + "message": "dict.keys should return all keys" + } }, { "id": "test_merge", "name": "Test Merge", "type": "dict.merge", "typeVersion": 1, - "position": [0, 300], - "parameters": {"objects": [{"a": 1}, {"b": 2}, {"c": 3}]} + "position": [ + 0, + 300 + ], + "parameters": { + "objects": [ + { + "a": 1 + }, + { + "b": 2 + }, + { + "c": 3 + } + ] + } }, { "id": "test_merged_keys", "name": "Get Merged Keys", "type": "dict.keys", "typeVersion": 1, - "position": [300, 300], - "parameters": {"object": "$test_merge.result"} + "position": [ + 300, + 300 + ], + "parameters": { + "object": "$test_merge.result" + } }, { "id": "assert_merge_length", "name": "Assert Merge Length", "type": "list.length", "typeVersion": 1, - "position": [600, 300], - "parameters": {"items": "$test_merged_keys.result"} + "position": [ + 600, + 300 + ], + "parameters": { + "items": "$test_merged_keys.result" + } }, { "id": "assert_merge", "name": "Assert Merge", "type": "test.assert_equals", "typeVersion": 1, - "position": [900, 300], - "parameters": {"actual": "$assert_merge_length.result", "expected": 3, "message": "dict.merge should merge dicts"} + "position": [ + 900, + 300 + ], + "parameters": { + "actual": "$assert_merge_length.result", + "expected": 3, + "message": "dict.merge should merge dicts" + } } ], "connections": { - "Test Get": {"main": {"0": [{"node": "Assert Get Value", "type": "main", "index": 0}, {"node": "Assert Get Found", "type": "main", "index": 0}]}}, - "Test Set": {"main": {"0": [{"node": "Test Get New Key", "type": "main", "index": 0}]}}, - "Test Get New Key": {"main": {"0": [{"node": "Assert Set Value", "type": "main", "index": 0}]}}, - "Test Keys": {"main": {"0": [{"node": "Assert Keys Length", "type": "main", "index": 0}]}}, - "Assert Keys Length": {"main": {"0": [{"node": "Assert Keys Count", "type": "main", "index": 0}]}}, - "Test Merge": {"main": {"0": [{"node": "Get Merged Keys", "type": "main", "index": 0}]}}, - "Get Merged Keys": {"main": {"0": [{"node": "Assert Merge Length", "type": "main", "index": 0}]}}, - "Assert Merge Length": {"main": {"0": [{"node": "Assert Merge", "type": "main", "index": 0}]}} - } + "Test Get": { + "main": { + "0": [ + { + "node": "Assert Get Value", + "type": "main", + "index": 0 + }, + { + "node": "Assert Get Found", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Set": { + "main": { + "0": [ + { + "node": "Test Get New Key", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Get New Key": { + "main": { + "0": [ + { + "node": "Assert Set Value", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Keys": { + "main": { + "0": [ + { + "node": "Assert Keys Length", + "type": "main", + "index": 0 + } + ] + } + }, + "Assert Keys Length": { + "main": { + "0": [ + { + "node": "Assert Keys Count", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Merge": { + "main": { + "0": [ + { + "node": "Get Merged Keys", + "type": "main", + "index": 0 + } + ] + } + }, + "Get Merged Keys": { + "main": { + "0": [ + { + "node": "Assert Merge Length", + "type": "main", + "index": 0 + } + ] + } + }, + "Assert Merge Length": { + "main": { + "0": [ + { + "node": "Assert Merge", + "type": "main", + "index": 0 + } + ] + } + } + }, + "triggers": [ + { + "nodeId": "test_get", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered Dict Plugins Test Suite workflow execution" + } + } + ] } diff --git a/backend/autometabuilder/packages/game_tick_loop/workflow.json b/backend/autometabuilder/packages/game_tick_loop/workflow.json index 855b398..b838892 100644 --- a/backend/autometabuilder/packages/game_tick_loop/workflow.json +++ b/backend/autometabuilder/packages/game_tick_loop/workflow.json @@ -109,5 +109,15 @@ ] } } - } -} \ No newline at end of file + }, + "triggers": [ + { + "nodeId": "seed_messages", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered meta.workflow_packages.game_tick_loop.label workflow execution" + } + } + ] +} diff --git a/backend/autometabuilder/packages/iterative_loop/workflow.json b/backend/autometabuilder/packages/iterative_loop/workflow.json index f29890e..b966639 100644 --- a/backend/autometabuilder/packages/iterative_loop/workflow.json +++ b/backend/autometabuilder/packages/iterative_loop/workflow.json @@ -184,5 +184,15 @@ ] } } - } -} \ No newline at end of file + }, + "triggers": [ + { + "nodeId": "load_context", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered Iterative Agent Loop workflow execution" + } + } + ] +} diff --git a/backend/autometabuilder/packages/list_plugins_test/workflow.json b/backend/autometabuilder/packages/list_plugins_test/workflow.json index b578ae2..7e3527c 100644 --- a/backend/autometabuilder/packages/list_plugins_test/workflow.json +++ b/backend/autometabuilder/packages/list_plugins_test/workflow.json @@ -7,96 +7,271 @@ "name": "Test Concat", "type": "list.concat", "typeVersion": 1, - "position": [0, 0], - "parameters": {"lists": [[1, 2], [3, 4], [5]]} + "position": [ + 0, + 0 + ], + "parameters": { + "lists": [ + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 5 + ] + ] + } }, { "id": "assert_concat_length", "name": "Assert Concat Length", "type": "list.length", "typeVersion": 1, - "position": [300, 0], - "parameters": {"items": "$test_concat.result"} + "position": [ + 300, + 0 + ], + "parameters": { + "items": "$test_concat.result" + } }, { "id": "assert_concat", "name": "Assert Concat", "type": "test.assert_equals", "typeVersion": 1, - "position": [600, 0], - "parameters": {"actual": "$assert_concat_length.result", "expected": 5, "message": "list.concat should concatenate lists"} + "position": [ + 600, + 0 + ], + "parameters": { + "actual": "$assert_concat_length.result", + "expected": 5, + "message": "list.concat should concatenate lists" + } }, { "id": "test_length", "name": "Test Length", "type": "list.length", "typeVersion": 1, - "position": [0, 100], - "parameters": {"items": [1, 2, 3, 4, 5]} + "position": [ + 0, + 100 + ], + "parameters": { + "items": [ + 1, + 2, + 3, + 4, + 5 + ] + } }, { "id": "assert_length", "name": "Assert Length", "type": "test.assert_equals", "typeVersion": 1, - "position": [300, 100], - "parameters": {"actual": "$test_length.result", "expected": 5, "message": "list.length should count items"} + "position": [ + 300, + 100 + ], + "parameters": { + "actual": "$test_length.result", + "expected": 5, + "message": "list.length should count items" + } }, { "id": "test_slice", "name": "Test Slice", "type": "list.slice", "typeVersion": 1, - "position": [0, 200], - "parameters": {"items": [1, 2, 3, 4, 5], "start": 1, "end": 3} + "position": [ + 0, + 200 + ], + "parameters": { + "items": [ + 1, + 2, + 3, + 4, + 5 + ], + "start": 1, + "end": 3 + } }, { "id": "assert_slice_length", "name": "Assert Slice Length", "type": "list.length", "typeVersion": 1, - "position": [300, 200], - "parameters": {"items": "$test_slice.result"} + "position": [ + 300, + 200 + ], + "parameters": { + "items": "$test_slice.result" + } }, { "id": "assert_slice", "name": "Assert Slice", "type": "test.assert_equals", "typeVersion": 1, - "position": [600, 200], - "parameters": {"actual": "$assert_slice_length.result", "expected": 2, "message": "list.slice should extract slice"} + "position": [ + 600, + 200 + ], + "parameters": { + "actual": "$assert_slice_length.result", + "expected": 2, + "message": "list.slice should extract slice" + } }, { "id": "test_find", "name": "Test Find", "type": "list.find", "typeVersion": 1, - "position": [0, 300], - "parameters": {"items": [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}], "key": "name", "value": "Bob"} + "position": [ + 0, + 300 + ], + "parameters": { + "items": [ + { + "id": 1, + "name": "Alice" + }, + { + "id": 2, + "name": "Bob" + } + ], + "key": "name", + "value": "Bob" + } }, { "id": "assert_find", "name": "Assert Find Result", "type": "test.assert_exists", "typeVersion": 1, - "position": [300, 300], - "parameters": {"value": "$test_find.result", "message": "list.find should find item"} + "position": [ + 300, + 300 + ], + "parameters": { + "value": "$test_find.result", + "message": "list.find should find item" + } }, { "id": "assert_find_found", "name": "Assert Found Flag", "type": "test.assert_true", "typeVersion": 1, - "position": [600, 300], - "parameters": {"value": "$test_find.found", "message": "list.find should set found flag"} + "position": [ + 600, + 300 + ], + "parameters": { + "value": "$test_find.found", + "message": "list.find should set found flag" + } } ], "connections": { - "Test Concat": {"main": {"0": [{"node": "Assert Concat Length", "type": "main", "index": 0}]}}, - "Assert Concat Length": {"main": {"0": [{"node": "Assert Concat", "type": "main", "index": 0}]}}, - "Test Length": {"main": {"0": [{"node": "Assert Length", "type": "main", "index": 0}]}}, - "Test Slice": {"main": {"0": [{"node": "Assert Slice Length", "type": "main", "index": 0}]}}, - "Assert Slice Length": {"main": {"0": [{"node": "Assert Slice", "type": "main", "index": 0}]}}, - "Test Find": {"main": {"0": [{"node": "Assert Find Result", "type": "main", "index": 0}, {"node": "Assert Found Flag", "type": "main", "index": 0}]}} - } + "Test Concat": { + "main": { + "0": [ + { + "node": "Assert Concat Length", + "type": "main", + "index": 0 + } + ] + } + }, + "Assert Concat Length": { + "main": { + "0": [ + { + "node": "Assert Concat", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Length": { + "main": { + "0": [ + { + "node": "Assert Length", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Slice": { + "main": { + "0": [ + { + "node": "Assert Slice Length", + "type": "main", + "index": 0 + } + ] + } + }, + "Assert Slice Length": { + "main": { + "0": [ + { + "node": "Assert Slice", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Find": { + "main": { + "0": [ + { + "node": "Assert Find Result", + "type": "main", + "index": 0 + }, + { + "node": "Assert Found Flag", + "type": "main", + "index": 0 + } + ] + } + } + }, + "triggers": [ + { + "nodeId": "test_concat", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered List Plugins Test Suite workflow execution" + } + } + ] } diff --git a/backend/autometabuilder/packages/logic_plugins_test/workflow.json b/backend/autometabuilder/packages/logic_plugins_test/workflow.json index 709fb8d..6b79082 100644 --- a/backend/autometabuilder/packages/logic_plugins_test/workflow.json +++ b/backend/autometabuilder/packages/logic_plugins_test/workflow.json @@ -7,9 +7,16 @@ "name": "Test AND (all true)", "type": "logic.and", "typeVersion": 1, - "position": [0, 0], + "position": [ + 0, + 0 + ], "parameters": { - "values": [true, true, true] + "values": [ + true, + true, + true + ] } }, { @@ -17,7 +24,10 @@ "name": "Assert AND result is true", "type": "test.assert_true", "typeVersion": 1, - "position": [300, 0], + "position": [ + 300, + 0 + ], "parameters": { "value": "$test_and_true.result", "message": "logic.and with all true values should return true" @@ -28,9 +38,16 @@ "name": "Test AND (with false)", "type": "logic.and", "typeVersion": 1, - "position": [0, 100], + "position": [ + 0, + 100 + ], "parameters": { - "values": [true, false, true] + "values": [ + true, + false, + true + ] } }, { @@ -38,7 +55,10 @@ "name": "Assert AND result is false", "type": "test.assert_false", "typeVersion": 1, - "position": [300, 100], + "position": [ + 300, + 100 + ], "parameters": { "value": "$test_and_false.result", "message": "logic.and with any false value should return false" @@ -49,9 +69,16 @@ "name": "Test OR (with true)", "type": "logic.or", "typeVersion": 1, - "position": [0, 200], + "position": [ + 0, + 200 + ], "parameters": { - "values": [false, false, true] + "values": [ + false, + false, + true + ] } }, { @@ -59,7 +86,10 @@ "name": "Assert OR result is true", "type": "test.assert_true", "typeVersion": 1, - "position": [300, 200], + "position": [ + 300, + 200 + ], "parameters": { "value": "$test_or_true.result", "message": "logic.or with any true value should return true" @@ -70,9 +100,16 @@ "name": "Test OR (all false)", "type": "logic.or", "typeVersion": 1, - "position": [0, 300], + "position": [ + 0, + 300 + ], "parameters": { - "values": [false, false, false] + "values": [ + false, + false, + false + ] } }, { @@ -80,7 +117,10 @@ "name": "Assert OR result is false", "type": "test.assert_false", "typeVersion": 1, - "position": [300, 300], + "position": [ + 300, + 300 + ], "parameters": { "value": "$test_or_false.result", "message": "logic.or with all false values should return false" @@ -91,7 +131,10 @@ "name": "Test Equals (same)", "type": "logic.equals", "typeVersion": 1, - "position": [0, 400], + "position": [ + 0, + 400 + ], "parameters": { "a": 42, "b": 42 @@ -102,7 +145,10 @@ "name": "Assert Equals is true", "type": "test.assert_true", "typeVersion": 1, - "position": [300, 400], + "position": [ + 300, + 400 + ], "parameters": { "value": "$test_equals_true.result", "message": "logic.equals with same values should return true" @@ -113,7 +159,10 @@ "name": "Test Equals (different)", "type": "logic.equals", "typeVersion": 1, - "position": [0, 500], + "position": [ + 0, + 500 + ], "parameters": { "a": 42, "b": 24 @@ -124,7 +173,10 @@ "name": "Assert Equals is false", "type": "test.assert_false", "typeVersion": 1, - "position": [300, 500], + "position": [ + 300, + 500 + ], "parameters": { "value": "$test_equals_false.result", "message": "logic.equals with different values should return false" @@ -135,7 +187,10 @@ "name": "Test Greater Than", "type": "logic.gt", "typeVersion": 1, - "position": [0, 600], + "position": [ + 0, + 600 + ], "parameters": { "a": 10, "b": 5 @@ -146,7 +201,10 @@ "name": "Assert GT is true", "type": "test.assert_true", "typeVersion": 1, - "position": [300, 600], + "position": [ + 300, + 600 + ], "parameters": { "value": "$test_gt.result", "message": "logic.gt should return true when a > b" @@ -157,7 +215,10 @@ "name": "Test Less Than", "type": "logic.lt", "typeVersion": 1, - "position": [0, 700], + "position": [ + 0, + 700 + ], "parameters": { "a": 3, "b": 7 @@ -168,7 +229,10 @@ "name": "Assert LT is true", "type": "test.assert_true", "typeVersion": 1, - "position": [300, 700], + "position": [ + 300, + 700 + ], "parameters": { "value": "$test_lt.result", "message": "logic.lt should return true when a < b" @@ -264,5 +328,15 @@ ] } } - } + }, + "triggers": [ + { + "nodeId": "test_and_true", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered Logic Plugins Test Suite workflow execution" + } + } + ] } diff --git a/backend/autometabuilder/packages/math_plugins_test/workflow.json b/backend/autometabuilder/packages/math_plugins_test/workflow.json index 8491bf0..98a52f1 100644 --- a/backend/autometabuilder/packages/math_plugins_test/workflow.json +++ b/backend/autometabuilder/packages/math_plugins_test/workflow.json @@ -7,104 +7,270 @@ "name": "Test Add", "type": "math.add", "typeVersion": 1, - "position": [0, 0], - "parameters": {"numbers": [1, 2, 3, 4, 5]} + "position": [ + 0, + 0 + ], + "parameters": { + "numbers": [ + 1, + 2, + 3, + 4, + 5 + ] + } }, { "id": "assert_add", "name": "Assert Add equals 15", "type": "test.assert_equals", "typeVersion": 1, - "position": [300, 0], - "parameters": {"actual": "$test_add.result", "expected": 15, "message": "math.add should sum all numbers"} + "position": [ + 300, + 0 + ], + "parameters": { + "actual": "$test_add.result", + "expected": 15, + "message": "math.add should sum all numbers" + } }, { "id": "test_multiply", "name": "Test Multiply", "type": "math.multiply", "typeVersion": 1, - "position": [0, 100], - "parameters": {"numbers": [2, 3, 4]} + "position": [ + 0, + 100 + ], + "parameters": { + "numbers": [ + 2, + 3, + 4 + ] + } }, { "id": "assert_multiply", "name": "Assert Multiply equals 24", "type": "test.assert_equals", "typeVersion": 1, - "position": [300, 100], - "parameters": {"actual": "$test_multiply.result", "expected": 24, "message": "math.multiply should multiply all numbers"} + "position": [ + 300, + 100 + ], + "parameters": { + "actual": "$test_multiply.result", + "expected": 24, + "message": "math.multiply should multiply all numbers" + } }, { "id": "test_subtract", "name": "Test Subtract", "type": "math.subtract", "typeVersion": 1, - "position": [0, 200], - "parameters": {"a": 10, "b": 3} + "position": [ + 0, + 200 + ], + "parameters": { + "a": 10, + "b": 3 + } }, { "id": "assert_subtract", "name": "Assert Subtract equals 7", "type": "test.assert_equals", "typeVersion": 1, - "position": [300, 200], - "parameters": {"actual": "$test_subtract.result", "expected": 7, "message": "math.subtract should return a - b"} + "position": [ + 300, + 200 + ], + "parameters": { + "actual": "$test_subtract.result", + "expected": 7, + "message": "math.subtract should return a - b" + } }, { "id": "test_divide", "name": "Test Divide", "type": "math.divide", "typeVersion": 1, - "position": [0, 300], - "parameters": {"a": 20, "b": 4} + "position": [ + 0, + 300 + ], + "parameters": { + "a": 20, + "b": 4 + } }, { "id": "assert_divide", "name": "Assert Divide equals 5", "type": "test.assert_equals", "typeVersion": 1, - "position": [300, 300], - "parameters": {"actual": "$test_divide.result", "expected": 5, "message": "math.divide should return a / b"} + "position": [ + 300, + 300 + ], + "parameters": { + "actual": "$test_divide.result", + "expected": 5, + "message": "math.divide should return a / b" + } }, { "id": "test_max", "name": "Test Max", "type": "math.max", "typeVersion": 1, - "position": [0, 400], - "parameters": {"numbers": [3, 7, 2, 9, 1]} + "position": [ + 0, + 400 + ], + "parameters": { + "numbers": [ + 3, + 7, + 2, + 9, + 1 + ] + } }, { "id": "assert_max", "name": "Assert Max equals 9", "type": "test.assert_equals", "typeVersion": 1, - "position": [300, 400], - "parameters": {"actual": "$test_max.result", "expected": 9, "message": "math.max should return maximum value"} + "position": [ + 300, + 400 + ], + "parameters": { + "actual": "$test_max.result", + "expected": 9, + "message": "math.max should return maximum value" + } }, { "id": "test_min", "name": "Test Min", "type": "math.min", "typeVersion": 1, - "position": [0, 500], - "parameters": {"numbers": [3, 7, 2, 9, 1]} + "position": [ + 0, + 500 + ], + "parameters": { + "numbers": [ + 3, + 7, + 2, + 9, + 1 + ] + } }, { "id": "assert_min", "name": "Assert Min equals 1", "type": "test.assert_equals", "typeVersion": 1, - "position": [300, 500], - "parameters": {"actual": "$test_min.result", "expected": 1, "message": "math.min should return minimum value"} + "position": [ + 300, + 500 + ], + "parameters": { + "actual": "$test_min.result", + "expected": 1, + "message": "math.min should return minimum value" + } } ], "connections": { - "Test Add": {"main": {"0": [{"node": "Assert Add equals 15", "type": "main", "index": 0}]}}, - "Test Multiply": {"main": {"0": [{"node": "Assert Multiply equals 24", "type": "main", "index": 0}]}}, - "Test Subtract": {"main": {"0": [{"node": "Assert Subtract equals 7", "type": "main", "index": 0}]}}, - "Test Divide": {"main": {"0": [{"node": "Assert Divide equals 5", "type": "main", "index": 0}]}}, - "Test Max": {"main": {"0": [{"node": "Assert Max equals 9", "type": "main", "index": 0}]}}, - "Test Min": {"main": {"0": [{"node": "Assert Min equals 1", "type": "main", "index": 0}]}} - } + "Test Add": { + "main": { + "0": [ + { + "node": "Assert Add equals 15", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Multiply": { + "main": { + "0": [ + { + "node": "Assert Multiply equals 24", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Subtract": { + "main": { + "0": [ + { + "node": "Assert Subtract equals 7", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Divide": { + "main": { + "0": [ + { + "node": "Assert Divide equals 5", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Max": { + "main": { + "0": [ + { + "node": "Assert Max equals 9", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Min": { + "main": { + "0": [ + { + "node": "Assert Min equals 1", + "type": "main", + "index": 0 + } + ] + } + } + }, + "triggers": [ + { + "nodeId": "test_add", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered Math Plugins Test Suite workflow execution" + } + } + ] } diff --git a/backend/autometabuilder/packages/plan_execute_summarize/workflow.json b/backend/autometabuilder/packages/plan_execute_summarize/workflow.json index 00a54ec..cb3f317 100644 --- a/backend/autometabuilder/packages/plan_execute_summarize/workflow.json +++ b/backend/autometabuilder/packages/plan_execute_summarize/workflow.json @@ -170,5 +170,15 @@ ] } } - } -} \ No newline at end of file + }, + "triggers": [ + { + "nodeId": "load_context", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered meta.workflow_packages.plan_execute_summarize.label workflow execution" + } + } + ] +} diff --git a/backend/autometabuilder/packages/repo_scan_context/workflow.json b/backend/autometabuilder/packages/repo_scan_context/workflow.json index 7c6d7c5..65efcb2 100644 --- a/backend/autometabuilder/packages/repo_scan_context/workflow.json +++ b/backend/autometabuilder/packages/repo_scan_context/workflow.json @@ -205,5 +205,15 @@ ] } } - } -} \ No newline at end of file + }, + "triggers": [ + { + "nodeId": "list_files", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered meta.workflow_packages.repo_scan_context.label workflow execution" + } + } + ] +} diff --git a/backend/autometabuilder/packages/string_plugins_test/workflow.json b/backend/autometabuilder/packages/string_plugins_test/workflow.json index bf0fb40..f050703 100644 --- a/backend/autometabuilder/packages/string_plugins_test/workflow.json +++ b/backend/autometabuilder/packages/string_plugins_test/workflow.json @@ -7,96 +7,236 @@ "name": "Test Concat", "type": "string.concat", "typeVersion": 1, - "position": [0, 0], - "parameters": {"strings": ["Hello", "World"], "separator": " "} + "position": [ + 0, + 0 + ], + "parameters": { + "strings": [ + "Hello", + "World" + ], + "separator": " " + } }, { "id": "assert_concat", "name": "Assert Concat", "type": "test.assert_equals", "typeVersion": 1, - "position": [300, 0], - "parameters": {"actual": "$test_concat.result", "expected": "Hello World", "message": "string.concat should join strings"} + "position": [ + 300, + 0 + ], + "parameters": { + "actual": "$test_concat.result", + "expected": "Hello World", + "message": "string.concat should join strings" + } }, { "id": "test_upper", "name": "Test Upper", "type": "string.upper", "typeVersion": 1, - "position": [0, 100], - "parameters": {"text": "hello"} + "position": [ + 0, + 100 + ], + "parameters": { + "text": "hello" + } }, { "id": "assert_upper", "name": "Assert Upper", "type": "test.assert_equals", "typeVersion": 1, - "position": [300, 100], - "parameters": {"actual": "$test_upper.result", "expected": "HELLO", "message": "string.upper should uppercase text"} + "position": [ + 300, + 100 + ], + "parameters": { + "actual": "$test_upper.result", + "expected": "HELLO", + "message": "string.upper should uppercase text" + } }, { "id": "test_lower", "name": "Test Lower", "type": "string.lower", "typeVersion": 1, - "position": [0, 200], - "parameters": {"text": "WORLD"} + "position": [ + 0, + 200 + ], + "parameters": { + "text": "WORLD" + } }, { "id": "assert_lower", "name": "Assert Lower", "type": "test.assert_equals", "typeVersion": 1, - "position": [300, 200], - "parameters": {"actual": "$test_lower.result", "expected": "world", "message": "string.lower should lowercase text"} + "position": [ + 300, + 200 + ], + "parameters": { + "actual": "$test_lower.result", + "expected": "world", + "message": "string.lower should lowercase text" + } }, { "id": "test_split", "name": "Test Split", "type": "string.split", "typeVersion": 1, - "position": [0, 300], - "parameters": {"text": "a,b,c", "separator": ","} + "position": [ + 0, + 300 + ], + "parameters": { + "text": "a,b,c", + "separator": "," + } }, { "id": "assert_split_length", "name": "Assert Split Length", "type": "list.length", "typeVersion": 1, - "position": [300, 300], - "parameters": {"items": "$test_split.result"} + "position": [ + 300, + 300 + ], + "parameters": { + "items": "$test_split.result" + } }, { "id": "assert_split", "name": "Assert Split Count", "type": "test.assert_equals", "typeVersion": 1, - "position": [600, 300], - "parameters": {"actual": "$assert_split_length.result", "expected": 3, "message": "string.split should split into array"} + "position": [ + 600, + 300 + ], + "parameters": { + "actual": "$assert_split_length.result", + "expected": 3, + "message": "string.split should split into array" + } }, { "id": "test_length", "name": "Test Length", "type": "string.length", "typeVersion": 1, - "position": [0, 400], - "parameters": {"text": "Hello"} + "position": [ + 0, + 400 + ], + "parameters": { + "text": "Hello" + } }, { "id": "assert_length", "name": "Assert Length", "type": "test.assert_equals", "typeVersion": 1, - "position": [300, 400], - "parameters": {"actual": "$test_length.result", "expected": 5, "message": "string.length should return character count"} + "position": [ + 300, + 400 + ], + "parameters": { + "actual": "$test_length.result", + "expected": 5, + "message": "string.length should return character count" + } } ], "connections": { - "Test Concat": {"main": {"0": [{"node": "Assert Concat", "type": "main", "index": 0}]}}, - "Test Upper": {"main": {"0": [{"node": "Assert Upper", "type": "main", "index": 0}]}}, - "Test Lower": {"main": {"0": [{"node": "Assert Lower", "type": "main", "index": 0}]}}, - "Test Split": {"main": {"0": [{"node": "Assert Split Length", "type": "main", "index": 0}]}}, - "Assert Split Length": {"main": {"0": [{"node": "Assert Split Count", "type": "main", "index": 0}]}}, - "Test Length": {"main": {"0": [{"node": "Assert Length", "type": "main", "index": 0}]}} - } + "Test Concat": { + "main": { + "0": [ + { + "node": "Assert Concat", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Upper": { + "main": { + "0": [ + { + "node": "Assert Upper", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Lower": { + "main": { + "0": [ + { + "node": "Assert Lower", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Split": { + "main": { + "0": [ + { + "node": "Assert Split Length", + "type": "main", + "index": 0 + } + ] + } + }, + "Assert Split Length": { + "main": { + "0": [ + { + "node": "Assert Split Count", + "type": "main", + "index": 0 + } + ] + } + }, + "Test Length": { + "main": { + "0": [ + { + "node": "Assert Length", + "type": "main", + "index": 0 + } + ] + } + } + }, + "triggers": [ + { + "nodeId": "test_concat", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered String Plugins Test Suite workflow execution" + } + } + ] } diff --git a/backend/autometabuilder/packages/testing_triangle/workflow.json b/backend/autometabuilder/packages/testing_triangle/workflow.json index 557f11b..3d1b651 100644 --- a/backend/autometabuilder/packages/testing_triangle/workflow.json +++ b/backend/autometabuilder/packages/testing_triangle/workflow.json @@ -143,5 +143,15 @@ ] } } - } -} \ No newline at end of file + }, + "triggers": [ + { + "nodeId": "lint", + "kind": "manual", + "enabled": true, + "meta": { + "description": "Manually triggered meta.workflow_packages.testing_triangle.label workflow execution" + } + } + ] +} diff --git a/backend/tests/test_main.py b/backend/tests/test_main.py index c5c2112..f197f8b 100644 --- a/backend/tests/test_main.py +++ b/backend/tests/test_main.py @@ -1,7 +1,7 @@ import os import unittest -from autometabuilder.prompt_loader import load_prompt_yaml +from autometabuilder.loaders.prompt_loader import load_prompt_yaml class TestMain(unittest.TestCase): def test_load_prompt_yaml(self):