gateway/modules/workflows/automation2/executors/triggerExecutor.py

34 lines
1.1 KiB
Python

# Copyright (c) 2025 Patrick Motsch
# Start node executor (node type trigger.manual) — outputs the unified run envelope from context.
import logging
from typing import Any, Dict
from modules.workflows.automation2.runEnvelope import normalize_run_envelope
logger = logging.getLogger(__name__)
class TriggerExecutor:
"""
Single start node on the canvas. Output is always context['runEnvelope'], normalized.
Invocation mode (manual, form, webhook, …) is configured as workflow entry points, not here.
"""
async def execute(
self,
node: Dict[str, Any],
context: Dict[str, Any],
) -> Any:
node_id = node.get("id", "")
base = context.get("runEnvelope")
if not isinstance(base, dict):
out = normalize_run_envelope(None, user_id=context.get("userId"))
else:
out = normalize_run_envelope(base, user_id=context.get("userId"))
logger.info(
"TriggerExecutor node %s trigger.type=%s",
node_id,
(out.get("trigger") or {}).get("type"),
)
return out