From 94c84d88d0c144ca39d9d95aa40f30d4a2132586 Mon Sep 17 00:00:00 2001 From: Kenneth Kreindler <42113355+KDKHD@users.noreply.github.com> Date: Wed, 15 Oct 2025 09:50:22 +0100 Subject: [PATCH 1/2] [GenAi] Enable the Default LLM Setting feature flag by default <9.1 (#238986) ## Summary Summarize your PR. If it involves visual changes include a screenshot or gif. Related: https://github.com/elastic/kibana/pull/238982 Enables the new Default LLM setting by default. The feature flag will be cleaned up in the future. ### 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) - [X] [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 - [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] [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) - [X] Review the [backport guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing) and apply applicable `backport:*` labels. ### 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) - [ ] ... --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> (cherry picked from commit 270256a85d98ad245239a5baf2cdb2b14d7dbaa5) # Conflicts: # x-pack/solutions/security/plugins/security_solution/common/constants.ts # x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_default_ai_connector_id.test.ts # x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_default_ai_connector_id.ts # x-pack/solutions/security/plugins/security_solution/public/flyout/ai_for_soc/components/connector_missing_callout.tsx --- .../src/components/default_ai_connector.tsx | 11 ++++++++++- .../plugins/security_solution/common/constants.ts | 7 +++++++ .../components/connector_missing_callout.tsx | 12 +++++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/x-pack/platform/packages/shared/ai-assistant-default-llm-setting/src/components/default_ai_connector.tsx b/x-pack/platform/packages/shared/ai-assistant-default-llm-setting/src/components/default_ai_connector.tsx index 3bc640dd0745a..8e7a975b56ec7 100644 --- a/x-pack/platform/packages/shared/ai-assistant-default-llm-setting/src/components/default_ai_connector.tsx +++ b/x-pack/platform/packages/shared/ai-assistant-default-llm-setting/src/components/default_ai_connector.tsx @@ -33,9 +33,13 @@ import { i18n } from '@kbn/i18n'; import { NO_DEFAULT_CONNECTOR } from '../lib/constants'; import { useDefaultAiConnectorSettingContext } from '../context/default_ai_connector_context'; +/** Feature flag for the default AI connector setting */ export const AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED = 'aiAssistant.defaultLlmSettingEnabled' as const; +/** The default value for the default AI connector setting */ +export const AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED_VALUE = true as const; + interface ConnectorData { connectors?: Array<{ id: string; @@ -272,7 +276,12 @@ export const DefaultAIConnector: React.FC = ({ connectors, settings }) => ); }, [elasticManagedLlmExists, application, docLinks]); - if (!featureFlags.getBooleanValue(AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED, false)) { + if ( + !featureFlags.getBooleanValue( + AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED, + AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED_VALUE + ) + ) { return null; } diff --git a/x-pack/solutions/security/plugins/security_solution/common/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/constants.ts index 73aec95b10e6c..0bd3016ff3543 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/constants.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/constants.ts @@ -174,6 +174,13 @@ export const ENABLE_NEWS_FEED_SETTING = 'securitySolution:enableNewsFeed' as con /** This Kibana Advanced Setting sets a default AI connector for serverless AI features (AI for SOC) */ export const DEFAULT_AI_CONNECTOR = 'securitySolution:defaultAIConnector' as const; +/** Feature flag for the default AI connector setting */ +export const AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED = + 'aiAssistant.defaultLlmSettingEnabled' as const; + +/** The default value for the default AI connector setting */ +export const AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED_VALUE = true as const; + /** This Kibana Advanced Setting allows users to enable/disable querying cold and frozen data tiers in analyzer */ export const EXCLUDE_COLD_AND_FROZEN_TIERS_IN_ANALYZER = 'securitySolution:excludeColdAndFrozenTiersInAnalyzer' as const; diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/ai_for_soc/components/connector_missing_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/ai_for_soc/components/connector_missing_callout.tsx index 7406169fd1b79..ee2e55be67b89 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/flyout/ai_for_soc/components/connector_missing_callout.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/ai_for_soc/components/connector_missing_callout.tsx @@ -9,6 +9,11 @@ import React, { memo, useCallback } from 'react'; import { EuiCallOut, EuiLink } from '@elastic/eui'; import { useNavigateTo } from '@kbn/security-solution-navigation'; import { i18n } from '@kbn/i18n'; +import { useKibana } from '../../../common/lib/kibana'; +import { + AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED, + AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED_VALUE, +} from '../../../../common/constants'; const MISSING_CONNECTOR = i18n.translate('xpack.securitySolution.alertSummary.missingConnector', { defaultMessage: 'Missing connector', @@ -51,9 +56,14 @@ export interface ConnectorMissingCalloutProps { */ export const ConnectorMissingCallout = memo( ({ canSeeAdvancedSettings }: ConnectorMissingCalloutProps) => { + const { featureFlags } = useKibana().services; + const useNewDefaultConnector = featureFlags.getBooleanValue( + AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED, + AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED_VALUE + ); const { navigateTo } = useNavigateTo(); const goToKibanaSettings = useCallback( - () => navigateTo({ appId: 'management', path: '/kibana/settings?query=defaultAIConnector' }), + () => navigateTo({ appId: 'management', path: useNewDefaultConnector ? "kibana/securityAiAssistantManagement?tab=connectors" : '/kibana/settings?query=defaultAIConnector' }), [navigateTo] ); From fb1ba1bca2471db8c0774c489b262266e1c5a4f1 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Wed, 15 Oct 2025 10:12:53 +0000 Subject: [PATCH 2/2] [CI] Auto-commit changed files from 'node scripts/eslint_all_files --no-cache --fix' --- .../ai_for_soc/components/connector_missing_callout.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/ai_for_soc/components/connector_missing_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/ai_for_soc/components/connector_missing_callout.tsx index ee2e55be67b89..87c348237acf6 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/flyout/ai_for_soc/components/connector_missing_callout.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/ai_for_soc/components/connector_missing_callout.tsx @@ -63,7 +63,13 @@ export const ConnectorMissingCallout = memo( ); const { navigateTo } = useNavigateTo(); const goToKibanaSettings = useCallback( - () => navigateTo({ appId: 'management', path: useNewDefaultConnector ? "kibana/securityAiAssistantManagement?tab=connectors" : '/kibana/settings?query=defaultAIConnector' }), + () => + navigateTo({ + appId: 'management', + path: useNewDefaultConnector + ? 'kibana/securityAiAssistantManagement?tab=connectors' + : '/kibana/settings?query=defaultAIConnector', + }), [navigateTo] );