add step count to webhooks and get run payload (#4410)

This commit is contained in:
Marc Kelechava
2026-01-07 11:41:57 -08:00
committed by GitHub
parent 3c896fad1c
commit 4401216346
9 changed files with 57 additions and 11 deletions

View File

@@ -70,6 +70,7 @@ async def get_run_response(run_id: str, organization_id: str | None = None) -> R
max_screenshot_scrolls=task_v1_response.request.max_screenshot_scrolls,
),
errors=task_v1_response.errors,
step_count=task_v1_response.step_count,
)
elif run.task_run_type == RunType.task_v2:
task_v2 = await app.DATABASE.get_task_v2(run.run_id, organization_id=organization_id)

View File

@@ -126,10 +126,13 @@ async def get_task_v1_response(task_id: str, organization_id: str | None = None)
if not task_obj:
raise TaskNotFound(task_id=task_id)
# get step count efficiently via COUNT query
step_count = await app.DATABASE.get_task_step_count(task_id, organization_id)
# get latest step
latest_step = await app.DATABASE.get_latest_step(task_id, organization_id=organization_id)
if not latest_step:
return await app.agent.build_task_response(task=task_obj)
return await app.agent.build_task_response(task=task_obj, step_count=step_count)
failure_reason: str | None = None
if task_obj.status == TaskStatus.failed and (latest_step.output or task_obj.failure_reason):
@@ -148,5 +151,9 @@ async def get_task_v1_response(task_id: str, organization_id: str | None = None)
if len(action_results_string) > 0:
failure_reason += "(Exceptions: " + str(action_results_string) + ")"
return await app.agent.build_task_response(
task=task_obj, last_step=latest_step, failure_reason=failure_reason, need_browser_log=True
task=task_obj,
last_step=latest_step,
failure_reason=failure_reason,
need_browser_log=True,
step_count=step_count,
)

View File

@@ -1799,6 +1799,7 @@ async def build_task_v2_run_response(task_v2: TaskV2) -> TaskRunResponse:
error_code_mapping=task_v2.error_code_mapping,
),
errors=workflow_run_resp.errors if workflow_run_resp else None,
step_count=workflow_run_resp.step_count if workflow_run_resp else None,
)

View File

@@ -113,6 +113,7 @@ async def get_workflow_run_response(
workflow_run_resp = await app.WORKFLOW_SERVICE.build_workflow_run_status_response_by_workflow_id(
workflow_run_id=workflow_run.workflow_run_id,
organization_id=organization_id,
include_step_count=True,
)
app_url = f"{settings.SKYVERN_APP_URL.rstrip('/')}/runs/{workflow_run.workflow_run_id}"
return WorkflowRunResponse(
@@ -145,4 +146,5 @@ async def get_workflow_run_response(
# TODO: add browser session id
),
errors=workflow_run_resp.errors,
step_count=workflow_run_resp.total_steps,
)