Trace unexecuted tool calls in one place; tidy span lifecycles

Paused, denied, skipped and client-run tool calls all go through
trace_unexecuted_tool_call. The research synthesis, continuation and
workflow step spans use with-blocks instead of hand-rolled GeneratorExit
handling. Fixes blank lines and adds a missing hint and docstrings.
This commit is contained in:
arc53-machine committed 2026-09-23 22:42:05 +01:00
1 parent b3aa509d3a
commit a74420ed2c
7 files changed
+38 -54

No files matched your search

@@ -33,10 +33,12 @@ _SUMMARY_COLUMNS = (
def _dump_jsonb(value: Any) -> str:
"""Serialize ``value`` for a JSONB parameter, without NUL bytes Postgres rejects."""
return json.dumps(strip_null_bytes(value), cls=PGNativeJSONEncoder)
def _uuid_or_none(value: Optional[str]) -> Optional[str]:
"""``value`` as a string when it is a UUID, else ``None`` (the column is typed)."""
return str(value) if value and looks_like_uuid(str(value)) else None