add failure_reason to the TaskRunRepsonse for task v2 (#2052)

This commit is contained in:
Shuchang Zheng 2025-03-31 12:15:26 -07:00 committed by GitHub
parent a75d5c947d
commit 993e3b637d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 24 additions and 33 deletions

View file

@ -133,7 +133,6 @@ class SkyvernAgent:
status=TaskV2Status.queued, status=TaskV2Status.queued,
organization_id=organization.organization_id, organization_id=organization.organization_id,
) )
assert task_v2.workflow_run_id assert task_v2.workflow_run_id
await app.DATABASE.update_workflow_run( await app.DATABASE.update_workflow_run(
workflow_run_id=task_v2.workflow_run_id, workflow_run_id=task_v2.workflow_run_id,
@ -295,28 +294,23 @@ class SkyvernAgent:
proxy_location=proxy_location, proxy_location=proxy_location,
) )
if wait_for_completion: created_task = await app.agent.create_task(task_request, organization.organization_id)
created_task = await app.agent.create_task(task_request, organization.organization_id) url_hash = generate_url_hash(task_request.url)
url_hash = generate_url_hash(task_request.url) await app.DATABASE.create_task_run(
await app.DATABASE.create_task_run( task_run_type=RunType.task_v1,
task_run_type=RunType.task_v1, organization_id=organization.organization_id,
organization_id=organization.organization_id, run_id=created_task.task_id,
run_id=created_task.task_id, title=task_request.title,
title=task_request.title, url=task_request.url,
url=task_request.url, url_hash=url_hash,
url_hash=url_hash, )
) try:
try: await self._run_task(organization, created_task)
await self._run_task(organization, created_task) run_obj = await self.get_run(run_id=created_task.task_id)
run_obj = await self.get_run(run_id=created_task.task_id) return cast(TaskRunResponse, run_obj)
return cast(TaskRunResponse, run_obj) except Exception:
except Exception: # TODO: better error handling and logging
# TODO: better error handling and logging run_obj = await self.get_run(run_id=created_task.task_id)
run_obj = await self.get_run(run_id=created_task.task_id)
return cast(TaskRunResponse, run_obj)
else:
create_task_resp = await self.create_task_v1(task_request)
run_obj = await self.get_run(run_id=create_task_resp.task_id)
return cast(TaskRunResponse, run_obj) return cast(TaskRunResponse, run_obj)
elif engine == RunEngine.skyvern_v2: elif engine == RunEngine.skyvern_v2:
# initialize task v2 # initialize task v2
@ -336,14 +330,9 @@ class SkyvernAgent:
create_task_run=True, create_task_run=True,
) )
if wait_for_completion: await self._run_task_v2(organization, task_v2)
await self._run_task_v2(organization, task_v2) run_obj = await self.get_run(run_id=task_v2.observer_cruise_id)
run_obj = await self.get_run(run_id=task_v2.observer_cruise_id) return cast(TaskRunResponse, run_obj)
return cast(TaskRunResponse, run_obj)
else:
asyncio.create_task(self._run_task_v2(organization, task_v2))
run_obj = await self.get_run(run_id=task_v2.observer_cruise_id)
return cast(TaskRunResponse, run_obj)
else: else:
raise ValueError("Local mode is not supported for this method") raise ValueError("Local mode is not supported for this method")

View file

@ -37,13 +37,15 @@ async def get_run_response(run_id: str, organization_id: str | None = None) -> R
task_v2 = await app.DATABASE.get_task_v2(run.run_id, organization_id=organization_id) task_v2 = await app.DATABASE.get_task_v2(run.run_id, organization_id=organization_id)
if not task_v2: if not task_v2:
return None return None
workflow_run = None
if task_v2.workflow_run_id:
workflow_run = await app.DATABASE.get_workflow_run(task_v2.workflow_run_id, organization_id=organization_id)
return TaskRunResponse( return TaskRunResponse(
run_id=run.run_id, run_id=run.run_id,
run_type=run.task_run_type, run_type=run.task_run_type,
status=task_v2.status, status=task_v2.status,
output=task_v2.output, output=task_v2.output,
# TODO: add failure reason failure_reason=workflow_run.failure_reason if workflow_run else None,
# failure_reason=task_v2.failure_reason,
created_at=task_v2.created_at, created_at=task_v2.created_at,
modified_at=task_v2.modified_at, modified_at=task_v2.modified_at,
run_request=TaskRunRequest( run_request=TaskRunRequest(