diff --git a/x-pack/platform/plugins/shared/streams_app/.storybook/get_mock_streams_app_context.tsx b/x-pack/platform/plugins/shared/streams_app/.storybook/get_mock_streams_app_context.tsx
index a910f7f841493..83634949c853d 100644
--- a/x-pack/platform/plugins/shared/streams_app/.storybook/get_mock_streams_app_context.tsx
+++ b/x-pack/platform/plugins/shared/streams_app/.storybook/get_mock_streams_app_context.tsx
@@ -19,6 +19,7 @@ import { LicensingPluginStart } from '@kbn/licensing-plugin/public';
import { IndexManagementPluginStart } from '@kbn/index-management-shared-types';
import { IngestPipelinesPluginStart } from '@kbn/ingest-pipelines-plugin/public';
import { DiscoverSharedPublicStart } from '@kbn/discover-shared-plugin/public';
+import { ObservabilityAIAssistantPublicStart } from '@kbn/observability-ai-assistant-plugin/public';
import type { StreamsAppKibanaContext } from '../public/hooks/use_kibana';
import { StreamsTelemetryService } from '../public/telemetry/service';
@@ -47,6 +48,7 @@ export function getMockStreamsAppContext(): StreamsAppKibanaContext {
indexManagement: {} as unknown as IndexManagementPluginStart,
ingestPipelines: {} as unknown as IngestPipelinesPluginStart,
discoverShared: {} as unknown as DiscoverSharedPublicStart,
+ observabilityAIAssistant: {} as unknown as ObservabilityAIAssistantPublicStart,
},
},
services: {
diff --git a/x-pack/platform/plugins/shared/streams_app/kibana.jsonc b/x-pack/platform/plugins/shared/streams_app/kibana.jsonc
index dcdd5ccea5bc3..e75758995ff19 100644
--- a/x-pack/platform/plugins/shared/streams_app/kibana.jsonc
+++ b/x-pack/platform/plugins/shared/streams_app/kibana.jsonc
@@ -10,26 +10,23 @@
"browser": true,
"configPath": ["xpack", "streamsApp"],
"requiredPlugins": [
- "streams",
"data",
+ "datasetQuality",
"dataViews",
"discoverShared",
- "unifiedSearch",
- "share",
- "savedObjectsTagging",
- "navigation",
"fieldsMetadata",
- "datasetQuality",
"licensing",
"indexManagement",
"ingestPipelines",
+ "navigation",
+ "observabilityAIAssistant",
+ "savedObjectsTagging",
+ "share",
+ "streams",
+ "unifiedSearch",
],
"requiredBundles": [
"kibanaReact"
],
- "optionalPlugins": [
- "observabilityAIAssistant"
- ],
- "extraPublicDirs": []
}
}
diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_enrichment/index.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_enrichment/index.tsx
index d6886a7f3a8c6..2f0cf5b859040 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_enrichment/index.tsx
+++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_enrichment/index.tsx
@@ -16,7 +16,7 @@ const StreamDetailEnrichmentContent = dynamic(() =>
);
interface StreamDetailEnrichmentProps {
- definition?: IngestStreamGetResponse;
+ definition: IngestStreamGetResponse;
refreshDefinition: () => void;
}
@@ -24,8 +24,6 @@ export function StreamDetailEnrichment({
definition,
refreshDefinition,
}: StreamDetailEnrichmentProps) {
- if (!definition) return null;
-
if (isRootStreamDefinition(definition.stream)) {
return ;
}
diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_enrichment/processors/grok/grok_ai_suggestions.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_enrichment/processors/grok/grok_ai_suggestions.tsx
index 6df68970463ef..3813405f6d737 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_enrichment/processors/grok/grok_ai_suggestions.tsx
+++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_enrichment/processors/grok/grok_ai_suggestions.tsx
@@ -24,11 +24,12 @@ import {
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { useWatch, useFormContext } from 'react-hook-form';
-import { FlattenRecord, IngestStreamGetResponse } from '@kbn/streams-schema';
+import { FlattenRecord } from '@kbn/streams-schema';
import type { FindActionResult } from '@kbn/actions-plugin/server';
import { UseGenAIConnectorsResult } from '@kbn/observability-ai-assistant-plugin/public/hooks/use_genai_connectors';
import { useAbortController, useBoolean } from '@kbn/react-hooks';
import useObservable from 'react-use/lib/useObservable';
+import { isEmpty } from 'lodash';
import { css } from '@emotion/css';
import { useStreamDetail } from '../../../../../hooks/use_stream_detail';
import { useKibana } from '../../../../../hooks/use_kibana';
@@ -128,15 +129,16 @@ const RefreshButton = ({
);
};
-function useAiEnabled() {
+function useAIFeatures() {
const { dependencies, core } = useKibana();
const { observabilityAIAssistant, licensing } = dependencies.start;
- const aiAssistantEnabled = observabilityAIAssistant?.service.isEnabled();
+ const aiAssistantEnabled = observabilityAIAssistant.service.isEnabled();
- const genAiConnectors = observabilityAIAssistant?.useGenAIConnectors();
+ const genAiConnectors = observabilityAIAssistant.useGenAIConnectors();
- const aiEnabled = aiAssistantEnabled && (genAiConnectors?.connectors || []).length > 0;
+ const aiEnabled =
+ aiAssistantEnabled && genAiConnectors.connectors && !isEmpty(genAiConnectors.connectors);
const currentLicense = useObservable(licensing.license$);
@@ -146,15 +148,16 @@ function useAiEnabled() {
return {
enabled: aiEnabled,
couldBeEnabled,
+ genAiConnectors,
};
}
function InnerGrokAiSuggestions({
previewDocuments,
- definition,
+ genAiConnectors,
}: {
previewDocuments: FlattenRecord[];
- definition: IngestStreamGetResponse;
+ genAiConnectors: UseGenAIConnectorsResult;
}) {
const {
dependencies,
@@ -162,13 +165,12 @@ function InnerGrokAiSuggestions({
} = useKibana();
const {
streams: { streamsRepositoryClient },
- observabilityAIAssistant,
} = dependencies.start;
+ const { definition } = useStreamDetail();
const fieldValue = useWatch({ name: 'field' });
const form = useFormContext();
- const genAiConnectors = observabilityAIAssistant?.useGenAIConnectors();
const currentConnector = genAiConnectors?.selectedConnector;
const [isLoadingSuggestions, setSuggestionsLoading] = useState(false);
@@ -387,8 +389,7 @@ export function GrokAiSuggestions() {
const {
core: { http },
} = useKibana();
- const { enabled: isAiEnabled, couldBeEnabled } = useAiEnabled();
- const { definition } = useStreamDetail();
+ const { enabled: isAiEnabled, couldBeEnabled, genAiConnectors } = useAIFeatures();
const previewDocuments = useSimulatorSelector((snapshot) =>
selectPreviewDocuments(snapshot.context)
);
@@ -412,18 +413,18 @@ export function GrokAiSuggestions() {
>
{i18n.translate(
'xpack.streams.streamDetailView.managementTab.enrichment.processorFlyout.aiAssistantNotEnabled',
- {
- defaultMessage: 'Enable AI Assistant features',
- }
+ { defaultMessage: 'Enable AI Assistant features' }
)}
);
}
- if (!isAiEnabled || !definition) {
+ if (!isAiEnabled) {
return null;
}
- return ;
+ return (
+
+ );
}
diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/hooks/use_data_stream_stats.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/hooks/use_data_stream_stats.tsx
index e82d370f6a41d..5b05a1d9d216a 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/hooks/use_data_stream_stats.tsx
+++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/hooks/use_data_stream_stats.tsx
@@ -16,16 +16,12 @@ export type DataStreamStats = DataStreamStatServiceResponse['dataStreamsStats'][
bytesPerDay: number;
};
-export const useDataStreamStats = ({ definition }: { definition?: IngestStreamGetResponse }) => {
+export const useDataStreamStats = ({ definition }: { definition: IngestStreamGetResponse }) => {
const {
services: { dataStreamsClient },
} = useKibana();
const statsFetch = useStreamsAppFetch(async () => {
- if (!definition) {
- return;
- }
-
const client = await dataStreamsClient;
const {
dataStreamsStats: [dsStats],
diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/hooks/use_ingestion_rate.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/hooks/use_ingestion_rate.tsx
index 05dd9a6b6ce3d..3e7c1b978328b 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/hooks/use_ingestion_rate.tsx
+++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/hooks/use_ingestion_rate.tsx
@@ -47,7 +47,7 @@ export const useIngestionRate = ({
stats,
timeRange,
}: {
- definition?: IngestStreamGetResponse;
+ definition: IngestStreamGetResponse;
stats?: DataStreamStats;
timeRange: TimeRange;
}) => {
@@ -60,7 +60,7 @@ export const useIngestionRate = ({
const ingestionRateFetch = useStreamsAppFetch(
async ({ signal }) => {
- if (!definition || !stats) {
+ if (!stats) {
return;
}
@@ -146,7 +146,7 @@ export const useIngestionRatePerTier = ({
stats,
timeRange,
}: {
- definition?: IngestStreamGetResponse;
+ definition: IngestStreamGetResponse;
stats?: DataStreamStats;
timeRange: TimeRange;
}) => {
@@ -164,7 +164,7 @@ export const useIngestionRatePerTier = ({
const ingestionRateFetch = useStreamsAppFetch(
async ({ signal }) => {
- if (!definition || !stats) {
+ if (!stats) {
return;
}
diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/ilm_summary.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/ilm_summary.tsx
index ae45e44269261..0906ed7fe4b3d 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/ilm_summary.tsx
+++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/ilm_summary.tsx
@@ -55,8 +55,6 @@ export function IlmSummary({
const { value, loading, error } = useStreamsAppFetch(
({ signal }) => {
- if (!definition) return;
-
return streamsRepositoryClient.fetch('GET /internal/streams/{name}/lifecycle/_stats', {
params: { path: { name: definition.stream.name } },
signal,
diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/index.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/index.tsx
index 89113c8cb562e..8f2d774d4d8a9 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/index.tsx
+++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/index.tsx
@@ -36,15 +36,13 @@ function useLifecycleState({
definition,
isServerless,
}: {
- definition?: IngestStreamGetResponse;
+ definition: IngestStreamGetResponse;
isServerless: boolean;
}) {
const [updateInProgress, setUpdateInProgress] = useState(false);
const [openEditModal, setOpenEditModal] = useState('none');
const lifecycleActions = useMemo(() => {
- if (!definition) return [];
-
const actions: Array<{ name: string; action: LifecycleEditAction }> = [];
const isWired = isWiredStreamGetResponse(definition);
const isUnwired = isUnwiredStreamGetResponse(definition);
@@ -93,7 +91,7 @@ export function StreamDetailLifecycle({
definition,
refreshDefinition,
}: {
- definition?: IngestStreamGetResponse;
+ definition: IngestStreamGetResponse;
refreshDefinition: () => void;
}) {
const {
@@ -124,10 +122,6 @@ export function StreamDetailLifecycle({
const { signal } = useAbortController();
- if (!definition) {
- return null;
- }
-
const ilmLocator = share.url.locators.get(ILM_LOCATOR_ID);
const getIlmPolicies = () =>
diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/ingestion_rate.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/ingestion_rate.tsx
index 7a4fb7a476948..d36dec649b17c 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/ingestion_rate.tsx
+++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/ingestion_rate.tsx
@@ -42,7 +42,7 @@ export function IngestionRate({
isLoadingStats,
refreshStats,
}: {
- definition?: IngestStreamGetResponse;
+ definition: IngestStreamGetResponse;
stats?: DataStreamStats;
isLoadingStats: boolean;
refreshStats: () => void;
@@ -100,7 +100,7 @@ export function IngestionRate({
direction="column"
gutterSize="xs"
>
- {!definition ? null : isIlmLifecycle(definition?.effective_lifecycle) ? (
+ {isIlmLifecycle(definition.effective_lifecycle) ? (
) : (
<>
@@ -191,7 +191,7 @@ function ChartBarSeries({
timeRange,
isLoadingStats,
}: {
- definition?: IngestStreamGetResponse;
+ definition: IngestStreamGetResponse;
stats?: DataStreamStats;
timeRange: TimeRange;
isLoadingStats: boolean;
@@ -206,7 +206,7 @@ function ChartBarSeries({
return ingestionRateError ? (
'Failed to load ingestion rate'
- ) : !definition || isLoadingStats || isLoadingIngestionRate || !ingestionRate ? (
+ ) : isLoadingStats || isLoadingIngestionRate || !ingestionRate ? (
) : (
<>
diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/index.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/index.tsx
index 42336d0955cb4..5ec4ad3451229 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/index.tsx
+++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/index.tsx
@@ -13,13 +13,9 @@ export function StreamDetailManagement({
definition,
refreshDefinition,
}: {
- definition?: IngestStreamGetResponse;
+ definition: IngestStreamGetResponse;
refreshDefinition: () => void;
}) {
- if (!definition) {
- return null;
- }
-
if (isWiredStreamGetResponse(definition)) {
return (
diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/wired.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/wired.tsx
index 5793bfb07b255..f99d805d8ade4 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/wired.tsx
+++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/wired.tsx
@@ -25,7 +25,7 @@ export function WiredStreamDetailManagement({
definition,
refreshDefinition,
}: {
- definition?: WiredStreamGetResponse;
+ definition: WiredStreamGetResponse;
refreshDefinition: () => void;
}) {
const {
diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_routing/hooks/routing_state.ts b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_routing/hooks/routing_state.ts
index 0a110a73eedf4..829a868568578 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_routing/hooks/routing_state.ts
+++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_routing/hooks/routing_state.ts
@@ -20,7 +20,7 @@ export function useRoutingState({
definition,
toasts,
}: {
- definition?: WiredStreamGetResponse;
+ definition: WiredStreamGetResponse;
toasts: IToasts;
}) {
const [lastDisplayedToast, setLastDisplayedToast] = React.useState();
@@ -40,14 +40,14 @@ export function useRoutingState({
// Child streams: either represents the child streams as they are, or the new order from drag and drop.
const [childStreams, setChildStreams] = React.useState<
WiredStreamGetResponse['stream']['ingest']['wired']['routing']
- >(definition?.stream.ingest.wired.routing ?? []);
+ >(definition.stream.ingest.wired.routing ?? []);
useEffect(() => {
- setChildStreams(definition?.stream.ingest.wired.routing ?? []);
+ setChildStreams(definition.stream.ingest.wired.routing ?? []);
}, [definition]);
// Note: just uses reference equality to check if the order has changed as onChildStreamReorder will create a new array.
- const hasChildStreamsOrderChanged = childStreams !== definition?.stream.ingest.wired.routing;
+ const hasChildStreamsOrderChanged = childStreams !== definition.stream.ingest.wired.routing;
// Child stream currently being dragged
const [draggingChildStream, setDraggingChildStream] = React.useState();
@@ -73,8 +73,8 @@ export function useRoutingState({
const cancelChanges = useCallback(() => {
setChildUnderEdit(undefined);
- setChildStreams(definition?.stream.ingest.wired.routing ?? []);
- }, [definition?.stream.ingest.wired.routing]);
+ setChildStreams(definition.stream.ingest.wired.routing);
+ }, [definition.stream.ingest.wired.routing]);
const debouncedChildUnderEdit = useDebounced(childUnderEdit, 300);
diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_routing/index.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_routing/index.tsx
index e330b9ff21d32..ae6cdd80a5aea 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_routing/index.tsx
+++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_routing/index.tsx
@@ -27,7 +27,7 @@ export function StreamDetailRouting({
definition,
refreshDefinition,
}: {
- definition?: WiredStreamGetResponse;
+ definition: WiredStreamGetResponse;
refreshDefinition: () => void;
}) {
const { appParams, core } = useKibana();
@@ -61,10 +61,6 @@ export function StreamDetailRouting({
openConfirm: core.overlays.openConfirm,
});
- if (!definition) {
- return null;
- }
-
const closeModal = () => routingAppState.setShowDeleteModal(false);
return (
diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_schema_editor/index.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_schema_editor/index.tsx
index 8a13a0fde8a16..1ae584fec92e3 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_schema_editor/index.tsx
+++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_schema_editor/index.tsx
@@ -11,16 +11,11 @@ import { SchemaEditor } from '../schema_editor';
import { useSchemaFields } from '../schema_editor/hooks/use_schema_fields';
interface SchemaEditorProps {
- definition?: WiredStreamGetResponse;
+ definition: WiredStreamGetResponse;
refreshDefinition: () => void;
}
-export function StreamDetailSchemaEditor(props: SchemaEditorProps) {
- if (!props.definition) return null;
- return ;
-}
-
-const Content = ({ definition, refreshDefinition }: Required) => {
+export const StreamDetailSchemaEditor = ({ definition, refreshDefinition }: SchemaEditorProps) => {
const { loading } = useStreamDetail();
const { fields, isLoadingUnmappedFields, refreshFields, unmapField, updateField } =
diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_dashboards_view/index.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_dashboards_view/index.tsx
index bd72877a70657..1aceaeefa6e66 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_dashboards_view/index.tsx
+++ b/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_dashboards_view/index.tsx
@@ -17,7 +17,7 @@ import { useDashboardsFetch } from '../../hooks/use_dashboards_fetch';
export function StreamDetailDashboardsView({
definition,
}: {
- definition?: IngestStreamGetResponse;
+ definition: IngestStreamGetResponse;
}) {
const [query, setQuery] = useState('');
diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_overview/stream_detail_overview.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_overview/stream_detail_overview.tsx
index a8cd597ea0482..bd373e2aa53e6 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_overview/stream_detail_overview.tsx
+++ b/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_overview/stream_detail_overview.tsx
@@ -23,7 +23,7 @@ import { StreamStatsPanel } from './components/stream_stats_panel';
import { StreamChartPanel } from './components/stream_chart_panel';
import { TabsPanel } from './components/tabs_panel';
-export function StreamDetailOverview({ definition }: { definition?: IngestStreamGetResponse }) {
+export function StreamDetailOverview({ definition }: { definition: IngestStreamGetResponse }) {
const {
dependencies: {
start: {
diff --git a/x-pack/platform/plugins/shared/streams_app/public/hooks/use_stream_detail.tsx b/x-pack/platform/plugins/shared/streams_app/public/hooks/use_stream_detail.tsx
index 2c889da6e6de7..8bdfe21dcd280 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/hooks/use_stream_detail.tsx
+++ b/x-pack/platform/plugins/shared/streams_app/public/hooks/use_stream_detail.tsx
@@ -12,6 +12,7 @@ import {
isWiredStreamGetResponse,
isUnwiredStreamGetResponse,
} from '@kbn/streams-schema';
+import { EuiFlexGroup, EuiLoadingSpinner } from '@elastic/eui';
import { useStreamsAppFetch } from './use_streams_app_fetch';
export interface StreamDetailContextProviderProps {
@@ -20,7 +21,7 @@ export interface StreamDetailContextProviderProps {
}
export interface StreamDetailContextValue {
- definition?: IngestStreamGetResponse;
+ definition: IngestStreamGetResponse;
loading: boolean;
refresh: () => void;
}
@@ -59,10 +60,24 @@ export function StreamDetailContextProvider({
);
const context = React.useMemo(
- () => ({ definition, loading, refresh }),
+ // useMemo cannot be used conditionally after the definition narrowing, the assertion is to narrow correctly the context value
+ () => ({ definition, loading, refresh } as StreamDetailContextValue),
[definition, loading, refresh]
);
+ // Display loading spinner for first data-fetching only to have SWR-like behaviour
+ if (!definition && loading) {
+ return (
+
+
+
+ );
+ }
+
+ if (!definition) {
+ return null;
+ }
+
return {children};
}
diff --git a/x-pack/platform/plugins/shared/streams_app/public/types.ts b/x-pack/platform/plugins/shared/streams_app/public/types.ts
index 94688679a8bab..5b19784538044 100644
--- a/x-pack/platform/plugins/shared/streams_app/public/types.ts
+++ b/x-pack/platform/plugins/shared/streams_app/public/types.ts
@@ -39,29 +39,29 @@ export interface StreamsApplicationProps {
export type StreamsApplicationComponentType = React.FC;
export interface StreamsAppSetupDependencies {
- streams: StreamsPluginSetup;
data: DataPublicPluginSetup;
dataViews: DataViewsPublicPluginSetup;
discoverShared: DiscoverSharedPublicSetup;
- unifiedSearch: {};
+ observabilityAIAssistant: ObservabilityAIAssistantPublicSetup;
share: SharePublicSetup;
- observabilityAIAssistant?: ObservabilityAIAssistantPublicSetup;
+ streams: StreamsPluginSetup;
+ unifiedSearch: {};
}
export interface StreamsAppStartDependencies {
- streams: StreamsPluginStart;
data: DataPublicPluginStart;
dataViews: DataViewsPublicPluginStart;
- unifiedSearch: UnifiedSearchPublicPluginStart;
- share: SharePublicStart;
- savedObjectsTagging: SavedObjectTaggingPluginStart;
- navigation: NavigationPublicStart;
- fieldsMetadata: FieldsMetadataPublicStart;
discoverShared: DiscoverSharedPublicStart;
- observabilityAIAssistant?: ObservabilityAIAssistantPublicStart;
+ fieldsMetadata: FieldsMetadataPublicStart;
licensing: LicensingPluginStart;
indexManagement: IndexManagementPluginStart;
ingestPipelines: IngestPipelinesPluginStart;
+ navigation: NavigationPublicStart;
+ observabilityAIAssistant: ObservabilityAIAssistantPublicStart;
+ savedObjectsTagging: SavedObjectTaggingPluginStart;
+ share: SharePublicStart;
+ streams: StreamsPluginStart;
+ unifiedSearch: UnifiedSearchPublicPluginStart;
}
export interface StreamsAppPublicSetup {}