#### This is a second PR, I migrated relevant code changes here after
closing the previous one. You may read the comments history
[here](https://github.com/elastic/kibana/pull/205781).
## Summary
This PR fixes [Make Help dropdown consistent across all
environments](https://github.com/elastic/kibana/issues/199465) issue.
Since we need to make dropdown consistent also in the cloud, I will
firstly merge this PR, and then deal with the Cloud part by either
opening PR in that repo, or reach out to the responsible team showcasing
changes in Kibana and ask them to implement the changes.
This is how the dropdown is displayed currently (1st screenshot) and how
it will be looking with my changes (2nd screenshot).
After discussing the design with @ek-so and trying out different
variants, this seems to be the most suitable and universal.
The changes include refactoring usage or relevant Eui components and
removing the displaying of icons in the general menu dropdown (while
keeping this functionality of adding icons to the solutions additional
menu dropdown items).
<img width="330" alt="Screenshot 2025-01-07 at 13 07 49"
src="https://github.com/user-attachments/assets/a01a4966-dc6d-4c7c-86c2-4588960237f1"
/>
<img width="346" alt="Screenshot 2025-01-09 at 15 22 36"
src="https://github.com/user-attachments/assets/e9512a49-91b4-49fe-913b-f6bc70bfe1cc"
/>
### Authz API migration for unauthorized routes
This PR migrates unauthorized routes owned by your team to a new
security configuration.
Please refer to the documentation for more information: [Authorization
API](https://docs.elastic.dev/kibana-dev-docs/key-concepts/security-api-authorization)
### **Before migration:**
```ts
router.get({
path: '/api/path',
...
}, handler);
```
### **After migration:**
```ts
router.get({
path: '/api/path',
security: {
authz: {
enabled: false,
reason: 'This route is opted out from authorization because ...',
},
},
...
}, handler);
```
### What to do next?
1. Review the changes in this PR.
2. Elaborate on the reasoning to opt-out of authorization.
3. Routes without a compelling reason to opt-out of authorization should
plan to introduce them as soon as possible.
2. You might need to update your tests to reflect the new security
configuration:
- If you have snapshot tests that include the route definition.
## Any questions?
If you have any questions or need help with API authorization, please
reach out to the `@elastic/kibana-security` team.
---------
Co-authored-by: Eyo Okon Eyo <eyo.eyo@elastic.co>
## Summary
This PR fixes [Annotation groups Listing Page
Papercuts](https://github.com/elastic/kibana/issues/198731) and
[Dashboard Listing Page
Papercuts](https://github.com/elastic/kibana/issues/198728) issues.
1. Changed the name of the first column
2. Fixed edit icon being invisible while editing functionality is
available.
In the past the logic was different - hiding of icon was happening based
on `isEditable(item)` property, and in the [[Managed content] readonly
in library
views](https://github.com/elastic/kibana/pull/176263/files#diff-e442682471f1021a9126ddcad7e00a0d334e57ac8db512c1c3268e14ecac0074L552)
PR the logic was changed to depend on adding a key `{ edit: { enabled:
false }` if there is a need to hide the Edit button. What happened is
that the logic should be -> If you don't want to show the Edit icon, add
`{ edit: { enabled: false }`, but in the current code, although there is
no such key, the pencil stays invisible, because the
`Boolean(tableItemsRowActions[item.id]?.edit?.enabled)` resolved to
`false` when it is `undefined` (when the Edit functionality isn't
disabled.) In this PR I propose an adjustment to this line of code.
3. Changed the View Details icon.
4. Show Reload page toast when a user changes preferred
`savedObjects:perPage` in Advanced Settings.
5. Fix sorting algorithm that was sorting incorrectly if the preferred
`savedObjects:perPage` was less than 10.
<img width="237" alt="Screenshot 2025-01-09 at 13 44 39"
src="https://github.com/user-attachments/assets/77a6fd45-8845-4b06-818c-0af0dc01ede9"
/>
<img width="243" alt="Screenshot 2025-01-09 at 13 43 30"
src="https://github.com/user-attachments/assets/3d9e03da-94dd-4e31-b33a-eb81e71b69dd"
/>
## Summary
Fixes https://github.com/elastic/kibana/issues/206016
This PR aims to fix a flaky test that waits for an empty state screen,
which sometimes fails to appear.
The issue might happen because the data deletion action, which triggers
the empty state, is not completed properly. This action takes place in
the previous test and does not wait for the deletion to finish.
The proposed solution ensures that the test responsible for deleting the
data waits until the empty state appears after deletion, preventing the
next test from running too soon.
### Test locally
`````
node x-pack/solutions/observability/plugins/apm/scripts/test/e2e.js --server
node x-pack/solutions/observability/plugins/apm/scripts/test/e2e.js --runner --open
`````
Run the
[custom_links.cy.ts](http://localhost:5620/__/#/specs/runner?file=cypress/e2e/settings/custom_links.cy.ts)
test.
## 📓 Summary
Part of #https://github.com/elastic/streams-program/issues/32
This work implements a UI for basic stream enrichment, supporting grok
and dissect processor + detected fields mapping.
The main features implemented in this PR consist of:
- **Sortable processors list**
- **Add new processor - Grok, Dissect**
- Ad-hoc forms for each processor
- Simulated document outcome with extracted fields
- Filter matching documents with parsed fields
- Mapping detected fields (only available for wired streams)
- **Edit processor**
- Change configuration only
- Delete processor CTA
As a side quest, I added a small package for object utils as
@simianhacker suggested.
`@kbn/object-utils` exposes `calculateObjectDiff` and `flattenObject` to
detect the changed fields in a simulation.
## 🔜 Follow-up work
I'll work on minor updates on top of this MVP to make this available for
further testing from the team.
The next steps will be:
- **Tests** for features that consolidate on the functional pov.
- Better field mapping detection and UI feedback (infer the type of the
detected field, currently always unmapped)
- Add better form validation and feedback for processor configuration.
As discussed offline, state management is purely based on the built-in
react APIs + react-hook-form. It could be improved with different
approaches, including a more solid state management library to make it
easier to maintain and bulletproof to race conditions. No state syncs
with the URL currently.
## 🎥 Demo
https://github.com/user-attachments/assets/a48fade9-f5aa-4270-bb19-d91d1eed822b
---------
Co-authored-by: Marco Antonio Ghiani <marcoantonio.ghiani@elastic.co>
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
## Summary
* Fix an issue with the `--list` command failing the 1st run.
* Allow passing in no filters, and relocate "incorrect" modules (aka
modules that are not in the correct folder) in that case.
## Summary
Closes https://github.com/elastic/ingest-dev/issues/4346
Update: changed the implementation to run the first attempt of bulk
action execution in the task too.
```
[2025-01-08T11:10:54.139+01:00][INFO ][plugins.fleet] Running action asynchronously, actionId: f8658178-cb1e-485d-9d2f-ad60ccc37bc9, total agents:10001
actionParams {
kuery: '( fleet-agents.policy_id : ("d3448ae1-9e55-485e-b74c-83471cb06977")) and (status:online or (status:error or status:degraded) or (status:updating or status:unenrolling or status:enrolling) or status:offline)',
revoke: false,
force: undefined,
batchSize: 10000,
showInactive: true,
spaceId: 'default',
total: 10001,
actionId: 'f8658178-cb1e-485d-9d2f-ad60ccc37bc9'
}
retryParams {
pitId: 'gIuaBAEPLmZsZWV0LWFnZW50cy03FmRQN3pDT1gzUnFpNFkwdHJFdzJvbncAARZ5N2R5SnVSelN2bWNMang1THNfVkNRAAEAAAAAAAFpZhZiZnpybjZYSFRRNklYNlBqWHFzVU1nAAEWZFA3ekNPWDNScWk0WTB0ckV3Mm9udwAA',
retryCount: 1
}
[2025-01-08T11:10:54.154+01:00][INFO ][plugins.fleet] Scheduling task fleet:unenroll_action:retry:f8658178-cb1e-485d-9d2f-ad60ccc37bc9
[2025-01-08T11:10:54.154+01:00][DEBUG][plugins.fleet] [Bulk Agent Unenroll API] Unenroll agents in 647ms
[2025-01-08T11:10:55.772+01:00][WARN ][http.server.Kibana] Event loop utilization for /julia/api/fleet/agents exceeded threshold of 250ms (351ms out of 633ms) and 15% (55%)
[2025-01-08T11:10:57.235+01:00][INFO ][plugins.fleet] Running bulk action retry task
[2025-01-08T11:10:57.235+01:00][DEBUG][plugins.fleet] Running task fleet:unenroll_action:retry:f8658178-cb1e-485d-9d2f-ad60ccc37bc9
[2025-01-08T11:10:57.236+01:00][INFO ][plugins.fleet] Completed bulk action retry task
[2025-01-08T11:10:57.251+01:00][INFO ][plugins.fleet] Scheduling task fleet:unenroll_action:retry:check:f8658178-cb1e-485d-9d2f-ad60ccc37bc9
[2025-01-08T11:10:57.251+01:00][DEBUG][plugins.fleet] kuery: ( fleet-agents.policy_id : ("d3448ae1-9e55-485e-b74c-83471cb06977")) and (status:online or (status:error or status:degraded) or (status:updating or status:unenrolling or status:enrolling) or status:offline)
[2025-01-08T11:10:57.781+01:00][DEBUG][plugins.fleet] Action not found
[2025-01-08T11:10:58.891+01:00][DEBUG][plugins.fleet] Secrets storage requirements already met, turned on in settings
[2025-01-08T11:10:59.414+01:00][WARN ][http.server.Kibana] Event loop utilization for /julia/api/fleet/agent_status exceeded threshold of 250ms (294ms out of 348ms) and 15% (85%)
[2025-01-08T11:10:59.806+01:00][WARN ][http.server.Kibana] Event loop utilization for /julia/api/fleet/agents exceeded threshold of 250ms (504ms out of 743ms) and 15% (68%)
[2025-01-08T11:11:01.532+01:00][INFO ][plugins.fleet] Removing task fleet:unenroll_action:retry:check:f8658178-cb1e-485d-9d2f-ad60ccc37bc9
actionParams {
kuery: '( fleet-agents.policy_id : ("d3448ae1-9e55-485e-b74c-83471cb06977")) and (status:online or (status:error or status:degraded) or (status:updating or status:unenrolling or status:enrolling) or status:offline)',
revoke: false,
batchSize: 10000,
showInactive: true,
spaceId: 'default',
total: 10001,
actionId: 'f8658178-cb1e-485d-9d2f-ad60ccc37bc9'
}
retryParams {
pitId: 'gIuaBAEPLmZsZWV0LWFnZW50cy03FmRQN3pDT1gzUnFpNFkwdHJFdzJvbncAARZ5N2R5SnVSelN2bWNMang1THNfVkNRAAEAAAAAAAFpZhZiZnpybjZYSFRRNklYNlBqWHFzVU1nAAEWZFA3ekNPWDNScWk0WTB0ckV3Mm9udwAA',
retryCount: 1,
taskId: 'fleet:unenroll_action:retry:f8658178-cb1e-485d-9d2f-ad60ccc37bc9',
searchAfter: [ 1736331016589, 'online-98', 119770 ]
}
[2025-01-08T11:11:01.564+01:00][INFO ][plugins.fleet] Scheduling task fleet:unenroll_action:retry:check:f8658178-cb1e-485d-9d2f-ad60ccc37bc9
[2025
```
## Old description
Bulk actions supposed to run async in a kibana task, and the API to
return quickly with an action id.
This was implemented
[here](38e74d7ee6 (diff-69fa063ab8857204486203a718ff4bd0cbf9652623279d1959316de8e83233ff))
and unintentionally broke when a tslint rule was introduced
[here](https://github.com/elastic/kibana/pull/181456/files#diff-69fa063ab8857204486203a718ff4bd0cbf9652623279d1959316de8e83233ff),
effectively letting the async code finish before the API returns. This
results in the API timing out sometimes when there are many agents.
Tested by creating 100k agent docs with the `create_agents` script and
bulk unenroll agents.
Logs before the change:
```
[2025-01-07T14:38:04.467+01:00][INFO ][plugins.fleet] Running action asynchronously, actionId: 2a57ac7a-0c1b-4a08-8709-6ccb683db995, total agents:100000
[2025-01-07T14:38:04.482+01:00][INFO ][plugins.fleet] Scheduling task fleet:unenroll_action:retry:check:2a57ac7a-0c1b-4a08-8709-6ccb683db995
[2025-01-07T14:38:04.482+01:00][DEBUG][plugins.fleet] kuery: status:* AND (fleet-agents.policy_id : ("d3448ae1-9e55-485e-b74c-83471cb06977"))
...
[2025-01-07T14:39:00.264+01:00][INFO ][plugins.fleet] Removing task fleet:unenroll_action:retry:check:2a57ac7a-0c1b-4a08-8709-6ccb683db995
[2025-01-07T14:39:00.290+01:00][INFO ][plugins.fleet] Scheduling task fleet:unenroll_action:retry:check:2a57ac7a-0c1b-4a08-8709-6ccb683db995
[2025-01-07T14:39:00.293+01:00][INFO ][plugins.fleet] processed 100000 agents, took 55811ms
[2025-01-07T14:39:00.293+01:00][INFO ][plugins.fleet] Removing task fleet:unenroll_action:retry:check:2a57ac7a-0c1b-4a08-8709-6ccb683db995
[2025-01-07T14:39:00.304+01:00][DEBUG][plugins.fleet] [Bulk Agent Unenroll API] Unenroll agents in 56027ms
```
Logs after the change:
```
[2025-01-07T14:42:10.178+01:00][INFO ][plugins.fleet] Running action asynchronously, actionId: c3e12928-bbfe-4731-bdc2-c47bcac727a7, total agents:100000
[2025-01-07T14:42:10.194+01:00][INFO ][plugins.fleet] Scheduling task fleet:unenroll_action:retry:check:c3e12928-bbfe-4731-bdc2-c47bcac727a7
[2025-01-07T14:42:10.195+01:00][DEBUG][plugins.fleet] kuery: status:* AND (fleet-agents.policy_id : ("d3448ae1-9e55-485e-b74c-83471cb06977"))
[2025-01-07T14:42:10.195+01:00][DEBUG][plugins.fleet] [Bulk Agent Unenroll API] Unenroll agents in 196ms
[2025-01-07T14:43:00.762+01:00][INFO ][plugins.fleet] processed 100000 agents, took 50567ms
[2025-01-07T14:43:00.762+01:00][INFO ][plugins.fleet] Removing task fleet:unenroll_action:retry:check:c3e12928-bbfe-4731-bdc2-c47bcac727a7
```
## Summary
Fixes#198754
Restore previous removed tests when performing the refactor.
The new tests take advantage of the new architecture to be more modular
and close to the logic modules.
The `data_loader` tests are not just covering the re-render logic but
also some `expression_params` logic, who in the past have proven to be
the source of some bugs: specifically the tests will check that the
params are correctly passed to the params logic and then stored
correctly in the observable.
New mocks take advantage of the plain initializers to build some of the
API, that will make it in sync with the actual implementation for future
maintenance.
### Checklist
Check the PR satisfies following conditions.
- [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: Marta Bondyra <4283304+mbondyra@users.noreply.github.com>
This change converts Cypress tests for the custom logs flow into
Playwright using [the Scout
wrapper](https://github.com/elastic/kibana/tree/main/packages/kbn-scout).
> [!NOTE]
> As Scout package is still being developed, the PR pipeline configured
to runs Playwright tests only when code in certain plugins have been
changed and not on every PR.
### How to run tests locally
Start the Scout server
```bash
node scripts/scout.js start-server --stateful
```
In a separate terminal run the tests
```bash
npx playwright test --config x-pack/solutions/observability/plugins/observability_onboarding/ui_tests/playwright.config.ts
```
Playwright runs browsers in a headless mode by default, user `--headed`
option if needed
## Summary
Enables new inference connector in the Automatic Import.
This PR also fixes the use of `inferenceEnabled` from
`useAssistantContext` since it is not available in AutoImport.
## To test
1. Update the value for `inferenceConnectorOn` to `true` in
`x-pack/platform/plugins/shared/stack_connectors/common/experimental_features.ts`
2. Create an inference connector using [OpenAI
creds](https://p.elstc.co/paste/36VivuC+#TnP7-Z7wBKDUg8fQ/lTycSCdwUxEEbHcyQ/Q0i3oEmO).
Configure the inference endpoint for completion and name the endpoint
`openai-completion-preconfig`
3. Now that the inference endpoint is created, add a [preconfigured
connector](https://p.elstc.co/paste/tFWF3LSA#0thBRW05e6KSSkLCDjQiH8GkECQySBiHm6zRMCUThlf)
with the same credentials.
4. Select the preconfigured selector in Automatic Import.
5. Test the Auto Import flow works.
---------
Co-authored-by: Steph Milovic <stephanie.milovic@elastic.co>
## Summary
This PR assigns owners for dependencies that are not yet claimed. These
assignments were a "best effort", and will likely need tweaking once
downstream teams start receiving renovate PRs.
## Summary
This PR updates the style of Lens to align it with the new Borealis
theme.
It covers the set of tasks in #203050 within the `Lens editor panels`
list.
Comments are applied in order as in the mentioned issue
---------
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
## Summary
Based on [work by @v1v to notify Slack teams when there are unsupported
FTR failures](https://github.com/elastic/kibana/pull/205260), I've added
the remaining ones for synthetics and inventory tests here.
## Summary
- Adds response actions client/APIs for isolate and release actions for
Microsoft Defender for Endpoint
- The feature is behind a feature flag
`responseActionsMSDefenderEndpointEnabled`
## Summary
Fixes https://github.com/elastic/kibana/issues/199494
This PR allows to create and update rule with `notify_when` and
`throttle` attributes at rule level instead of `action.frequency` level.
### How to test
- create a rule via api where `notify_when` and `throttle` attributes
are at rule level
<details><summary>Example</summary>
Note: use your existing connector for action
```typescript
POST kbn:/api/alerting/rule
{
"tags": [],
"params": {
"searchConfiguration": {
"query": {
"query": "",
"language": "kuery"
},
"index": "ff959d40-b880-11e8-a6d9-e546fe2bba5f"
},
"timeField": "order_date",
"searchType": "searchSource",
"timeWindowSize": 5,
"timeWindowUnit": "d",
"threshold": [
10
],
"thresholdComparator": ">",
"size": 100,
"aggType": "count",
"groupBy": "all",
"termSize": 5,
"excludeHitsFromPreviousRun": false,
"sourceFields": []
},
"schedule": {
"interval": "1m"
},
"consumer": "stackAlerts",
"name": "ES query rule from devtools",
"rule_type_id": ".es-query",
"notify_when": "onThrottleInterval",
"throttle": "1h",
"actions": [
{
"group": "query matched",
"id": "ad923c8a-d27d-41a9-8c71-d33d94db4abb",
"params": {
"documents": [
{
"name": "{{rule.name}}"
}
]
}
}
],
"alert_delay": {
"active": 1
}
}
```
</details>
- open the created rule
- go to `settings` tab
- verify that dropdowns reflect notify_when and throttle value correctly
- update the rule via UI and verify the same
- update the rule via API and verify the same
### Flaky test runner:
https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/7684
### Checklist
Check the PR satisfies following conditions.
- [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
## Summary
Closes https://github.com/elastic/kibana/issues/205936
This PR aims to solve the flakiness of deep_links.cy test.
- Instead of doing everything under 2 tests, we run a test for each
assertion and clean everything up.
- Ensures scroll div has content to be able to scroll
- scrolls to center or bottom depending on the position
Fixes#192663
## Summary
Add functional tests that verify the number of panel types registered in
the dashboards Add panel flyout. Any changes to the number of registered
panel types will trigger a review from the
`@elastic/kibana-presentation` team.
This PR also adds an additional test for panel types registered with an
advanced license.
## Summary
Fixed privileges display for features/subFeatures that require all
spaces.
### Before
Role privileges display for only `Default` space selected
<img width="728" alt="Screenshot 2024-12-17 at 13 32 17"
src="https://github.com/user-attachments/assets/151b7012-aa1a-430c-be22-cc91e64362e3"
/>
Privileges summary display for only `Default` space selected
<img width="471" alt="Screenshot 2024-12-17 at 13 32 50"
src="https://github.com/user-attachments/assets/964c2223-163d-4081-a37d-196f5df5df5c"
/>
### After
Role privileges display for only `Default` space selected
<img width="739" alt="Screenshot 2024-12-17 at 13 30 00"
src="https://github.com/user-attachments/assets/0f98a9d7-211d-46ec-82c6-25d29a44be6b"
/>
Privileges summary display for only `Default` space selected
<img width="569" alt="Screenshot 2024-12-17 at 13 30 19"
src="https://github.com/user-attachments/assets/932771fd-6486-4b7e-9de5-6cd34ab74dc9"
/>
### How to test
With `Default` space:
1. Navigate to Creating a new Role and assign Kibana privileges.
2. Set the Spaces to `Default` Space and the privilege level to All.
3. Navigate to Management category and verify that Fleet is set to
`None`.
4. Click on "View privilege summary" and verify that Fleet is set to
`None`.
With `*All Spaces`:
1. Navigate to Creating a new Role and assign Kibana privileges.
2. Set the Spaces to `*All Spaces` and the privilege level to All.
3. Navigate to Management category and verify that Fleet is set to `All`
4. Click on "View privilege summary" and verify that Fleet is set to
`All`
### Checklist
Check the PR satisfies following conditions.
- [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
- [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)
__Fixes: https://github.com/elastic/kibana/issues/194686__
## Release Note
Fixed privileges display for features/subFeatures that require all
spaces.
---------
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
## Summary
Closes#202300
This PR changes the entity client function to v2 (`searchEntities`) in
`getLatestEntity`. After the change to use `v2.searchEntities` the
parameters are also updated to include the time range (`start` and `end`
are required)
## Testing
~- We can create some definitions manually- in the Kibana DEV tools: ~ -
Not needed after we merged the V2 PR
- In a local environment enable the entities feature flag ( it should be
a clean env as the entities should not be enabled before ):
<img width="1911" alt="image"
src="https://github.com/user-attachments/assets/75d6f77d-5039-41ca-80ca-34c3bf99844e"
/>
- Some hosts and containers are required - oblt cluster/metricbeat or
- Create hosts using synthtrace:
```
node scripts/synthtrace infra_hosts_with_apm_hosts
--scenarioOpts.numInstances=20
```
- Create containers using synthtrace:
```
node scripts/synthtrace infra_docker_containers.ts
```
- In the UI
- Open asset details view for hosts and containers and check the summary
endpoint response:
⚠️ Updated:

- If the entities FF is disabled (default: no `logs` should be part of
the `sourceDataStreams`):

---------
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Co-authored-by: Sergi Romeu <sergi.romeu@elastic.co>
## Summary
Turn AssetInventory plugin into a simple Security solution page based on
this conversation:
- https://github.com/elastic/security-team/issues/10346
Follow-up of this work, where we initially developed the Asset Inventory
bare-bones as a plugin:
- https://github.com/elastic/kibana/issues/201704
Part of this work stream though not originally planned:
- https://github.com/elastic/security-team/issues/11247?reload=1
### Motivation
Reasoning behind is enabling fast development changes without any major
refactors in other packages/components that need to be reused, which
seems impossible as of now with the current codebase.
### Checklist
- [x] 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)
- [x] 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.
- [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)
### Identify risks
In the future, we'll probably have to turn AssetInventory into a
sub-plugin again. Doing so doesn't bring any risk in the present, and
should only involve the re-generation of the deleted files in this PR.
---------
Co-authored-by: Paulo Henrique <paulo.henrique@elastic.co>
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
## Summary
https://github.com/elastic/kibana/issues/202499
### Running Kibana with the Borealis theme
In order to run Kibana with Borealis, you'll need to do the following:
Set the following in kibana.dev.yml:
uiSettings.experimental.themeSwitcherEnabled: true
Run Kibana with the following environment variable set:
KBN_OPTIMIZER_THEMES="borealislight,borealisdark,v8light,v8dark" yarn
start
This will expose a toggle under Stack Management > Advanced Settings >
Theme version, which you can use to toggle between Amsterdam and
Borealis.

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