Skip to content

Commit 3aca38c

Browse files
committed
feat: propagate details from AgentToolResult to ToolResultMessage
1 parent 9acf60a commit 3aca38c

3 files changed

Lines changed: 26 additions & 0 deletions

File tree

cubepi/agent/tools.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ def _make_tool_result_message(finalized: _FinalizedOutcome) -> ToolResultMessage
6262
tool_call_id=finalized.tool_call.id,
6363
tool_name=finalized.tool_call.name,
6464
content=finalized.result.content,
65+
details=finalized.result.details,
6566
is_error=finalized.is_error,
6667
timestamp=time.time(),
6768
)

cubepi/providers/base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ class ToolResultMessage(BaseModel):
132132
tool_call_id: str
133133
tool_name: str
134134
content: list[Content]
135+
details: Any = None
135136
is_error: bool = False
136137
timestamp: float | None = None
137138

tests/agent/test_tools.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,3 +279,27 @@ async def test_emits_execution_lifecycle_events(self):
279279
start_idx = types.index("tool_execution_start")
280280
end_idx = types.index("tool_execution_end")
281281
assert start_idx < end_idx
282+
283+
284+
class TestToolResultDetails:
285+
async def test_details_propagated_to_tool_result_message(self):
286+
async def execute_with_details(
287+
tool_call_id, params, *, signal=None, on_update=None
288+
):
289+
return AgentToolResult(
290+
content=[TextContent(text="result")],
291+
details={"execution_time": 42},
292+
)
293+
294+
tool = make_echo_tool(execute_fn=execute_with_details)
295+
ctx = make_context([tool])
296+
msg = make_assistant_msg(
297+
[ToolCall(id="t1", name="echo", arguments={"value": "hi"})]
298+
)
299+
300+
batch = await execute_tool_calls(
301+
ctx, msg, tool_execution="sequential", emit=lambda e: None
302+
)
303+
304+
assert len(batch.messages) == 1
305+
assert batch.messages[0].details == {"execution_time": 42}

0 commit comments

Comments
 (0)