| 431 | timestamp: "datetime.datetime | None"=None |
| 432 | ) -> "None", text_signature = "(handle: ToolHandle, result: object, *, data: object | None = None, metadata: object | None = None, timestamp: datetime.datetime | None = None) -> None")] |
| 433 | fn tool_call_end( |
| 434 | handle: &PyToolHandle, |
| 435 | result: &Bound<'_, PyAny>, |
| 436 | data: Option<&Bound<'_, PyAny>>, |
| 437 | metadata: Option<&Bound<'_, PyAny>>, |
| 438 | timestamp: Option<&Bound<'_, PyAny>>, |
| 439 | ) -> PyResult<()> { |
| 440 | let result_json = py_to_json(result)?; |
| 441 | let data = opt_py_to_json(data)?; |
| 442 | let metadata = opt_py_to_json(metadata)?; |
| 443 | let timestamp = opt_py_to_timestamp(timestamp)?; |
| 444 | core_tool_api::tool_call_end( |
| 445 | core_tool_api::ToolCallEndParams::builder() |
| 446 | .handle(&handle.inner) |
| 447 | .result(result_json) |
| 448 | .data_opt(data) |
| 449 | .metadata_opt(metadata) |
| 450 | .timestamp_opt(timestamp) |
| 451 | .build(), |
| 452 | ) |
| 453 | .map_err(to_py_err) |
| 454 | } |
| 455 | |
| 456 | /// Execute a tool call through the full middleware pipeline. |
| 457 | /// |