Skip to content

Sync main into feature/lookup-join-ux#224190

Merged
darnautov merged 50 commits intofeature/lookup-join-uxfrom
main
Jun 17, 2025
Merged

Sync main into feature/lookup-join-ux#224190
darnautov merged 50 commits intofeature/lookup-join-uxfrom
main

Conversation

@darnautov
Copy link
Contributor

Sync latest changes from main

kibanamachine and others added 30 commits June 16, 2025 10:27
This PR updates the console definitions to match the latest ones from
the @elastic/elasticsearch-specification repo.
)

Closes #220464

## Summary

As part of the EUI button style updates, I reviewed the RO files for any
CSS class overrides affecting `euiButton` and `euiFilter` components. I
found some custom CSS overrides and I was able to safely remove them.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
## Summary

Closes #223007

### This PR fixes a couple of bugs in the visibility of the Alert Top
Nave menu item:

**1. When the user is in Classic space with <ins> no rule type
privileges </ins> the `Alert` top nav menu item should be hidden**

- Only `Discover` _**All**_ Feature Privilege

<img width="465" alt="Screenshot 2025-06-11 at 11 01 03"
src="https://github.com/user-attachments/assets/063a01b1-16a5-4ee1-b981-a2d4b93c08ac"
/></br></br>


**2. When a user has <ins> only `SLO` </ins> privilege the menu should
be shown with only SLO entry.**
- `Discover` & Observability `SLO` _**All**_ Feature Privilege
<img width="532" alt="Screenshot 2025-06-11 at 11 00 31"
src="https://github.com/user-attachments/assets/91f48791-28b0-48ce-b7fa-f1c8139556dd"
/></br></br>

**3. When the user has <ins> no `SLO` </ins> privilege, the `SLO` entry
should be hidden**
- `Discover` & Observability `Logs` _**All**_ Feature Privilege
<img width="518" alt="Screenshot 2025-06-11 at 11 01 34"
src="https://github.com/user-attachments/assets/c6df8a7d-c35b-43f0-be81-84ca3ef0b2e4"
/></br></br>

4. **When the user has access to <ins> only manage alerts </ins> without
specific rule type, the `Manage alerts` entry should be shown.**
- `Discover` & Security `Security` _**All**_ Feature Privilege in
**_Classic_** navigation
<img width="509" alt="Screenshot 2025-06-11 at 11 02 59"
src="https://github.com/user-attachments/assets/b5c370a6-f346-4bad-a8bd-d19fa6c95c76"
/>

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
## Summary

Improves the IF statement to ensure that we are dealing with an object
with loopable keys and remove the try-catch. If not loopable, we might
want to remove the user context entirely (or replace it with a known
object { id: '[INVALID]' }) since it might lead to APM traces being
discarded due to invalid user context.

closes #219095
## Summary

Closes #223175

Removes some internal padding that was added to the actions header - it
causes the whole header style to break.

| Before | After |
|--------|------|
|
![image](https://github.com/user-attachments/assets/3fcdfbc9-1746-421e-8a43-977a3a519c17)
|
![image](https://github.com/user-attachments/assets/06cd1190-4bdc-4f3c-9ed4-1f53b52829a3)
|
## Summary

Closes #217627 

This PR:
- changes tab name truncation to middle truncation
- changes default tab naming from "Untitled Session" to "Untitled"
<img width="1067" alt="Screenshot 2025-06-10 at 11 30 42"
src="https://github.com/user-attachments/assets/d45c078b-0c90-4459-8b54-4e9faaa996a6"
/>



### 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](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
- [x] 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)

---------

Co-authored-by: Davis McPhee <davis.mcphee@elastic.co>
…om recurrence component (#223949)

## Summary

- Forwards `startDate` correctly to the `CustomRecurringSchedule`
component. The missing prop caused the monthly custom frequency
sub-options to not show up.
- Fixes the `CustomRecurringSchedule` component type to correctly
reflect the required prop.
- Removes the `custom-recurring-form` data test subject from the
`<CustomRecurringSchedule>` JSX tag. The test subject wasn't forwarded
to any DOM element, but the only test with an assertion using that test
subject was passing because it was checking its absence
(`not.toBeInTheDocument()`).

## Verification steps

1. Open the Maintenance Window creation page
2. Toggle "Repeat" on
3. In the recurrence form, check that all the custom frequencies work,
showing the correct sub-options
…yout in Ingest Pipelines > Edit pipeline page (#223563)

Closes #217963

This PR fixes an issue where API Request flyout in Ingest Pipelines >
New pipeline page is missing title.
…nd (#223566)

## Summary

Adds `DNS` to Defend policy config:
<img width="952" alt="image"
src="https://github.com/user-attachments/assets/de5aabe2-544a-49ae-82c2-59f9ffbca8c4"
/>

There is no migration for existing policies.

For new policies, it is enabled by default for
- Complete EDR
- Data Collection

and disabled for other configs.


### 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

---------

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
## Summary
elastic/security-team#12656
https://github.com/elastic/kibana/pull/220782/files#


To test:
1.
https://p.elstc.co/paste/w06HF7Yw#2tr6JjZXmUbjQ6TQdpgdenH4YOjiWdAoHCZ3OpRi5JG
2. locally:

```
export VAULT_ADDR=https://secrets.elastic.co:8200/
vault login --method=oidc
node scripts/eis.js
```

Callouts will not appear again once dismissed. Please clear the local
storage if you want them to show up again.

<img width="2557" alt="Screenshot 2025-05-29 at 15 53 21"
src="https://github.com/user-attachments/assets/506925cb-5bce-4a66-918e-cd9e000c7088"
/>



onboarding hub:
<img width="2559" alt="Screenshot 2025-05-29 at 09 32 14"
src="https://github.com/user-attachments/assets/4c8b99e5-156e-4062-95a9-fa45c101b858"
/>

Assistant:
<img width="1282" alt="Screenshot 2025-06-11 at 15 16 09"
src="https://github.com/user-attachments/assets/30d47a05-ded1-4c3e-9540-6ad97fda0a8b"
/>

Conversation:
<img width="674" alt="452997822-5c0b3933-b253-474e-92a5-d8793ebff819"
src="https://github.com/user-attachments/assets/97506996-9a85-45bb-a728-79df37bd592e"
/>

Integration:
<img width="2559" alt="Screenshot 2025-05-28 at 21 28 11"
src="https://github.com/user-attachments/assets/ec564dac-2aed-4ac5-ad2c-67728d6f3eda"
/>

Attack Discovery:
<img width="2560" alt="Screenshot 2025-06-11 at 15 35 08"
src="https://github.com/user-attachments/assets/9816fc43-0e6e-40b2-862b-82673330c4da"
/>


```
feature_flags.overrides:
  securitySolution.attackDiscoveryAlertsEnabled: true
  securitySolution.assistantAttackDiscoverySchedulingEnabled: true
```
<img width="2560" alt="Screenshot 2025-06-11 at 15 30 53"
src="https://github.com/user-attachments/assets/7089626f-a416-4260-92f0-1be3f06cf5d3"
/>



Connectors:
<img width="2559" alt="Screenshot 2025-06-10 at 11 15 41"
src="https://github.com/user-attachments/assets/74773473-ff1c-41c1-bdd5-fe6e64b9a497"
/>




### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [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

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: florent-leborgne <florent.leborgne@elastic.co>
Co-authored-by: Viduni Wickramarachchi <viduni.ushanka@gmail.com>
## Summary

### Test track
This is an entity that offers an easy way to distribute test loads to
run in parallel by assigning them to lanes. The main metric used to
determine on which lane of a test track a test load should go is
*estimated runtime*.

Other than load routing functions, the track itself doesn't hold any
logic that pertains to the distribution strategy. In the current
implementation, you can:
- add new lanes
- add a load to a new lane
- add a load to a lane based on it's current capacity

The test track also offers an easy way to serialise the specification,
which holds all relevant information that describes how the load is
distributed across lanes, along with some useful stats about the lanes
and the combined runtime.

Notes:
- A lane's capacity is represented by the difference between the current
estimated runtime and the target runtime
- If a lane's capacity has been reached or exceeded, the lane status
becomes `closed`
- If a lane's expected runtime exceeds the target runtime, the lane is
considered **congested**

### Test config stats
By querying Scout test event data collected from previous runs, we can
gather knowledge about each individual test config duration which is
crucial when deciding how we distribute the test loads to run in
parallel.

The following duration aggregations are recorded when test config stats
are collected: `avg`, `median`, `95th percentile`, `99th percentile`,
`max`.

The `95th percentile` value is what's currently used as the estimated
runtime.

### CLI: `scout update-test-config-stats`
Used to fetch the latest test config stats from Scout test events stored
in an Elasticsearch instance and store them locally under
`.scout/test_config_stats.json`.

This assumes that the test events used to calculate the stats have been
collected from Buildkite.

### CLI: `scout create-test-track`
Given a list of test config manifests, it distributes the enabled
configs on a test track and outputs the track specification to a file.

The estimated runtime for each config is determined from the test config
stats stored under `.scout/test_config_stats.json`.

The _target runtime_ of the track and _maximum lane count_ are
configurable to provide some flexibility depending on the use case.

If stats for a config are not available, the estimated runtime will
default to the target runtime of the track, effectively placing the
config on a separate lane, if the maximum lane count hasn't been already
reached.

#### Distribution strategy
- sort all test loads in descending order based on estimated runtime
- assign each load to the least loaded lane
- open a new lane no open lanes are available or adding it to an
existing lane would lead to congestion

This strategy is fairly basic, but it's pretty effective. It prioritises
maximum lane saturation and avoids lane congestion.

#### Example usage
Distribute stateful configs on a test track
```shell
node scripts/scout.js create-test-track \
  --configManifest $(echo .buildkite/*_stateful_configs.yml | sed 's/ / --configManifest /g')
```

---------

Co-authored-by: Cesare de Cal <cesare.decal@elastic.co>
This PR removes the painless implementation of log document
normalization and switches to the Elasticsearch version which is meant
as the source of truth.

This shouldn't change behavior at all.
Fixes #221820
Fixes #220879

## Summary

This PR reverts #204296 and
#218853 as these PRs caused issues
in the UI due to limitations in the Query Watches API. Therefore, we are
temporarily reverting back to fetching watches through the `.watches`
system index until we have better support from the Query Watches API.

**How to test:**
1. Start Es with `yarn es snapshot --license=trial` and Kibana with
`yarn start` (no need to test in serverless as Watcher is not available
there.
2. Navigate to Stack Management -> Watcher and create multiple watches
(the more, the better). Make sure you create watches of different types
(advanced/json or threshold), watches with or without names, etc. There
are different watches and use cases described in the
[documentation](https://www.elastic.co/docs/explore-analyze/alerts-cases/watcher).
Also, adding sample data sets is helpful so that you can get watches to
execute and have values under the "Condition last met" and "Last
checked" columns.
3. After creating various watches, open the table with watches and make
sure that all functionalities work correctly. For example:
- All watches are displayed, check with >10 watches and different page
sizes.
- Sorting works for all columns.
- Search bar works as expected and searching by partial id is supported.
- Deleting watches updates the table correctly.


https://github.com/user-attachments/assets/d0da9c24-7389-481d-8a16-a0d01bda0e80

## Release notes:
This update resolves multiple issues in Watcher UI that were introduced
in 8.18.0, 8.18.1, 9.0.0, and 9.1.0, including the table not displaying
more than 10 watches, an error banner appearing unexpectedly in certain
scenarios, and the search bar functionality not working as expected.
## Summary
Resolves elastic/streams-program#292

This PR shows the streams description below its name using an InlineEdit
component.

I had to pass the refreshDefinition function in the tabs/dashboard and
use it whenever we update the list of dashboards since I had an issue
with using the outdated definition in case we updated the dashboards
list without fully refreshing the page.




https://github.com/user-attachments/assets/2e742263-a9d1-447a-9222-4b2c33d79958

---------

Co-authored-by: Joe Reuter <johannes.reuter@elastic.co>
Closes #193953

upgrades sass-embedded version into a more recent one.
## Summary

Parent issue: [[DataDiscovery] Replace SCSS with
CSS-in-JS](#209807 (comment))

Followed [Emotion standards
guide](https://docs.google.com/document/d/1CPflY8yCc3lZDg2BQkaMTgIkZlqiAEyMcAAvZbsjcTc/edit?pli=1&tab=t.0#heading=h.4zj1jq66y5an)

Part 3 of SCSS -> Emotion migration. Files included:

### Part 3
- `src/platform/plugins/shared/field_formats/public/index.scss`
-
`src/platform/plugins/shared/field_formats/public/lib/content_types/_html_content_type.scss`
-
`src/platform/plugins/shared/field_formats/public/lib/content_types/_index.scss`
-
`src/platform/plugins/shared/field_formats/public/lib/converters/_index.scss`
-
`src/platform/plugins/shared/field_formats/public/lib/converters/_string.scss`
-
`src/platform/plugins/shared/unified_doc_viewer/public/components/doc_viewer_source/source.scss`
-
`src/platform/plugins/shared/unified_doc_viewer/public/components/doc_viewer_table/table.scss`
-
`src/platform/plugins/shared/unified_doc_viewer/public/components/json_code_editor/json_code_editor.scss`
## Summary

Closes #221607 

Improves naming of new tabs, so instead of determining number in tab
name as `tab count + 1` we now check the highest existing number on
default tab and add +1.

**Possible improvements:**
This logic is very similar to `onDuplicate` function, which lives in
`src/platform/packages/shared/kbn-unified-tabs/src/components/tabbed_content/tabbed_content.tsx`.
It may be worth to make it more DRY, I'm open for creating a new ticket
for this and handling it, if we agree on refactor. Or to handle it
within this PR.

My rough idea was to add a parameter to `createTabItem` which tells us
if we duplicate an item or not. If so, we should use a logic and regexes
similar to `onDuplicate` function, otherwise logic and regexes from this
PR. It adds `isDuplicate` parameter though in couple different places
causing prop drilling, so I hesitated with taking this decision on my
own.

**EDIT**
Created a new issue for extracting common parts [[OneDiscover][Tabs]
Extract common parts in creating and duplicating tabs
label](#223899 (comment))



### 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](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
- [ ] [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)

### Identify risks

Does this PR introduce any risks? For example, consider risks like hard
to test bugs, performance regression, potential of data loss.

Describe the risk, its severity, and mitigation for each identified
risk. Invite stakeholders and evaluate how to proceed before merging.

- [ ] [See some risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)
- [ ] ...
## Summary

These tests rely on having system indices superuser permissions to run,
causing them to break in MKI.
This PR guards changes to the streams state that go through
`State.attemptChanges` via the newly introduced lock manager.

If two requests are happening at the same time, one of them now fails
with a 409.

## Concerns

* Lock expiry is 30s for now - is this too little? Should be good enough
for now, maybe we need to reconsider once we introduce the bulk api
* This is only guarding changes that go through the `State` class - some
things like queries and dashboards do not, so they can still be subject
to race conditions. We could sprinkle more locks over the code base, but
I would like to solve this by moving them into `State` as well, that
seems like the cleaner approach, even though a bit more effort
* Biggest question - on this PR the concurrent request fails directly
with a 409. Is this OK or should it wait and retry a couple times? I'm
in favor of starting like this and seeing if this is actually a problem.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Kevin Lacabane <kevin.lacabane@elastic.co>
## Summary

Removes the tech preview designation from the session invalidation API.

Resolves #224070

## Release Note
The Session Invalidation API is now marked as Stable.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
…tart contract (#223149)

Closes #223170
Closes #223168

PR does the following:
* Removes `injectReferences` from `loadDashboardState`
* `type` and `id` are populated from matching panelRef server side with
dashboard api transform.
* Dynamic action `inject` is run during embeddable bootstrapping as part
of `initializeEmbeddableDynamicActions`.
* Removes `extractReferences` from dashboard `getSerializedState`
    * extracts panelRef in `layoutManager.serializeLayout`
    * Dynamic action `extract` is run during `embeddable.serializeState`
* Updates embeddable implementations that use
`initializeEmbeddableDynamicActions` to serialize dynamic action state
with references in `serializeState`
* Removes `PersistableStateService` from `EmbeddableStart` contract
* Moves `embeddable.common` `PersistableStateService` code to
`embeddable.server`

The PR is all ready large, so the following TODOs will be addressed in
follow on work
* Move `embeddable_enhanced` plugin to package. 
* Clean-up dashboard/common folder, moving
src/platform/plugins/shared/dashboard/common/dashboard_container/persistable_state/dashboard_container_references.ts
and
src/platform/plugins/shared/dashboard/common/dashboard_saved_object/persistable_state/dashboard_saved_object_references.ts
functionality to server folder. The plan will be to break these files
into `inject_references` and `extract_references`.

### Embeddable owner test instructions
* open dashboard with panel type and drilldown. Verify drilldown works
as expected
* Create new dashboard with panel type and drilldown. Save dashboard.
Open dashboard and verify drilldown works as expected.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Simplify `FunctionVisibility` to only two possible states: `internal`
and `all`

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
closes #221032
closes #221031

New trace waterfall location:
`public/components/shared/trace_waterfall/index.tsx`

Pending items (not done on this PR):
- [ ] Add marks (non-blocking)
- [ ] Add errors count per trace node (non-blocking)
- [ ] Paginate trace fetching (non-blocking)
- [ ] Add span links (non-blocking)
- [x] Truncate item label with ellipsis
- [x] Remove vertical scroll in narrow view (caused by wrapped duration
text?)
- [ ] Remove left side gap and indentation? (FocusedTraceWaterfall only)
- [ ] Broken on mobile (UnifiedTraceWaterfall only) (non-blocking)


This PR creates a new trace waterfall that must work with both APM and
unprocessed OTel documents. It follows this simple interface to create
the waterfall:
```
export interface TraceItem {
  id: string;
  timestamp: string;
  name: string;
  traceId: string;
  duration: number;
  hasError?: boolean;
  parentId?: string;
  serviceName: string;
}
```

How to test it:
```
yarn storybook apm
```

Some examples have been created under `UnifiedTraceWaterfall` folder:

<img width="288" alt="Screenshot 2025-06-05 at 13 56 32"
src="https://github.com/user-attachments/assets/7c122364-74d8-4c4c-842f-b91c4b97fc57"
/>

---

<img width="1068" alt="Screenshot 2025-06-05 at 13 57 46"
src="https://github.com/user-attachments/assets/5d482326-55b7-4328-a0ce-de1f4760673e"
/>
<img width="1052" alt="Screenshot 2025-06-05 at 13 58 01"
src="https://github.com/user-attachments/assets/91e16223-8e4c-456f-a812-ca2fe338380e"
/>
<img width="1047" alt="Screenshot 2025-06-05 at 13 58 09"
src="https://github.com/user-attachments/assets/c027f074-32b4-41ad-9140-acbc401b8140"
/>

Traces in Discover with Otel documents:
<img width="691" alt="Screenshot 2025-06-05 at 15 07 23"
src="https://github.com/user-attachments/assets/e20448b5-4a7e-43a4-bef1-bc6da2354c94"
/>
<img width="694" alt="Screenshot 2025-06-05 at 15 07 44"
src="https://github.com/user-attachments/assets/f29572e4-98f6-41c2-bb5f-51948c29288f"
/>

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Milosz Marcinkowski <38698566+miloszmarcinkowski@users.noreply.github.com>
Co-authored-by: Milosz Marcinkowski <milosz.marcinkowski@elastic.co>
Co-authored-by: Katerina <kate@kpatticha.com>
…ing Rule Migration (#222542)

Handles : 

- elastic/security-team#12236
- elastic/security-team#12012
- elastic/security-team#12235

## Summary

This PR adds the ability to change rule migration execution settings
when `re-processing` a migration. Now users can change :

- `connector` they want to use for this particular occasion.
- whether `prebuilt rules` should be matched or not.

This PR include below changes:


### Changes to `Re-process` workflow

Previously, clicking on `Reprocess Rules` would automatically start the
migration on the Translated Rules Page.

This has been changed to add the ability for user to change the settings
when starting the migrations can be seen below :

> [!Note]
> Sample Graph executions with `skipPrebuiltRulesMatching == true` can
be found
[here](https://smith.langchain.com/o/a9ce6102-b198-4b3d-9190-95bedc24ca4f/projects/p/66aedda3-8cfd-4eee-950d-7ba2f93a317e?timeModel=%7B%22duration%22%3A%227d%22%7D&searchModel=%7B%22filter%22%3A%22and%28eq%28is_root%2C+true%29%2C+and%28eq%28metadata_key%2C+%5C%22skipPrebuiltRulesMatching%5C%22%29%2C+eq%28metadata_value%2C+true%29%29%29%22%2C%22searchFilter%22%3A%22eq%28is_root%2C+true%29%22%7D&runtab=2)



https://github.com/user-attachments/assets/73c22157-f688-410d-852d-aff7be612771





### Changes to `/start` API

As can be seen below `connector_id` and new option
`skip_prebuilt_rules_matching` have been combined into a single
`settings` object.

#### Before

```ts
POST /start

{
  "connector_id": boolean,
  "retry": string,
  "langsmith_options": {
    "project_name": string,
    "api_key": string
  }
}

```
#### After
```ts
{
  "settings": {
    "connector_id": string,
    "skip_prebuilt_rules_matching": boolean
  },
  "retry": string,
  "langsmith_options": {
    "project_name": string,
    "api_key": string
  }
}


```

### Changes to `rules/{migration_id}/stats` and `rules/stats` Endpoints

Now both `stats` and `stats_all` endpoints include migration's
last_execution details.

### Changes to Langsmith Graph

A new [run-time
config](https://v02.api.js.lang.chat/interfaces/_langchain_core.runnables.RunnableConfig.html#configurable)
called `skip_prebuilt_rules_matching` has been added to the graph which
does 2 things

- conditionally skips the `matchPrebuiltRule` node as can be seen by
graphs below
- Assigns a default `prebuilt_rule_id` of `null` in the
`translationResult` node.


![image](https://github.com/user-attachments/assets/421dc4eb-4682-4f28-9305-a1d841191e7e)


### Re-processing `STOPPED` migrations

Previously we used to automatically reprocess `STOPPED` migrations with
the default `connector_id` selected by the user in `Siem Migrations`

Now, we first try to inherit the `last_execution` settings to re-start
the migration as can be seen
[here](https://github.com/elastic/kibana/pull/222542/files#diff-fa4ce089bfa7b6afec449c289c817f03eb074ae5ffcae828434255c800d9a9a2R287).
If not present, for example, for old migrations before this PR was
merged, then we use stored/default values.


### 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
- [ ] 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)

### Identify risks

Does this PR introduce any risks? For example, consider risks like hard
to test bugs, performance regression, potential of data loss.

Describe the risk, its severity, and mitigation for each identified
risk. Invite stakeholders and evaluate how to proceed before merging.

- [ ] [See some risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)
- [ ] ...
…pace awareness (#222700)

## Summary

PR adds migration of Response Actions and Artifacts when the space
awareness feature flag is enabled. Changes include:

- New saved object type (`security:reference-data`) to keep internal
data/information used by security solution. Currently being used to keep
migration state for both the Artifacts and Response actions migrations
- Two records will be populated in this new saved object related to the
migration being introduced here:
- ID: `SPACE-AWARENESS-ARTIFACT-MIGRATION` - keeps state information
about migration of Artifacts (see below for example)
- ID: `SPACE-AWARENESS-RESPONSE-ACTIONS-MIGRATION` - keeps state
information about migration of response actions (see below for example)
- NOTE: my goal was to also introduce a `client` for working with
internal reference data, but due to timing constraints, that will be
done at a later time
- Adds migration for Endpoint artifacts (Trusted applications, Event
filters, Blocklists, Host isolation exceptions and Endpoint exceptions)
to add the `spaceOwnerId:default` to all artifact records
- Adds migration for Response Action Requests (both Elastic Defend and
external EDRs) to populate `originSpaceId` as well `agent.policy.*`
fields.
- NOTE: when populating the `agent.policy.*` data, it may be possible
that the agent that the response action was sent to is no longer
available (ex. unenrolled). In such cases, the migration will populate
any field that it is not able to retrieve information for with the text
`MIGRATION:NOT-FOUND`


> [!IMPORTANT]
> The migration currently assumes that the `9.1.0` endpoint package is
already installed, which will not be the case with a real migration. To
test this PR, you should start a 9.1 stack with the feature flags
disabled... Install the `9.1.0` endpoint package, and then enable the
feature flags.
> We will be working on a solution handling this data condition in a
subsequent PR
… legacy SIEM actions in bulk (#219432)

## Summary
Legacy actions context: #112327

This PR modifies legacy SIEM action migration logic to migrate actions
in bulk, significantly improving performance. Response time and # of
requests to ES for SIEM rule management HTTP APIs are both significantly
reduced. When tested on 800 rules, this saves about 1-1.5 seconds per
bulk API call and eliminates hundreds of individual requests to
Elasticsearch. Bulk disable for example goes from taking ~3.3 seconds to
~2.3 seconds, and the APM transaction for the API call no longer drops
spans due to hitting the max span limit.

## Testing
I added a helper function in the quickstart tooling,
`createRuleWithLegacyAction`, to make it easier to get started with
manual testing. The function creates a connector, a rule, and then a
legacy action referencing the connector and the rule. The legacy action
(a `siem.notification` type rule) and rule can be viewed in the alerting
SO index via dev tools:
```
GET .kibana_alerting_cases/_search
{
  "query": {
    "bool": {
      "filter": {
        "term": {
          "type": "alert"
        }
      }
    }
  }
}
```
Viewing the rule details via the Security Solution UI should display
only one rule with the action as part of the rule. After making any kind
of change to the rule (enable, disable, update, etc), the dev tools
command above should show only a single rule with the action inside the
rule instead of as a separate `siem.notification` type rule.

---------

Co-authored-by: Maxim Palenov <maxim.palenov@elastic.co>
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This PR upgrades Puppeteer version to v24.10.1.

Tested locally, works as expected:

<img width="968" alt="Screenshot 2025-06-14 at 02 28 49"
src="https://github.com/user-attachments/assets/52ede4a6-d342-45f6-9fdf-5a01ce77fb47"
/>

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Alexi Doak <109488926+doakalexi@users.noreply.github.com>
Co-authored-by: Alexandra Doak <alexandra.doak@elastic.co>
…kboxes in anomaly detection job selection flyout (#224025)

## Summary

This PR resolves [[ML] Anomaly Detection: Job selector flyout checkboxes
in the first column missing title from
announcement](#216802).

#### This is a follow up from
#221865 pr. (Closed because of
merge issues.)


https://github.com/user-attachments/assets/a6796576-cc46-4769-ab3d-c8f5dc37409e

Fixes #216802
@darnautov darnautov requested review from a team as code owners June 17, 2025 08:52
@darnautov darnautov requested a review from a team June 17, 2025 08:52
@darnautov darnautov requested review from a team and vigneshshanmugam as code owners June 17, 2025 08:52
@darnautov darnautov requested review from ashokaditya, machadoum, rylnd, tomsonpl and xcrzx and removed request for a team June 17, 2025 08:52
@darnautov darnautov merged commit 53c6d37 into feature/lookup-join-ux Jun 17, 2025
45 of 49 checks passed
@elasticmachine
Copy link
Contributor

💚 Build Succeeded

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
apm 1916 1924 +8
automaticImport 781 753 -28
cloudSecurityPosture 705 706 +1
dashboard 670 669 -1
embeddable 114 107 -7
embeddableEnhanced 81 82 +1
fieldFormats 70 57 -13
securitySolution 7602 7621 +19
stackConnectors 320 321 +1
streamsApp 506 508 +2
unifiedDocViewer 342 327 -15
total -32

Public APIs missing comments

Total count of every public API that lacks a comment. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats comments for more detailed information.

id before after diff
@kbn/apm-types 353 358 +5
@kbn/response-ops-alerts-delete 39 40 +1
@kbn/scout-info 12 13 +1
@kbn/scout-reporting 87 107 +20
@kbn/security-solution-connectors 8 9 +1
actions 334 335 +1
apmDataAccess 90 92 +2
embeddable 125 124 -1
embeddableEnhanced 15 26 +11
total +41

Async chunks

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

id before after diff
aiAssistantManagementSelection 76.9KB 77.0KB +145.0B
alerting 91.4KB 91.6KB +132.0B
apm 2.6MB 2.6MB +6.4KB
automaticImport 1.1MB 1.1MB -2.0KB
canvas 1.1MB 1.1MB -24.0B
cases 1.3MB 1.3MB -17.0B
cloudSecurityPosture 542.2KB 542.8KB +634.0B
dashboard 616.8KB 615.0KB -1.8KB
dataVisualizer 679.9KB 679.9KB +23.0B
discover 1.1MB 1.1MB +766.0B
esql 255.6KB 257.2KB +1.6KB
esqlDataGrid 159.8KB 159.7KB -93.0B
imageEmbeddable 109.3KB 109.3KB +48.0B
lens 1.5MB 1.5MB +162.0B
lists 123.6KB 123.7KB +145.0B
maps 3.0MB 3.0MB +153.0B
ml 5.4MB 5.4MB -3.9KB
observability 1.3MB 1.3MB -21.0B
observabilityAIAssistantApp 175.8KB 175.8KB +7.0B
securitySolution 9.3MB 9.4MB +28.0KB
slo 990.7KB 990.7KB -4.0B
stackConnectors 623.2KB 624.9KB +1.6KB
streamsApp 553.9KB 555.3KB +1.4KB
synthetics 1.0MB 1.0MB +48.0B
transform 622.8KB 622.9KB +159.0B
triggersActionsUi 1.5MB 1.5MB +909.0B
unifiedDocViewer 231.6KB 223.0KB -8.7KB
unifiedSearch 361.8KB 363.4KB +1.6KB
visualizations 373.2KB 373.2KB +56.0B
watcher 157.0KB 156.7KB -248.0B
total +27.2KB

Count of Enzyme imports

Enzyme is no longer supported, and we should switch to @testing-library/react instead.

id before after diff
fileUpload 1 0 -1
inspector 2 0 -2
visTypeMarkdown 1 0 -1
total -4

Public APIs missing exports

Total count of every type that is part of your API that should be exported but is not. This will cause broken links in the API documentation system. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats exports for more detailed information.

id before after diff
embeddableEnhanced 2 0 -2

Page load bundle

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

id before after diff
actions 16.7KB 16.9KB +229.0B
apm 35.5KB 35.5KB -2.0B
automaticImport 11.6KB 11.2KB -470.0B
core 456.6KB 457.0KB +336.0B
embeddable 18.9KB 16.7KB -2.2KB
embeddableEnhanced 8.9KB 9.2KB +309.0B
esUiShared 88.4KB 88.4KB +50.0B
fieldFormats 62.1KB 57.4KB -4.7KB
fleet 167.4KB 167.6KB +159.0B
kbnUiSharedDeps-srcJs 3.7MB 3.7MB +5.0B
observabilityAIAssistant 41.0KB 41.0KB -54.0B
securitySolution 93.2KB 93.3KB +100.0B
stackConnectors 60.5KB 60.8KB +231.0B
unifiedDocViewer 12.6KB 12.7KB +132.0B
total -5.9KB
Unknown metric groups

API count

id before after diff
@kbn/apm-types 354 359 +5
@kbn/response-ops-alerts-delete 39 40 +1
@kbn/scout-info 12 13 +1
@kbn/scout-reporting 109 129 +20
@kbn/security-solution-connectors 9 10 +1
actions 340 341 +1
apmDataAccess 90 92 +2
embeddable 149 148 -1
embeddableEnhanced 15 26 +11
total +41

async chunk count

id before after diff
ml 116 117 +1
securitySolution 107 106 -1
stackConnectors 101 102 +1
total +1

ESLint disabled in files

id before after diff
@kbn/test-suites-xpack-platform 4 5 +1

ESLint disabled line counts

id before after diff
@kbn/scout 2 3 +1
@kbn/test-suites-xpack-platform 340 341 +1
apm 66 70 +4
dashboard 18 19 +1
securitySolution 609 617 +8
stackConnectors 133 134 +1
total +16

miscellaneous assets size

id before after diff
automaticImport 891.4KB 250.8KB -640.6KB

References to deprecated APIs

id before after diff
alerting 86 61 -25

Total ESLint disabled count

id before after diff
@kbn/scout 2 3 +1
@kbn/test-suites-xpack-platform 344 346 +2
apm 79 83 +4
dashboard 18 19 +1
securitySolution 703 711 +8
stackConnectors 137 138 +1
total +17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment