diff --git a/config/serverless.chat.yml b/config/serverless.chat.yml index 01c7f4a06640..23b429b97d93 100644 --- a/config/serverless.chat.yml +++ b/config/serverless.chat.yml @@ -9,12 +9,6 @@ xpack.serverless.chat.enabled: true ## Cloud settings xpack.cloud.serverless.project_type: search -## Fine-tune the search solution feature privileges. Also, refer to `serverless.yml` for the project-agnostic overrides. -xpack.features.overrides: - ### Not sure if CHAT solution uses dashboard or maps - ### Maps feature is hidden in Role management since it's automatically granted by Dashboard feature. - maps_v2.hidden: true - ## Set the home route uiSettings.overrides.defaultRoute: /app/workchat @@ -29,4 +23,4 @@ xpack.wciExternalServer.enabled: true xpack.spaces.maxSpaces: 1 ## Content Connectors in stack management -xpack.contentConnectors.enabled: false +xpack.contentConnectors.enabled: false \ No newline at end of file diff --git a/config/serverless.es.yml b/config/serverless.es.yml index 98340eec46cb..5b854842bba3 100644 --- a/config/serverless.es.yml +++ b/config/serverless.es.yml @@ -50,8 +50,6 @@ xpack.features.overrides: dev_tools.category: "enterpriseSearch" ### Discover feature is moved from Analytics category to the Search one. discover_v2.category: "enterpriseSearch" - ### Maps feature is hidden in Role management since it's automatically granted by Dashboard feature. - maps_v2.hidden: true ### Machine Learning feature is moved from Analytics category to the Management one. ml.category: "management" ### Stack Alerts feature is moved from Analytics category to the Search one renamed to simply `Alerts`. diff --git a/config/serverless.oblt.yml b/config/serverless.oblt.yml index 3000b7905fd3..7239525421cb 100644 --- a/config/serverless.oblt.yml +++ b/config/serverless.oblt.yml @@ -84,8 +84,6 @@ xpack.features.overrides: privileges: [ "read" ] ### Logs feature is hidden in Role management since it's automatically granted by either Infrastructure, or Applications features. logs.hidden: true - ### Maps feature is hidden in Role management since it's automatically granted by Dashboard feature. - maps_v2.hidden: true ### Machine Learning feature should be moved from Analytics category to the Observability one and renamed to `AI Ops`. ml: category: "observability" diff --git a/config/serverless.security.complete.yml b/config/serverless.security.complete.yml index 9021ef5e2134..90c88072ef2a 100644 --- a/config/serverless.security.complete.yml +++ b/config/serverless.security.complete.yml @@ -1,4 +1 @@ # Security Complete tier config -xpack.features.overrides: - ### The following features are hidden in Role management since they're automatically granted by SIEM feature. - maps_v2.hidden: true diff --git a/config/serverless.security.essentials.yml b/config/serverless.security.essentials.yml index ac6621310a6e..ee2f03af7ef1 100644 --- a/config/serverless.security.essentials.yml +++ b/config/serverless.security.essentials.yml @@ -1,4 +1,2 @@ # Security Essentials tier config -xpack.features.overrides: - ### The following features are hidden in Role management since they're automatically granted by SIEM feature. - maps_v2.hidden: true + diff --git a/config/serverless.security.search_ai_lake.yml b/config/serverless.security.search_ai_lake.yml index c6c73721942c..78b7eab0b015 100644 --- a/config/serverless.security.search_ai_lake.yml +++ b/config/serverless.security.search_ai_lake.yml @@ -1,14 +1,9 @@ # Security Search AI Lake tier config -## Disable xpack plugins +## Disable plugins xpack.osquery.enabled: false -xpack.maps.enabled: false xpack.ml.ad.enabled: false xpack.ml.dfa.enabled: false -xpack.lens.enabled: false - -### Disable shared plugins -visualizations.enabled: false ## Disable plugin features xpack.alerting.maintenanceWindow.enabled: false @@ -23,51 +18,6 @@ xpack.features.overrides: siemV2.description: null securitySolutionSiemMigrations.hidden: true - ## Fine-tune the security solution essentials feature privileges. These feature privilege overrides are set individually for each project type. Also, refer to `serverless.yml` for the project-agnostic overrides. - dashboard: - privileges: - ## We do not need to compose dashboard from maps and visualizations because these functionalities are disabled in this tier - ## Setting to empty array so the values from serverless.yml or serverless.security.yml are overwritten - all.composedOf: [] - read.composedOf: [] - dashboard_v2: - privileges: - ## Setting to empty array so the values from serverless.yml or serverless.security.yml are overwritten - ## We do not need to compose dashboard from maps and visualizations because these functionalities are disabled in this tier - all.composedOf: [] - read.composedOf: [] - siemV2: - privileges: - all.composedOf: - ## Limited values so the fields from serverless.yml or serverless.security.yml are overwritten - ## We do not need to compose siemV2 from maps and visualizations because these functionalities are disabled in this tier - - feature: "discover_v2" - privileges: [ "all" ] - - feature: "dashboard_v2" - privileges: [ "all" ] - read.composedOf: - - feature: "discover_v2" - privileges: [ "read" ] - - feature: "dashboard_v2" - privileges: [ "read" ] - siem: - privileges: - all.composedOf: - ## Limited values so the fields from serverless.yml or serverless.security.yml are overwritten - ## We do not need to compose siemV2 from maps and visualizations because these functionalities are disabled in this tier - - feature: "discover_v2" - privileges: [ "all" ] - - feature: "dashboard_v2" - privileges: [ "all" ] - - feature: "savedQueryManagement" - privileges: [ "all" ] - read.composedOf: - - feature: "discover_v2" - privileges: [ "read" ] - - feature: "dashboard_v2" - privileges: [ "read" ] - - feature: "savedQueryManagement" - privileges: [ "read" ] # Custom integrations/fleet settings xpack.fleet.agentless.isDefault: true xpack.fleet.integrationsHomeOverride: '/app/security/configurations/integrations' diff --git a/config/serverless.security.yml b/config/serverless.security.yml index 9203ff0a973f..1eafac1de30b 100644 --- a/config/serverless.security.yml +++ b/config/serverless.security.yml @@ -18,6 +18,8 @@ xpack.features.overrides: dashboard_v2.hidden: true visualize.hidden: true visualize_v2.hidden: true + maps.hidden: true + maps_v2.hidden: true ### Machine Learning feature is moved from Analytics category to the Security one as the last item. ml: category: "security" diff --git a/config/serverless.yml b/config/serverless.yml index 41498417713c..dd648ee435d0 100644 --- a/config/serverless.yml +++ b/config/serverless.yml @@ -81,6 +81,8 @@ xpack.features.overrides: includeIn: "read" ### Shared images feature is hidden in Role management since it's not needed. filesSharedImage.hidden: true + ### Maps feature is hidden in Role management since it's automatically granted by Dashboard feature. + maps_v2.hidden: true ### Reporting feature is supposed to give access to reporting capabilities across different features. reporting: privileges: @@ -265,4 +267,4 @@ xpack.dataUsage.enabled: true xpack.dataUsage.enableExperimental: ['dataUsageDisabled'] ## Content Connectors in stack management -xpack.contentConnectors.enabled: true +xpack.contentConnectors.enabled: true \ No newline at end of file diff --git a/src/platform/plugins/private/vis_types/table/server/config.ts b/src/platform/plugins/private/vis_types/table/server/config.ts index 1bba85d4176b..ac588c1eec65 100644 --- a/src/platform/plugins/private/vis_types/table/server/config.ts +++ b/src/platform/plugins/private/vis_types/table/server/config.ts @@ -11,6 +11,7 @@ import { offeringBasedSchema, schema, TypeOf } from '@kbn/config-schema'; export const configSchema = schema.object({ enabled: schema.boolean({ defaultValue: true }), + readOnly: offeringBasedSchema({ serverless: schema.boolean({ defaultValue: false }), }), diff --git a/src/platform/plugins/shared/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts b/src/platform/plugins/shared/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts index 78b0f4126e5a..9b77fc7b3ad6 100644 --- a/src/platform/plugins/shared/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts +++ b/src/platform/plugins/shared/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts @@ -51,7 +51,7 @@ export const createVisEmbeddableFromObject = } const capabilities = { - visualizeSave: Boolean(getCapabilities().visualize_v2?.save), + visualizeSave: Boolean(getCapabilities().visualize_v2.save), dashboardSave: Boolean(getCapabilities().dashboard_v2?.showWriteControls), visualizeOpen: Boolean(getCapabilities().visualize_v2?.show), }; diff --git a/src/platform/plugins/shared/visualizations/server/config.ts b/src/platform/plugins/shared/visualizations/server/config.ts deleted file mode 100644 index a214fda08164..000000000000 --- a/src/platform/plugins/shared/visualizations/server/config.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { schema } from '@kbn/config-schema'; - -export const configSchema = schema.object({ - enabled: schema.boolean({ defaultValue: true }), -}); diff --git a/src/platform/plugins/shared/visualizations/server/index.ts b/src/platform/plugins/shared/visualizations/server/index.ts index a6b3e911693e..9045c49f262b 100644 --- a/src/platform/plugins/shared/visualizations/server/index.ts +++ b/src/platform/plugins/shared/visualizations/server/index.ts @@ -7,19 +7,11 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; -import { configSchema } from './config'; +import { PluginInitializerContext } from '@kbn/core/server'; // This exports static code and TypeScript types, // as well as, Kibana Platform `plugin()` initializer. -export const config: PluginConfigDescriptor = { - schema: configSchema, - exposeToBrowser: { - visualize_v2: { enabled: true }, - }, -}; - export async function plugin(initializerContext: PluginInitializerContext) { const { VisualizationsPlugin } = await import('./plugin'); return new VisualizationsPlugin(initializerContext); diff --git a/x-pack/platform/plugins/shared/aiops/kibana.jsonc b/x-pack/platform/plugins/shared/aiops/kibana.jsonc index 1e7fefaa4b03..d327a131aec4 100644 --- a/x-pack/platform/plugins/shared/aiops/kibana.jsonc +++ b/x-pack/platform/plugins/shared/aiops/kibana.jsonc @@ -14,6 +14,7 @@ "requiredPlugins": [ "charts", "data", + "lens", "licensing", "uiActions", "embeddable", @@ -26,8 +27,7 @@ "optionalPlugins": [ "cases", "observabilityAIAssistant", - "usageCollection", - "lens" + "usageCollection" ], "requiredBundles": [ "dataViews", @@ -38,4 +38,4 @@ "cases" ] } -} +} \ No newline at end of file diff --git a/x-pack/platform/plugins/shared/cases/kibana.jsonc b/x-pack/platform/plugins/shared/cases/kibana.jsonc index bd2d8c2263c1..e5dafa52a3a1 100644 --- a/x-pack/platform/plugins/shared/cases/kibana.jsonc +++ b/x-pack/platform/plugins/shared/cases/kibana.jsonc @@ -20,6 +20,7 @@ "actions", "data", "embeddable", + "lens", "licensing", "features", "triggersActionsUi", @@ -38,18 +39,16 @@ "taskManager", "usageCollection", "spaces", - "serverless", - "lens" + "serverless" ], "requiredBundles": [ "esUiShared", "kibanaReact", "kibanaUtils", - "savedObjectsFinder", - "lens" + "savedObjectsFinder" ], "extraPublicDirs": [ "common" ] } -} +} \ No newline at end of file diff --git a/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/kibana_react.mock.tsx b/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/kibana_react.mock.tsx index d8d6839c34d7..dab2420c3e97 100644 --- a/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/kibana_react.mock.tsx +++ b/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/kibana_react.mock.tsx @@ -27,11 +27,7 @@ interface StartServiceArgs { license?: ILicense | null; } -type StartServicesWithRequiredLens = StartServices & Required>; - -export const createStartServicesMock = ({ - license, -}: StartServiceArgs = {}): StartServicesWithRequiredLens => { +export const createStartServicesMock = ({ license }: StartServiceArgs = {}): StartServices => { const licensingPluginMock = licensingMock.createStart(); const triggersActionsUi = triggersActionsUiMock.createStart(); @@ -52,7 +48,7 @@ export const createStartServicesMock = ({ license != null ? { ...licensingPluginMock, license$: new BehaviorSubject(license) } : licensingPluginMock, - } as unknown as StartServicesWithRequiredLens; + } as unknown as StartServices; services.application.currentAppId$ = new BehaviorSubject('testAppId'); services.application.applications$ = new BehaviorSubject>( diff --git a/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/services.ts b/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/services.ts index 5b382c291210..d10f8a83cd59 100644 --- a/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/services.ts +++ b/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/services.ts @@ -10,7 +10,7 @@ import type { CasesUiConfigType } from '../../../../common/ui/types'; import type { CasesPublicStartDependencies } from '../../../types'; type GlobalServices = Pick & - Pick; + Pick; export class KibanaServices { private static kibanaVersion?: string; diff --git a/x-pack/platform/plugins/shared/cases/public/components/markdown_editor/plugins/lens/use_lens_open_visualization.tsx b/x-pack/platform/plugins/shared/cases/public/components/markdown_editor/plugins/lens/use_lens_open_visualization.tsx index e9577f67ccb2..d4f6ddee3a65 100644 --- a/x-pack/platform/plugins/shared/cases/public/components/markdown_editor/plugins/lens/use_lens_open_visualization.tsx +++ b/x-pack/platform/plugins/shared/cases/public/components/markdown_editor/plugins/lens/use_lens_open_visualization.tsx @@ -21,11 +21,14 @@ export const useLensOpenVisualization = ({ comment }: { comment: string }) => { const parsedComment = parseCommentString(comment); const lensVisualization = getLensVisualizations(parsedComment?.children ?? []); - const { lens } = useKibana().services; - const hasLensPermissions = lens?.canUseEditor(); + const { + lens: { navigateToPrefilledEditor, canUseEditor }, + } = useKibana().services; + + const hasLensPermissions = canUseEditor(); const handleClick = useCallback(() => { - lens?.navigateToPrefilledEditor( + navigateToPrefilledEditor( { id: '', timeRange: lensVisualization[0].timeRange, @@ -36,7 +39,7 @@ export const useLensOpenVisualization = ({ comment }: { comment: string }) => { openInNewTab: true, } ); - }, [lens, lensVisualization]); + }, [lensVisualization, navigateToPrefilledEditor]); if (!lensVisualization.length || lensVisualization?.[0]?.attributes == null) { return { canUseEditor: hasLensPermissions, actionConfig: null }; diff --git a/x-pack/platform/plugins/shared/cases/public/components/markdown_editor/use_plugins.ts b/x-pack/platform/plugins/shared/cases/public/components/markdown_editor/use_plugins.ts index bffd4667a99b..2ed36feebcb4 100644 --- a/x-pack/platform/plugins/shared/cases/public/components/markdown_editor/use_plugins.ts +++ b/x-pack/platform/plugins/shared/cases/public/components/markdown_editor/use_plugins.ts @@ -13,13 +13,12 @@ import { import { useMemo } from 'react'; import { useTimelineContext } from '../timeline_context/use_timeline_context'; import type { TemporaryProcessingPluginsType } from './types'; -import { KibanaServices, useApplicationCapabilities, useKibana } from '../../common/lib/kibana'; +import { KibanaServices, useApplicationCapabilities } from '../../common/lib/kibana'; import * as lensMarkdownPlugin from './plugins/lens'; import { ID as LensPluginId } from './plugins/lens/constants'; export const usePlugins = (disabledPlugins?: string[]) => { const kibanaConfig = KibanaServices.getConfig(); - const { services } = useKibana(); const timelinePlugins = useTimelineContext()?.editor_plugins; const appCapabilities = useApplicationCapabilities(); @@ -39,7 +38,6 @@ export const usePlugins = (disabledPlugins?: string[]) => { } if ( - services.lens !== undefined && kibanaConfig?.markdownPlugins?.lens && !disabledPlugins?.includes(LensPluginId) && appCapabilities?.visualize.crud @@ -60,7 +58,6 @@ export const usePlugins = (disabledPlugins?: string[]) => { appCapabilities?.visualize.crud, disabledPlugins, kibanaConfig?.markdownPlugins?.lens, - services.lens, timelinePlugins, ]); }; diff --git a/x-pack/platform/plugins/shared/cases/public/components/visualizations/lens_renderer.tsx b/x-pack/platform/plugins/shared/cases/public/components/visualizations/lens_renderer.tsx index c6119e29b234..8596b8f8bd30 100644 --- a/x-pack/platform/plugins/shared/cases/public/components/visualizations/lens_renderer.tsx +++ b/x-pack/platform/plugins/shared/cases/public/components/visualizations/lens_renderer.tsx @@ -15,14 +15,11 @@ import type { LensProps } from './types'; const LENS_VISUALIZATION_HEIGHT = 200; const LensRendererComponent: React.FC = ({ attributes, timeRange, metadata }) => { - const { lens } = useKibana().services; + const { + lens: { EmbeddableComponent }, + } = useKibana().services; const { euiTheme } = useEuiTheme(); - if (!lens) { - return null; - } - const { EmbeddableComponent } = lens; - if (!attributes) { return null; } diff --git a/x-pack/platform/plugins/shared/cases/public/components/visualizations/open_lens_button.tsx b/x-pack/platform/plugins/shared/cases/public/components/visualizations/open_lens_button.tsx index cb16e0dbb13c..c6a49bb285a2 100644 --- a/x-pack/platform/plugins/shared/cases/public/components/visualizations/open_lens_button.tsx +++ b/x-pack/platform/plugins/shared/cases/public/components/visualizations/open_lens_button.tsx @@ -15,10 +15,12 @@ import type { LensProps } from './types'; type Props = LensProps & { attachmentId: string }; const OpenLensButtonComponent: React.FC = ({ attachmentId, attributes, timeRange }) => { - const { lens } = useKibana().services; + const { + lens: { navigateToPrefilledEditor, canUseEditor }, + } = useKibana().services; const onClick = useCallback(() => { - lens?.navigateToPrefilledEditor( + navigateToPrefilledEditor( { id: attachmentId, timeRange, @@ -28,9 +30,9 @@ const OpenLensButtonComponent: React.FC = ({ attachmentId, attributes, ti openInNewTab: true, } ); - }, [attachmentId, attributes, lens, timeRange]); + }, [attachmentId, attributes, navigateToPrefilledEditor, timeRange]); - const hasLensPermissions = lens?.canUseEditor(); + const hasLensPermissions = canUseEditor(); const isESQLQuery = isOfAggregateQueryType(attributes.state.query); if (!hasLensPermissions || isESQLQuery) { diff --git a/x-pack/platform/plugins/shared/cases/public/types.ts b/x-pack/platform/plugins/shared/cases/public/types.ts index ca59f44472f0..08e5787681a9 100644 --- a/x-pack/platform/plugins/shared/cases/public/types.ts +++ b/x-pack/platform/plugins/shared/cases/public/types.ts @@ -79,10 +79,7 @@ export interface CasesPublicStartDependencies { embeddable: EmbeddableStart; features: FeaturesPluginStart; files: FilesStart; - /** - * Lens is not supported in all serverless tiers - */ - lens?: LensPublicStart; + lens: LensPublicStart; /** * Cases in used by other plugins. Plugins pass the * service to their KibanaContext. ML does not pass diff --git a/x-pack/platform/plugins/shared/cases/server/common/utils.ts b/x-pack/platform/plugins/shared/cases/server/common/utils.ts index 2d4d56cf30b3..0b9852e61cad 100644 --- a/x-pack/platform/plugins/shared/cases/server/common/utils.ts +++ b/x-pack/platform/plugins/shared/cases/server/common/utils.ts @@ -364,7 +364,7 @@ export const extractLensReferencesFromCommentString = ( lensEmbeddableFactory: LensServerPluginSetup['lensEmbeddableFactory'], comment: string ): SavedObjectReference[] => { - const extract = lensEmbeddableFactory && lensEmbeddableFactory().extract; + const extract = lensEmbeddableFactory()?.extract; if (extract) { const parsedComment = parseCommentString(comment); diff --git a/x-pack/platform/plugins/shared/cases/server/plugin.ts b/x-pack/platform/plugins/shared/cases/server/plugin.ts index c439d7f21254..f7f00b3c49b6 100644 --- a/x-pack/platform/plugins/shared/cases/server/plugin.ts +++ b/x-pack/platform/plugins/shared/cases/server/plugin.ts @@ -62,7 +62,7 @@ export class CasePlugin private readonly kibanaVersion: PluginInitializerContext['env']['packageInfo']['version']; private clientFactory: CasesClientFactory; private securityPluginSetup?: SecurityPluginSetup; - private lensEmbeddableFactory: LensServerPluginSetup['lensEmbeddableFactory']; + private lensEmbeddableFactory?: LensServerPluginSetup['lensEmbeddableFactory']; private persistableStateAttachmentTypeRegistry: PersistableStateAttachmentTypeRegistry; private externalReferenceAttachmentTypeRegistry: ExternalReferenceAttachmentTypeRegistry; private userProfileService: UserProfileService; @@ -92,7 +92,7 @@ export class CasePlugin registerCaseFileKinds(this.caseConfig.files, plugins.files, core.security.fips.isEnabled()); this.securityPluginSetup = plugins.security; - this.lensEmbeddableFactory = plugins.lens?.lensEmbeddableFactory; + this.lensEmbeddableFactory = plugins.lens.lensEmbeddableFactory; if (this.caseConfig.stack.enabled) { // V1 is deprecated, but has to be maintained for the time being @@ -209,7 +209,12 @@ export class CasePlugin featuresPluginStart: plugins.features, actionsPluginStart: plugins.actions, licensingPluginStart: plugins.licensing, - lensEmbeddableFactory: this.lensEmbeddableFactory, + /** + * Lens will be always defined as + * it is declared as required plugin in kibana.json + */ + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + lensEmbeddableFactory: this.lensEmbeddableFactory!, persistableStateAttachmentTypeRegistry: this.persistableStateAttachmentTypeRegistry, externalReferenceAttachmentTypeRegistry: this.externalReferenceAttachmentTypeRegistry, publicBaseUrl: core.http.basePath.publicBaseUrl, diff --git a/x-pack/platform/plugins/shared/cases/server/saved_object_types/migrations/utils.ts b/x-pack/platform/plugins/shared/cases/server/saved_object_types/migrations/utils.ts index d5f7360d5440..680da4aaac1c 100644 --- a/x-pack/platform/plugins/shared/cases/server/saved_object_types/migrations/utils.ts +++ b/x-pack/platform/plugins/shared/cases/server/saved_object_types/migrations/utils.ts @@ -98,7 +98,7 @@ export const getLensMigrations = ({ lensEmbeddableFactory, migratorFactory, }: GetLensMigrationsArgs) => { - const lensMigrations = lensEmbeddableFactory?.().migrations; + const lensMigrations = lensEmbeddableFactory().migrations; const lensMigrationObject = isFunction(lensMigrations) ? lensMigrations() : lensMigrations || {}; const embeddableMigrations = mapValues>( diff --git a/x-pack/platform/plugins/shared/cases/server/types.ts b/x-pack/platform/plugins/shared/cases/server/types.ts index 22dc684b7f4d..8606808e1c18 100644 --- a/x-pack/platform/plugins/shared/cases/server/types.ts +++ b/x-pack/platform/plugins/shared/cases/server/types.ts @@ -39,7 +39,7 @@ import type { PersistableStateAttachmentTypeRegistry } from './attachment_framew export interface CasesServerSetupDependencies { alerting: AlertingServerSetup; actions: ActionsPluginSetup; - lens?: LensServerPluginSetup; + lens: LensServerPluginSetup; features: FeaturesPluginSetup; files: FilesSetup; security: SecurityPluginSetup; diff --git a/x-pack/platform/plugins/shared/dataset_quality/kibana.jsonc b/x-pack/platform/plugins/shared/dataset_quality/kibana.jsonc index 49f182fdf274..e4e35a134c6d 100644 --- a/x-pack/platform/plugins/shared/dataset_quality/kibana.jsonc +++ b/x-pack/platform/plugins/shared/dataset_quality/kibana.jsonc @@ -25,13 +25,13 @@ "fleet", "fieldFormats", "dataViews", + "lens", "fieldsMetadata", "taskManager", "usageCollection" ], "optionalPlugins": [ - "telemetry", - "lens" + "telemetry" ], "requiredBundles": [ "discover" diff --git a/x-pack/platform/plugins/shared/lens/kibana.jsonc b/x-pack/platform/plugins/shared/lens/kibana.jsonc index 2de577c6dce5..116061f85e29 100644 --- a/x-pack/platform/plugins/shared/lens/kibana.jsonc +++ b/x-pack/platform/plugins/shared/lens/kibana.jsonc @@ -19,6 +19,7 @@ "inspector", "navigation", "urlForwarding", + "visualizations", "uiActions", "uiActionsEnhanced", "embeddable", @@ -47,7 +48,6 @@ "serverless", "licensing", "fieldsMetadata", - "visualizations" ], "requiredBundles": [ "unifiedSearch", @@ -58,8 +58,7 @@ "fieldFormats", "charts", "esqlDataGrid", - "visualizations", - "esql" + "esql", ], "extraPublicDirs": ["common/constants"] } diff --git a/x-pack/platform/plugins/shared/lens/public/app_plugin/app.tsx b/x-pack/platform/plugins/shared/lens/public/app_plugin/app.tsx index 369c4b88859f..9646d3bf12c8 100644 --- a/x-pack/platform/plugins/shared/lens/public/app_plugin/app.tsx +++ b/x-pack/platform/plugins/shared/lens/public/app_plugin/app.tsx @@ -200,7 +200,7 @@ export function App({ useEffect(() => { onAppLeave((actions) => { if ( - application.capabilities.visualize_v2?.save && + application.capabilities.visualize_v2.save && !isLensEqualWrapper(persistedDoc) && (isSaveable || persistedDoc) ) { @@ -226,7 +226,7 @@ export function App({ lastKnownDoc, isSaveable, persistedDoc, - application.capabilities.visualize_v2?.save, + application.capabilities.visualize_v2.save, data.query.filterManager, datasourceMap, visualizationMap, diff --git a/x-pack/platform/plugins/shared/lens/public/app_plugin/lens_top_nav.tsx b/x-pack/platform/plugins/shared/lens/public/app_plugin/lens_top_nav.tsx index 8bc633353d71..387b808cec7f 100644 --- a/x-pack/platform/plugins/shared/lens/public/app_plugin/lens_top_nav.tsx +++ b/x-pack/platform/plugins/shared/lens/public/app_plugin/lens_top_nav.tsx @@ -481,7 +481,7 @@ export const LensTopNavMenu = ({ const { from, to } = data.query.timefilter.timefilter.getTime(); const savingToLibraryPermitted = Boolean( - isSaveable && application.capabilities.visualize_v2?.save + isSaveable && application.capabilities.visualize_v2.save ); const savingToDashboardPermitted = Boolean( isSaveable && application.capabilities.dashboard_v2?.showWriteControls diff --git a/x-pack/platform/plugins/shared/lens/public/app_plugin/mounter.tsx b/x-pack/platform/plugins/shared/lens/public/app_plugin/mounter.tsx index 4ee090d273db..b739bb577b7d 100644 --- a/x-pack/platform/plugins/shared/lens/public/app_plugin/mounter.tsx +++ b/x-pack/platform/plugins/shared/lens/public/app_plugin/mounter.tsx @@ -170,7 +170,7 @@ export async function mountApp( const embeddableEditorIncomingState = stateTransfer?.getIncomingEditorState(APP_ID); addHelpMenuToAppChrome(coreStart.chrome, coreStart.docLinks); - if (!lensServices.application.capabilities.visualize_v2?.save) { + if (!lensServices.application.capabilities.visualize_v2.save) { coreStart.chrome.setBadge({ text: i18n.translate('xpack.lens.badge.readOnly.text', { defaultMessage: 'Read only', diff --git a/x-pack/platform/plugins/shared/lens/public/app_plugin/save_modal_container.tsx b/x-pack/platform/plugins/shared/lens/public/app_plugin/save_modal_container.tsx index 1f781cd32cbe..f3120c7b9ce2 100644 --- a/x-pack/platform/plugins/shared/lens/public/app_plugin/save_modal_container.tsx +++ b/x-pack/platform/plugins/shared/lens/public/app_plugin/save_modal_container.tsx @@ -164,7 +164,7 @@ export function SaveModalContainer({ } const savingToLibraryPermitted = Boolean( - isSaveable && application.capabilities.visualize_v2?.save + isSaveable && application.capabilities.visualize_v2.save ); return ( diff --git a/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_actions.ts b/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_actions.ts index 2ef12656fad0..9be0e0b1c217 100644 --- a/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_actions.ts +++ b/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_actions.ts @@ -189,8 +189,8 @@ function loadViewUnderlyingDataArgs( activeData, capabilities: { canSaveDashboards: Boolean(capabilities.dashboard_v2?.showWriteControls), - canSaveVisualizations: Boolean(capabilities.visualize_v2?.save), - canOpenVisualizations: Boolean(capabilities.visualize_v2?.show), + canSaveVisualizations: Boolean(capabilities.visualize_v2.save), + canOpenVisualizations: Boolean(capabilities.visualize_v2.show), navLinks: capabilities.navLinks, discover_v2: capabilities.discover_v2, }, diff --git a/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_edit.tsx b/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_edit.tsx index 114f2daec3ce..e438dcaf1b08 100644 --- a/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_edit.tsx +++ b/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_edit.tsx @@ -211,10 +211,10 @@ export function initializeEditApi( return false; } return ( - Boolean(capabilities.visualize_v2?.save) || + Boolean(capabilities.visualize_v2.save) || (!getState().savedObjectId && Boolean(capabilities.dashboard_v2?.showWriteControls) && - Boolean(capabilities.visualize_v2?.show)) + Boolean(capabilities.visualize_v2.show)) ); }; diff --git a/x-pack/platform/plugins/shared/lens/public/trigger_actions/convert_to_lens_action.ts b/x-pack/platform/plugins/shared/lens/public/trigger_actions/convert_to_lens_action.ts index c2242abf66dc..e701122b3ff0 100644 --- a/x-pack/platform/plugins/shared/lens/public/trigger_actions/convert_to_lens_action.ts +++ b/x-pack/platform/plugins/shared/lens/public/trigger_actions/convert_to_lens_action.ts @@ -17,7 +17,7 @@ export const convertToLensActionFactory = type: ACTION_CONVERT_TO_LENS, id, getDisplayName: () => displayName, - isCompatible: async () => !!application.capabilities.visualize_v2?.show, + isCompatible: async () => !!application.capabilities.visualize_v2.show, execute: async (context: { [key: string]: VisualizeEditorContext }) => { const table = Object.values(context.layers); const payload = { diff --git a/x-pack/platform/plugins/shared/lens/public/trigger_actions/dashboard_visualize_panel_actions.ts b/x-pack/platform/plugins/shared/lens/public/trigger_actions/dashboard_visualize_panel_actions.ts index 4e87565b844c..836bda33d9fc 100644 --- a/x-pack/platform/plugins/shared/lens/public/trigger_actions/dashboard_visualize_panel_actions.ts +++ b/x-pack/platform/plugins/shared/lens/public/trigger_actions/dashboard_visualize_panel_actions.ts @@ -22,7 +22,7 @@ export const visualizeDashboardVisualizePanelction = (application: ApplicationSt i18n.translate('xpack.lens.visualizeLegacyVisualizationChart', { defaultMessage: 'Visualize legacy visualization chart', }), - isCompatible: async () => !!application.capabilities.visualize_v2?.show, + isCompatible: async () => !!application.capabilities.visualize_v2.show, execute: async (context: { [key: string]: VisualizeEditorContext }) => { const table = Object.values(context.layers); const payload = { diff --git a/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_agg_based_vis_actions.ts b/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_agg_based_vis_actions.ts index 6f86a71a3afa..80468a6ef71f 100644 --- a/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_agg_based_vis_actions.ts +++ b/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_agg_based_vis_actions.ts @@ -22,7 +22,7 @@ export const visualizeAggBasedVisAction = (application: ApplicationStart) => i18n.translate('xpack.lens.visualizeAggBasedLegend', { defaultMessage: 'Visualize agg based chart', }), - isCompatible: async () => !!application.capabilities.visualize_v2?.show, + isCompatible: async () => !!application.capabilities.visualize_v2.show, execute: async (context: { [key: string]: VisualizeEditorContext }) => { const table = Object.values(context.layers); const payload = { diff --git a/x-pack/platform/plugins/shared/lens/server/index.ts b/x-pack/platform/plugins/shared/lens/server/index.ts index 36c79b337ed0..80a61445b9cd 100644 --- a/x-pack/platform/plugins/shared/lens/server/index.ts +++ b/x-pack/platform/plugins/shared/lens/server/index.ts @@ -5,14 +5,8 @@ * 2.0. */ -import type { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core-plugins-server'; +import type { PluginInitializerContext } from '@kbn/core-plugins-server'; export type { LensServerPluginSetup } from './plugin'; -import type { ConfigType } from '../common/config'; -import { ConfigSchema } from '../common/config'; - -export const config: PluginConfigDescriptor = { - schema: ConfigSchema, -}; export const plugin = async (initContext: PluginInitializerContext) => { const { LensServerPlugin } = await import('./plugin'); diff --git a/x-pack/platform/plugins/shared/lens/server/plugin.tsx b/x-pack/platform/plugins/shared/lens/server/plugin.tsx index 8cb67ee33158..ab683555d70c 100644 --- a/x-pack/platform/plugins/shared/lens/server/plugin.tsx +++ b/x-pack/platform/plugins/shared/lens/server/plugin.tsx @@ -51,7 +51,7 @@ export interface LensServerPluginSetup { /** * Server side embeddable definition which provides migrations to run if Lens state is embedded into another saved object somewhere */ - lensEmbeddableFactory: ReturnType | undefined; + lensEmbeddableFactory: ReturnType; /** * Register custom migration functions for custom third party Lens visualizations */ diff --git a/x-pack/platform/plugins/shared/maps/kibana.jsonc b/x-pack/platform/plugins/shared/maps/kibana.jsonc index 8d68b0fae09e..a0472bf343ea 100644 --- a/x-pack/platform/plugins/shared/maps/kibana.jsonc +++ b/x-pack/platform/plugins/shared/maps/kibana.jsonc @@ -17,6 +17,7 @@ "requiredPlugins": [ "controls", "unifiedSearch", + "lens", "licensing", "features", "inspector", @@ -26,6 +27,7 @@ "uiActions", "navigation", "expressions", + "visualizations", "embeddable", "mapsEms", "share", @@ -37,29 +39,25 @@ "customIntegrations", "embeddableEnhanced", "home", - "lens", "savedObjectsTagging", "charts", "screenshotMode", "security", "spaces", "usageCollection", - "serverless", - "visualizations" + "serverless" ], "requiredBundles": [ "kibanaReact", "kibanaUtils", - "lens", "usageCollection", "unifiedSearch", "fieldFormats", "esql", - "savedObjects", - "visualizations" + "savedObjects" ], "extraPublicDirs": [ "common" ] } -} +} \ No newline at end of file diff --git a/x-pack/platform/plugins/shared/maps/public/plugin.ts b/x-pack/platform/plugins/shared/maps/public/plugin.ts index 5cab3b9b36c4..fd4717a7c0ae 100644 --- a/x-pack/platform/plugins/shared/maps/public/plugin.ts +++ b/x-pack/platform/plugins/shared/maps/public/plugin.ts @@ -93,7 +93,7 @@ export interface MapsPluginSetupDependencies { inspector: InspectorSetupContract; home?: HomePublicPluginSetup; lens: LensPublicSetup; - visualizations?: VisualizationsSetup; + visualizations: VisualizationsSetup; embeddable: EmbeddableSetup; share: SharePluginSetup; licensing: LicensingPluginSetup; @@ -188,7 +188,7 @@ export class MapsPlugin if (plugins.home) { plugins.home.featureCatalogue.register(featureCatalogueEntry); } - plugins.visualizations?.registerAlias(mapsVisTypeAlias); + plugins.visualizations.registerAlias(mapsVisTypeAlias); core.application.register({ id: APP_ID, @@ -230,10 +230,10 @@ export class MapsPlugin plugins.data.search.aggs.types.registerLegacy(GEOHASH_GRID, getGeoHashBucketAgg); plugins.expressions.registerFunction(createRegionMapFn); plugins.expressions.registerRenderer(regionMapRenderer); - plugins.visualizations?.createBaseVisualization(regionMapVisType); + plugins.visualizations.createBaseVisualization(regionMapVisType); plugins.expressions.registerFunction(createTileMapFn); plugins.expressions.registerRenderer(tileMapRenderer); - plugins.visualizations?.createBaseVisualization(tileMapVisType); + plugins.visualizations.createBaseVisualization(tileMapVisType); setIsCloudEnabled(!!plugins.cloud?.isCloudEnabled); diff --git a/x-pack/platform/plugins/shared/maps/public/react_embeddable/initialize_edit_api.ts b/x-pack/platform/plugins/shared/maps/public/react_embeddable/initialize_edit_api.ts index 3c35141fab08..41959c487422 100644 --- a/x-pack/platform/plugins/shared/maps/public/react_embeddable/initialize_edit_api.ts +++ b/x-pack/platform/plugins/shared/maps/public/react_embeddable/initialize_edit_api.ts @@ -36,7 +36,7 @@ export function initializeEditApi( }); }, isEditingEnabled: () => { - return getMapsCapabilities()?.save as boolean; + return getMapsCapabilities().save as boolean; }, getEditHref: async () => { return getHttp().basePath.prepend(getFullPath(savedObjectId)); diff --git a/x-pack/platform/plugins/shared/maps/public/react_embeddable/library_transforms.ts b/x-pack/platform/plugins/shared/maps/public/react_embeddable/library_transforms.ts index f93cdebc3c10..90d85879ae55 100644 --- a/x-pack/platform/plugins/shared/maps/public/react_embeddable/library_transforms.ts +++ b/x-pack/platform/plugins/shared/maps/public/react_embeddable/library_transforms.ts @@ -36,7 +36,7 @@ export function initializeLibraryTransforms( return { canLinkToLibrary: async () => { const { maps_v2: maps } = getCore().application.capabilities; - return maps?.save && savedMap.getSavedObjectId() === undefined; + return maps.save && savedMap.getSavedObjectId() === undefined; }, saveToLibrary: async (title: string) => { const state = serializeState(); diff --git a/x-pack/platform/plugins/shared/maps/public/reducers/ui.ts b/x-pack/platform/plugins/shared/maps/public/reducers/ui.ts index c6d4d8d85646..1ee7dc3e38e2 100644 --- a/x-pack/platform/plugins/shared/maps/public/reducers/ui.ts +++ b/x-pack/platform/plugins/shared/maps/public/reducers/ui.ts @@ -50,7 +50,7 @@ export const DEFAULT_MAP_UI_STATE = { flyoutDisplay: FLYOUT_STATE.NONE, drawMode: DRAW_MODE.NONE, isFullScreen: false, - isReadOnly: !getMapsCapabilities()?.save, + isReadOnly: !getMapsCapabilities().save, isLayerTOCOpen: DEFAULT_IS_LAYER_TOC_OPEN, isTimesliderOpen: false, // storing TOC detail visibility outside of map.layerList because its UI state and not map rendering state. diff --git a/x-pack/platform/plugins/shared/maps/public/render_app.tsx b/x-pack/platform/plugins/shared/maps/public/render_app.tsx index d883876e9cf2..a1bf84746a76 100644 --- a/x-pack/platform/plugins/shared/maps/public/render_app.tsx +++ b/x-pack/platform/plugins/shared/maps/public/render_app.tsx @@ -29,7 +29,7 @@ import { registerLayerWizards } from './classes/layers/wizards/load_layer_wizard import { MapSerializedState } from './react_embeddable/types'; function setAppChrome() { - if (!getMapsCapabilities()?.save) { + if (!getMapsCapabilities().save) { getCoreChrome().setBadge({ text: i18n.translate('xpack.maps.badge.readOnly.text', { defaultMessage: 'Read only', diff --git a/x-pack/platform/plugins/shared/maps/public/routes/list_page/maps_list_view.tsx b/x-pack/platform/plugins/shared/maps/public/routes/list_page/maps_list_view.tsx index 9bb268ae7818..453ec246615f 100644 --- a/x-pack/platform/plugins/shared/maps/public/routes/list_page/maps_list_view.tsx +++ b/x-pack/platform/plugins/shared/maps/public/routes/list_page/maps_list_view.tsx @@ -69,7 +69,7 @@ function MapsListViewComp({ history }: Props) { page: 'list', }); - const isReadOnly = !getMapsCapabilities()?.save; + const isReadOnly = !getMapsCapabilities().save; const initialPageSize = getUiSettings().get(SAVED_OBJECTS_PER_PAGE_SETTING); // TLDR; render should be side effect free diff --git a/x-pack/platform/plugins/shared/maps/public/routes/map_page/top_nav_config.tsx b/x-pack/platform/plugins/shared/maps/public/routes/map_page/top_nav_config.tsx index f9eee46683dc..d9b7aec6612f 100644 --- a/x-pack/platform/plugins/shared/maps/public/routes/map_page/top_nav_config.tsx +++ b/x-pack/platform/plugins/shared/maps/public/routes/map_page/top_nav_config.tsx @@ -112,7 +112,7 @@ export function getTopNavConfig({ }); } - if (getMapsCapabilities()?.save) { + if (getMapsCapabilities().save) { const hasSaveAndReturnConfig = savedMap.hasSaveAndReturnConfig(); const mapDescription = savedMap.getAttributes().description ? savedMap.getAttributes().description! diff --git a/x-pack/platform/plugins/shared/maps/public/trigger_actions/visualize_geo_field_action.ts b/x-pack/platform/plugins/shared/maps/public/trigger_actions/visualize_geo_field_action.ts index a4481f80846e..4579b012a77f 100644 --- a/x-pack/platform/plugins/shared/maps/public/trigger_actions/visualize_geo_field_action.ts +++ b/x-pack/platform/plugins/shared/maps/public/trigger_actions/visualize_geo_field_action.ts @@ -26,7 +26,7 @@ export const visualizeGeoFieldAction = createAction({ defaultMessage: 'Visualize in Maps', }), isCompatible: async (context) => { - return Boolean(!!getVisualizeCapabilities()?.show && context.dataViewSpec && context.fieldName); + return Boolean(!!getVisualizeCapabilities().show && context.dataViewSpec && context.fieldName); }, getHref: async (context) => { const { app, path } = await getMapsLink(context); diff --git a/x-pack/platform/plugins/shared/maps/server/config.ts b/x-pack/platform/plugins/shared/maps/server/config.ts index ccc0d1a4640b..10e7ee75fcec 100644 --- a/x-pack/platform/plugins/shared/maps/server/config.ts +++ b/x-pack/platform/plugins/shared/maps/server/config.ts @@ -13,7 +13,6 @@ export interface MapsConfigType { } export const configSchema = schema.object({ - enabled: schema.boolean({ defaultValue: true }), // flag used in functional testing showMapsInspectorAdapter: schema.boolean({ defaultValue: false }), // flag used in functional testing diff --git a/x-pack/platform/plugins/shared/ml/kibana.jsonc b/x-pack/platform/plugins/shared/ml/kibana.jsonc index 29ad1952c52f..4c21db50280b 100644 --- a/x-pack/platform/plugins/shared/ml/kibana.jsonc +++ b/x-pack/platform/plugins/shared/ml/kibana.jsonc @@ -22,6 +22,7 @@ "embeddable", "features", "fieldFormats", + "lens", "licensing", "share", "taskManager", @@ -38,7 +39,6 @@ "alerting", "dashboard", "home", - "lens", "licenseManagement", "management", "maps", diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/kibana.jsonc b/x-pack/platform/plugins/shared/triggers_actions_ui/kibana.jsonc index 24427e33cd12..60618e397878 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/kibana.jsonc +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/kibana.jsonc @@ -29,6 +29,7 @@ "dashboard", "licensing", "expressions", + "lens", "controls", "embeddable", "fieldsMetadata", @@ -38,7 +39,6 @@ "cloud", "features", "home", - "lens", "spaces", "serverless", "share" @@ -55,4 +55,4 @@ "public/common/constants" ] } -} +} \ No newline at end of file diff --git a/x-pack/solutions/observability/plugins/exploratory_view/kibana.jsonc b/x-pack/solutions/observability/plugins/exploratory_view/kibana.jsonc index 307ca498a844..e229b40c698c 100644 --- a/x-pack/solutions/observability/plugins/exploratory_view/kibana.jsonc +++ b/x-pack/solutions/observability/plugins/exploratory_view/kibana.jsonc @@ -23,6 +23,7 @@ "features", "files", "inspector", + "lens", "observabilityShared", "security", "share", @@ -33,7 +34,6 @@ "discover", "embeddable", "home", - "lens", "licensing", "spaces", "usageCollection", @@ -52,4 +52,4 @@ "common" ] } -} +} \ No newline at end of file diff --git a/x-pack/solutions/observability/plugins/infra/kibana.jsonc b/x-pack/solutions/observability/plugins/infra/kibana.jsonc index 1600ba1fa591..d62cbf3402f6 100644 --- a/x-pack/solutions/observability/plugins/infra/kibana.jsonc +++ b/x-pack/solutions/observability/plugins/infra/kibana.jsonc @@ -23,6 +23,7 @@ "embeddable", "features", "fieldFormats", + "lens", "logsShared", "metricsDataAccess", "observability", @@ -41,7 +42,6 @@ "fieldsMetadata" ], "optionalPlugins": [ - "lens", "spaces", "ml", "home", diff --git a/x-pack/solutions/observability/plugins/observability/kibana.jsonc b/x-pack/solutions/observability/plugins/observability/kibana.jsonc index 90be2bfe751c..4a83799bfdb6 100644 --- a/x-pack/solutions/observability/plugins/observability/kibana.jsonc +++ b/x-pack/solutions/observability/plugins/observability/kibana.jsonc @@ -32,12 +32,14 @@ "features", "files", "inspector", + "lens", "observabilityShared", "ruleRegistry", "triggersActionsUi", "security", "share", "unifiedSearch", + "visualizations", "dashboard", "expressions", "logsShared", @@ -48,7 +50,6 @@ "optionalPlugins": [ "discover", "home", - "lens", "usageCollection", "cloud", "spaces", @@ -56,8 +57,7 @@ "guidedOnboarding", "observabilityAIAssistant", "investigate", - "streams", - "visualizations" + "streams" ], "requiredBundles": [ "data", @@ -72,4 +72,4 @@ "common" ] } -} +} \ No newline at end of file diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/kibana.jsonc b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/kibana.jsonc index 148f0dd1aaf4..8d509e50059a 100644 --- a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/kibana.jsonc +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/kibana.jsonc @@ -22,6 +22,7 @@ "actions", "data", "dataViews", + "lens", "ruleRegistry", "uiActions", "triggersActionsUi", @@ -37,8 +38,7 @@ "llmTasks" ], "optionalPlugins": [ - "cloud", - "lens" + "cloud" ], "requiredBundles": [ "kibanaReact", diff --git a/x-pack/solutions/search/plugins/serverless_search/kibana.jsonc b/x-pack/solutions/search/plugins/serverless_search/kibana.jsonc index b05427719f85..c1696ff3c076 100644 --- a/x-pack/solutions/search/plugins/serverless_search/kibana.jsonc +++ b/x-pack/solutions/search/plugins/serverless_search/kibana.jsonc @@ -28,15 +28,15 @@ "searchprofiler", "security", "serverless", - "share" + "share", + "visualizations" ], "optionalPlugins": [ "indexManagement", "contentConnectors", "searchInferenceEndpoints", "searchPlayground", - "usageCollection", - "visualizations" + "usageCollection" ], "requiredBundles": [ "kibanaReact" diff --git a/x-pack/solutions/security/plugins/security_solution/kibana.jsonc b/x-pack/solutions/security/plugins/security_solution/kibana.jsonc index 9aaea8ed1f9a..1461e209880c 100644 --- a/x-pack/solutions/security/plugins/security_solution/kibana.jsonc +++ b/x-pack/solutions/security/plugins/security_solution/kibana.jsonc @@ -31,7 +31,9 @@ "features", "fieldFormats", "inspector", + "lens", "licensing", + "maps", "navigation", "ruleRegistry", "sessionView", @@ -68,9 +70,7 @@ "usageCollection", "lists", "home", - "lens", "management", - "maps", "dataViewFieldEditor", "osquery", "savedObjectsTaggingOss", @@ -84,12 +84,10 @@ "kibanaUtils", "kibanaReact", "usageCollection", - "lens", "lists", "ml", "unifiedSearch", - "esql", - "maps" + "esql" ], "extraPublicDirs": [ "common" diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/ai4dsoc/access/disabled_features.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/ai4dsoc/access/disabled_features.cy.ts deleted file mode 100644 index 44800610160b..000000000000 --- a/x-pack/test/security_solution_cypress/cypress/e2e/ai4dsoc/access/disabled_features.cy.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { login } from '../../../tasks/login'; -import { visit } from '../../../tasks/navigation'; -import { APP_NOT_FOUND_PAGE } from '../../../screens/ai_soc'; -import { VISUALIZE_URL, MAPS_URL, LENS_URL } from '../../../urls/navigation'; - -describe('Disabled features', { tags: '@serverless' }, () => { - beforeEach(() => { - login('admin'); - }); - - it('visualize app should not be available', () => { - visit(VISUALIZE_URL); - cy.get(APP_NOT_FOUND_PAGE).should('exist'); - }); - it('maps app should not be available', () => { - visit(MAPS_URL); - cy.get(APP_NOT_FOUND_PAGE).should('exist'); - }); - it('lens app should not be available', () => { - visit(LENS_URL); - cy.get(APP_NOT_FOUND_PAGE).should('exist'); - }); -}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/ai4dsoc/access/capabilities.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/ai4dsoc/capabilities/access.cy.ts similarity index 98% rename from x-pack/test/security_solution_cypress/cypress/e2e/ai4dsoc/access/capabilities.cy.ts rename to x-pack/test/security_solution_cypress/cypress/e2e/ai4dsoc/capabilities/access.cy.ts index 6eac7a24ebbc..1ad23d0d0c01 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/ai4dsoc/access/capabilities.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/ai4dsoc/capabilities/access.cy.ts @@ -86,6 +86,7 @@ describe('Capabilities', { tags: '@serverless' }, () => { after(() => role.teardown()); + // Individual test cases with clear descriptions it('should show alert summary prompt when visiting alert summary page', () => { visit(ALERT_SUMMARY_URL); cy.get(ALERTS_SUMMARY_PROMPT).should('exist'); diff --git a/x-pack/platform/plugins/shared/lens/common/config.ts b/x-pack/test/security_solution_cypress/cypress/e2e/ai4dsoc/constants.ts similarity index 50% rename from x-pack/platform/plugins/shared/lens/common/config.ts rename to x-pack/test/security_solution_cypress/cypress/e2e/ai4dsoc/constants.ts index 20b940ef6d41..1fec1c76430e 100644 --- a/x-pack/platform/plugins/shared/lens/common/config.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/ai4dsoc/constants.ts @@ -4,12 +4,3 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - -import type { TypeOf } from '@kbn/config-schema'; -import { schema } from '@kbn/config-schema'; - -export const ConfigSchema = schema.object({ - enabled: schema.boolean({ defaultValue: true }), -}); - -export type ConfigType = TypeOf; diff --git a/x-pack/test/security_solution_cypress/cypress/screens/ai_soc.ts b/x-pack/test/security_solution_cypress/cypress/screens/ai_soc.ts index 28a06c1539d2..1a270e381dbe 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/ai_soc.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/ai_soc.ts @@ -9,4 +9,3 @@ export const ALERTS_SUMMARY_PROMPT = '[data-test-subj="alert-summary-landing-pag export const GET_STARTED_PAGE = '[data-test-subj="onboarding-hub-page"]'; export const AI_SOC_NAVIGATION = '[data-test-subj="nav-item nav-item-security_solution_ai_nav nav-item-id-security_solution_ai_nav"]'; -export const APP_NOT_FOUND_PAGE = '[data-test-subj="appNotFoundPageContent"]'; diff --git a/x-pack/test/security_solution_cypress/cypress/urls/navigation.ts b/x-pack/test/security_solution_cypress/cypress/urls/navigation.ts index b09b0dda83fa..bf47b7613aca 100644 --- a/x-pack/test/security_solution_cypress/cypress/urls/navigation.ts +++ b/x-pack/test/security_solution_cypress/cypress/urls/navigation.ts @@ -91,9 +91,6 @@ export const exceptionsListDetailsUrl = (listId: string) => export const DISCOVER_URL = '/app/discover'; export const OSQUERY_URL = '/app/osquery'; export const FLEET_URL = '/app/fleet'; -export const VISUALIZE_URL = '/app/visualize'; -export const MAPS_URL = '/app/maps'; -export const LENS_URL = '/app/lens'; // Entity Analytics export const ENTITY_ANALYTICS_DASHBOARD_URL = '/app/security/entity_analytics';