fix: improve workbench triad analysis drilldown

This commit is contained in:
Codex
2026-07-01 12:33:35 +00:00
parent ff2697358e
commit 1fa7df5aea
4 changed files with 385 additions and 3 deletions
@@ -1621,6 +1621,8 @@ def agentrun_summary(spans, authority=None):
def hwlab_read_model_summary(spans):
trace_read_spans = []
turn_read_spans = []
session_list_spans = []
session_message_spans = []
projection_spans = []
source_event_count = None
requested_since_seq = None
@@ -1648,6 +1650,10 @@ def hwlab_read_model_summary(spans):
status_value = attrs.get("turnStatus") if attrs.get("turnStatus") is not None else attrs.get("status")
turn_statuses.append(status_value)
turn_status_counts[str(status_value)] += 1
if name == "session_list_read":
session_list_spans.append(public_span(item))
if name == "session_messages_read":
session_message_spans.append(public_span(item))
if name == "projection_sync":
projection_spans.append(public_span(item))
after_seq = to_int(attrs.get("afterSeq"))
@@ -1683,6 +1689,10 @@ def hwlab_read_model_summary(spans):
"turnStatusCounts": [{"status": status, "count": count} for status, count in turn_status_counts.most_common()],
"traceEventReadSpans": trace_read_spans,
"turnStatusReadSpans": turn_read_spans,
"sessionListReadCount": len(session_list_spans),
"sessionMessageReadCount": len(session_message_spans),
"sessionListReadSpans": session_list_spans,
"sessionMessageReadSpans": session_message_spans,
"projectionSpans": projection_spans,
}
@@ -2144,6 +2154,8 @@ payload = {
"traceStatus": read_model.get("traceStatus"),
"turnStatus": read_model.get("turnStatus"),
"turnStatusCounts": read_model.get("turnStatusCounts"),
"sessionListReadCount": read_model.get("sessionListReadCount"),
"sessionMessageReadCount": read_model.get("sessionMessageReadCount"),
},
"http": {
"statusCounts": http_summary.get("statusCounts", [])[:20],
@@ -2159,6 +2171,7 @@ payload = {
"diagnoseFull": DIAGNOSE_FULL_COMMAND,
"traceSummary": "bun scripts/cli.ts platform-infra observability trace --target ${target.id} --trace-id %s --limit 80" % resolved_trace_id,
"traceReads": "bun scripts/cli.ts platform-infra observability trace --target ${target.id} --trace-id %s --grep trace_events_read --limit 20 --full" % resolved_trace_id,
"sessionReads": "bun scripts/cli.ts platform-infra observability trace --target ${target.id} --trace-id %s --grep session_ --limit 60 --full" % resolved_trace_id,
"turnStatus": "bun scripts/cli.ts platform-infra observability trace --target ${target.id} --trace-id %s --grep turn_status_read --limit 20 --full" % resolved_trace_id,
"projection": "bun scripts/cli.ts platform-infra observability trace --target ${target.id} --trace-id %s --grep projection_sync --limit 120 --full" % resolved_trace_id,
"runnerTerminal": "bun scripts/cli.ts platform-infra observability trace --target ${target.id} --trace-id %s --grep runner_terminal --limit 20 --full" % resolved_trace_id,
@@ -2170,11 +2183,13 @@ if FULL:
payload["full"] = {
"traceEventReadSpans": read_model.get("traceEventReadSpans", []),
"turnStatusReadSpans": read_model.get("turnStatusReadSpans", []),
"sessionListReadSpans": read_model.get("sessionListReadSpans", []),
"sessionMessageReadSpans": read_model.get("sessionMessageReadSpans", []),
"projectionSpans": read_model.get("projectionSpans", [])[:LIMIT],
"terminalSpans": agentrun.get("terminalSpans", [])[:LIMIT],
"errorSpans": [public_span(item) for item in error_spans[:LIMIT]],
"httpProblemSpans": [public_span(item) for item in http_summary.get("problemSpans", [])[:LIMIT]],
"selectedSpans": [public_span(item) for item in spans if item.get("name") in ("trace_events_read", "turn_status_read", "projection_sync", "command_result")][:LIMIT],
"selectedSpans": [public_span(item) for item in spans if item.get("name") in ("trace_events_read", "turn_status_read", "session_list_read", "session_messages_read", "projection_sync", "command_result")][:LIMIT],
}
if RAW:
payload["raw"] = raw_trace_shape(trace_parsed)