litellm/scripts/trace_codegen/schemas/traces/Trace.json
ishaan-berri df23f11e9b
feat(lens): link traces to the conversation that started them (#45169)
* feat(lens): carry lens.source attributes on trace span rows

* feat(lens): read lens.source attributes in trace_spans query

* feat(lens): read lens.source attributes in trace_page_spans query

* feat(lens): read lens.source attributes in trace_span_batch query

* feat(lens): read lens.source attributes in trace_list_span_batch query

* feat(lens): decode lens.source columns from clickhouse span rows

* feat(lens): add run source to the trace summary contract

* feat(lens): export RunSource from litellm-traces

* feat(lens): resolve the https run source from the root span

* test(lens): cover run source resolution and https guard

* test(lens): add source fields to capture fixture rows

* test(lens): round-trip source fields on span row contract

* test(lens): add source fields to trace cache test rows

* test(lens): add source fields to trace cache read fixtures

* test(lens): add source fields to trace cache snapshot fixtures

* chore(lens): regenerate python trace types with run source

* chore(lens): regenerate trace json schema with run source

* chore(lens): regenerate trace page json schema with run source

* chore(ui): regenerate api types with trace run source

* feat(lens): add run source link with hover card

* test(lens): cover run source app detection and url guard

* feat(lens): show the run source next to the trace name

* feat(lens): label the run source link, e.g. Slack thread

* test(lens): assert run source link labels

* feat(lens): move the run source link into the trace stats row

* feat(lens): add a typed run source, e.g. slack or teams

* feat(lens): export RunSourceType

* feat(lens): carry the source type on trace span rows

* feat(lens): resolve the run source type, defaulting to custom

* feat(lens): read agent.source attributes in trace_spans query

* feat(lens): read agent.source attributes in trace_page_spans query

* feat(lens): read agent.source attributes in trace_span_batch query

* feat(lens): read agent.source attributes in trace_list_span_batch query

* feat(lens): decode the source type from clickhouse span rows

* test(lens): cover run source type parsing

* test(lens): add source type to capture fixture rows

* test(lens): round-trip source type on span row contract

* test(lens): add source type to trace cache test rows

* test(lens): add source type to trace cache read fixtures

* test(lens): add source type to trace cache snapshot fixtures

* chore(lens): regenerate python trace types with source type

* chore(lens): regenerate trace json schema with source type

* chore(lens): regenerate trace page json schema with source type

* chore(ui): regenerate api types with run source type

* feat(lens): pick the run source logo and label from its type

* test(lens): cover run source labels by type and slack logo

* feat(lens): show the run source as a Source stat with the app name

* test(lens): assert run source app names

* feat(lens): place the Source stat before Duration
2026-10-07 22:32:37 +00:00

432 lines
9 KiB
JSON

{
"$defs": {
"AgentNode": {
"description": "One distinct agent in a trace: 200 invocations of `researcher` are one node.",
"properties": {
"duration_ms": {
"format": "double",
"type": "number"
},
"invocations": {
"format": "uint64",
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"llm_calls": {
"format": "uint64",
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"name": {
"type": "string"
},
"parent_agent": {
"type": [
"string",
"null"
]
},
"priced_calls": {
"format": "uint64",
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"spend": {
"format": "double",
"type": [
"number",
"null"
]
},
"tool_calls": {
"format": "uint64",
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
}
},
"required": [
"name",
"parent_agent",
"invocations",
"llm_calls",
"tool_calls",
"duration_ms",
"spend",
"priced_calls"
],
"type": "object"
},
"RunSource": {
"description": "The conversation that started the run, from the `agent.source.*` span attributes.",
"properties": {
"title": {
"type": "string"
},
"type": {
"$ref": "#/$defs/RunSourceType"
},
"url": {
"type": "string"
}
},
"required": [
"type",
"url",
"title"
],
"type": "object"
},
"RunSourceType": {
"enum": [
"slack",
"teams",
"discord",
"linear",
"github",
"jira",
"custom"
],
"type": "string"
},
"Span": {
"properties": {
"agent": {
"type": "string"
},
"duration_ms": {
"format": "double",
"type": "number"
},
"error": {
"type": [
"string",
"null"
]
},
"error_truncated": {
"type": "boolean"
},
"framework": {
"type": "string"
},
"input_preview": {
"type": "string"
},
"input_tokens": {
"format": "uint32",
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"litellm_request_id": {
"type": [
"string",
"null"
]
},
"model": {
"type": [
"string",
"null"
]
},
"name": {
"type": "string"
},
"output_tokens": {
"format": "uint32",
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"parent_span_id": {
"type": [
"string",
"null"
]
},
"span_id": {
"type": "string"
},
"spend": {
"format": "double",
"type": [
"number",
"null"
]
},
"spend_log_request_id": {
"type": [
"string",
"null"
]
},
"spend_match": {
"anyOf": [
{
"$ref": "#/$defs/SpendMatch"
},
{
"type": "null"
}
]
},
"start_offset_ms": {
"format": "double",
"type": "number"
},
"status": {
"$ref": "#/$defs/SpanStatus"
},
"type": {
"$ref": "#/$defs/SpanType"
}
},
"required": [
"span_id",
"parent_span_id",
"name",
"type",
"agent",
"framework",
"start_offset_ms",
"duration_ms",
"status",
"error",
"error_truncated",
"input_preview",
"model",
"input_tokens",
"output_tokens",
"litellm_request_id",
"spend",
"spend_log_request_id",
"spend_match"
],
"type": "object"
},
"SpanStatus": {
"enum": [
"ok",
"error",
"unset"
],
"type": "string"
},
"SpanType": {
"enum": [
"agent",
"llm",
"tool",
"chain",
"framework",
"retriever",
"embedding",
"reranker",
"guardrail",
"evaluator",
"prompt",
"decision"
],
"type": "string"
},
"SpendMatch": {
"enum": [
"matched",
"no_call_id",
"no_spend_log",
"ambiguous",
"incomplete_evidence"
],
"type": "string"
},
"TraceSummary": {
"properties": {
"agent_count": {
"format": "uint64",
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"agent_invocations": {
"format": "uint64",
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"agent_names": {
"items": {
"type": "string"
},
"type": "array",
"x-python-optional": true
},
"duration_ms": {
"format": "double",
"type": "number"
},
"error_count": {
"format": "uint64",
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"frameworks": {
"items": {
"type": "string"
},
"type": "array",
"x-python-optional": true
},
"input_preview": {
"type": "string"
},
"input_tokens": {
"format": "uint64",
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"llm_calls": {
"format": "uint64",
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"models": {
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"type": "string"
},
"output_tokens": {
"format": "uint64",
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"priced_calls": {
"format": "uint64",
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"resolution_limited": {
"type": "boolean",
"x-python-optional": true
},
"service": {
"type": "string"
},
"source": {
"anyOf": [
{
"$ref": "#/$defs/RunSource"
},
{
"type": "null"
}
],
"x-python-optional": true
},
"span_count": {
"format": "uint64",
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"spend": {
"format": "double",
"type": [
"number",
"null"
]
},
"start_time": {
"type": "string"
},
"status": {
"$ref": "#/$defs/SpanStatus"
},
"tool_calls": {
"format": "uint64",
"maximum": 18446744073709551615,
"minimum": 0,
"type": "integer"
},
"trace_id": {
"type": "string"
},
"trace_ref": {
"type": "string",
"x-python-optional": true
}
},
"required": [
"resolution_limited",
"trace_id",
"trace_ref",
"name",
"service",
"agent_names",
"frameworks",
"input_preview",
"start_time",
"duration_ms",
"status",
"span_count",
"agent_count",
"agent_invocations",
"llm_calls",
"tool_calls",
"error_count",
"input_tokens",
"output_tokens",
"models",
"spend",
"priced_calls"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"agents": {
"items": {
"$ref": "#/$defs/AgentNode"
},
"type": "array"
},
"next_cursor": {
"type": [
"string",
"null"
],
"x-python-optional": true
},
"spans": {
"items": {
"$ref": "#/$defs/Span"
},
"type": "array"
},
"summary": {
"$ref": "#/$defs/TraceSummary"
}
},
"required": [
"summary",
"agents",
"spans",
"next_cursor"
],
"title": "Trace",
"type": "object"
}