From c6897055bbf50ec2ee7862ac05b91d1c33f3aed6 Mon Sep 17 00:00:00 2001 From: vishnuszipstack Date: Tue, 17 Feb 2026 14:13:30 +0530 Subject: [PATCH 1/2] feat: Change HITL default TTL from unlimited to 90 days Update WorkflowUtil.get_hitl_ttl_seconds() to always return an int TTL value instead of None for unlimited. The ImportError fallback now returns 2160 * 3600 (90 days in seconds) instead of None. This is the open-source counterpart to the full TTL enforcement in unstract-cloud, where the backend models, helpers, serializers, migration, and frontend are also updated. Co-Authored-By: Claude Opus 4.6 --- backend/plugins/workflow_manager/workflow_v2/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/plugins/workflow_manager/workflow_v2/utils.py b/backend/plugins/workflow_manager/workflow_v2/utils.py index a07c5b5b41..fcf7c24dd8 100644 --- a/backend/plugins/workflow_manager/workflow_v2/utils.py +++ b/backend/plugins/workflow_manager/workflow_v2/utils.py @@ -154,14 +154,14 @@ def has_api_rules(workflow: Workflow) -> bool: return False @staticmethod - def get_hitl_ttl_seconds(workflow: Workflow) -> int | None: + def get_hitl_ttl_seconds(workflow: Workflow) -> int: """Get TTL in seconds for HITL settings for a workflow. Args: workflow (Workflow): The workflow to get HITL TTL settings for. Returns: - int | None: TTL in seconds if set, None for unlimited TTL. + int: TTL in seconds. Defaults to 90 days (2160 hours). """ try: from pluggable_apps.manual_review_v2.helper import ( @@ -170,4 +170,4 @@ def get_hitl_ttl_seconds(workflow: Workflow) -> int | None: return get_hitl_ttl_seconds_by_workflow(workflow) except ImportError: - return None + return 2160 * 3600 From a8ec3dbbb0d0366b43ab7299ee618d95d2e930d6 Mon Sep 17 00:00:00 2001 From: vishnuszipstack Date: Tue, 24 Feb 2026 10:57:18 +0530 Subject: [PATCH 2/2] refactor: Extract HITL TTL magic number into named constant Replace raw `2160 * 3600` with `DEFAULT_HITL_TTL_SECONDS = 90 * SECS_IN_DAY` for readability. Also guard against None return from plugin function. Co-Authored-By: Claude Opus 4.6 --- backend/plugins/workflow_manager/workflow_v2/utils.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/backend/plugins/workflow_manager/workflow_v2/utils.py b/backend/plugins/workflow_manager/workflow_v2/utils.py index fcf7c24dd8..33afaeafa2 100644 --- a/backend/plugins/workflow_manager/workflow_v2/utils.py +++ b/backend/plugins/workflow_manager/workflow_v2/utils.py @@ -14,6 +14,9 @@ logger = logging.getLogger(__name__) +SECS_IN_DAY = 24 * 3600 +DEFAULT_HITL_TTL_SECONDS = 90 * SECS_IN_DAY # 90 days + class WorkflowUtil: """Utility class for workflow operations. @@ -168,6 +171,7 @@ def get_hitl_ttl_seconds(workflow: Workflow) -> int: get_hitl_ttl_seconds_by_workflow, ) - return get_hitl_ttl_seconds_by_workflow(workflow) + ttl = get_hitl_ttl_seconds_by_workflow(workflow) + return ttl if ttl is not None else DEFAULT_HITL_TTL_SECONDS except ImportError: - return 2160 * 3600 + return DEFAULT_HITL_TTL_SECONDS