diff --git a/autogpt_platform/backend/backend/blocks/human_in_the_loop.py b/autogpt_platform/backend/backend/blocks/human_in_the_loop.py index 42c98b5146..13c9fb31db 100644 --- a/autogpt_platform/backend/backend/blocks/human_in_the_loop.py +++ b/autogpt_platform/backend/backend/blocks/human_in_the_loop.py @@ -1,5 +1,5 @@ import logging -from typing import Any, Literal +from typing import Any from prisma.enums import ReviewStatus @@ -45,11 +45,11 @@ class HumanInTheLoopBlock(Block): ) class Output(BlockSchemaOutput): - reviewed_data: Any = SchemaField( - description="The data after human review (may be modified)" + approved_data: Any = SchemaField( + description="The data when approved (may be modified by reviewer)" ) - status: Literal["approved", "rejected"] = SchemaField( - description="Status of the review: 'approved' or 'rejected'" + rejected_data: Any = SchemaField( + description="The data when rejected (may be modified by reviewer)" ) review_message: str = SchemaField( description="Any message provided by the reviewer", default="" @@ -69,8 +69,7 @@ class HumanInTheLoopBlock(Block): "editable": True, }, test_output=[ - ("status", "approved"), - ("reviewed_data", {"name": "John Doe", "age": 30}), + ("approved_data", {"name": "John Doe", "age": 30}), ], test_mock={ "get_or_create_human_review": lambda *_args, **_kwargs: ReviewResult( @@ -116,8 +115,7 @@ class HumanInTheLoopBlock(Block): logger.info( f"HITL block skipping review for node {node_exec_id} - safe mode disabled" ) - yield "status", "approved" - yield "reviewed_data", input_data.data + yield "approved_data", input_data.data yield "review_message", "Auto-approved (safe mode disabled)" return @@ -158,12 +156,11 @@ class HumanInTheLoopBlock(Block): ) if result.status == ReviewStatus.APPROVED: - yield "status", "approved" - yield "reviewed_data", result.data + yield "approved_data", result.data if result.message: yield "review_message", result.message elif result.status == ReviewStatus.REJECTED: - yield "status", "rejected" + yield "rejected_data", result.data if result.message: yield "review_message", result.message diff --git a/autogpt_platform/backend/backend/data/human_review.py b/autogpt_platform/backend/backend/data/human_review.py index df0b4b21e8..11b87ec1dd 100644 --- a/autogpt_platform/backend/backend/data/human_review.py +++ b/autogpt_platform/backend/backend/data/human_review.py @@ -100,7 +100,7 @@ async def get_or_create_human_review( return None else: return ReviewResult( - data=review.payload if review.status == ReviewStatus.APPROVED else None, + data=review.payload, status=review.status, message=review.reviewMessage or "", processed=review.processed, diff --git a/autogpt_platform/backend/backend/server/v2/executions/review/routes.py b/autogpt_platform/backend/backend/server/v2/executions/review/routes.py index febfe40213..14fb435457 100644 --- a/autogpt_platform/backend/backend/server/v2/executions/review/routes.py +++ b/autogpt_platform/backend/backend/server/v2/executions/review/routes.py @@ -134,18 +134,14 @@ async def process_review_action( # Build review decisions map review_decisions = {} for review in request.reviews: - if review.approved: - review_decisions[review.node_exec_id] = ( - ReviewStatus.APPROVED, - review.reviewed_data, - review.message, - ) - else: - review_decisions[review.node_exec_id] = ( - ReviewStatus.REJECTED, - None, - review.message, - ) + review_status = ( + ReviewStatus.APPROVED if review.approved else ReviewStatus.REJECTED + ) + review_decisions[review.node_exec_id] = ( + review_status, + review.reviewed_data, + review.message, + ) # Process all reviews updated_reviews = await process_all_reviews_for_execution(