fix(task): complete evidence rendering contract
This commit is contained in:
@ -79,7 +79,6 @@ class EvidenceBuilder:
|
|||||||
|
|
||||||
def build_run_evidence(
|
def build_run_evidence(
|
||||||
self,
|
self,
|
||||||
*,
|
|
||||||
session_id: str,
|
session_id: str,
|
||||||
run_id: str,
|
run_id: str,
|
||||||
output_text: str,
|
output_text: str,
|
||||||
@ -175,6 +174,8 @@ def _render_tool_evidence(item: ToolEvidence) -> str:
|
|||||||
metadata.append(f"url={item.url}")
|
metadata.append(f"url={item.url}")
|
||||||
if item.title:
|
if item.title:
|
||||||
metadata.append(f"title={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])
|
return "\n".join([header, *metadata, item.content])
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ from __future__ import annotations
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from beaver.engine.session.manager import SessionManager
|
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:
|
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(
|
evidence = EvidenceBuilder(session_manager).build_run_evidence(
|
||||||
session_id=session_id,
|
session_id,
|
||||||
run_id=run_id,
|
run_id,
|
||||||
output_text="Manchester United won 3-2.",
|
"Manchester United won 3-2.",
|
||||||
finish_reason="stop",
|
"stop",
|
||||||
)
|
)
|
||||||
rendered = render_task_evidence(
|
rendered = render_task_evidence(
|
||||||
TaskEvidencePacket(
|
TaskEvidencePacket(
|
||||||
@ -63,7 +63,15 @@ def test_render_task_evidence_includes_failed_team_run_tool_results() -> None:
|
|||||||
output_text="Tool loop stopped.",
|
output_text="Tool loop stopped.",
|
||||||
finish_reason="max_tool_iterations",
|
finish_reason="max_tool_iterations",
|
||||||
transcript=[],
|
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"],
|
warnings=["finish_reason=max_tool_iterations"],
|
||||||
)
|
)
|
||||||
packet = TaskEvidencePacket(
|
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 "finish_reason=max_tool_iterations" in rendered
|
||||||
assert "partial answer" in rendered
|
assert "partial answer" in rendered
|
||||||
|
assert "Recovered partial source content." in rendered
|
||||||
|
assert "created_at=2026-05-22T12:00:00Z" in rendered
|
||||||
|
|||||||
Reference in New Issue
Block a user