From 55fb23f7c004140027a43f7517c4f4463e885815 Mon Sep 17 00:00:00 2001
From: ValueOn AG
Date: Tue, 4 Nov 2025 10:45:30 +0100
Subject: [PATCH] fixes workflow and chat object
---
.../processing/modes/modeActionplan.py | 36 ++++++++++---------
.../processing/modes/modeAutomation.py | 34 ++++++++++--------
.../workflows/processing/modes/modeDynamic.py | 22 ++++++------
.../processing/shared/placeholderFactory.py | 4 +--
modules/workflows/workflowManager.py | 4 +--
5 files changed, 55 insertions(+), 45 deletions(-)
diff --git a/modules/workflows/processing/modes/modeActionplan.py b/modules/workflows/processing/modes/modeActionplan.py
index facad71b..864ccee2 100644
--- a/modules/workflows/processing/modes/modeActionplan.py
+++ b/modules/workflows/processing/modes/modeActionplan.py
@@ -730,6 +730,7 @@ class ActionplanMode(BaseMode):
def _updateWorkflowBeforeExecutingTask(self, taskNumber: int):
"""Update workflow object before executing a task"""
try:
+ workflow = self.services.workflow
updateData = {
"currentTask": taskNumber,
"currentAction": 0,
@@ -737,13 +738,13 @@ class ActionplanMode(BaseMode):
}
# Update workflow object
- self.workflow.currentTask = taskNumber
- self.workflow.currentAction = 0
- self.workflow.totalActions = 0
+ workflow.currentTask = taskNumber
+ workflow.currentAction = 0
+ workflow.totalActions = 0
# Update in database
- self.services.interfaceDbChat.updateWorkflow(self.workflow.id, updateData)
- logger.info(f"Updated workflow {self.workflow.id} before executing task {taskNumber}: {updateData}")
+ self.services.interfaceDbChat.updateWorkflow(workflow.id, updateData)
+ logger.info(f"Updated workflow {workflow.id} before executing task {taskNumber}: {updateData}")
except Exception as e:
logger.error(f"Error updating workflow before executing task: {str(e)}")
@@ -751,16 +752,17 @@ class ActionplanMode(BaseMode):
def _updateWorkflowAfterActionPlanning(self, totalActions: int):
"""Update workflow object after action planning for current task"""
try:
+ workflow = self.services.workflow
updateData = {
"totalActions": totalActions
}
# Update workflow object
- self.workflow.totalActions = totalActions
+ workflow.totalActions = totalActions
# Update in database
- self.services.interfaceDbChat.updateWorkflow(self.workflow.id, updateData)
- logger.info(f"Updated workflow {self.workflow.id} after action planning: {updateData}")
+ self.services.interfaceDbChat.updateWorkflow(workflow.id, updateData)
+ logger.info(f"Updated workflow {workflow.id} after action planning: {updateData}")
except Exception as e:
logger.error(f"Error updating workflow after action planning: {str(e)}")
@@ -768,16 +770,17 @@ class ActionplanMode(BaseMode):
def _updateWorkflowBeforeExecutingAction(self, actionNumber: int):
"""Update workflow object before executing an action"""
try:
+ workflow = self.services.workflow
updateData = {
"currentAction": actionNumber
}
# Update workflow object
- self.workflow.currentAction = actionNumber
+ workflow.currentAction = actionNumber
# Update in database
- self.services.interfaceDbChat.updateWorkflow(self.workflow.id, updateData)
- logger.info(f"Updated workflow {self.workflow.id} before executing action {actionNumber}: {updateData}")
+ self.services.interfaceDbChat.updateWorkflow(workflow.id, updateData)
+ logger.info(f"Updated workflow {workflow.id} before executing action {actionNumber}: {updateData}")
except Exception as e:
logger.error(f"Error updating workflow before executing action: {str(e)}")
@@ -785,22 +788,23 @@ class ActionplanMode(BaseMode):
def _setWorkflowTotals(self, totalTasks: int = None, totalActions: int = None):
"""Set total counts for workflow progress tracking and update database"""
try:
+ workflow = self.services.workflow
updateData = {}
if totalTasks is not None:
- self.workflow.totalTasks = totalTasks
+ workflow.totalTasks = totalTasks
updateData["totalTasks"] = totalTasks
if totalActions is not None:
- self.workflow.totalActions = totalActions
+ workflow.totalActions = totalActions
updateData["totalActions"] = totalActions
# Update workflow object in database if we have changes
if updateData:
- self.services.interfaceDbChat.updateWorkflow(self.workflow.id, updateData)
- logger.info(f"Updated workflow {self.workflow.id} totals in database: {updateData}")
+ self.services.interfaceDbChat.updateWorkflow(workflow.id, updateData)
+ logger.info(f"Updated workflow {workflow.id} totals in database: {updateData}")
- logger.debug(f"Updated workflow totals: Tasks {self.workflow.totalTasks if hasattr(self.workflow, 'totalTasks') else 'N/A'}, Actions {self.workflow.totalActions if hasattr(self.workflow, 'totalActions') else 'N/A'}")
+ logger.debug(f"Updated workflow totals: Tasks {workflow.totalTasks if hasattr(workflow, 'totalTasks') else 'N/A'}, Actions {workflow.totalActions if hasattr(workflow, 'totalActions') else 'N/A'}")
except Exception as e:
logger.error(f"Error setting workflow totals: {str(e)}")
diff --git a/modules/workflows/processing/modes/modeAutomation.py b/modules/workflows/processing/modes/modeAutomation.py
index 7c93b43b..a4609e15 100644
--- a/modules/workflows/processing/modes/modeAutomation.py
+++ b/modules/workflows/processing/modes/modeAutomation.py
@@ -375,57 +375,61 @@ class AutomationMode(BaseMode):
def _updateWorkflowBeforeExecutingTask(self, taskNumber: int):
"""Update workflow object before executing a task"""
try:
+ workflow = self.services.workflow
updateData = {
"currentTask": taskNumber,
"currentAction": 0,
"totalActions": 0
}
- self.workflow.currentTask = taskNumber
- self.workflow.currentAction = 0
- self.workflow.totalActions = 0
+ workflow.currentTask = taskNumber
+ workflow.currentAction = 0
+ workflow.totalActions = 0
- self.services.interfaceDbChat.updateWorkflow(self.workflow.id, updateData)
- logger.info(f"Updated workflow {self.workflow.id} before executing task {taskNumber}")
+ self.services.interfaceDbChat.updateWorkflow(workflow.id, updateData)
+ logger.info(f"Updated workflow {workflow.id} before executing task {taskNumber}")
except Exception as e:
logger.error(f"Error updating workflow before executing task: {str(e)}")
def _updateWorkflowAfterActionPlanning(self, totalActions: int):
"""Update workflow object after action planning"""
try:
+ workflow = self.services.workflow
updateData = {"totalActions": totalActions}
- self.workflow.totalActions = totalActions
- self.services.interfaceDbChat.updateWorkflow(self.workflow.id, updateData)
- logger.info(f"Updated workflow {self.workflow.id} after action planning: {updateData}")
+ workflow.totalActions = totalActions
+ self.services.interfaceDbChat.updateWorkflow(workflow.id, updateData)
+ logger.info(f"Updated workflow {workflow.id} after action planning: {updateData}")
except Exception as e:
logger.error(f"Error updating workflow after action planning: {str(e)}")
def _updateWorkflowBeforeExecutingAction(self, actionNumber: int):
"""Update workflow object before executing an action"""
try:
+ workflow = self.services.workflow
updateData = {"currentAction": actionNumber}
- self.workflow.currentAction = actionNumber
- self.services.interfaceDbChat.updateWorkflow(self.workflow.id, updateData)
- logger.info(f"Updated workflow {self.workflow.id} before executing action {actionNumber}")
+ workflow.currentAction = actionNumber
+ self.services.interfaceDbChat.updateWorkflow(workflow.id, updateData)
+ logger.info(f"Updated workflow {workflow.id} before executing action {actionNumber}")
except Exception as e:
logger.error(f"Error updating workflow before executing action: {str(e)}")
def _setWorkflowTotals(self, totalTasks: int = None, totalActions: int = None):
"""Set total counts for workflow progress tracking"""
try:
+ workflow = self.services.workflow
updateData = {}
if totalTasks is not None:
- self.workflow.totalTasks = totalTasks
+ workflow.totalTasks = totalTasks
updateData["totalTasks"] = totalTasks
if totalActions is not None:
- self.workflow.totalActions = totalActions
+ workflow.totalActions = totalActions
updateData["totalActions"] = totalActions
if updateData:
- self.services.interfaceDbChat.updateWorkflow(self.workflow.id, updateData)
- logger.info(f"Updated workflow {self.workflow.id} totals: {updateData}")
+ self.services.interfaceDbChat.updateWorkflow(workflow.id, updateData)
+ logger.info(f"Updated workflow {workflow.id} totals: {updateData}")
except Exception as e:
logger.error(f"Error setting workflow totals: {str(e)}")
diff --git a/modules/workflows/processing/modes/modeDynamic.py b/modules/workflows/processing/modes/modeDynamic.py
index b7e584da..1a1c7e5c 100644
--- a/modules/workflows/processing/modes/modeDynamic.py
+++ b/modules/workflows/processing/modes/modeDynamic.py
@@ -379,8 +379,8 @@ class DynamicMode(BaseMode):
}
# Build a synthetic ActionItem for execution routing and labels
- currentRound = getattr(self.workflow, 'currentRound', 0)
- currentTask = getattr(self.workflow, 'currentTask', 0)
+ currentRound = getattr(self.services.workflow, 'currentRound', 0)
+ currentTask = getattr(self.services.workflow, 'currentTask', 0)
resultLabel = f"round{currentRound}_task{currentTask}_action{stepIndex}_results"
taskAction = self._createActionItem({
@@ -880,6 +880,7 @@ Return only the user-friendly message, no technical details."""
def _updateWorkflowBeforeExecutingTask(self, taskNumber: int):
"""Update workflow object before executing a task"""
try:
+ workflow = self.services.workflow
updateData = {
"currentTask": taskNumber,
"currentAction": 0,
@@ -887,13 +888,13 @@ Return only the user-friendly message, no technical details."""
}
# Update workflow object
- self.workflow.currentTask = taskNumber
- self.workflow.currentAction = 0
- self.workflow.totalActions = 0
+ workflow.currentTask = taskNumber
+ workflow.currentAction = 0
+ workflow.totalActions = 0
# Update in database
- self.services.interfaceDbChat.updateWorkflow(self.workflow.id, updateData)
- logger.info(f"Updated workflow {self.workflow.id} before executing task {taskNumber}: {updateData}")
+ self.services.interfaceDbChat.updateWorkflow(workflow.id, updateData)
+ logger.info(f"Updated workflow {workflow.id} before executing task {taskNumber}: {updateData}")
except Exception as e:
logger.error(f"Error updating workflow before executing task: {str(e)}")
@@ -901,16 +902,17 @@ Return only the user-friendly message, no technical details."""
def _updateWorkflowBeforeExecutingAction(self, actionNumber: int):
"""Update workflow object before executing an action"""
try:
+ workflow = self.services.workflow
updateData = {
"currentAction": actionNumber
}
# Update workflow object
- self.workflow.currentAction = actionNumber
+ workflow.currentAction = actionNumber
# Update in database
- self.services.interfaceDbChat.updateWorkflow(self.workflow.id, updateData)
- logger.info(f"Updated workflow {self.workflow.id} before executing action {actionNumber}: {updateData}")
+ self.services.interfaceDbChat.updateWorkflow(workflow.id, updateData)
+ logger.info(f"Updated workflow {workflow.id} before executing action {actionNumber}: {updateData}")
except Exception as e:
logger.error(f"Error updating workflow before executing action: {str(e)}")
diff --git a/modules/workflows/processing/shared/placeholderFactory.py b/modules/workflows/processing/shared/placeholderFactory.py
index ed01ad4f..1a21aced 100644
--- a/modules/workflows/processing/shared/placeholderFactory.py
+++ b/modules/workflows/processing/shared/placeholderFactory.py
@@ -469,7 +469,7 @@ def extractAvailableDocumentsIndex(service: Any, context: Any) -> str:
def extractAvailableConnectionsSummary(service: Any) -> str:
"""Summary of available connections (count only)."""
try:
- connections = service.workflow.getConnectionReferenceList()
+ connections = service.chat.getConnectionReferenceList()
if connections:
return f"{len(connections)} connections available"
return "No connections available"
@@ -480,7 +480,7 @@ def extractAvailableConnectionsSummary(service: Any) -> str:
def extractAvailableConnectionsIndex(service: Any) -> str:
"""Index of available connections with detailed references for parameter generation."""
try:
- connections = service.workflow.getConnectionReferenceList()
+ connections = service.chat.getConnectionReferenceList()
if connections:
return '\n'.join(f"- {conn}" for conn in connections)
return "No connections available"
diff --git a/modules/workflows/workflowManager.py b/modules/workflows/workflowManager.py
index edcce5e0..73e90ae7 100644
--- a/modules/workflows/workflowManager.py
+++ b/modules/workflows/workflowManager.py
@@ -151,8 +151,8 @@ class WorkflowManager:
self.workflowProcessor = WorkflowProcessor(self.services)
await self._sendFirstMessage(userInput)
- task_plan = await self._planTasks(userInput)
- await self._executeTasks(task_plan)
+ taskPlan = await self._planTasks(userInput)
+ await self._executeTasks(taskPlan)
await self._processWorkflowResults()
except WorkflowStoppedException: