Skip to content

[Search][Getting Started] Chat first view#270500

Merged
TattdCodeMonkey merged 14 commits into
elastic:mainfrom
TattdCodeMonkey:search-gs-chat
May 27, 2026
Merged

[Search][Getting Started] Chat first view#270500
TattdCodeMonkey merged 14 commits into
elastic:mainfrom
TattdCodeMonkey:search-gs-chat

Conversation

@TattdCodeMonkey
Copy link
Copy Markdown
Contributor

@TattdCodeMonkey TattdCodeMonkey commented May 21, 2026

Summary

Implementing a chat first approach for the search solution getting started page.

Note: this page is only visible when the feature flag is enabled, which it is currently off for everyone.

Screenshots

image image image

Testing

  1. Run Kibana with serverless elasticsearch & eis enabled
  2. Enabled the feature flag in kibana.dev.yaml:
feature_flags.overrides:
  searchSolution.gettingStartedChatEnabled: true

Checklist

Check the PR satisfies following conditions.

Reviewers should verify this PR satisfies this list as well.

  • Any text added follows EUI's writing guidelines, uses sentence case text and includes i18n support
  • Documentation was added for features that require explanation or tutorials
  • Unit or functional tests were updated or added to match the most common scenarios
  • If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the docker list
  • This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The release_note:breaking label should be applied in these situations.
  • Flaky Test Runner was used on any tests changed
  • The PR description includes the appropriate Release Notes section, and the correct release_note:* label is applied per the guidelines
  • Review the backport guidelines and apply applicable backport:* labels.

@TattdCodeMonkey TattdCodeMonkey requested review from a team as code owners May 21, 2026 19:02
@TattdCodeMonkey TattdCodeMonkey added release_note:skip Skip the PR/issue when compiling release notes backport:skip This PR does not require backporting Team:Search v9.5.0 labels May 21, 2026
Copy link
Copy Markdown
Contributor

@mdefazio mdefazio left a comment

Choose a reason for hiding this comment

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

I'd like to push back on transitioning to the full chat view on focus. I'm fine if this happens on submit in the chat input, but it's jarring initially.

And if the LLM is not setup/connected, then it gets messy.

Curious what this means for this PR. So happy to discuss.

@saikatsarkar056
Copy link
Copy Markdown
Contributor

LGTM

Copy link
Copy Markdown
Contributor

@pgayvallet pgayvallet left a comment

Choose a reason for hiding this comment

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

Change from agent builder code (x-pack/platform/plugins/shared/agent_builder/public/index.ts) lgtm

TattdCodeMonkey and others added 8 commits May 26, 2026 19:42
Initial implementation of a chat first getting started experience for
search solutions. This view is currently feature flagged.
- Fix duplicate i18n key on Elasticsearch endpoint aria label
- Fix useSpaceId initializing with empty string, now returns string | undefined
- Rename isAnimatingToFull to isConversationOverlayOpen for clarity
- Add showConversation flag to keep EmbeddableConversation mounted during closing animation
- Replace EuiPageTemplate.Section per-section layout with single centered section
- Replace custom CSS grid with EuiFlexGrid and shared ChatColumnsGrid style
- Extract ChatStretchedFlexItem and ChatColumnsGrid to styles.ts
- Convert all template literal styles to object syntax in styles.ts
- Move CONVERSATION_ANIMATION_MS constant to styles.ts alongside related CSS
- Add responsive breakpoint to ChatContentSeparator and ChatStretchedFlexItem
- Fix role="group" placement on EuiBadgeGroup instead of EuiFlexItem
- Fix UrlView.elasticsearch enum value from 'es' to 'elasticsearch'
- Drop unnecessary modalPrompt state in GettingStartedAgentPrompt
- Wrap sidebar items in EuiFlexItem in GettingStartedChatContent

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds component tests for ChatElasticsearchConnectionDetails,
GettingStartedAgentPrompt, and ConversationPrompt, and extracts a
useGettingStartedLoaded hook shared by both page components so the
on-mount analytics/sessionStorage behaviour can be tested directly
without mocking the full component tree.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tarted

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@TattdCodeMonkey
Copy link
Copy Markdown
Contributor Author

@mdefazio

I'd like to push back on transitioning to the full chat view on focus. I'm fine if this happens on submit in the chat input, but it's jarring initially.

Updated to navigate to Agent builder with the message entered into the prompt.

And if the LLM is not setup/connected, then it gets messy.

Currently this is serverless only, so you should always have an LLM, but when we enabled this for hosted and self-managed you are correct. But I think we would handle that by gate this view to only showing when you have agent builder and an llm configured.

Comment on lines +27 to +36
const openConversation = useCallback(() => {
if (initialMessage.trim().length === 0) return;
application.navigateToApp(AGENT_BUILDER_APP_ID, {
path: `/agents/${agentBuilderDefaultAgentId}/conversations/new`,
state: {
initialMessage,
entryPointSource: 'search_getting_started',
},
});
}, [application, initialMessage]);
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@pgayvallet per @mdefazio request this was updated to open agent builder instead of using the overlay.

Is this the best way to handle starting a new conversation with an initialMessage? it works but feels wrong to provide the path, I debated on if I should introduce a new conversation locator instead that handled the path in agent builder.

@kibanamachine
Copy link
Copy Markdown
Contributor

💛 Build succeeded, but was flaky

Failed CI Steps

Test Failures

  • [job] [logs] Scout Lane #2 - stateful-classic / default / local-stateful-classic - Query streams - Delete query stream - should support deleting an existing query stream

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
searchGettingStarted 285 351 +66

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
agentBuilder 1.3MB 1.3MB +2.0B
searchGettingStarted 219.2KB 225.9KB +6.7KB
total +6.7KB

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
agentBuilder 54.3KB 54.4KB +110.0B
searchGettingStarted 6.4KB 6.7KB +274.0B
total +384.0B

History

@TattdCodeMonkey TattdCodeMonkey requested a review from mdefazio May 27, 2026 16:48
Copy link
Copy Markdown
Contributor

@mdefazio mdefazio left a comment

Choose a reason for hiding this comment

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

Thanks for updating the flow. Works better now IMO.

@TattdCodeMonkey TattdCodeMonkey merged commit ec4ba40 into elastic:main May 27, 2026
32 checks passed
mbondyra added a commit to mbondyra/kibana that referenced this pull request May 28, 2026
…d_evals3

* commit '1ef44f1257e5c3ded611f8aae026652427db72ee': (129 commits)
  [ResponseOps] Surface task_manager.runSoon 409 conflicts to callers (elastic#268508)
  [V2 Rules] Discover Composer — field population fixes and general styling updates (elastic#270466)
  [Search][Getting Started] Chat first view (elastic#270500)
  [Fleet] Add package policy conditions UI support (elastic#270315)
  feat(action_policies): Create simple actions from rule form (elastic#271319)
  [CI] Skip archive upload when tsc fails (elastic#271467)
  [Fleet] Add collector groups  (elastic#270619)
  [Discover][Metrics] Reorganize metric grid card actions (elastic#267302)
  Update z-index and height properties in useMenuHeaderStyle hook (elastic#271325)
  chore(deps): bump `shell-quote` from `1.8.3` to `1.8.4` (elastic#271534)
  [Security] Mirror elasticsearch-controller role changes to Kibana roles.yml (elastic#271321)
  upgrade @ai-sdk/provider-utils to 3.0.25 (elastic#270773)
  [docs] Update SO validate troubleshooting section for new PR comment format (elastic#270927)
  Use uuid matchers in search MV13 rollback fixtures (elastic#271196)
  [Security Solution] AT skill `get_endpoint_artifacts` tool (elastic#270607)
  [Console] Enable auto-merge in console_definitons (elastic#270941)
  [Alerting v2] Flag rule ESQL query errors as user errors (elastic#270643)
  [Metrics][Discover] Refactor METRICS_INFO error handling (elastic#270627)
  [Cases][Templates] Improvements to templates yaml editor (elastic#269076)
  [i18n] Update kibana.yml with non-deprecated setting (elastic#270781)
  ...
dej611 pushed a commit to dej611/kibana that referenced this pull request May 29, 2026
## Summary

Implementing a chat first approach for the search solution getting
started page.

Note: this page is only visible when the feature flag is enabled, which
it is currently off for everyone.

### Screenshots
<img width="1465" height="810" alt="image"
src="https://github.com/user-attachments/assets/5d4d872d-6f9d-4bdf-85e9-b3661b5a4b67"
/>
<img width="1465" height="810" alt="image"
src="https://github.com/user-attachments/assets/41af62c0-f95a-4bbd-bbe5-0dd7fe76023f"
/>
<img width="1465" height="810" alt="image"
src="https://github.com/user-attachments/assets/b7722ab3-6b1f-478c-beb7-4e2966f3a2bb"
/>

### Testing

1. Run Kibana with serverless elasticsearch & eis enabled
2. Enabled the feature flag in kibana.dev.yaml:
```yaml
feature_flags.overrides:
  searchSolution.gettingStartedChatEnabled: true
```

### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] ~If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~
- [ ] ~This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.~
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] ~The PR description includes the appropriate Release Notes
section, and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)~
- [ ] ~Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.~

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport:skip This PR does not require backporting release_note:skip Skip the PR/issue when compiling release notes Team:Search v9.5.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants