Skip to content

Commit

Permalink
Hide assistant's knowledge base UI when `assistantKnowledgeBaseByDefa…
Browse files Browse the repository at this point in the history
…ult` feature flag is disabled (elastic#196762)

## Summary

This is the followup to elastic#195733
where we implemented the RBAC to allow managing Global Knowledge Base
docs. With those changes we introduced a bug where we do not hide the
RBAC configuration setting when `assistantKnowledgeBaseByDefault`
feature flag is disabled. It means that in Serverless users will see
this setting but it will do nothing for them.

### Screenshots of the fixed behaviour

* `assistantKnowledgeBaseByDefault = true`

![Capture-2024-10-17-204859](https://github.com/user-attachments/assets/ca4489b1-8ad9-4e57-824f-455ddb74da6c)

* `assistantKnowledgeBaseByDefault = false`

![Capture-2024-10-17-204752](https://github.com/user-attachments/assets/fbd2511f-4e09-4ef9-8403-6578366728e4)

(cherry picked from commit f6e8065)
  • Loading branch information
e40pud committed Oct 19, 2024
1 parent 47c0f5e commit d2dd768
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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<AssistantSubFeatureId> => ({
export const getAssistantFeature = (
experimentalFeatures: Record<string, boolean>
): ProductFeatureParams<AssistantSubFeatureId> => ({
baseKibanaFeature: getAssistantBaseKibanaFeature(),
baseKibanaSubFeatureIds: getAssistantBaseKibanaSubFeatureIds(),
subFeaturesMap: assistantSubFeaturesMap,
subFeaturesMap: getAssistantSubFeaturesMap(experimentalFeatures),
});
Original file line number Diff line number Diff line change
Expand Up @@ -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<AssistantSubFeatureId, SubFeatureConfig>([
export const getAssistantSubFeaturesMap = (
experimentalFeatures: Record<string, boolean>
): Map<AssistantSubFeatureId, SubFeatureConfig> => {
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<AssistantSubFeatureId, SubFeatureConfig>(
assistantSubFeaturesList
);

return Object.freeze(assistantSubFeaturesMap);
};
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
3 changes: 3 additions & 0 deletions x-pack/test/api_integration/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
],
},
Expand Down

0 comments on commit d2dd768

Please sign in to comment.