From 3ff2e2ce11f34aec234e151eedcca9a8dcc4e976 Mon Sep 17 00:00:00 2001 From: steven_li Date: Fri, 22 May 2026 11:28:19 +0800 Subject: [PATCH] fix(task): complete evidence rendering contract --- app-instance/backend/beaver/tasks/evidence.py | 3 ++- .../backend/tests/unit/test_task_evidence.py | 22 ++++++++++++++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/app-instance/backend/beaver/tasks/evidence.py b/app-instance/backend/beaver/tasks/evidence.py index 9717041..02ccb20 100644 --- a/app-instance/backend/beaver/tasks/evidence.py +++ b/app-instance/backend/beaver/tasks/evidence.py @@ -79,7 +79,6 @@ class EvidenceBuilder: def build_run_evidence( self, - *, session_id: str, run_id: str, output_text: str, @@ -175,6 +174,8 @@ def _render_tool_evidence(item: ToolEvidence) -> str: metadata.append(f"url={item.url}") if item.title: metadata.append(f"title={item.title}") + if item.created_at: + metadata.append(f"created_at={item.created_at}") return "\n".join([header, *metadata, item.content]) diff --git a/app-instance/backend/tests/unit/test_task_evidence.py b/app-instance/backend/tests/unit/test_task_evidence.py index 4ba494c..6206642 100644 --- a/app-instance/backend/tests/unit/test_task_evidence.py +++ b/app-instance/backend/tests/unit/test_task_evidence.py @@ -3,7 +3,7 @@ from __future__ import annotations from pathlib import Path from beaver.engine.session.manager import SessionManager -from beaver.tasks.evidence import EvidenceBuilder, RunEvidence, TaskEvidencePacket, render_task_evidence +from beaver.tasks.evidence import EvidenceBuilder, RunEvidence, TaskEvidencePacket, ToolEvidence, render_task_evidence def test_evidence_builder_preserves_full_tool_result(tmp_path: Path) -> None: @@ -35,10 +35,10 @@ def test_evidence_builder_preserves_full_tool_result(tmp_path: Path) -> None: ) evidence = EvidenceBuilder(session_manager).build_run_evidence( - session_id=session_id, - run_id=run_id, - output_text="Manchester United won 3-2.", - finish_reason="stop", + session_id, + run_id, + "Manchester United won 3-2.", + "stop", ) rendered = render_task_evidence( TaskEvidencePacket( @@ -63,7 +63,15 @@ def test_render_task_evidence_includes_failed_team_run_tool_results() -> None: output_text="Tool loop stopped.", finish_reason="max_tool_iterations", transcript=[], - tool_results=[], + tool_results=[ + ToolEvidence( + tool_name="web_fetch", + tool_call_id="call-team", + content="Recovered partial source content.", + event_payload={"success": True, "created_at": "2026-05-22T12:00:00Z"}, + created_at="2026-05-22T12:00:00Z", + ) + ], warnings=["finish_reason=max_tool_iterations"], ) packet = TaskEvidencePacket( @@ -79,3 +87,5 @@ def test_render_task_evidence_includes_failed_team_run_tool_results() -> None: assert "finish_reason=max_tool_iterations" in rendered assert "partial answer" in rendered + assert "Recovered partial source content." in rendered + assert "created_at=2026-05-22T12:00:00Z" in rendered