From 047d0a604ab59f48328b5ff0ee4beb779512d0af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Flor=C3=AAncio?= Date: Wed, 25 Feb 2026 02:22:01 +0000 Subject: [PATCH] feat: add guard in workflow engine --- .../orchestrator/event_handlers_workflow.go | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/apps/backend/internal/orchestrator/event_handlers_workflow.go b/apps/backend/internal/orchestrator/event_handlers_workflow.go index f93f5a944b..45900e5546 100644 --- a/apps/backend/internal/orchestrator/event_handlers_workflow.go +++ b/apps/backend/internal/orchestrator/event_handlers_workflow.go @@ -669,6 +669,19 @@ func (s *Service) processOnTurnCompleteViaEngine(ctx context.Context, taskID, se return false } + // Guard: skip engine evaluation when session has no workflow step (mirrors legacy path) + session, err := s.repo.GetTaskSession(ctx, sessionID) + if err != nil { + s.logger.Warn("failed to get session for engine on_turn_complete", + zap.String("session_id", sessionID), zap.Error(err)) + s.setSessionWaitingForInput(ctx, taskID, sessionID) + return false + } + if session.WorkflowStepID == nil || *session.WorkflowStepID == "" { + s.setSessionWaitingForInput(ctx, taskID, sessionID) + return false + } + result, err := s.workflowEngine.HandleTrigger(ctx, engine.HandleInput{ TaskID: taskID, SessionID: sessionID, @@ -759,6 +772,17 @@ func (s *Service) processOnTurnStartViaEngine(ctx context.Context, taskID, sessi return false } + // Guard: skip engine evaluation when session has no workflow step (mirrors legacy path) + session, err := s.repo.GetTaskSession(ctx, sessionID) + if err != nil { + s.logger.Warn("failed to get session for engine on_turn_start", + zap.String("session_id", sessionID), zap.Error(err)) + return false + } + if session.WorkflowStepID == nil || *session.WorkflowStepID == "" { + return false + } + result, err := s.workflowEngine.HandleTrigger(ctx, engine.HandleInput{ TaskID: taskID, SessionID: sessionID,