mirror of
https://github.com/FuzzingLabs/fuzzforge_ai.git
synced 2026-07-07 18:57:49 +02:00
fix: Use positional args instead of kwargs for Temporal workflows
The Temporal Python SDK's start_workflow() method doesn't accept a 'kwargs' parameter. Workflows must receive parameters as positional arguments via the 'args' parameter. Changed from: args=workflow_args # Positional arguments This fixes the error: TypeError: Client.start_workflow() got an unexpected keyword argument 'kwargs' Workflows now correctly receive parameters in order: - security_assessment: [target_id, scanner_config, analyzer_config, reporter_config] - atheris_fuzzing: [target_id, target_file, max_iterations, timeout_seconds] - rust_test: [target_id, test_message]
This commit is contained in:
@@ -179,9 +179,21 @@ class TemporalManager:
|
|||||||
if not workflow_id:
|
if not workflow_id:
|
||||||
workflow_id = f"{workflow_name}-{str(uuid4())[:8]}"
|
workflow_id = f"{workflow_name}-{str(uuid4())[:8]}"
|
||||||
|
|
||||||
# Prepare workflow input - target_id as first arg, rest as kwargs
|
# Prepare workflow input arguments
|
||||||
workflow_params = workflow_params or {}
|
workflow_params = workflow_params or {}
|
||||||
|
|
||||||
|
# Build args list: [target_id, ...workflow_params values]
|
||||||
|
# The workflow parameters are passed as individual positional args
|
||||||
|
workflow_args = [target_id]
|
||||||
|
|
||||||
|
# Add parameters in order based on workflow signature
|
||||||
|
# For security_assessment: scanner_config, analyzer_config, reporter_config
|
||||||
|
# For atheris_fuzzing: target_file, max_iterations, timeout_seconds
|
||||||
|
# Parameters come from metadata.yaml's default_parameters merged with user params
|
||||||
|
if workflow_params:
|
||||||
|
# Add all parameter values as positional args
|
||||||
|
workflow_args.extend(workflow_params.values())
|
||||||
|
|
||||||
# Determine task queue from workflow vertical
|
# Determine task queue from workflow vertical
|
||||||
vertical = workflow_info.metadata.get("vertical", "default")
|
vertical = workflow_info.metadata.get("vertical", "default")
|
||||||
task_queue = f"{vertical}-queue"
|
task_queue = f"{vertical}-queue"
|
||||||
@@ -192,11 +204,10 @@ class TemporalManager:
|
|||||||
)
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Start workflow execution with target_id + keyword arguments
|
# Start workflow execution with positional arguments
|
||||||
handle = await self.client.start_workflow(
|
handle = await self.client.start_workflow(
|
||||||
workflow=workflow_info.workflow_type, # Workflow class name
|
workflow=workflow_info.workflow_type, # Workflow class name
|
||||||
arg=target_id, # First positional argument
|
args=workflow_args, # Positional arguments
|
||||||
kwargs=workflow_params, # Rest as keyword arguments
|
|
||||||
id=workflow_id,
|
id=workflow_id,
|
||||||
task_queue=task_queue,
|
task_queue=task_queue,
|
||||||
retry_policy=RetryPolicy(
|
retry_policy=RetryPolicy(
|
||||||
|
|||||||
Reference in New Issue
Block a user