Skip to content

Commit

Permalink
Add assistant button everywhere in Observability
Browse files Browse the repository at this point in the history
  • Loading branch information
dgieselaar committed Aug 6, 2023
1 parent 85bc1e6 commit ffa972c
Show file tree
Hide file tree
Showing 32 changed files with 228 additions and 132 deletions.
3 changes: 2 additions & 1 deletion x-pack/plugins/exploratory_view/kibana.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@
"security",
"share",
"triggersActionsUi",
"unifiedSearch"
"unifiedSearch",
"observabilityAIAssistant"
],
"optionalPlugins": ["discover", "embeddable", "home", "licensing", "spaces", "usageCollection"],
"requiredBundles": [
Expand Down
52 changes: 30 additions & 22 deletions x-pack/plugins/exploratory_view/public/application/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
} from '@kbn/kibana-react-plugin/public';
import { Storage } from '@kbn/kibana-utils-plugin/public';
import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public';
import { ObservabilityAIAssistantProvider } from '@kbn/observability-ai-assistant-plugin/public';
import { PluginContext } from '../context/plugin_context';
import { routes } from '../routes';
import { ExploratoryViewPublicPluginsStart } from '../plugin';
Expand Down Expand Up @@ -70,34 +71,41 @@ export const renderApp = ({
const ApplicationUsageTrackingProvider =
usageCollection?.components.ApplicationUsageTrackingProvider ?? React.Fragment;

const aiAssistantService = plugins.observabilityAIAssistant;

ReactDOM.render(
<EuiErrorBoundary>
<ApplicationUsageTrackingProvider>
<KibanaThemeProvider theme$={theme$}>
<KibanaContextProvider
services={{
...core,
...plugins,
storage: new Storage(localStorage),
isDev,
}}
>
<PluginContext.Provider
value={{
appMountParameters,
<ObservabilityAIAssistantProvider value={aiAssistantService}>
<KibanaContextProvider
services={{
...core,
...plugins,
storage: new Storage(localStorage),
isDev,
}}
>
<Router history={history}>
<EuiThemeProvider darkMode={isDarkMode}>
<i18nCore.Context>
<RedirectAppLinks application={core.application} className={APP_WRAPPER_CLASS}>
<App />
</RedirectAppLinks>
</i18nCore.Context>
</EuiThemeProvider>
</Router>
</PluginContext.Provider>
</KibanaContextProvider>
<PluginContext.Provider
value={{
appMountParameters,
}}
>
<Router history={history}>
<EuiThemeProvider darkMode={isDarkMode}>
<i18nCore.Context>
<RedirectAppLinks
application={core.application}
className={APP_WRAPPER_CLASS}
>
<App />
</RedirectAppLinks>
</i18nCore.Context>
</EuiThemeProvider>
</Router>
</PluginContext.Provider>
</KibanaContextProvider>
</ObservabilityAIAssistantProvider>
</KibanaThemeProvider>
</ApplicationUsageTrackingProvider>
</EuiErrorBoundary>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ import React, { useState } from 'react';
import { EuiButton, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { LensEmbeddableInput, TypedLensByValueInput } from '@kbn/lens-plugin/public';
import {
useObservabilityAIAssistant,
ObservabilityAIAssistantActionMenuItem,
} from '@kbn/observability-ai-assistant-plugin/public';
import { useKibana } from '@kbn/kibana-react-plugin/public';
import { EmbedAction } from '../../header/embed_action';
import { ObservabilityAppServices } from '../../../../../application/types';
Expand All @@ -29,6 +33,8 @@ export function ExpViewActionMenuContent({

const LensSaveModalComponent = lens.SaveModalComponent;

const service = useObservabilityAIAssistant();

return (
<>
<EuiFlexGroup
Expand Down Expand Up @@ -93,6 +99,11 @@ export function ExpViewActionMenuContent({
})}
</EuiButton>
</EuiFlexItem>
{service.isEnabled() ? (
<EuiFlexItem>
<ObservabilityAIAssistantActionMenuItem />
</EuiFlexItem>
) : null}
</EuiFlexGroup>

{isSaveOpen && lensAttributes && (
Expand Down
2 changes: 2 additions & 0 deletions x-pack/plugins/exploratory_view/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import { GuidedOnboardingPluginStart } from '@kbn/guided-onboarding-plugin/publi
import { SpacesPluginStart } from '@kbn/spaces-plugin/public';
import { LicensingPluginStart } from '@kbn/licensing-plugin/public';
import { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public';
import { ObservabilityAIAssistantPluginStart } from '@kbn/observability-ai-assistant-plugin/public';
import { getExploratoryViewEmbeddable } from './components/shared/exploratory_view/embeddable';
import { createExploratoryViewUrl } from './components/shared/exploratory_view/configurations/exploratory_view_url';
import getAppDataView from './utils/observability_data_views/get_app_data_view';
Expand Down Expand Up @@ -70,6 +71,7 @@ export interface ExploratoryViewPublicPluginsStart {
usageCollection: UsageCollectionSetup;
unifiedSearch: UnifiedSearchPublicPluginStart;
home?: HomePublicPluginStart;
observabilityAIAssistant: ObservabilityAIAssistantPluginStart;
}

export type ExploratoryViewPublicSetup = ReturnType<Plugin['setup']>;
Expand Down
2 changes: 2 additions & 0 deletions x-pack/plugins/infra/public/pages/logs/page_content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import React, { useContext } from 'react';
import { Routes, Route } from '@kbn/shared-ux-router';
import { useKibana } from '@kbn/kibana-react-plugin/public';
import { HeaderMenuPortal, useLinkProps } from '@kbn/observability-shared-plugin/public';
import { ObservabilityAIAssistantActionMenuItem } from '@kbn/observability-ai-assistant-plugin/public';
import { LazyAlertDropdownWrapper } from '../../alerting/log_threshold';
import { HelpCenterContent } from '../../components/help_center_content';
import { useReadOnlyBadge } from '../../hooks/use_readonly_badge';
Expand Down Expand Up @@ -81,6 +82,7 @@ export const LogsPageContent: React.FunctionComponent = () => {
>
{ADD_DATA_LABEL}
</EuiHeaderLink>
<ObservabilityAIAssistantActionMenuItem />
</EuiHeaderLinks>
</HeaderMenuPortal>
)}
Expand Down
2 changes: 2 additions & 0 deletions x-pack/plugins/infra/public/pages/metrics/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { Routes, Route } from '@kbn/shared-ux-router';
import { EuiErrorBoundary, EuiHeaderLinks, EuiHeaderLink } from '@elastic/eui';
import { useKibana } from '@kbn/kibana-react-plugin/public';
import { HeaderMenuPortal, useLinkProps } from '@kbn/observability-shared-plugin/public';
import { ObservabilityAIAssistantActionMenuItem } from '@kbn/observability-ai-assistant-plugin/public';
import { MetricsSourceConfigurationProperties } from '../../../common/metrics_sources';
import { HelpCenterContent } from '../../components/help_center_content';
import { useReadOnlyBadge } from '../../hooks/use_readonly_badge';
Expand Down Expand Up @@ -89,6 +90,7 @@ export const InfrastructurePage = ({ match }: RouteComponentProps) => {
>
{ADD_DATA_LABEL}
</EuiHeaderLink>
<ObservabilityAIAssistantActionMenuItem />
</EuiHeaderLinks>
</HeaderMenuPortal>
)}
Expand Down
1 change: 1 addition & 0 deletions x-pack/plugins/observability/kibana.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
"inspector",
"lens",
"observabilityShared",
"observabilityAIAssistant",
"ruleRegistry",
"triggersActionsUi",
"security",
Expand Down
55 changes: 29 additions & 26 deletions x-pack/plugins/observability/public/application/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import {
} from '@kbn/kibana-react-plugin/public';
import { Storage } from '@kbn/kibana-utils-plugin/public';
import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public';
import { ObservabilityAIAssistantProvider } from '@kbn/observability-ai-assistant-plugin/public';
import { HasDataContextProvider } from '../context/has_data_context/has_data_context';
import { PluginContext } from '../context/plugin_context/plugin_context';
import { ConfigSchema, ObservabilityPublicPluginsStart } from '../plugin';
Expand Down Expand Up @@ -100,32 +101,34 @@ export const renderApp = ({
kibanaVersion,
}}
>
<PluginContext.Provider
value={{
config,
appMountParameters,
observabilityRuleTypeRegistry,
ObservabilityPageTemplate,
}}
>
<Router history={history}>
<EuiThemeProvider darkMode={isDarkMode}>
<i18nCore.Context>
<RedirectAppLinks
application={core.application}
className={APP_WRAPPER_CLASS}
>
<QueryClientProvider client={queryClient}>
<HasDataContextProvider>
<App />
</HasDataContextProvider>
<HideableReactQueryDevTools />
</QueryClientProvider>
</RedirectAppLinks>
</i18nCore.Context>
</EuiThemeProvider>
</Router>
</PluginContext.Provider>
<ObservabilityAIAssistantProvider value={plugins.observabilityAIAssistant}>
<PluginContext.Provider
value={{
config,
appMountParameters,
observabilityRuleTypeRegistry,
ObservabilityPageTemplate,
}}
>
<Router history={history}>
<EuiThemeProvider darkMode={isDarkMode}>
<i18nCore.Context>
<RedirectAppLinks
application={core.application}
className={APP_WRAPPER_CLASS}
>
<QueryClientProvider client={queryClient}>
<HasDataContextProvider>
<App />
</HasDataContextProvider>
<HideableReactQueryDevTools />
</QueryClientProvider>
</RedirectAppLinks>
</i18nCore.Context>
</EuiThemeProvider>
</Router>
</PluginContext.Provider>
</ObservabilityAIAssistantProvider>
</KibanaContextProvider>
</CloudProvider>
</KibanaThemeProvider>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import { getTimeZone } from '../../utils/get_time_zone';
import { isAlertDetailsEnabledPerApp } from '../../utils/is_alert_details_enabled';
import { observabilityFeatureId } from '../../../common';
import { paths } from '../../../common/locators/paths';
import { HeaderMenu } from '../overview/components/header_menu/header_menu';

interface AlertDetailsPathParams {
alertId: string;
Expand Down Expand Up @@ -137,6 +138,7 @@ export function AlertDetails() {
}}
data-test-subj="alertDetails"
>
<HeaderMenu />
<AlertSummary alertSummaryFields={summaryFields} />
<EuiSpacer size="l" />
{AlertDetailsAppSection && rule && (
Expand Down
2 changes: 2 additions & 0 deletions x-pack/plugins/observability/public/pages/alerts/alerts.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import { calculateTimeRangeBucketSize } from '../overview/helpers/calculate_buck
import { getAlertSummaryTimeRange } from '../../utils/alert_summary_widget';
import { observabilityAlertFeatureIds } from '../../../common/constants';
import { ALERTS_URL_STORAGE_KEY } from '../../../common/constants';
import { HeaderMenu } from '../overview/components/header_menu/header_menu';

const ALERTS_SEARCH_BAR_ID = 'alerts-search-bar-o11y';
const ALERTS_PER_PAGE = 50;
Expand Down Expand Up @@ -175,6 +176,7 @@ function InternalAlertsPage() {
rightSideItems: renderRuleStats(ruleStats, manageRulesHref, ruleStatsLoading),
}}
>
<HeaderMenu />
<EuiFlexGroup direction="column" gutterSize="m">
<EuiFlexItem>
<ObservabilityAlertSearchBar
Expand Down
2 changes: 2 additions & 0 deletions x-pack/plugins/observability/public/pages/cases/cases.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { useHasData } from '../../hooks/use_has_data';
import { Cases } from './components/cases';
import { LoadingObservability } from '../../components/loading_observability';
import { CaseFeatureNoPermissions } from './components/feature_no_permissions';
import { HeaderMenu } from '../overview/components/header_menu/header_menu';

export function CasesPage() {
const userCasesPermissions = useGetUserCasesPermissions();
Expand All @@ -26,6 +27,7 @@ export function CasesPage() {

return userCasesPermissions.read ? (
<ObservabilityPageTemplate isPageDataLoaded data-test-subj="o11yCasesPage">
<HeaderMenu />
<Cases permissions={userCasesPermissions} />
</ObservabilityPageTemplate>
) : (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import { EuiHeaderLink, EuiHeaderLinks } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import React from 'react';
import { ObservabilityAIAssistantActionMenuItem } from '@kbn/observability-ai-assistant-plugin/public';
import { useKibana } from '../../../../utils/kibana_react';
import { usePluginContext } from '../../../../hooks/use_plugin_context';
import HeaderMenuPortal from './header_menu_portal';
Expand All @@ -28,6 +29,7 @@ export function HeaderMenu(): React.ReactElement | null {
>
{addDataLinkText}
</EuiHeaderLink>
<ObservabilityAIAssistantActionMenuItem />
</EuiHeaderLinks>
</HeaderMenuPortal>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import {
getDefaultAlertSummaryTimeRange,
} from '../../utils/alert_summary_widget';
import type { AlertStatus } from '../../../common/typings';
import { HeaderMenu } from '../overview/components/header_menu/header_menu';

export type TabId = typeof RULE_DETAILS_ALERTS_TAB | typeof RULE_DETAILS_EXECUTION_TAB;

Expand Down Expand Up @@ -217,6 +218,7 @@ export function RuleDetailsPage() {
],
}}
>
<HeaderMenu />
<EuiFlexGroup wrap gutterSize="m">
<EuiFlexItem style={{ minWidth: 350 }}>
<RuleStatusPanel
Expand Down
2 changes: 2 additions & 0 deletions x-pack/plugins/observability/public/pages/rules/rules.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import { useBreadcrumbs } from '@kbn/observability-shared-plugin/public';
import { useKibana } from '../../utils/kibana_react';
import { usePluginContext } from '../../hooks/use_plugin_context';
import { useGetFilteredRuleTypes } from '../../hooks/use_get_filtered_rule_types';
import { HeaderMenu } from '../overview/components/header_menu/header_menu';

export function RulesPage() {
const {
Expand Down Expand Up @@ -142,6 +143,7 @@ export function RulesPage() {
}}
data-test-subj="rulesPage"
>
<HeaderMenu />
<EuiFlexGroup direction="column" gutterSize="s">
<EuiFlexItem>
<RuleList
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import type { SloDetailsPathParams } from './types';
import { AutoRefreshButton } from '../slos/components/auto_refresh_button';
import { FeedbackButton } from '../../components/slo/feedback_button/feedback_button';
import { useGetInstanceIdQueryParam } from './hooks/use_get_instance_id_query_param';
import { HeaderMenu } from '../overview/components/header_menu/header_menu';

export function SloDetailsPage() {
const {
Expand Down Expand Up @@ -83,6 +84,7 @@ export function SloDetailsPage() {
}}
data-test-subj="sloDetailsPage"
>
<HeaderMenu />
{isLoading && <EuiLoadingSpinner data-test-subj="sloDetailsLoading" />}
{!isLoading && <SloDetails slo={slo!} isAutoRefreshing={isAutoRefreshing} />}
</ObservabilityPageTemplate>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import { useCapabilities } from '../../hooks/slo/use_capabilities';
import { useFetchSloGlobalDiagnosis } from '../../hooks/slo/use_fetch_global_diagnosis';
import { FeedbackButton } from '../../components/slo/feedback_button/feedback_button';
import { SloEditForm } from './components/slo_edit_form';
import { HeaderMenu } from '../overview/components/header_menu/header_menu';

export function SloEditPage() {
const {
Expand Down Expand Up @@ -83,6 +84,7 @@ export function SloEditPage() {
}}
data-test-subj="slosEditPage"
>
<HeaderMenu />
<SloEditForm slo={slo} />
</ObservabilityPageTemplate>
);
Expand Down
2 changes: 2 additions & 0 deletions x-pack/plugins/observability/public/pages/slos/slos.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import { AutoRefreshButton } from './components/auto_refresh_button';
import { HeaderTitle } from './components/header_title';
import { FeedbackButton } from '../../components/slo/feedback_button/feedback_button';
import { paths } from '../../../common/locators/paths';
import { HeaderMenu } from '../overview/components/header_menu/header_menu';

export function SlosPage() {
const {
Expand Down Expand Up @@ -88,6 +89,7 @@ export function SlosPage() {
}}
data-test-subj="slosPage"
>
<HeaderMenu />
<SloList autoRefresh={isAutoRefreshing} />
</ObservabilityPageTemplate>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import { useFetchSloList } from '../../hooks/slo/use_fetch_slo_list';
import { paths } from '../../../common/locators/paths';
import illustration from './assets/illustration.svg';
import { useFetchSloGlobalDiagnosis } from '../../hooks/slo/use_fetch_global_diagnosis';
import { HeaderMenu } from '../overview/components/header_menu/header_menu';

export function SlosWelcomePage() {
const {
Expand Down Expand Up @@ -57,6 +58,7 @@ export function SlosWelcomePage() {

return hasSlosAndHasPermissions || isLoading ? null : (
<ObservabilityPageTemplate data-test-subj="slosPageWelcomePrompt">
<HeaderMenu />
<EuiPageTemplate.EmptyPrompt
title={
<EuiTitle size="l">
Expand Down
Loading

0 comments on commit ffa972c

Please sign in to comment.