diff --git a/src/platform/packages/shared/kbn-management/settings/setting_ids/index.ts b/src/platform/packages/shared/kbn-management/settings/setting_ids/index.ts
index 469c8f4576746..ba45811d6c549 100644
--- a/src/platform/packages/shared/kbn-management/settings/setting_ids/index.ts
+++ b/src/platform/packages/shared/kbn-management/settings/setting_ids/index.ts
@@ -189,6 +189,12 @@ export const SECURITY_SOLUTION_ENABLE_ASSET_INVENTORY_SETTING =
'securitySolution:enableAssetInventory' as const;
export const SECURITY_SOLUTION_ENABLE_CLOUD_CONNECTOR_SETTING =
'securitySolution:enableCloudConnector' as const;
+export const SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_MINUTES =
+ 'securitySolution:defaultValueReportMinutes' as const;
+export const SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_RATE =
+ 'securitySolution:defaultValueReportRate' as const;
+export const SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_TITLE =
+ 'securitySolution:defaultValueReportTitle' as const;
// Timelion settings
export const TIMELION_ES_DEFAULT_INDEX_ID = 'timelion:es.default_index';
export const TIMELION_ES_TIME_FIELD_ID = 'timelion:es.timefield';
diff --git a/src/platform/packages/shared/serverless/settings/security_project/index.ts b/src/platform/packages/shared/serverless/settings/security_project/index.ts
index f206d6d58f4f3..12f75bd722218 100644
--- a/src/platform/packages/shared/serverless/settings/security_project/index.ts
+++ b/src/platform/packages/shared/serverless/settings/security_project/index.ts
@@ -27,6 +27,9 @@ export const SECURITY_PROJECT_SETTINGS = [
settings.SECURITY_SOLUTION_ENABLE_GRAPH_VISUALIZATION_SETTING,
settings.SECURITY_SOLUTION_ENABLE_ASSET_INVENTORY_SETTING,
settings.SECURITY_SOLUTION_ENABLE_CLOUD_CONNECTOR_SETTING,
+ settings.SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_MINUTES,
+ settings.SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_RATE,
+ settings.SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_TITLE,
settings.GEN_AI_SETTINGS_DEFAULT_AI_CONNECTOR,
settings.GEN_AI_SETTINGS_DEFAULT_AI_CONNECTOR_DEFAULT_ONLY,
];
diff --git a/x-pack/platform/plugins/private/gen_ai_settings/common/constants.ts b/x-pack/platform/plugins/private/gen_ai_settings/common/constants.ts
index d52578fbe6d27..1cfad15d32c6f 100644
--- a/x-pack/platform/plugins/private/gen_ai_settings/common/constants.ts
+++ b/x-pack/platform/plugins/private/gen_ai_settings/common/constants.ts
@@ -6,6 +6,3 @@
*/
export const NO_DEFAULT_CONNECTOR = 'NO_DEFAULT_CONNECTOR';
-export const AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED =
- 'aiAssistant.defaultLlmSettingEnabled' as const;
-export const AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED_VALUE = true as const;
diff --git a/x-pack/platform/plugins/private/gen_ai_settings/public/components/gen_ai_settings_app.test.tsx b/x-pack/platform/plugins/private/gen_ai_settings/public/components/gen_ai_settings_app.test.tsx
index fa3dde041adbc..9c10ac640e846 100644
--- a/x-pack/platform/plugins/private/gen_ai_settings/public/components/gen_ai_settings_app.test.tsx
+++ b/x-pack/platform/plugins/private/gen_ai_settings/public/components/gen_ai_settings_app.test.tsx
@@ -22,13 +22,10 @@ const mockUseEnabledFeatures = useEnabledFeatures as jest.MockedFunction {
const coreStart = coreMock.createStart();
const setBreadcrumbs = jest.fn();
- const featureFlagsGetBooleanValueMock = jest.fn();
beforeEach(() => {
jest.clearAllMocks();
- featureFlagsGetBooleanValueMock.mockReturnValue(true);
-
coreStart.application.capabilities = {
...coreStart.application.capabilities,
management: {
@@ -38,11 +35,6 @@ describe('GenAiSettingsApp', () => {
},
};
- coreStart.featureFlags = {
- ...coreStart.featureFlags,
- getBooleanValue: featureFlagsGetBooleanValueMock,
- };
-
// Default mock for enabled features
mockUseEnabledFeatures.mockReturnValue({
showSpacesIntegration: true,
@@ -115,15 +107,6 @@ describe('GenAiSettingsApp', () => {
expect(screen.getByTestId('goToSpacesButton')).toBeInTheDocument();
});
- it('does not render default llm setting when feature is disabled', () => {
- featureFlagsGetBooleanValueMock.mockReturnValue(false);
-
- renderComponent();
-
- expect(screen.queryByTestId('defaultAiConnectorComboBox')).not.toBeInTheDocument();
- expect(screen.queryByTestId('defaultAiConnectorCheckbox')).not.toBeInTheDocument();
- });
-
it('should conditionally render sections based on settings', () => {
mockUseEnabledFeatures.mockReturnValue({
showSpacesIntegration: false,
diff --git a/x-pack/platform/plugins/private/gen_ai_settings/public/components/gen_ai_settings_app.tsx b/x-pack/platform/plugins/private/gen_ai_settings/public/components/gen_ai_settings_app.tsx
index d505740c24b00..1e8394a1a14ba 100644
--- a/x-pack/platform/plugins/private/gen_ai_settings/public/components/gen_ai_settings_app.tsx
+++ b/x-pack/platform/plugins/private/gen_ai_settings/public/components/gen_ai_settings_app.tsx
@@ -18,7 +18,6 @@ import {
EuiTitle,
EuiLink,
useEuiTheme,
- EuiButton,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
@@ -26,10 +25,6 @@ import type { ManagementAppMountParams } from '@kbn/management-plugin/public';
import { getSpaceIdFromPath } from '@kbn/spaces-utils';
import { isEmpty } from 'lodash';
-import {
- AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED,
- AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED_VALUE,
-} from '../../common/constants';
import { useEnabledFeatures } from '../contexts/enabled_features_context';
import { useKibana } from '../hooks/use_kibana';
import { GoToSpacesButton } from './go_to_spaces_button';
@@ -46,7 +41,7 @@ interface GenAiSettingsAppProps {
export const GenAiSettingsApp: React.FC = ({ setBreadcrumbs }) => {
const { services } = useKibana();
- const { application, http, docLinks, featureFlags } = services;
+ const { application, http, docLinks } = services;
const {
showSpacesIntegration,
isPermissionsBased,
@@ -97,11 +92,6 @@ export const GenAiSettingsApp: React.FC = ({ setBreadcrum
});
}, [application, http.basePath, isPermissionsBased]);
- const showDefaultLlmSetting = featureFlags.getBooleanValue(
- AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED,
- AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED_VALUE
- );
-
const connectorDescription = useMemo(() => {
if (!hasElasticManagedLlm) {
return (
@@ -112,7 +102,7 @@ export const GenAiSettingsApp: React.FC = ({ setBreadcrum
hasConnectorsAllPrivilege ? 'set up' : 'have'
} a Generative AI connector. {manageConnectors}`}
values={{
- manageConnectors: showDefaultLlmSetting ? (
+ manageConnectors: (
= ({ setBreadcrum
}
/>
- ) : null,
+ ),
}}
/>
@@ -156,7 +146,7 @@ export const GenAiSettingsApp: React.FC = ({ setBreadcrum
/>
),
- manageConnectors: showDefaultLlmSetting ? (
+ manageConnectors: (
= ({ setBreadcrum
defaultMessage="Manage connectors"
/>
- ) : null,
+ ),
elasticManagedLlm: (
= ({ setBreadcrum
canManageSpaces,
docLinks,
application,
- showDefaultLlmSetting,
]);
async function handleSave() {
@@ -208,34 +197,6 @@ export const GenAiSettingsApp: React.FC = ({ setBreadcrum
}
}
- const manageConnectorsButton = useMemo(() => {
- return (
- {
- application.navigateToApp('management', {
- path: 'insightsAndAlerting/triggersActionsConnectors/connectors',
- openInNewTab: true,
- });
- }}
- >
- {hasConnectorsAllPrivilege ? (
-
- ) : (
-
- )}
-
- );
- }, [application, hasConnectorsAllPrivilege]);
-
return (
<>
@@ -277,11 +238,7 @@ export const GenAiSettingsApp: React.FC
= ({ setBreadcrum
- {showDefaultLlmSetting ? (
-
- ) : (
- manageConnectorsButton
- )}
+
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 e6cab89ea8614..c7a57adad554f 100644
--- a/x-pack/solutions/security/plugins/security_solution/common/constants.ts
+++ b/x-pack/solutions/security/plugins/security_solution/common/constants.ts
@@ -194,22 +194,6 @@ export const ENABLE_NEWS_FEED_SETTING = 'securitySolution:enableNewsFeed' as con
/** This Kibana Advanced Setting sets a default AI connector for serverless AI features (EASE) */
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 sets a default AI value report minutes per alert */
-export const DEFAULT_VALUE_REPORT_MINUTES = 'securitySolution:defaultValueReportMinutes' as const;
-
-/** This Kibana Advanced Setting sets a default AI value report hourly analyst rate */
-export const DEFAULT_VALUE_REPORT_RATE = 'securitySolution:defaultValueReportRate' as const;
-
-/** This Kibana Advanced Setting sets a default title for the AI value report page */
-export const DEFAULT_VALUE_REPORT_TITLE = 'securitySolution:defaultValueReportTitle' 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/common/hooks/use_default_ai_connector_id.test.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_default_ai_connector_id.test.ts
index bb466cf287872..2c6ac21f579cc 100644
--- a/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_default_ai_connector_id.test.ts
+++ b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_default_ai_connector_id.test.ts
@@ -10,11 +10,6 @@ import { useDefaultAIConnectorId } from './use_default_ai_connector_id';
import { useKibana } from '../lib/kibana';
import { useAIConnectors } from './use_ai_connectors';
import { getDefaultConnector } from '@kbn/elastic-assistant/impl/assistant/helpers';
-import {
- AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED,
- AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED_VALUE,
- DEFAULT_AI_CONNECTOR,
-} from '../../../common/constants';
jest.mock('../lib/kibana');
jest.mock('./use_ai_connectors');
@@ -26,12 +21,6 @@ const mockGetDefaultConnector = getDefaultConnector as jest.Mock;
describe('useDefaultAIConnectorId', () => {
const mockSettings = {};
- const mockUiSettings = {
- get: jest.fn(),
- };
- const mockFeatureFlags = {
- getBooleanValue: jest.fn(),
- };
const mockConnectors = [
{ id: 'connector-1', name: 'Connector 1' },
{ id: 'connector-2', name: 'Connector 2' },
@@ -43,8 +32,6 @@ describe('useDefaultAIConnectorId', () => {
mockUseKibana.mockReturnValue({
services: {
settings: mockSettings,
- uiSettings: mockUiSettings,
- featureFlags: mockFeatureFlags,
},
});
@@ -53,29 +40,16 @@ describe('useDefaultAIConnectorId', () => {
isLoading: false,
});
- mockUiSettings.get.mockReturnValue('legacy-connector-id');
- mockFeatureFlags.getBooleanValue.mockReturnValue(false);
- mockGetDefaultConnector.mockReturnValue({ id: 'new-connector-id' });
+ mockGetDefaultConnector.mockReturnValue({ id: 'connector-id' });
});
- it('should return legacy connector id when new default connector feature is disabled', () => {
- mockFeatureFlags.getBooleanValue.mockReturnValue(false);
-
- const { result } = renderHook(() => useDefaultAIConnectorId());
-
- expect(result.current.defaultConnectorId).toBe('legacy-connector-id');
- });
-
- it('should return new connector id when new default connector feature is enabled', () => {
- mockFeatureFlags.getBooleanValue.mockReturnValue(true);
-
+ it('should return connector id from getDefaultConnector', () => {
const { result } = renderHook(() => useDefaultAIConnectorId());
- expect(result.current.defaultConnectorId).toBe('new-connector-id');
+ expect(result.current.defaultConnectorId).toBe('connector-id');
});
- it('should return undefined when new default connector feature is enabled but getDefaultConnector returns undefined', () => {
- mockFeatureFlags.getBooleanValue.mockReturnValue(true);
+ it('should return undefined when getDefaultConnector returns undefined', () => {
mockGetDefaultConnector.mockReturnValue(undefined);
const { result } = renderHook(() => useDefaultAIConnectorId());
@@ -83,8 +57,7 @@ describe('useDefaultAIConnectorId', () => {
expect(result.current.defaultConnectorId).toBeUndefined();
});
- it('should return undefined when new default connector feature is enabled but getDefaultConnector returns null', () => {
- mockFeatureFlags.getBooleanValue.mockReturnValue(true);
+ it('should return undefined when getDefaultConnector returns null', () => {
mockGetDefaultConnector.mockReturnValue(null);
const { result } = renderHook(() => useDefaultAIConnectorId());
@@ -92,36 +65,12 @@ describe('useDefaultAIConnectorId', () => {
expect(result.current.defaultConnectorId).toBeUndefined();
});
- it('should call getBooleanValue with correct parameters', () => {
- renderHook(() => useDefaultAIConnectorId());
-
- expect(mockFeatureFlags.getBooleanValue).toHaveBeenCalledWith(
- AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED,
- AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED_VALUE
- );
- });
-
- it('should call uiSettings.get with correct parameter', () => {
- renderHook(() => useDefaultAIConnectorId());
-
- expect(mockUiSettings.get).toHaveBeenCalledWith(DEFAULT_AI_CONNECTOR);
- });
-
it('should call getDefaultConnector with correct parameters', () => {
renderHook(() => useDefaultAIConnectorId());
expect(mockGetDefaultConnector).toHaveBeenCalledWith(mockConnectors, mockSettings);
});
- it('should return undefined when legacy connector id is undefined and new feature is disabled', () => {
- mockUiSettings.get.mockReturnValue(undefined);
- mockFeatureFlags.getBooleanValue.mockReturnValue(false);
-
- const { result } = renderHook(() => useDefaultAIConnectorId());
-
- expect(result.current.defaultConnectorId).toBeUndefined();
- });
-
it('should return isLoading true when connectors are loading', () => {
mockUseAIConnectors.mockReturnValue({
aiConnectors: mockConnectors,
diff --git a/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_default_ai_connector_id.ts b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_default_ai_connector_id.ts
index 34d0dbc00b94a..3aca18c2c3035 100644
--- a/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_default_ai_connector_id.ts
+++ b/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_default_ai_connector_id.ts
@@ -7,30 +7,20 @@
import { getDefaultConnector } from '@kbn/elastic-assistant/impl/assistant/helpers';
import { useMemo } from 'react';
-import {
- AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED,
- AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED_VALUE,
- DEFAULT_AI_CONNECTOR,
-} from '../../../common/constants';
import { useAIConnectors } from './use_ai_connectors';
import { useKibana } from '../lib/kibana';
export const useDefaultAIConnectorId = () => {
- const { settings, uiSettings, featureFlags } = useKibana().services;
+ const { settings } = useKibana().services;
const { aiConnectors: connectors, isLoading: isLoadingConnectors } = useAIConnectors();
- const legacyDefaultConnectorId = uiSettings.get(DEFAULT_AI_CONNECTOR);
- const useNewDefaultConnector = featureFlags.getBooleanValue(
- AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED,
- AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED_VALUE
- );
- const newDefaultConnectorId = getDefaultConnector(connectors, settings)?.id;
+ const defaultConnectorId = getDefaultConnector(connectors, settings)?.id;
return useMemo(
() => ({
- defaultConnectorId: useNewDefaultConnector ? newDefaultConnectorId : legacyDefaultConnectorId,
+ defaultConnectorId,
isLoading: isLoadingConnectors,
}),
- [useNewDefaultConnector, newDefaultConnectorId, legacyDefaultConnectorId, isLoadingConnectors]
+ [defaultConnectorId, isLoadingConnectors]
);
};
diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/ease/components/connector_missing_callout.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/ease/components/connector_missing_callout.test.tsx
index 14c66310dde85..8369d5d5c5990 100644
--- a/x-pack/solutions/security/plugins/security_solution/public/flyout/ease/components/connector_missing_callout.test.tsx
+++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/ease/components/connector_missing_callout.test.tsx
@@ -14,19 +14,10 @@ import {
} from './connector_missing_callout';
import { useNavigateTo } from '@kbn/security-solution-navigation';
-const mockedUseKibana = {
- services: {
- featureFlags: {
- getBooleanValue: jest.fn().mockReturnValue(false),
- },
- },
-};
-
jest.mock('@kbn/security-solution-navigation');
jest.mock('../../../common/lib/kibana', () => {
return {
...jest.requireActual('../../../common/lib/kibana'),
- useKibana: () => mockedUseKibana,
};
});
@@ -57,23 +48,6 @@ describe('ConnectorMissingCallout', () => {
getByTestId(MISSING_CONNECTOR_CALLOUT_LINK_TEST_ID).click();
- expect(navigateTo).toHaveBeenCalledWith({
- appId: 'management',
- path: '/kibana/settings?query=defaultAIConnector',
- });
- });
-
- it('should call navigateTo genAiSettings when clicking on link and useNewDefaultConnector is true', () => {
- const navigateTo = jest.fn();
- (useNavigateTo as jest.Mock).mockReturnValue({
- navigateTo,
- });
- mockedUseKibana.services.featureFlags.getBooleanValue.mockReturnValue(true);
-
- const { getByTestId } = render();
-
- getByTestId(MISSING_CONNECTOR_CALLOUT_LINK_TEST_ID).click();
-
expect(navigateTo).toHaveBeenCalledWith({
appId: 'management',
path: '/ai/genAiSettings',
diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/ease/components/connector_missing_callout.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/ease/components/connector_missing_callout.tsx
index 8a968526b9df5..7df40aadb962e 100644
--- a/x-pack/solutions/security/plugins/security_solution/public/flyout/ease/components/connector_missing_callout.tsx
+++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/ease/components/connector_missing_callout.tsx
@@ -9,11 +9,6 @@ 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',
@@ -55,21 +50,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: useNewDefaultConnector
- ? '/ai/genAiSettings'
- : '/kibana/settings?query=defaultAIConnector',
+ path: '/ai/genAiSettings',
}),
- [navigateTo, useNewDefaultConnector]
+ [navigateTo]
);
return (
diff --git a/x-pack/solutions/security/plugins/security_solution/public/reports/components/ai_value/executive_summary.tsx b/x-pack/solutions/security/plugins/security_solution/public/reports/components/ai_value/executive_summary.tsx
index c23d1a3198e92..f7afc5b78fc0f 100644
--- a/x-pack/solutions/security/plugins/security_solution/public/reports/components/ai_value/executive_summary.tsx
+++ b/x-pack/solutions/security/plugins/security_solution/public/reports/components/ai_value/executive_summary.tsx
@@ -19,7 +19,7 @@ import {
EuiSkeletonText,
} from '@elastic/eui';
import { css } from '@emotion/react';
-import { DEFAULT_VALUE_REPORT_TITLE } from '../../../../common/constants';
+import { SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_TITLE } from '@kbn/management-settings-ids';
import { useKibana } from '../../../common/lib/kibana';
import { CostSavings } from './cost_savings';
import { getTimeRangeAsDays, formatDollars, formatThousands } from './metrics';
@@ -53,10 +53,12 @@ export const ExecutiveSummary: React.FC = ({
valueMetricsCompare,
}) => {
const { uiSettings } = useKibana().services;
- const [title, setTitle] = useState(uiSettings.get(DEFAULT_VALUE_REPORT_TITLE));
+ const [title, setTitle] = useState(
+ uiSettings.get(SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_TITLE)
+ );
const updateTitle = useCallback(
(newTitle: string) => {
- uiSettings.set(DEFAULT_VALUE_REPORT_TITLE, newTitle);
+ uiSettings.set(SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_TITLE, newTitle);
setTitle(newTitle);
},
[uiSettings]
diff --git a/x-pack/solutions/security/plugins/security_solution/public/reports/components/ai_value/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/reports/components/ai_value/index.test.tsx
index 0fced80c9251f..4654eab09ed11 100644
--- a/x-pack/solutions/security/plugins/security_solution/public/reports/components/ai_value/index.test.tsx
+++ b/x-pack/solutions/security/plugins/security_solution/public/reports/components/ai_value/index.test.tsx
@@ -7,6 +7,10 @@
import React from 'react';
import { render } from '@testing-library/react';
+import {
+ SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_MINUTES,
+ SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_RATE,
+} from '@kbn/management-settings-ids';
import { AIValueMetrics } from '.';
import { useKibana } from '../../../common/lib/kibana';
import { useValueMetrics } from '../../hooks/use_value_metrics';
@@ -14,10 +18,6 @@ import { ExecutiveSummary } from './executive_summary';
import { AlertProcessing } from './alert_processing';
import { CostSavingsTrend } from './cost_savings_trend';
import { ValueReportSettings } from './value_report_settings';
-import {
- DEFAULT_VALUE_REPORT_MINUTES,
- DEFAULT_VALUE_REPORT_RATE,
-} from '../../../../common/constants';
import type { StartServices } from '../../../types';
// Mock dependencies
@@ -80,8 +80,8 @@ describe('AIValueMetrics', () => {
services: {
uiSettings: {
get: jest.fn((key: string) => {
- if (key === DEFAULT_VALUE_REPORT_MINUTES) return 10;
- if (key === DEFAULT_VALUE_REPORT_RATE) return 50;
+ if (key === SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_MINUTES) return 10;
+ if (key === SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_RATE) return 50;
return null;
}),
},
@@ -202,8 +202,8 @@ describe('AIValueMetrics', () => {
uiSettings: {
// @ts-ignore
get: jest.fn((key: string) => {
- if (key === DEFAULT_VALUE_REPORT_MINUTES) return 5;
- if (key === DEFAULT_VALUE_REPORT_RATE) return 75;
+ if (key === SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_MINUTES) return 5;
+ if (key === SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_RATE) return 75;
return null;
}),
},
diff --git a/x-pack/solutions/security/plugins/security_solution/public/reports/components/ai_value/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/reports/components/ai_value/index.tsx
index b7eab5b488757..38c1eda95c29d 100644
--- a/x-pack/solutions/security/plugins/security_solution/public/reports/components/ai_value/index.tsx
+++ b/x-pack/solutions/security/plugins/security_solution/public/reports/components/ai_value/index.tsx
@@ -8,11 +8,11 @@
import React, { useEffect, useMemo } from 'react';
import { EuiHorizontalRule, useEuiTheme } from '@elastic/eui';
import { css } from '@emotion/react';
-import { ValueReportSettings } from './value_report_settings';
import {
- DEFAULT_VALUE_REPORT_MINUTES,
- DEFAULT_VALUE_REPORT_RATE,
-} from '../../../../common/constants';
+ SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_MINUTES,
+ SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_RATE,
+} from '@kbn/management-settings-ids';
+import { ValueReportSettings } from './value_report_settings';
import { CostSavingsTrend } from './cost_savings_trend';
import { ExecutiveSummary } from './executive_summary';
import { AlertProcessing } from './alert_processing';
@@ -30,8 +30,8 @@ export const AIValueMetrics: React.FC = ({ setHasAttackDiscoveries, from,
const { analystHourlyRate, minutesPerAlert } = useMemo(
() => ({
- minutesPerAlert: uiSettings.get(DEFAULT_VALUE_REPORT_MINUTES),
- analystHourlyRate: uiSettings.get(DEFAULT_VALUE_REPORT_RATE),
+ minutesPerAlert: uiSettings.get(SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_MINUTES),
+ analystHourlyRate: uiSettings.get(SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_RATE),
}),
[uiSettings]
);
diff --git a/x-pack/solutions/security/plugins/security_solution/server/ui_settings.ts b/x-pack/solutions/security/plugins/security_solution/server/ui_settings.ts
index 262ded89be203..722fa804504a2 100644
--- a/x-pack/solutions/security/plugins/security_solution/server/ui_settings.ts
+++ b/x-pack/solutions/security/plugins/security_solution/server/ui_settings.ts
@@ -9,11 +9,13 @@ import { i18n } from '@kbn/i18n';
import { schema } from '@kbn/config-schema';
import type { CoreSetup, UiSettingsParams } from '@kbn/core/server';
-import type { Connector } from '@kbn/actions-plugin/server/application/connector/types';
-import type { ReadonlyModeType } from '@kbn/core-ui-settings-common';
+import {
+ SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_MINUTES,
+ SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_RATE,
+ SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_TITLE,
+} from '@kbn/management-settings-ids';
import {
APP_ID,
- DEFAULT_AI_CONNECTOR,
DEFAULT_ALERT_TAGS_KEY,
DEFAULT_ALERT_TAGS_VALUE,
DEFAULT_ANOMALY_SCORE,
@@ -30,9 +32,6 @@ import {
DEFAULT_THREAT_INDEX_KEY,
DEFAULT_THREAT_INDEX_VALUE,
DEFAULT_TO,
- DEFAULT_VALUE_REPORT_MINUTES,
- DEFAULT_VALUE_REPORT_RATE,
- DEFAULT_VALUE_REPORT_TITLE,
ENABLE_ASSET_INVENTORY_SETTING,
ENABLE_CCS_READ_WARNING_SETTING,
ENABLE_CLOUD_CONNECTOR_SETTING,
@@ -622,33 +621,8 @@ export const initUiSettings = (
uiSettings.register(orderSettings(securityUiSettings));
};
-export const getDefaultAIConnectorSetting = (
- connectors: Connector[],
- readonlyMode?: ReadonlyModeType
-): SettingsConfig => ({
- [DEFAULT_AI_CONNECTOR]: {
- name: i18n.translate('xpack.securitySolution.uiSettings.defaultAIConnectorLabel', {
- defaultMessage: 'Default AI Connector',
- }),
- // TODO, make Elastic LLM the default value once fully available in serverless
- value: connectors.at(0)?.id,
- description: i18n.translate('xpack.securitySolution.uiSettings.defaultAIConnectorDescription', {
- defaultMessage: 'Default AI connector for serverless AI features (Elastic AI SOC Engine)',
- }),
- type: 'select',
- options: connectors.map(({ id }) => id),
- optionLabels: Object.fromEntries(connectors.map(({ id, name }) => [id, name])),
- category: [APP_ID],
- requiresPageReload: true,
- schema: schema.string(),
- solutionViews: ['classic', 'security'],
- readonlyMode,
- readonly: readonlyMode !== undefined,
- },
-});
-
export const getDefaultValueReportSettings = (): SettingsConfig => ({
- [DEFAULT_VALUE_REPORT_MINUTES]: {
+ [SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_MINUTES]: {
name: i18n.translate('xpack.securitySolution.uiSettings.defaultValueMinutesLabel', {
defaultMessage: 'Value report minutes per alert',
}),
@@ -666,7 +640,7 @@ export const getDefaultValueReportSettings = (): SettingsConfig => ({
schema: schema.number(),
solutionViews: ['classic', 'security'],
},
- [DEFAULT_VALUE_REPORT_RATE]: {
+ [SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_RATE]: {
name: i18n.translate('xpack.securitySolution.uiSettings.defaultValueRateLabel', {
defaultMessage: 'Value report analyst hourly rate',
}),
@@ -681,7 +655,7 @@ export const getDefaultValueReportSettings = (): SettingsConfig => ({
schema: schema.number(),
solutionViews: ['classic', 'security'],
},
- [DEFAULT_VALUE_REPORT_TITLE]: {
+ [SECURITY_SOLUTION_DEFAULT_VALUE_REPORT_TITLE]: {
name: i18n.translate('xpack.securitySolution.uiSettings.defaultValueTitleLabel', {
defaultMessage: 'Value report title',
}),
diff --git a/x-pack/solutions/security/plugins/security_solution/tsconfig.json b/x-pack/solutions/security/plugins/security_solution/tsconfig.json
index bd9995ff8ab9a..97d130e8008af 100644
--- a/x-pack/solutions/security/plugins/security_solution/tsconfig.json
+++ b/x-pack/solutions/security/plugins/security_solution/tsconfig.json
@@ -259,7 +259,6 @@
"@kbn/onechat-server",
"@kbn/core-analytics-server-mocks",
"@kbn/object-utils",
- "@kbn/core-ui-settings-common",
"@kbn/react-query",
"@kbn/core-chrome-layout-constants",
"@kbn/response-ops-rule-form",
diff --git a/x-pack/solutions/security/plugins/security_solution_serverless/server/plugin.ts b/x-pack/solutions/security/plugins/security_solution_serverless/server/plugin.ts
index 614e035edc401..aa345a9c7ddba 100644
--- a/x-pack/solutions/security/plugins/security_solution_serverless/server/plugin.ts
+++ b/x-pack/solutions/security/plugins/security_solution_serverless/server/plugin.ts
@@ -14,13 +14,7 @@ import type {
} from '@kbn/core/server';
import { SECURITY_PROJECT_SETTINGS } from '@kbn/serverless-security-settings';
-import { isSupportedConnector } from '@kbn/inference-common';
-import {
- getDefaultAIConnectorSetting,
- getDefaultValueReportSettings,
-} from '@kbn/security-solution-plugin/server/ui_settings';
-import type { Connector } from '@kbn/actions-plugin/server/application/connector/types';
-import { AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED } from '@kbn/security-solution-plugin/common/constants';
+import { getDefaultValueReportSettings } from '@kbn/security-solution-plugin/server/ui_settings';
import { getEnabledProductFeatures } from '../common/pli/pli_features';
import type { ServerlessSecurityConfig } from './config';
@@ -97,35 +91,9 @@ export class SecuritySolutionServerlessPlugin
pluginsSetup.serverless.setupProjectSettings(projectSettings);
// Serverless Advanced Settings setup
- coreSetup
- .getStartServices()
- .then(async ([coreStart, depsStart]) => {
- const isNewDefaultConnectorEnabled = await coreStart.featureFlags.getBooleanValue(
- AI_ASSISTANT_DEFAULT_LLM_SETTING_ENABLED,
- false
- );
- try {
- const unsecuredActionsClient = depsStart.actions.getUnsecuredActionsClient();
- // using "default" space actually forces the api to use undefined space (see getAllUnsecured)
- const aiConnectors = (await unsecuredActionsClient.getAll('default')).filter(
- (connector: Connector) => isSupportedConnector(connector)
- );
-
- // hide the setting if the new default connector feature is enabled
- const defaultAIConnectorSetting = getDefaultAIConnectorSetting(
- aiConnectors,
- isNewDefaultConnectorEnabled ? 'ui' : undefined
- );
-
- coreSetup.uiSettings.register({
- ...defaultAIConnectorSetting,
- ...getDefaultValueReportSettings(),
- });
- } catch (error) {
- this.logger.error(`Error registering default AI connector: ${error}`);
- }
- })
- .catch(() => {}); // it shouldn't reject, but just in case
+ coreSetup.uiSettings.register({
+ ...getDefaultValueReportSettings(),
+ });
// Tasks
this.cloudSecurityUsageReportingTask = new SecurityUsageReportingTask({
diff --git a/x-pack/solutions/security/plugins/security_solution_serverless/tsconfig.json b/x-pack/solutions/security/plugins/security_solution_serverless/tsconfig.json
index 6e8ec6d155f1d..8a5bc9b226c57 100644
--- a/x-pack/solutions/security/plugins/security_solution_serverless/tsconfig.json
+++ b/x-pack/solutions/security/plugins/security_solution_serverless/tsconfig.json
@@ -46,7 +46,6 @@
"@kbn/dev-utils",
"@kbn/ai-assistant-icon",
"@kbn/core-application-browser",
- "@kbn/inference-common",
"@kbn/deeplinks-management",
"@kbn/connector-schemas",
]