Skip to content

Conversation

yanatha99
Copy link

@yanatha99 yanatha99 commented Sep 30, 2025

Description

Add new Timeline waterfall bars column to Tree view table on Trace details page. This is intended to replace the separate Timeline gantt chart as an inline solution to the table for a more cohesive view of the spans.

TimelineWaterfallBar renders waterfall bar for a span's time range

  • Responsive offset and width within "Timeline" column of span table's "Tree view" (SpanDetailTableHierarchy)
  • Color-coded bars based on service name
  • Interactive tooltip that displays span's Duration, Start, and End milliseconds

useTimelineBarRange calculates relative bar offset and width based on each span's time range and overall trace time range along with any optional padding

  • Returned timelineBarOffsetPercent and timelineBarWidthPercent determine bar positioning and size
  • Returned durationMs, relativeStart, and relativeEnd are passed to bar tooltip

useTimelineBarColor determines color of bar based on span's service name

TimelineRuler renders a ruler with evenly spaced "nice" millisecond measurements to visually compare the waterfall bars

useTimelineTicks calculates optimal tick mark offsets and values for timeline ruler based on overall trace time range (min, max) and desired number of tick marks. Also takes any optional padding into account for scaling.

TimelineHeader renders the Timeline column header, which combines "Timeline" text translation with the TimelineRuler

The span table's "Tree view" has been modified to include new "Timeline" column before the "Duration" column and also hide the "Parent Id" by default to give the "Timeline" column more space.

A new span_timerange_utils.ts file has also been added with helper functions for calculating both span and trace time range (durationMs, startTimeMs, endTimeMs).

TODO Follow up items

  • Some columns in the "Tree view" table will be combined or moved to the Span details flyout to give the "Timeline" column even more space
  • The "Service legend" will be moved in the "Timeline" column header and removed from Trace details tabs header
  • The separate "Timeline" tab and gantt chart will be removed from the Trace details page

Screenshot

timeline-waterfall-bars

Testing the changes

  1. In an OSD workspace that contains traces, go to the Traces page.
  2. Click any trace to go to the details page of that trace.
  3. Go to the "Tree view" tab.
  4. Validate that the waterfall bars in the "Timeline" column render.
  5. Validate the waterfall bars' positioning and widths relative to each other are correct by comparing their "Duration", "Start", and "End" values from their tooltips.
  6. Validate the waterfall bars' positioning and widths are accurate relative to the ruler on in the "Timeline" column header
  7. Validate the water fall bar colors match the color specified for each service in the "Service legend".
  8. Click drag the "Timeline" column to change its width and validate that the ruler and waterfall bars change width while keeping relative scale.

Changelog

  • feat: Add Timeline waterfall bars column to SpanDetailTableHierarchy

Check List

  • All tests pass
    • yarn test:jest
    • yarn test:jest_integration
  • New functionality includes testing.
  • New functionality has been documented.
  • Update CHANGELOG.md
  • Commits are signed per the DCO using --signoff

@@ -0,0 +1,47 @@
.timelineRuler {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@TackAdam have we not been using namespaced classnames for traces?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.exploreGanttChart We have been using .explore
Good call-out will guide contributor on updating this.
Thanks

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Prefixed the class name with explore, so now it's .exploreTimelineRuler

Nathan Yang and others added 21 commits October 2, 2025 16:26
Signed-off-by: Nathan Yang <yanatha@amazon.com>
…rch-project#10560)

* update line chart look and feel

Signed-off-by: Yulong Ruan <ruanyl@amazon.com>

* add unit tests

Signed-off-by: Yulong Ruan <ruanyl@amazon.com>

* Changeset file for PR opensearch-project#10560 created/updated

* hover state for area chart

Signed-off-by: Yulong Ruan <ruanyl@amazon.com>

* add pie chart hover state

Signed-off-by: Yulong Ruan <ruanyl@amazon.com>

* hover state for scatter

Signed-off-by: Yulong Ruan <ruanyl@amazon.com>

---------

Signed-off-by: Yulong Ruan <ruanyl@amazon.com>
Co-authored-by: opensearch-changeset-bot[bot] <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
…arch-project#10590)

* vis(vega): default set flag exposeDebugObjectToWindow to true

Signed-off-by: Yulong Ruan <ruanyl@amazon.com>

* Changeset file for PR opensearch-project#10590 created/updated

---------

Signed-off-by: Yulong Ruan <ruanyl@amazon.com>
Co-authored-by: opensearch-changeset-bot[bot] <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
…rce (opensearch-project#10598)

* Fix source command detection if we have a field expression before source

Signed-off-by: Suchit Sahoo <suchsah@amazon.com>

* Changeset file for PR opensearch-project#10598 created/updated

---------

Signed-off-by: Suchit Sahoo <suchsah@amazon.com>
Co-authored-by: opensearch-changeset-bot[bot] <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
…arch Dashboards (opensearch-project#10600)

This PR introduces two new plugins that enable AI-powered chat functionality with intelligent context capture in OpenSearch Dashboards:

### 🤖 Chat Plugin (`src/plugins/chat`)
- **AI-powered chat interface** integrated into the OpenSearch Dashboards header
- **AG-UI framework integration** for LLM interactions with streaming support
- **Tool calling system** with dynamic action registration and execution
- **Graph visualization capabilities** for time series data
- **Context-aware conversations** that understand dashboard state and user interactions

**Key Features:**
- Real-time streaming chat responses via Server-Sent Events
- Tool execution with visual feedback and result rendering
- Conversation management with thread isolation
- Integration with OpenSearch Dashboards navigation and theming

### 🔍 Context Provider Plugin (`src/plugins/context_provider`)
- **Modern React hooks architecture** for context capture (`usePageContext`, `useDynamicContext`)
- **Automatic URL state monitoring** captures time ranges, queries, datasets, and filters
- **Dynamic interaction capture** tracks document expansions, text selections, and user actions
- **Global context store** for AI assistant and MCP server integration
- **Zero-dependency design** works across all plugins without modifications

**Key Features:**
- Direct browser URL monitoring for universal plugin compatibility
- Category-based context organization for efficient filtering
- Automatic lifecycle management with React hooks
- Text selection capture with visual indicators
- Backend-optimized context formatting

Both plugins are designed to enhance the OpenSearch Dashboards experience by providing intelligent, context-aware AI assistance that understands user workflows and can execute actions on their behalf.

---------

Signed-off-by: Anan Zhuang <ananzh@amazon.com>
Signed-off-by: Joshua Li <joshuali925@gmail.com>
Co-authored-by: Ashwin P Chandran <ashwinpc@amazon.com>
Co-authored-by: Joshua Li <joshuali925@gmail.com>
Co-authored-by: Kyle Hounslow <kylhouns@amazon.com>
Co-authored-by: opensearch-changeset-bot[bot] <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
* trace flag framework, bug fixes

Signed-off-by: Adam Tackett <tackadam@amazon.com>

* update explore start script

Signed-off-by: Adam Tackett <tackadam@amazon.com>

* add experimental flag, update cypress script for the trace flag

Signed-off-by: Adam Tackett <tackadam@amazon.com>

* changelog

Signed-off-by: Adam Tackett <tackadam@amazon.com>

* update config

Signed-off-by: Adam Tackett <tackadam@amazon.com>

---------

Signed-off-by: Adam Tackett <tackadam@amazon.com>
Signed-off-by: Adam Tackett <105462877+TackAdam@users.noreply.github.com>
Signed-off-by: Anan Zhuang <ananzh@amazon.com>
Co-authored-by: Adam Tackett <tackadam@amazon.com>
Co-authored-by: Anan Zhuang <ananzh@amazon.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
…search-project#10613)

* Fix CI/CD failure: Cannot find module @osd/optimizer/target/cli

Signed-off-by: Anan Zhuang <ananzh@amazon.com>

* Changeset file for PR opensearch-project#10613 created/updated

---------

Signed-off-by: Anan Zhuang <ananzh@amazon.com>
Co-authored-by: opensearch-changeset-bot[bot] <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
…-project#10612)

* AG-UI compliant Langgraph ReAct agent implementation

Lint fixes and changing file to snake case

Fixing imports for snake case

feat: Implement TextMessageManager for improved message lifecycle management and tool call interruption in AG UI

feat: Refactor tool result handling to improve message lifecycle management in BaseAGUIAdapter

feat: Improve response handling by logging warnings for empty content blocks and filtering out empty text blocks to prevent ValidationException

Renaming text_message_manager and imports

Signed-off-by: Megha Goyal <goyamegh@amazon.com>

Adding default observability prompt

Signed-off-by: Megha Goyal <goyamegh@amazon.com>

Removing jarvis and coact agents

Signed-off-by: Megha Goyal <goyamegh@amazon.com>

* Changeset file for PR opensearch-project#10612 created/updated

* Fixing build failures due to langgraph-checkpoint-sqlite

Signed-off-by: Megha Goyal <goyamegh@amazon.com>

* Fixing yarn.lock using yarn v1.22.10

Signed-off-by: Megha Goyal <goyamegh@amazon.com>

* Fix yarn.lock aain for 1.22.10 after rebase

Signed-off-by: Megha Goyal <goyamegh@amazon.com>

---------

Signed-off-by: Megha Goyal <goyamegh@amazon.com>
Co-authored-by: opensearch-changeset-bot[bot] <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
* add explore experience modal

Signed-off-by: abbyhu2000 <abigailhu2000@gmail.com>

* Changeset file for PR opensearch-project#10607 created/updated

* add fallback for dismissing modal for read only permission users

Signed-off-by: abbyhu2000 <abigailhu2000@gmail.com>

* add a flag to disable experience modal

Signed-off-by: abbyhu2000 <abigailhu2000@gmail.com>

* disable it for tests

Signed-off-by: abbyhu2000 <abigailhu2000@gmail.com>

* disable for cypress tests too

Signed-off-by: abbyhu2000 <abigailhu2000@gmail.com>

---------

Signed-off-by: abbyhu2000 <abigailhu2000@gmail.com>
Signed-off-by: Qingyang(Abby) Hu <abigailhu2000@gmail.com>
Co-authored-by: opensearch-changeset-bot[bot] <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
…t#10608)

* handle undefined item in span table

Signed-off-by: Jessica Lew <jessrlew@amazon.com>

* Changeset file for PR opensearch-project#10608 created/updated

---------

Signed-off-by: Jessica Lew <jessrlew@amazon.com>
Co-authored-by: opensearch-changeset-bot[bot] <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
* update column names

Signed-off-by: Jessica Lew <jessrlew@amazon.com>

* Changeset file for PR opensearch-project#10609 created/updated

* fix attributes.service.name column name

Signed-off-by: Jessica Lew <jessrlew@amazon.com>

---------

Signed-off-by: Jessica Lew <jessrlew@amazon.com>
Co-authored-by: opensearch-changeset-bot[bot] <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
* Add Query Snippet Suggestions

Signed-off-by: Suchit Sahoo <suchsah@amazon.com>

* Fix Cypress Tests

Signed-off-by: Suchit Sahoo <suchsah@amazon.com>

---------

Signed-off-by: Suchit Sahoo <suchsah@amazon.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
* Fix Column Value Caching for Autocomplete

Signed-off-by: Suchit Sahoo <suchsah@amazon.com>

* Fix Test case

Signed-off-by: Suchit Sahoo <suchsah@amazon.com>

* Changeset file for PR opensearch-project#10621 created/updated

---------

Signed-off-by: Suchit Sahoo <suchsah@amazon.com>
Co-authored-by: opensearch-changeset-bot[bot] <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
…#10622)

* make UI changes to explore modal

Signed-off-by: abbyhu2000 <abigailhu2000@gmail.com>

* Add i18n support

Signed-off-by: abbyhu2000 <abigailhu2000@gmail.com>

* change to use localStorage

Signed-off-by: abbyhu2000 <abigailhu2000@gmail.com>

* change to local storage

Signed-off-by: abbyhu2000 <abigailhu2000@gmail.com>

* Changeset file for PR opensearch-project#10622 created/updated

* add comment on customized use for deprecation function

Signed-off-by: abbyhu2000 <abigailhu2000@gmail.com>

* remove modal title

Signed-off-by: abbyhu2000 <abigailhu2000@gmail.com>

---------

Signed-off-by: abbyhu2000 <abigailhu2000@gmail.com>
Co-authored-by: opensearch-changeset-bot[bot] <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
…h-project#10624)

* chat(feat): mark context provider and chat as experimental

Signed-off-by: Anan Zhuang <ananzh@amazon.com>

* Changeset file for PR opensearch-project#10624 created/updated

---------

Signed-off-by: Anan Zhuang <ananzh@amazon.com>
Co-authored-by: opensearch-changeset-bot[bot] <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com>
Signed-off-by: Nathan Yang <yanatha@amazon.com>
…re separation and add license to top

Signed-off-by: Nathan Yang <yanatha@amazon.com>
…ore'

Signed-off-by: Nathan Yang <yanatha@amazon.com>
@yanatha99
Copy link
Author

No changes, just forgot to sign off on the two chore commits. Followed the steps to retroactively signoff by rebasing with signoff and then pushed

@yanatha99
Copy link
Author

Code coverage check failing on changes that were not part of this original PR, but my changes do have full coverage. I think it's due to the git rebase HEAD~10 --signoff to retroactively signoff including everything from original commit to now. I'm guessing could have modified that step to just HEAD~2 since those were the commits missing signoff?

@yanatha99
Copy link
Author

Moved these changes to cleaned up PR #10642

@yanatha99 yanatha99 closed this Oct 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
first-time-contributor OSD Changes being merged by the OSD team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants