fix missing video recording - recording is stored in the first step (#1350)
This commit is contained in:
@@ -1633,14 +1633,16 @@ class ForgeAgent:
|
|||||||
if screenshot_artifact:
|
if screenshot_artifact:
|
||||||
screenshot_url = await app.ARTIFACT_MANAGER.get_share_link(screenshot_artifact)
|
screenshot_url = await app.ARTIFACT_MANAGER.get_share_link(screenshot_artifact)
|
||||||
|
|
||||||
recording_artifact = await app.DATABASE.get_artifact(
|
first_step = await app.DATABASE.get_first_step(task_id=task.task_id, organization_id=task.organization_id)
|
||||||
task_id=task.task_id,
|
if first_step:
|
||||||
step_id=last_step.step_id,
|
recording_artifact = await app.DATABASE.get_artifact(
|
||||||
artifact_type=ArtifactType.RECORDING,
|
task_id=task.task_id,
|
||||||
organization_id=task.organization_id,
|
step_id=first_step.step_id,
|
||||||
)
|
artifact_type=ArtifactType.RECORDING,
|
||||||
if recording_artifact:
|
organization_id=task.organization_id,
|
||||||
recording_url = await app.ARTIFACT_MANAGER.get_share_link(recording_artifact)
|
)
|
||||||
|
if recording_artifact:
|
||||||
|
recording_url = await app.ARTIFACT_MANAGER.get_share_link(recording_artifact)
|
||||||
|
|
||||||
# get the artifact of the last TASK_RESPONSE_ACTION_SCREENSHOT_COUNT screenshots and get the screenshot_url
|
# get the artifact of the last TASK_RESPONSE_ACTION_SCREENSHOT_COUNT screenshots and get the screenshot_url
|
||||||
latest_action_screenshot_artifacts = await app.DATABASE.get_latest_n_artifacts(
|
latest_action_screenshot_artifacts = await app.DATABASE.get_latest_n_artifacts(
|
||||||
|
|||||||
@@ -322,6 +322,32 @@ class AgentDB:
|
|||||||
LOG.error("UnexpectedError", exc_info=True)
|
LOG.error("UnexpectedError", exc_info=True)
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
async def get_first_step(self, task_id: str, organization_id: str | None = None) -> Step | None:
|
||||||
|
try:
|
||||||
|
async with self.Session() as session:
|
||||||
|
if step := (
|
||||||
|
await session.scalars(
|
||||||
|
select(StepModel)
|
||||||
|
.filter_by(task_id=task_id)
|
||||||
|
.filter_by(organization_id=organization_id)
|
||||||
|
.order_by(StepModel.order.asc())
|
||||||
|
)
|
||||||
|
).first():
|
||||||
|
return convert_to_step(step, debug_enabled=self.debug_enabled)
|
||||||
|
else:
|
||||||
|
LOG.info(
|
||||||
|
"Latest step not found",
|
||||||
|
task_id=task_id,
|
||||||
|
organization_id=organization_id,
|
||||||
|
)
|
||||||
|
return None
|
||||||
|
except SQLAlchemyError:
|
||||||
|
LOG.error("SQLAlchemyError", exc_info=True)
|
||||||
|
raise
|
||||||
|
except Exception:
|
||||||
|
LOG.error("UnexpectedError", exc_info=True)
|
||||||
|
raise
|
||||||
|
|
||||||
async def get_latest_step(self, task_id: str, organization_id: str | None = None) -> Step | None:
|
async def get_latest_step(self, task_id: str, organization_id: str | None = None) -> Step | None:
|
||||||
try:
|
try:
|
||||||
async with self.Session() as session:
|
async with self.Session() as session:
|
||||||
|
|||||||
Reference in New Issue
Block a user