diff --git a/x-pack/packages/security-solution/features/src/assistant/index.ts b/x-pack/packages/security-solution/features/src/assistant/index.ts index eaca4b4913ee25..ea0658d7954556 100644 --- a/x-pack/packages/security-solution/features/src/assistant/index.ts +++ b/x-pack/packages/security-solution/features/src/assistant/index.ts @@ -9,11 +9,13 @@ import type { ProductFeatureParams } from '../types'; import { getAssistantBaseKibanaFeature } from './kibana_features'; import { getAssistantBaseKibanaSubFeatureIds, - assistantSubFeaturesMap, + getAssistantSubFeaturesMap, } from './kibana_sub_features'; -export const getAssistantFeature = (): ProductFeatureParams => ({ +export const getAssistantFeature = ( + experimentalFeatures: Record +): ProductFeatureParams => ({ baseKibanaFeature: getAssistantBaseKibanaFeature(), baseKibanaSubFeatureIds: getAssistantBaseKibanaSubFeatureIds(), - subFeaturesMap: assistantSubFeaturesMap, + subFeaturesMap: getAssistantSubFeaturesMap(experimentalFeatures), }); diff --git a/x-pack/packages/security-solution/features/src/assistant/kibana_sub_features.ts b/x-pack/packages/security-solution/features/src/assistant/kibana_sub_features.ts index d116aa36d21f0a..dbf9505193ecfb 100644 --- a/x-pack/packages/security-solution/features/src/assistant/kibana_sub_features.ts +++ b/x-pack/packages/security-solution/features/src/assistant/kibana_sub_features.ts @@ -102,9 +102,28 @@ export const getAssistantBaseKibanaSubFeatureIds = (): AssistantSubFeatureId[] = * Defines all the Security Assistant subFeatures available. * The order of the subFeatures is the order they will be displayed */ -export const assistantSubFeaturesMap = Object.freeze( - new Map([ +export const getAssistantSubFeaturesMap = ( + experimentalFeatures: Record +): Map => { + const assistantSubFeaturesList: Array<[AssistantSubFeatureId, SubFeatureConfig]> = [ [AssistantSubFeatureId.updateAnonymization, updateAnonymizationSubFeature], - [AssistantSubFeatureId.manageGlobalKnowledgeBase, manageGlobalKnowledgeBaseSubFeature], - ]) -); + ]; + + // Use the following code to add feature based on feature flag + // if (experimentalFeatures.featureFlagName) { + // assistantSubFeaturesList.push([AssistantSubFeatureId.featureId, featureSubFeature]); + // } + + if (experimentalFeatures.assistantKnowledgeBaseByDefault) { + assistantSubFeaturesList.push([ + AssistantSubFeatureId.manageGlobalKnowledgeBase, + manageGlobalKnowledgeBaseSubFeature, + ]); + } + + const assistantSubFeaturesMap = new Map( + assistantSubFeaturesList + ); + + return Object.freeze(assistantSubFeaturesMap); +}; diff --git a/x-pack/plugins/security_solution/server/lib/product_features_service/product_features_service.ts b/x-pack/plugins/security_solution/server/lib/product_features_service/product_features_service.ts index e30c067a0d4a43..29ef513b40bb3f 100644 --- a/x-pack/plugins/security_solution/server/lib/product_features_service/product_features_service.ts +++ b/x-pack/plugins/security_solution/server/lib/product_features_service/product_features_service.ts @@ -62,7 +62,7 @@ export class ProductFeaturesService { casesFeature.baseKibanaSubFeatureIds ); - const assistantFeature = getAssistantFeature(); + const assistantFeature = getAssistantFeature(this.experimentalFeatures); this.securityAssistantProductFeatures = new ProductFeatures( this.logger, assistantFeature.subFeaturesMap, diff --git a/x-pack/test/api_integration/config.ts b/x-pack/test/api_integration/config.ts index e43c76d42adfa3..9cb5a134681a98 100644 --- a/x-pack/test/api_integration/config.ts +++ b/x-pack/test/api_integration/config.ts @@ -30,6 +30,9 @@ export async function getApiIntegrationConfig({ readConfigFile }: FtrConfigProvi '--xpack.ruleRegistry.write.enabled=true', '--xpack.ruleRegistry.write.enabled=true', '--xpack.ruleRegistry.write.cache.enabled=false', + `--xpack.securitySolution.enableExperimental=${JSON.stringify([ + 'assistantKnowledgeBaseByDefault', + ])}`, '--monitoring_collection.opentelemetry.metrics.prometheus.enabled=true', ], },