Conversation
Sessions group traces by gen_ai.conversation.id (OTel GenAI semconv): - Sessions tab with first/last message, duration, trace count, tokens; Total Sessions metric - Session flyout with trace list, conversation navigation, and a View All Traces drill-in that opens the existing trace flyout - Input/Output previews parse gen_ai.*.messages per the semconv JSON schema (last user message, assistant text, part placeholders), with a gen_ai.tool.call.arguments/result fallback, across all tables Signed-off-by: Shenoy Pratik Gurudatt <4348487+ps48@users.noreply.github.com>
- Sessions list and View All Traces use the Traces/Spans DataTable markup: same header, typography, sort and infinite scroll (no pager), with the open session highlighted - DataTableInfoBar supports a session entity - Session flyout: only the conversation scrolls; the trace list and the conversation header with prev/next arrows stay pinned - Focusing a trace highlights its turn; the list chevron opens the trace Signed-off-by: Shenoy Pratik Gurudatt <4348487+ps48@users.noreply.github.com>
- TabDefinition gains optional facetFields; groupFields/DiscoverSidebar take the active tab's list (defaults unchanged for Traces/Spans) - Sessions shares the Traces root-span prepareQuery (same cache key) so the fields panel has data, with service/agent/status facets - Facet filters select which sessions are listed; each session's stats are computed unfiltered so trace counts and durations stay complete Signed-off-by: Shenoy Pratik Gurudatt <4348487+ps48@users.noreply.github.com>
- Shared MessageContent view: Formatted renders semconv messages as role-labeled markdown (EuiMarkdownFormat); JSON shows the attribute pretty-printed; copy follows the active view - Trace flyout Input/Output gets the toggle and per-section copy, with a gen_ai.tool.call.* fallback for execute_tool spans - Session conversation gets a global toggle and per-message copy Signed-off-by: Shenoy Pratik Gurudatt <4348487+ps48@users.noreply.github.com>
…d panels - Title shows the full session id (ellipsis only when the flyout is narrow). - Label conversation messages with their OTel GenAI roles (User/Assistant, System/Tool when present) instead of Human/AI. - Remove horizontal scroll in the conversation (flex gutter overflow). - Scroll only the conversation column and land each turn below the sticky header, so the Trace #n link stays visible. - Align the Trace list and Session Conversation headers. Signed-off-by: Shenoy Pratik Gurudatt <4348487+ps48@users.noreply.github.com>
Signed-off-by: Shenoy Pratik Gurudatt <4348487+ps48@users.noreply.github.com>
PR Reviewer Guide 🔍(Review updated until commit 0e43880)Here are some key observations to aid the review process:
|
PR Code Suggestions ✨Latest suggestions up to 5346cb9 Explore these optional code suggestions:
Previous suggestionsSuggestions up to commit 0e43880
Suggestions up to commit f7c44e0
Suggestions up to commit f7c44e0
|
|
Persistent review updated to latest commit f7c44e0 |
…ons fields panel - Sessions facets count distinct sessions per value (stats query under the user's query) instead of fetched root spans from a 500-row sample. - Tabs can supply facet buckets (facetBuckets$) and declare fixed columns; the Sessions tab hides "Selected" and add/remove column actions. - Keep short Sessions cells (time, ids, counts) on one line in wrap mode. Signed-off-by: Shenoy Pratik Gurudatt <4348487+ps48@users.noreply.github.com>
|
Persistent review updated to latest commit 0e43880 |
❌ 3 Jest Test Failure(s)📄
|
Agent monitoring nav now lists Traces and Sessions (navTicketing icon), with the same new-search / browse-saved popover. Spans stays a tab next to Traces, and the agentTraces/spans app is still registered so existing links keep working. Signed-off-by: Shenoy Pratik Gurudatt <4348487+ps48@users.noreply.github.com>
…explain ignored commands - New quote-aware extractSpanFilterQuery keeps every row-level command (where, eval, parse, grok, regex, fillnull) in order. The old split stopped at the first non-where command, so '| eval x = 1 | where x = 2' silently dropped the filter in the Sessions list, its facets, and the metrics bar. - Sessions shows a notice listing commands it does not apply (stats, head, fields, ...) and points to the Traces or Visualization tab. - An empty Sessions list under a filter now says no sessions match the query, instead of the setup hint about gen_ai.conversation.id. Signed-off-by: Shenoy Pratik Gurudatt <4348487+ps48@users.noreply.github.com>
Description
Adds Sessions to Agent Traces. A session is the set of traces that share
gen_ai.conversation.id(OTel GenAI semantic conventions; Data Prepper maps OpenInference/ADOTsession.idto it at ingest).Sessions tab
user.id), Total Traces, Total Tokens. Same table markup and typography as Traces/Spans, client-side sort, lazy rendering on scroll.eval(where,eval,parse,grok,regex,fillnull). Commands that reshape rows (stats,head,fields,dedup, ...) are not applied here; a notice lists them and points to the Traces or Visualization tab.gen_ai.conversation.idsetup hint).Fields panel on Sessions
gen_ai.conversation.idhas it, which is also how filter-for narrows the list.facetBuckets$/fixedColumnsonTabDefinition).Session flyout
Trace #nlinks into the trace flyout. Only the conversation scrolls; headers stay pinned and aligned.Message rendering (shared with the trace flyout)
gen_ai.input.messages/gen_ai.output.messagesper the semconv JSON schema ({role, parts[]}), with placeholders for non-text parts ([tool_call: name],[image],[reasoning]) and a legacy fallback.Side nav
navTicketingicon). Spans stays a tab next to Traces; theagentTraces/spansapp is still registered so existing links keep working.Dashboards
Also fixed (affects Traces too)
eval(same helper as Sessions).Issues Resolved
Screenshot
Testing the changes
gen_ai.conversation.id(for example the observability-stack multi-agent trip planner with the multi-turn canary).| where serviceName = 'weather-agent', then| eval x = 1 | where x = 2(no sessions match), then add| head 5(notice listshead).Trace #ninto the trace flyout, Formatted/JSON, copy, View All Traces.gen_ai.conversation.iddata, the tab shows an empty state naming the field.Unit tests:
yarn test:jest src/plugins/agent_traces(189 suites, 1995 tests pass locally).Check List
yarn test:jestyarn test:jest_integration