litellm/scripts/trace_codegen/schemas/traces/TracePage.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

216 lines
4.6 KiB
JSON

{
"$defs": {
"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"
},
"SpanStatus": {
"enum": [
"ok",
"error",
"unset"
],
"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": {
"data": {
"items": {
"$ref": "#/$defs/TraceSummary"
},
"type": "array"
},
"next_cursor": {
"type": [
"string",
"null"
]
}
},
"required": [
"data",
"next_cursor"
],
"title": "TracePage",
"type": "object"
}