From 7cc83b4c4f9c779ee202a259f86c90bb99dcc0de Mon Sep 17 00:00:00 2001 From: saarikabhasi Date: Thu, 15 Aug 2024 14:02:46 -0400 Subject: [PATCH 01/19] introduce search assistant plugin --- package.json | 1 + tsconfig.base.json | 2 + x-pack/plugins/search_assistant/.eslintrc.js | 9 +++ x-pack/plugins/search_assistant/.gitignore | 2 + x-pack/plugins/search_assistant/.i18nrc.json | 9 +++ x-pack/plugins/search_assistant/README.md | 22 +++++ .../plugins/search_assistant/common/index.ts | 8 ++ x-pack/plugins/search_assistant/kibana.jsonc | 26 ++++++ x-pack/plugins/search_assistant/package.json | 12 +++ .../search_assistant/public/application.tsx | 30 +++++++ .../public/components/app.tsx | 25 ++++++ .../public/components/search_assistant.tsx | 24 ++++++ .../search_assistant/public/embeddable.tsx | 11 +++ .../search_assistant/public/index.scss | 0 .../plugins/search_assistant/public/index.ts | 10 +++ .../plugins/search_assistant/public/plugin.ts | 46 +++++++++++ .../search_assistant/public/router.tsx | 20 +++++ .../plugins/search_assistant/public/types.ts | 18 +++++ .../plugins/search_assistant/server/index.ts | 11 +++ .../plugins/search_assistant/server/plugin.ts | 37 +++++++++ .../search_assistant/server/routes/index.ts | 17 ++++ .../plugins/search_assistant/server/types.ts | 4 + .../search_assistant/translations/ja-JP.json | 81 +++++++++++++++++++ x-pack/plugins/search_assistant/tsconfig.json | 34 ++++++++ yarn.lock | 4 + 25 files changed, 463 insertions(+) create mode 100644 x-pack/plugins/search_assistant/.eslintrc.js create mode 100644 x-pack/plugins/search_assistant/.gitignore create mode 100644 x-pack/plugins/search_assistant/.i18nrc.json create mode 100755 x-pack/plugins/search_assistant/README.md create mode 100644 x-pack/plugins/search_assistant/common/index.ts create mode 100644 x-pack/plugins/search_assistant/kibana.jsonc create mode 100644 x-pack/plugins/search_assistant/package.json create mode 100644 x-pack/plugins/search_assistant/public/application.tsx create mode 100644 x-pack/plugins/search_assistant/public/components/app.tsx create mode 100644 x-pack/plugins/search_assistant/public/components/search_assistant.tsx create mode 100644 x-pack/plugins/search_assistant/public/embeddable.tsx create mode 100644 x-pack/plugins/search_assistant/public/index.scss create mode 100644 x-pack/plugins/search_assistant/public/index.ts create mode 100644 x-pack/plugins/search_assistant/public/plugin.ts create mode 100644 x-pack/plugins/search_assistant/public/router.tsx create mode 100644 x-pack/plugins/search_assistant/public/types.ts create mode 100644 x-pack/plugins/search_assistant/server/index.ts create mode 100644 x-pack/plugins/search_assistant/server/plugin.ts create mode 100644 x-pack/plugins/search_assistant/server/routes/index.ts create mode 100644 x-pack/plugins/search_assistant/server/types.ts create mode 100644 x-pack/plugins/search_assistant/translations/ja-JP.json create mode 100644 x-pack/plugins/search_assistant/tsconfig.json diff --git a/package.json b/package.json index 4a6b3d024963ee..1c047eb7d9db89 100644 --- a/package.json +++ b/package.json @@ -744,6 +744,7 @@ "@kbn/screenshotting-example-plugin": "link:x-pack/examples/screenshotting_example", "@kbn/screenshotting-plugin": "link:x-pack/plugins/screenshotting", "@kbn/search-api-panels": "link:packages/kbn-search-api-panels", + "@kbn/search-assistant": "link:x-pack/plugins/search_assistant", "@kbn/search-connectors": "link:packages/kbn-search-connectors", "@kbn/search-connectors-plugin": "link:x-pack/plugins/search_connectors", "@kbn/search-errors": "link:packages/kbn-search-errors", diff --git a/tsconfig.base.json b/tsconfig.base.json index ebc0883991d5ab..8666bc3ea5b73c 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1448,6 +1448,8 @@ "@kbn/screenshotting-plugin/*": ["x-pack/plugins/screenshotting/*"], "@kbn/search-api-panels": ["packages/kbn-search-api-panels"], "@kbn/search-api-panels/*": ["packages/kbn-search-api-panels/*"], + "@kbn/search-assistant": ["x-pack/plugins/search_assistant"], + "@kbn/search-assistant/*": ["x-pack/plugins/search_assistant/*"], "@kbn/search-connectors": ["packages/kbn-search-connectors"], "@kbn/search-connectors/*": ["packages/kbn-search-connectors/*"], "@kbn/search-connectors-plugin": ["x-pack/plugins/search_connectors"], diff --git a/x-pack/plugins/search_assistant/.eslintrc.js b/x-pack/plugins/search_assistant/.eslintrc.js new file mode 100644 index 00000000000000..dcd9ea0d061e95 --- /dev/null +++ b/x-pack/plugins/search_assistant/.eslintrc.js @@ -0,0 +1,9 @@ +require('@kbn/babel-register').install(); + +module.exports = { + root: true, + extends: ['@kbn/eslint-config', 'plugin:@elastic/eui/recommended'], + rules: { + '@kbn/eslint/require-license-header': 'off', + }, +}; diff --git a/x-pack/plugins/search_assistant/.gitignore b/x-pack/plugins/search_assistant/.gitignore new file mode 100644 index 00000000000000..c3dca1b96fcc25 --- /dev/null +++ b/x-pack/plugins/search_assistant/.gitignore @@ -0,0 +1,2 @@ +/build +/target diff --git a/x-pack/plugins/search_assistant/.i18nrc.json b/x-pack/plugins/search_assistant/.i18nrc.json new file mode 100644 index 00000000000000..1dbd97d18d841c --- /dev/null +++ b/x-pack/plugins/search_assistant/.i18nrc.json @@ -0,0 +1,9 @@ +{ + "prefix": "SearchAssistant", + "paths": { + "SearchAssistant": "." + }, + "translations": [ + "translations/ja-JP.json" + ] +} diff --git a/x-pack/plugins/search_assistant/README.md b/x-pack/plugins/search_assistant/README.md new file mode 100755 index 00000000000000..606dc8b4ccde3a --- /dev/null +++ b/x-pack/plugins/search_assistant/README.md @@ -0,0 +1,22 @@ +# SearchAssistant + +A Kibana plugin + +--- + +## Development + +See the [kibana contributing guide](https://github.com/elastic/kibana/blob/main/CONTRIBUTING.md) for instructions setting up your development environment. + +## Scripts + +
+
yarn kbn bootstrap
+
Execute this to install node_modules and setup the dependencies in your plugin and in Kibana
+ +
yarn plugin-helpers build
+
Execute this to create a distributable version of this plugin that can be installed in Kibana
+ +
yarn plugin-helpers dev --watch
+
Execute this to build your plugin ui browser side so Kibana could pick up when started in development
+
diff --git a/x-pack/plugins/search_assistant/common/index.ts b/x-pack/plugins/search_assistant/common/index.ts new file mode 100644 index 00000000000000..876fc57b3cc351 --- /dev/null +++ b/x-pack/plugins/search_assistant/common/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ +export const PLUGIN_ID = 'SearchAssistant'; +export const PLUGIN_NAME = 'SearchAssistant'; diff --git a/x-pack/plugins/search_assistant/kibana.jsonc b/x-pack/plugins/search_assistant/kibana.jsonc new file mode 100644 index 00000000000000..768dc36e154288 --- /dev/null +++ b/x-pack/plugins/search_assistant/kibana.jsonc @@ -0,0 +1,26 @@ +{ + "type": "plugin", + "id": "@kbn/search-assistant", + "owner": "@elastic/search-kibana", + "description": "AI Assistant for Search", + "plugin": { + "id": "searchAssistant", + "server": true, + "browser": true, + "configPath": [ + "xpack", + "searchAssistant" + ], + "requiredPlugins": [ + "observabilityAIAssistant", + "observabilityAIAssistantApp" + ], + "optionalPlugins": [ + "cloud", + "usageCollection", + ], + "requiredBundles": [ + "kibanaReact" + ] + } +} diff --git a/x-pack/plugins/search_assistant/package.json b/x-pack/plugins/search_assistant/package.json new file mode 100644 index 00000000000000..80a54625db03e4 --- /dev/null +++ b/x-pack/plugins/search_assistant/package.json @@ -0,0 +1,12 @@ +{ + "name": "SearchAssistant", + "version": "0.0.0", + "private": true, + "scripts": { + "bootstrap": "yarn kbn bootstrap && yarn install", + "build": "yarn plugin-helpers build", + "dev": "yarn plugin-helpers dev", + "plugin-helpers": "node ../../scripts/plugin_helpers", + "kbn": "node ../../scripts/kbn" + } +} diff --git a/x-pack/plugins/search_assistant/public/application.tsx b/x-pack/plugins/search_assistant/public/application.tsx new file mode 100644 index 00000000000000..cf0afe48b341ad --- /dev/null +++ b/x-pack/plugins/search_assistant/public/application.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import type { CoreStart } from '@kbn/core/public'; +import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; +import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { I18nProvider } from '@kbn/i18n-react'; +import { Router } from '@kbn/shared-ux-router'; +import type { SearchAssistantPluginStartDependencies } from './types'; +import { SearchAssistantRouter } from './router'; + +export const renderApp = ( + core: CoreStart, + services: SearchAssistantPluginStartDependencies, + element: HTMLElement +) => { + ReactDOM.render( + + + + + + + + + , + element + ); + + return () => ReactDOM.unmountComponentAtNode(element); +}; diff --git a/x-pack/plugins/search_assistant/public/components/app.tsx b/x-pack/plugins/search_assistant/public/components/app.tsx new file mode 100644 index 00000000000000..61e910fdb0a441 --- /dev/null +++ b/x-pack/plugins/search_assistant/public/components/app.tsx @@ -0,0 +1,25 @@ +/* + * 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 React from 'react'; +import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template'; +export const App: React.FC = () => { + return ( + +
+ + ); +}; diff --git a/x-pack/plugins/search_assistant/public/components/search_assistant.tsx b/x-pack/plugins/search_assistant/public/components/search_assistant.tsx new file mode 100644 index 00000000000000..9c227a4e7b73f7 --- /dev/null +++ b/x-pack/plugins/search_assistant/public/components/search_assistant.tsx @@ -0,0 +1,24 @@ +/* + * 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 { EuiPageTemplate } from '@elastic/eui'; +import React from 'react'; +import { App } from './app'; + +export const SearchAssistantPage: React.FC = () => { + return ( + + + + ); +}; diff --git a/x-pack/plugins/search_assistant/public/embeddable.tsx b/x-pack/plugins/search_assistant/public/embeddable.tsx new file mode 100644 index 00000000000000..d39c96c7621061 --- /dev/null +++ b/x-pack/plugins/search_assistant/public/embeddable.tsx @@ -0,0 +1,11 @@ +/* + * 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 { dynamic } from '@kbn/shared-ux-utility'; + +export const SearchAssistant = dynamic(async () => ({ + default: (await import('./components/app')).App, +})); diff --git a/x-pack/plugins/search_assistant/public/index.scss b/x-pack/plugins/search_assistant/public/index.scss new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/x-pack/plugins/search_assistant/public/index.ts b/x-pack/plugins/search_assistant/public/index.ts new file mode 100644 index 00000000000000..a46bebc1b84a9e --- /dev/null +++ b/x-pack/plugins/search_assistant/public/index.ts @@ -0,0 +1,10 @@ +import './index.scss'; + +import { SearchAssistantPlugin } from './plugin'; + +// This exports static code and TypeScript types, +// as well as, Kibana Platform `plugin()` initializer. +export function plugin() { + return new SearchAssistantPlugin(); +} +export type { SearchAssistantPluginSetup, SearchAssistantPluginStart } from './types'; diff --git a/x-pack/plugins/search_assistant/public/plugin.ts b/x-pack/plugins/search_assistant/public/plugin.ts new file mode 100644 index 00000000000000..de72db0fdda203 --- /dev/null +++ b/x-pack/plugins/search_assistant/public/plugin.ts @@ -0,0 +1,46 @@ +import { i18n } from '@kbn/i18n'; +import type { AppMountParameters, CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; +import type { + SearchAssistantPluginSetup, + SearchAssistantPluginStart, + SearchAssistantPluginStartDependencies, +} from './types'; +import { PLUGIN_ID } from '../common'; +import { SearchAssistant } from './embeddable'; + +export class SearchAssistantPlugin + implements Plugin +{ + public setup( + core: CoreSetup + ): SearchAssistantPluginSetup { + core.application.register({ + id: PLUGIN_ID, + appRoute: '/app/search_assistant', + title: i18n.translate('xpack.searchAssistant.applicationTitle', { + defaultMessage: 'Search Assistant', + }), + async mount({ element, history }: AppMountParameters) { + const { renderApp } = await import('./application'); + const [coreStart, depsStart] = await core.getStartServices(); + const startDeps: SearchAssistantPluginStartDependencies = { + ...depsStart, + history, + }; + return renderApp(coreStart, startDeps, element); + }, + }); + return {}; + } + + public start( + core: CoreStart, + services: SearchAssistantPluginStartDependencies + ): SearchAssistantPluginStart { + return { + SearchAssistant, + }; + } + + public stop() {} +} diff --git a/x-pack/plugins/search_assistant/public/router.tsx b/x-pack/plugins/search_assistant/public/router.tsx new file mode 100644 index 00000000000000..a25f865b4f74a1 --- /dev/null +++ b/x-pack/plugins/search_assistant/public/router.tsx @@ -0,0 +1,20 @@ +/* + * 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 { Route, Routes } from '@kbn/shared-ux-router'; +import React from 'react'; +import { SearchAssistantPage } from './components/search_assistant'; + +export const SearchAssistantRouter: React.FC = () => { + return ( + + + + + + ); +}; diff --git a/x-pack/plugins/search_assistant/public/types.ts b/x-pack/plugins/search_assistant/public/types.ts new file mode 100644 index 00000000000000..66bf66911928ae --- /dev/null +++ b/x-pack/plugins/search_assistant/public/types.ts @@ -0,0 +1,18 @@ +import { AppMountParameters } from '@kbn/core/public'; +import { UsageCollectionStart } from '@kbn/usage-collection-plugin/public'; +import { ObservabilityAIAssistantPublicStart } from '@kbn/observability-ai-assistant-plugin/public'; +import { ComponentProps, FC } from 'react'; +import type { SearchAssistantPage } from './components/search_assistant'; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface SearchAssistantPluginSetup {} + +export interface SearchAssistantPluginStart { + SearchAssistant: FC>; +} + +export interface SearchAssistantPluginStartDependencies { + history: AppMountParameters['history']; + observailbilityAssistant: ObservabilityAIAssistantPublicStart; + usageCollection?: UsageCollectionStart; +} diff --git a/x-pack/plugins/search_assistant/server/index.ts b/x-pack/plugins/search_assistant/server/index.ts new file mode 100644 index 00000000000000..e1347a7a516009 --- /dev/null +++ b/x-pack/plugins/search_assistant/server/index.ts @@ -0,0 +1,11 @@ +import type { PluginInitializerContext } from '@kbn/core/server'; + +// This exports static code and TypeScript types, +// as well as, Kibana Platform `plugin()` initializer. + +export async function plugin(initializerContext: PluginInitializerContext) { + const { SearchAssistantPlugin } = await import('./plugin'); + return new SearchAssistantPlugin(initializerContext); +} + +export type { SearchAssistantPluginSetup, SearchAssistantPluginStart } from './types'; diff --git a/x-pack/plugins/search_assistant/server/plugin.ts b/x-pack/plugins/search_assistant/server/plugin.ts new file mode 100644 index 00000000000000..80afbbe0306161 --- /dev/null +++ b/x-pack/plugins/search_assistant/server/plugin.ts @@ -0,0 +1,37 @@ +import type { + PluginInitializerContext, + CoreSetup, + CoreStart, + Plugin, + Logger, +} from '@kbn/core/server'; + +import type { SearchAssistantPluginSetup, SearchAssistantPluginStart } from './types'; +import { defineRoutes } from './routes'; + +export class SearchAssistantPlugin + implements Plugin +{ + private readonly logger: Logger; + + constructor(initializerContext: PluginInitializerContext) { + this.logger = initializerContext.logger.get(); + } + + public setup(core: CoreSetup) { + this.logger.debug('SearchAssistant: Setup'); + const router = core.http.createRouter(); + + // Register server side APIs + defineRoutes(router); + + return {}; + } + + public start(core: CoreStart) { + this.logger.debug('SearchAssistant: Started'); + return {}; + } + + public stop() {} +} diff --git a/x-pack/plugins/search_assistant/server/routes/index.ts b/x-pack/plugins/search_assistant/server/routes/index.ts new file mode 100644 index 00000000000000..4945ba0e4432f0 --- /dev/null +++ b/x-pack/plugins/search_assistant/server/routes/index.ts @@ -0,0 +1,17 @@ +import type { IRouter } from '@kbn/core/server'; + +export function defineRoutes(router: IRouter) { + router.get( + { + path: '/api/search_aiassistant/example', + validate: false, + }, + async (context, request, response) => { + return response.ok({ + body: { + time: new Date().toISOString(), + }, + }); + } + ); +} diff --git a/x-pack/plugins/search_assistant/server/types.ts b/x-pack/plugins/search_assistant/server/types.ts new file mode 100644 index 00000000000000..6a9216e9a8b00e --- /dev/null +++ b/x-pack/plugins/search_assistant/server/types.ts @@ -0,0 +1,4 @@ +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface SearchAssistantPluginSetup {} +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface SearchAssistantPluginStart {} diff --git a/x-pack/plugins/search_assistant/translations/ja-JP.json b/x-pack/plugins/search_assistant/translations/ja-JP.json new file mode 100644 index 00000000000000..9a530467ccb94d --- /dev/null +++ b/x-pack/plugins/search_assistant/translations/ja-JP.json @@ -0,0 +1,81 @@ +{ + "formats": { + "number": { + "currency": { + "style": "currency" + }, + "percent": { + "style": "percent" + } + }, + "date": { + "short": { + "month": "numeric", + "day": "numeric", + "year": "2-digit" + }, + "medium": { + "month": "short", + "day": "numeric", + "year": "numeric" + }, + "long": { + "month": "long", + "day": "numeric", + "year": "numeric" + }, + "full": { + "weekday": "long", + "month": "long", + "day": "numeric", + "year": "numeric" + } + }, + "time": { + "short": { + "hour": "numeric", + "minute": "numeric" + }, + "medium": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric" + }, + "long": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric", + "timeZoneName": "short" + }, + "full": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric", + "timeZoneName": "short" + } + }, + "relative": { + "years": { + "units": "year" + }, + "months": { + "units": "month" + }, + "days": { + "units": "day" + }, + "hours": { + "units": "hour" + }, + "minutes": { + "units": "minute" + }, + "seconds": { + "units": "second" + } + } + }, + "messages": { + "SearchAssistant.buttonText": "Translate me to Japanese" + } +} diff --git a/x-pack/plugins/search_assistant/tsconfig.json b/x-pack/plugins/search_assistant/tsconfig.json new file mode 100644 index 00000000000000..82176d71c55956 --- /dev/null +++ b/x-pack/plugins/search_assistant/tsconfig.json @@ -0,0 +1,34 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./target/types" + }, + "include": [ + "index.ts", + "common/**/*.ts", + "public/**/*.ts", + "public/**/*.tsx", + "server/**/*.ts", + "../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/react-kibana-context-render", + "@kbn/kibana-react-plugin", + "@kbn/i18n-react", + "@kbn/shared-ux-router", + "@kbn/shared-ux-page-kibana-template", + "@kbn/shared-ux-utility", + "@kbn/i18n", + "@kbn/cloud-plugin", + "@kbn/console-plugin", + "@kbn/share-plugin", + "@kbn/usage-collection-plugin", + "@kbn/config-schema", + "@kbn/observability-ai-assistant-app-plugin", + "@kbn/observability-ai-assistant-plugin" + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/yarn.lock b/yarn.lock index e697962b2caff3..dd59f235bbf79c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6187,6 +6187,10 @@ version "0.0.0" uid "" +"@kbn/search-assistant@link:x-pack/plugins/search_assistant": + version "0.0.0" + uid "" + "@kbn/search-connectors-plugin@link:x-pack/plugins/search_connectors": version "0.0.0" uid "" From ccc6d76f9bd922717f84de1913a5c4734b54bff7 Mon Sep 17 00:00:00 2001 From: Saarika Bhasi <55930906+saarikabhasi@users.noreply.github.com> Date: Thu, 15 Aug 2024 14:05:45 -0400 Subject: [PATCH 02/19] fix CI Update limits.yml --- .github/CODEOWNERS | 1 + docs/developer/plugin-list.asciidoc | 4 ++++ packages/kbn-optimizer/limits.yml | 1 + x-pack/.i18nrc.json | 1 + x-pack/plugins/search_assistant/package.json | 5 +++-- x-pack/plugins/search_assistant/tsconfig.json | 7 +------ 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 388254c88f7ae6..ad5b6653a0a1ce 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -727,6 +727,7 @@ src/plugins/screenshot_mode @elastic/appex-sharedux x-pack/examples/screenshotting_example @elastic/appex-sharedux x-pack/plugins/screenshotting @elastic/kibana-reporting-services packages/kbn-search-api-panels @elastic/search-kibana +x-pack/plugins/search_assistant @elastic/search-kibana packages/kbn-search-connectors @elastic/search-kibana x-pack/plugins/search_connectors @elastic/search-kibana packages/kbn-search-errors @elastic/kibana-data-discovery diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index e51f77d096adf3..dd74c52e6df03a 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -795,6 +795,10 @@ Elastic. It uses Chromium and Puppeteer underneath to run the browser in headless mode. +|{kib-repo}blob/{branch}/x-pack/plugins/search_assistant/README.md[searchAssistant] +|A Kibana plugin + + |{kib-repo}blob/{branch}/x-pack/plugins/search_connectors/README.mdx[searchConnectors] |This plugin contains common assets and endpoints for the use of connectors in Kibana. Primarily used by the enterprise_search and serverless_search plugins. diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index a33156e3769721..d6aa58cb5d3070 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -136,6 +136,7 @@ pageLoadAssetSize: savedSearch: 16225 screenshotMode: 17856 screenshotting: 22870 + searchAssistant: 19831 searchConnectors: 30000 searchHomepage: 19831 searchInferenceEndpoints: 20470 diff --git a/x-pack/.i18nrc.json b/x-pack/.i18nrc.json index 7ff0f3e3ef7667..16920d1c101c78 100644 --- a/x-pack/.i18nrc.json +++ b/x-pack/.i18nrc.json @@ -101,6 +101,7 @@ "xpack.searchNotebooks": "plugins/search_notebooks", "xpack.searchPlayground": "plugins/search_playground", "xpack.searchInferenceEndpoints": "plugins/search_inference_endpoints", + "xpack.searchAssistant": "plugins/search_assistant", "xpack.searchProfiler": "plugins/searchprofiler", "xpack.security": ["plugins/security", "packages/security"], "xpack.server": "legacy/server", diff --git a/x-pack/plugins/search_assistant/package.json b/x-pack/plugins/search_assistant/package.json index 80a54625db03e4..d86c0b2d050863 100644 --- a/x-pack/plugins/search_assistant/package.json +++ b/x-pack/plugins/search_assistant/package.json @@ -1,6 +1,7 @@ { - "name": "SearchAssistant", - "version": "0.0.0", + "name": "@kbn/search-assistant", + "version": "1.0.0", + "license": "Elastic License 2.0", "private": true, "scripts": { "bootstrap": "yarn kbn bootstrap && yarn install", diff --git a/x-pack/plugins/search_assistant/tsconfig.json b/x-pack/plugins/search_assistant/tsconfig.json index 82176d71c55956..3b084aebd746b7 100644 --- a/x-pack/plugins/search_assistant/tsconfig.json +++ b/x-pack/plugins/search_assistant/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../../../tsconfig.base.json", "compilerOptions": { - "outDir": "./target/types" + "outDir": "target/types" }, "include": [ "index.ts", @@ -20,12 +20,7 @@ "@kbn/shared-ux-page-kibana-template", "@kbn/shared-ux-utility", "@kbn/i18n", - "@kbn/cloud-plugin", - "@kbn/console-plugin", - "@kbn/share-plugin", "@kbn/usage-collection-plugin", - "@kbn/config-schema", - "@kbn/observability-ai-assistant-app-plugin", "@kbn/observability-ai-assistant-plugin" ], "exclude": [ From c09aba69ba54981f8f9a23af608d2d350050ad8b Mon Sep 17 00:00:00 2001 From: saarikabhasi Date: Mon, 19 Aug 2024 11:18:12 -0400 Subject: [PATCH 03/19] add review feedback --- x-pack/plugins/search_assistant/.i18nrc.json | 9 --- .../plugins/search_assistant/common/index.ts | 4 +- x-pack/plugins/search_assistant/package.json | 13 --- .../public/components/app.tsx | 12 +-- .../search_assistant/public/embeddable.tsx | 11 --- .../search_assistant/public/index.scss | 0 .../plugins/search_assistant/public/index.ts | 9 ++- .../plugins/search_assistant/public/plugin.ts | 10 +-- .../plugins/search_assistant/public/types.ts | 8 +- .../plugins/search_assistant/server/index.ts | 10 ++- .../plugins/search_assistant/server/plugin.ts | 7 ++ .../search_assistant/server/routes/index.ts | 7 ++ .../plugins/search_assistant/server/types.ts | 7 ++ .../search_assistant/translations/ja-JP.json | 81 ------------------- 14 files changed, 41 insertions(+), 147 deletions(-) delete mode 100644 x-pack/plugins/search_assistant/.i18nrc.json delete mode 100644 x-pack/plugins/search_assistant/package.json delete mode 100644 x-pack/plugins/search_assistant/public/embeddable.tsx delete mode 100644 x-pack/plugins/search_assistant/public/index.scss delete mode 100644 x-pack/plugins/search_assistant/translations/ja-JP.json diff --git a/x-pack/plugins/search_assistant/.i18nrc.json b/x-pack/plugins/search_assistant/.i18nrc.json deleted file mode 100644 index 1dbd97d18d841c..00000000000000 --- a/x-pack/plugins/search_assistant/.i18nrc.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "prefix": "SearchAssistant", - "paths": { - "SearchAssistant": "." - }, - "translations": [ - "translations/ja-JP.json" - ] -} diff --git a/x-pack/plugins/search_assistant/common/index.ts b/x-pack/plugins/search_assistant/common/index.ts index 876fc57b3cc351..27bbca34ce7d15 100644 --- a/x-pack/plugins/search_assistant/common/index.ts +++ b/x-pack/plugins/search_assistant/common/index.ts @@ -4,5 +4,5 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -export const PLUGIN_ID = 'SearchAssistant'; -export const PLUGIN_NAME = 'SearchAssistant'; +export const PLUGIN_ID = 'searchAssistant'; +export const PLUGIN_NAME = 'searchAssistant'; diff --git a/x-pack/plugins/search_assistant/package.json b/x-pack/plugins/search_assistant/package.json deleted file mode 100644 index d86c0b2d050863..00000000000000 --- a/x-pack/plugins/search_assistant/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "@kbn/search-assistant", - "version": "1.0.0", - "license": "Elastic License 2.0", - "private": true, - "scripts": { - "bootstrap": "yarn kbn bootstrap && yarn install", - "build": "yarn plugin-helpers build", - "dev": "yarn plugin-helpers dev", - "plugin-helpers": "node ../../scripts/plugin_helpers", - "kbn": "node ../../scripts/kbn" - } -} diff --git a/x-pack/plugins/search_assistant/public/components/app.tsx b/x-pack/plugins/search_assistant/public/components/app.tsx index 61e910fdb0a441..7d9497c0e14576 100644 --- a/x-pack/plugins/search_assistant/public/components/app.tsx +++ b/x-pack/plugins/search_assistant/public/components/app.tsx @@ -8,17 +8,7 @@ import React from 'react'; import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template'; export const App: React.FC = () => { return ( - +
); diff --git a/x-pack/plugins/search_assistant/public/embeddable.tsx b/x-pack/plugins/search_assistant/public/embeddable.tsx deleted file mode 100644 index d39c96c7621061..00000000000000 --- a/x-pack/plugins/search_assistant/public/embeddable.tsx +++ /dev/null @@ -1,11 +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 { dynamic } from '@kbn/shared-ux-utility'; - -export const SearchAssistant = dynamic(async () => ({ - default: (await import('./components/app')).App, -})); diff --git a/x-pack/plugins/search_assistant/public/index.scss b/x-pack/plugins/search_assistant/public/index.scss deleted file mode 100644 index e69de29bb2d1d6..00000000000000 diff --git a/x-pack/plugins/search_assistant/public/index.ts b/x-pack/plugins/search_assistant/public/index.ts index a46bebc1b84a9e..c2b16e857b53ea 100644 --- a/x-pack/plugins/search_assistant/public/index.ts +++ b/x-pack/plugins/search_assistant/public/index.ts @@ -1,9 +1,12 @@ -import './index.scss'; +/* + * 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 { SearchAssistantPlugin } from './plugin'; -// This exports static code and TypeScript types, -// as well as, Kibana Platform `plugin()` initializer. export function plugin() { return new SearchAssistantPlugin(); } diff --git a/x-pack/plugins/search_assistant/public/plugin.ts b/x-pack/plugins/search_assistant/public/plugin.ts index de72db0fdda203..a5fbe11592bd01 100644 --- a/x-pack/plugins/search_assistant/public/plugin.ts +++ b/x-pack/plugins/search_assistant/public/plugin.ts @@ -6,7 +6,6 @@ import type { SearchAssistantPluginStartDependencies, } from './types'; import { PLUGIN_ID } from '../common'; -import { SearchAssistant } from './embeddable'; export class SearchAssistantPlugin implements Plugin @@ -33,13 +32,8 @@ export class SearchAssistantPlugin return {}; } - public start( - core: CoreStart, - services: SearchAssistantPluginStartDependencies - ): SearchAssistantPluginStart { - return { - SearchAssistant, - }; + public start(): SearchAssistantPluginStart { + return {}; } public stop() {} diff --git a/x-pack/plugins/search_assistant/public/types.ts b/x-pack/plugins/search_assistant/public/types.ts index 66bf66911928ae..8e1191a9405426 100644 --- a/x-pack/plugins/search_assistant/public/types.ts +++ b/x-pack/plugins/search_assistant/public/types.ts @@ -1,18 +1,14 @@ import { AppMountParameters } from '@kbn/core/public'; import { UsageCollectionStart } from '@kbn/usage-collection-plugin/public'; import { ObservabilityAIAssistantPublicStart } from '@kbn/observability-ai-assistant-plugin/public'; -import { ComponentProps, FC } from 'react'; -import type { SearchAssistantPage } from './components/search_assistant'; // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface SearchAssistantPluginSetup {} -export interface SearchAssistantPluginStart { - SearchAssistant: FC>; -} +export interface SearchAssistantPluginStart {} export interface SearchAssistantPluginStartDependencies { history: AppMountParameters['history']; - observailbilityAssistant: ObservabilityAIAssistantPublicStart; + observabilityAIAssistant: ObservabilityAIAssistantPublicStart; usageCollection?: UsageCollectionStart; } diff --git a/x-pack/plugins/search_assistant/server/index.ts b/x-pack/plugins/search_assistant/server/index.ts index e1347a7a516009..7884e37689ec04 100644 --- a/x-pack/plugins/search_assistant/server/index.ts +++ b/x-pack/plugins/search_assistant/server/index.ts @@ -1,7 +1,11 @@ -import type { PluginInitializerContext } from '@kbn/core/server'; +/* + * 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. + */ -// This exports static code and TypeScript types, -// as well as, Kibana Platform `plugin()` initializer. +import type { PluginInitializerContext } from '@kbn/core/server'; export async function plugin(initializerContext: PluginInitializerContext) { const { SearchAssistantPlugin } = await import('./plugin'); diff --git a/x-pack/plugins/search_assistant/server/plugin.ts b/x-pack/plugins/search_assistant/server/plugin.ts index 80afbbe0306161..1ddd125e245f9c 100644 --- a/x-pack/plugins/search_assistant/server/plugin.ts +++ b/x-pack/plugins/search_assistant/server/plugin.ts @@ -1,3 +1,10 @@ +/* + * 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 type { PluginInitializerContext, CoreSetup, diff --git a/x-pack/plugins/search_assistant/server/routes/index.ts b/x-pack/plugins/search_assistant/server/routes/index.ts index 4945ba0e4432f0..eacaddc8e6ce0c 100644 --- a/x-pack/plugins/search_assistant/server/routes/index.ts +++ b/x-pack/plugins/search_assistant/server/routes/index.ts @@ -1,3 +1,10 @@ +/* + * 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 type { IRouter } from '@kbn/core/server'; export function defineRoutes(router: IRouter) { diff --git a/x-pack/plugins/search_assistant/server/types.ts b/x-pack/plugins/search_assistant/server/types.ts index 6a9216e9a8b00e..03c2e5a46f91d2 100644 --- a/x-pack/plugins/search_assistant/server/types.ts +++ b/x-pack/plugins/search_assistant/server/types.ts @@ -1,3 +1,10 @@ +/* + * 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. + */ + // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface SearchAssistantPluginSetup {} // eslint-disable-next-line @typescript-eslint/no-empty-interface diff --git a/x-pack/plugins/search_assistant/translations/ja-JP.json b/x-pack/plugins/search_assistant/translations/ja-JP.json deleted file mode 100644 index 9a530467ccb94d..00000000000000 --- a/x-pack/plugins/search_assistant/translations/ja-JP.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "formats": { - "number": { - "currency": { - "style": "currency" - }, - "percent": { - "style": "percent" - } - }, - "date": { - "short": { - "month": "numeric", - "day": "numeric", - "year": "2-digit" - }, - "medium": { - "month": "short", - "day": "numeric", - "year": "numeric" - }, - "long": { - "month": "long", - "day": "numeric", - "year": "numeric" - }, - "full": { - "weekday": "long", - "month": "long", - "day": "numeric", - "year": "numeric" - } - }, - "time": { - "short": { - "hour": "numeric", - "minute": "numeric" - }, - "medium": { - "hour": "numeric", - "minute": "numeric", - "second": "numeric" - }, - "long": { - "hour": "numeric", - "minute": "numeric", - "second": "numeric", - "timeZoneName": "short" - }, - "full": { - "hour": "numeric", - "minute": "numeric", - "second": "numeric", - "timeZoneName": "short" - } - }, - "relative": { - "years": { - "units": "year" - }, - "months": { - "units": "month" - }, - "days": { - "units": "day" - }, - "hours": { - "units": "hour" - }, - "minutes": { - "units": "minute" - }, - "seconds": { - "units": "second" - } - } - }, - "messages": { - "SearchAssistant.buttonText": "Translate me to Japanese" - } -} From b3f37bc838ba2656db3172e9bed803c3f1509690 Mon Sep 17 00:00:00 2001 From: saarikabhasi Date: Mon, 19 Aug 2024 11:22:29 -0400 Subject: [PATCH 04/19] remove eslint file --- x-pack/plugins/search_assistant/.eslintrc.js | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 x-pack/plugins/search_assistant/.eslintrc.js diff --git a/x-pack/plugins/search_assistant/.eslintrc.js b/x-pack/plugins/search_assistant/.eslintrc.js deleted file mode 100644 index dcd9ea0d061e95..00000000000000 --- a/x-pack/plugins/search_assistant/.eslintrc.js +++ /dev/null @@ -1,9 +0,0 @@ -require('@kbn/babel-register').install(); - -module.exports = { - root: true, - extends: ['@kbn/eslint-config', 'plugin:@elastic/eui/recommended'], - rules: { - '@kbn/eslint/require-license-header': 'off', - }, -}; From 2fa24a4e8e18fece8546f45b1db2082d9296e5f2 Mon Sep 17 00:00:00 2001 From: saarikabhasi Date: Mon, 19 Aug 2024 11:31:25 -0400 Subject: [PATCH 05/19] fix eslint, add license --- x-pack/plugins/search_assistant/public/application.tsx | 7 +++++++ x-pack/plugins/search_assistant/public/plugin.ts | 9 ++++++++- x-pack/plugins/search_assistant/public/types.ts | 8 ++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/search_assistant/public/application.tsx b/x-pack/plugins/search_assistant/public/application.tsx index cf0afe48b341ad..071c51f4b6e136 100644 --- a/x-pack/plugins/search_assistant/public/application.tsx +++ b/x-pack/plugins/search_assistant/public/application.tsx @@ -1,3 +1,10 @@ +/* + * 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 React from 'react'; import ReactDOM from 'react-dom'; import type { CoreStart } from '@kbn/core/public'; diff --git a/x-pack/plugins/search_assistant/public/plugin.ts b/x-pack/plugins/search_assistant/public/plugin.ts index a5fbe11592bd01..adb82d3f27ce03 100644 --- a/x-pack/plugins/search_assistant/public/plugin.ts +++ b/x-pack/plugins/search_assistant/public/plugin.ts @@ -1,5 +1,12 @@ +/* + * 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 { i18n } from '@kbn/i18n'; -import type { AppMountParameters, CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; +import type { AppMountParameters, CoreSetup, Plugin } from '@kbn/core/public'; import type { SearchAssistantPluginSetup, SearchAssistantPluginStart, diff --git a/x-pack/plugins/search_assistant/public/types.ts b/x-pack/plugins/search_assistant/public/types.ts index 8e1191a9405426..f05592414a9dc4 100644 --- a/x-pack/plugins/search_assistant/public/types.ts +++ b/x-pack/plugins/search_assistant/public/types.ts @@ -1,3 +1,10 @@ +/* + * 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 { AppMountParameters } from '@kbn/core/public'; import { UsageCollectionStart } from '@kbn/usage-collection-plugin/public'; import { ObservabilityAIAssistantPublicStart } from '@kbn/observability-ai-assistant-plugin/public'; @@ -5,6 +12,7 @@ import { ObservabilityAIAssistantPublicStart } from '@kbn/observability-ai-assis // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface SearchAssistantPluginSetup {} +// eslint-disable-next-line @typescript-eslint/no-empty-interface export interface SearchAssistantPluginStart {} export interface SearchAssistantPluginStartDependencies { From 07b7067136696c71da901f3e5947b743bb19e343 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Mon, 19 Aug 2024 15:43:26 +0000 Subject: [PATCH 06/19] [CI] Auto-commit changed files from 'node scripts/lint_ts_projects --fix' --- x-pack/plugins/search_assistant/tsconfig.json | 1 - 1 file changed, 1 deletion(-) diff --git a/x-pack/plugins/search_assistant/tsconfig.json b/x-pack/plugins/search_assistant/tsconfig.json index 3b084aebd746b7..5e768511aacb00 100644 --- a/x-pack/plugins/search_assistant/tsconfig.json +++ b/x-pack/plugins/search_assistant/tsconfig.json @@ -18,7 +18,6 @@ "@kbn/i18n-react", "@kbn/shared-ux-router", "@kbn/shared-ux-page-kibana-template", - "@kbn/shared-ux-utility", "@kbn/i18n", "@kbn/usage-collection-plugin", "@kbn/observability-ai-assistant-plugin" From 1762523b54c0ef6c795a906babe6faeb1e8b3505 Mon Sep 17 00:00:00 2001 From: saarikabhasi Date: Mon, 19 Aug 2024 13:52:01 -0400 Subject: [PATCH 07/19] add config for FTR --- test/plugin_functional/test_suites/core_plugins/rendering.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/test/plugin_functional/test_suites/core_plugins/rendering.ts b/test/plugin_functional/test_suites/core_plugins/rendering.ts index a7afb228f5c1f6..7571960a32b690 100644 --- a/test/plugin_functional/test_suites/core_plugins/rendering.ts +++ b/test/plugin_functional/test_suites/core_plugins/rendering.ts @@ -318,6 +318,7 @@ export default function ({ getService }: PluginFunctionalProviderContext) { 'xpack.search.homepage.ui.enabled (boolean?)', 'xpack.searchInferenceEndpoints.ui.enabled (boolean?)', 'xpack.searchPlayground.ui.enabled (boolean?)', + 'xpack.searchAssistant.ui.enabled (boolean?)', 'xpack.security.loginAssistanceMessage (string?)', 'xpack.security.sameSiteCookies (Strict?|Lax?|None?)', 'xpack.security.showInsecureClusterWarning (boolean?)', From 940fa7ccadcde0a5194c8dd55f60c64a2a21f354 Mon Sep 17 00:00:00 2001 From: saarikabhasi Date: Tue, 20 Aug 2024 10:51:25 -0400 Subject: [PATCH 08/19] clean files in server folder --- .../plugins/search_assistant/public/plugin.ts | 20 +------------- .../plugins/search_assistant/server/index.ts | 15 ----------- .../plugins/search_assistant/server/plugin.ts | 26 +++---------------- .../search_assistant/server/routes/index.ts | 24 ----------------- 4 files changed, 5 insertions(+), 80 deletions(-) delete mode 100644 x-pack/plugins/search_assistant/server/index.ts delete mode 100644 x-pack/plugins/search_assistant/server/routes/index.ts diff --git a/x-pack/plugins/search_assistant/public/plugin.ts b/x-pack/plugins/search_assistant/public/plugin.ts index adb82d3f27ce03..8ba22a48df9ff8 100644 --- a/x-pack/plugins/search_assistant/public/plugin.ts +++ b/x-pack/plugins/search_assistant/public/plugin.ts @@ -5,14 +5,12 @@ * 2.0. */ -import { i18n } from '@kbn/i18n'; -import type { AppMountParameters, CoreSetup, Plugin } from '@kbn/core/public'; +import type { CoreSetup, Plugin } from '@kbn/core/public'; import type { SearchAssistantPluginSetup, SearchAssistantPluginStart, SearchAssistantPluginStartDependencies, } from './types'; -import { PLUGIN_ID } from '../common'; export class SearchAssistantPlugin implements Plugin @@ -20,22 +18,6 @@ export class SearchAssistantPlugin public setup( core: CoreSetup ): SearchAssistantPluginSetup { - core.application.register({ - id: PLUGIN_ID, - appRoute: '/app/search_assistant', - title: i18n.translate('xpack.searchAssistant.applicationTitle', { - defaultMessage: 'Search Assistant', - }), - async mount({ element, history }: AppMountParameters) { - const { renderApp } = await import('./application'); - const [coreStart, depsStart] = await core.getStartServices(); - const startDeps: SearchAssistantPluginStartDependencies = { - ...depsStart, - history, - }; - return renderApp(coreStart, startDeps, element); - }, - }); return {}; } diff --git a/x-pack/plugins/search_assistant/server/index.ts b/x-pack/plugins/search_assistant/server/index.ts deleted file mode 100644 index 7884e37689ec04..00000000000000 --- a/x-pack/plugins/search_assistant/server/index.ts +++ /dev/null @@ -1,15 +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 type { PluginInitializerContext } from '@kbn/core/server'; - -export async function plugin(initializerContext: PluginInitializerContext) { - const { SearchAssistantPlugin } = await import('./plugin'); - return new SearchAssistantPlugin(initializerContext); -} - -export type { SearchAssistantPluginSetup, SearchAssistantPluginStart } from './types'; diff --git a/x-pack/plugins/search_assistant/server/plugin.ts b/x-pack/plugins/search_assistant/server/plugin.ts index 1ddd125e245f9c..cdd6c3ea115b27 100644 --- a/x-pack/plugins/search_assistant/server/plugin.ts +++ b/x-pack/plugins/search_assistant/server/plugin.ts @@ -5,38 +5,20 @@ * 2.0. */ -import type { - PluginInitializerContext, - CoreSetup, - CoreStart, - Plugin, - Logger, -} from '@kbn/core/server'; +import type { Plugin } from '@kbn/core/server'; import type { SearchAssistantPluginSetup, SearchAssistantPluginStart } from './types'; -import { defineRoutes } from './routes'; export class SearchAssistantPlugin implements Plugin { - private readonly logger: Logger; - - constructor(initializerContext: PluginInitializerContext) { - this.logger = initializerContext.logger.get(); - } - - public setup(core: CoreSetup) { - this.logger.debug('SearchAssistant: Setup'); - const router = core.http.createRouter(); - - // Register server side APIs - defineRoutes(router); + constructor() {} + public setup() { return {}; } - public start(core: CoreStart) { - this.logger.debug('SearchAssistant: Started'); + public start() { return {}; } diff --git a/x-pack/plugins/search_assistant/server/routes/index.ts b/x-pack/plugins/search_assistant/server/routes/index.ts deleted file mode 100644 index eacaddc8e6ce0c..00000000000000 --- a/x-pack/plugins/search_assistant/server/routes/index.ts +++ /dev/null @@ -1,24 +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 type { IRouter } from '@kbn/core/server'; - -export function defineRoutes(router: IRouter) { - router.get( - { - path: '/api/search_aiassistant/example', - validate: false, - }, - async (context, request, response) => { - return response.ok({ - body: { - time: new Date().toISOString(), - }, - }); - } - ); -} From 4d9af480d63bc0ee4a386bc4978bb38ed3f38c69 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 20 Aug 2024 15:05:41 +0000 Subject: [PATCH 09/19] [CI] Auto-commit changed files from 'node scripts/lint_ts_projects --fix' --- x-pack/plugins/search_assistant/tsconfig.json | 1 - 1 file changed, 1 deletion(-) diff --git a/x-pack/plugins/search_assistant/tsconfig.json b/x-pack/plugins/search_assistant/tsconfig.json index 5e768511aacb00..e38e4fa24d117f 100644 --- a/x-pack/plugins/search_assistant/tsconfig.json +++ b/x-pack/plugins/search_assistant/tsconfig.json @@ -18,7 +18,6 @@ "@kbn/i18n-react", "@kbn/shared-ux-router", "@kbn/shared-ux-page-kibana-template", - "@kbn/i18n", "@kbn/usage-collection-plugin", "@kbn/observability-ai-assistant-plugin" ], From 22aff356e950cb6c3b24870a2ca31ade832ede81 Mon Sep 17 00:00:00 2001 From: saarikabhasi Date: Tue, 20 Aug 2024 11:36:05 -0400 Subject: [PATCH 10/19] remove kibanaReact from kibana.jsonc --- x-pack/plugins/search_assistant/kibana.jsonc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/x-pack/plugins/search_assistant/kibana.jsonc b/x-pack/plugins/search_assistant/kibana.jsonc index 768dc36e154288..85579b76a1e806 100644 --- a/x-pack/plugins/search_assistant/kibana.jsonc +++ b/x-pack/plugins/search_assistant/kibana.jsonc @@ -19,8 +19,6 @@ "cloud", "usageCollection", ], - "requiredBundles": [ - "kibanaReact" - ] + "requiredBundles": [] } } From 13b9cb1240a69950192c5ce651be3782b7719b86 Mon Sep 17 00:00:00 2001 From: saarikabhasi Date: Wed, 21 Aug 2024 10:57:44 -0400 Subject: [PATCH 11/19] add index.ts to server/ folder --- x-pack/plugins/search_assistant/server/index.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 x-pack/plugins/search_assistant/server/index.ts diff --git a/x-pack/plugins/search_assistant/server/index.ts b/x-pack/plugins/search_assistant/server/index.ts new file mode 100644 index 00000000000000..82846885bcc0ad --- /dev/null +++ b/x-pack/plugins/search_assistant/server/index.ts @@ -0,0 +1,13 @@ +/* + * 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 { SearchAssistantPlugin } from './plugin'; + +export function plugin() { + return new SearchAssistantPlugin(); +} + +export type { SearchAssistantPluginSetup, SearchAssistantPluginStart } from './types'; From 0cab2c2605efa1931c2e33e46321ece28e1a3909 Mon Sep 17 00:00:00 2001 From: Saarika Bhasi <55930906+saarikabhasi@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:13:51 -0400 Subject: [PATCH 12/19] Update plugin-list.asciidoc --- docs/developer/plugin-list.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index dd74c52e6df03a..f51642042bce43 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -796,7 +796,7 @@ It uses Chromium and Puppeteer underneath to run the browser in headless mode. |{kib-repo}blob/{branch}/x-pack/plugins/search_assistant/README.md[searchAssistant] -|A Kibana plugin +|Search specific AI assistant solution based on Observability AI Assistant solution. |{kib-repo}blob/{branch}/x-pack/plugins/search_connectors/README.mdx[searchConnectors] From 165936a28704fb9d6705c815bd6f5d6fb15bbe06 Mon Sep 17 00:00:00 2001 From: Saarika Bhasi <55930906+saarikabhasi@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:15:47 -0400 Subject: [PATCH 13/19] Update README.md --- x-pack/plugins/search_assistant/README.md | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/x-pack/plugins/search_assistant/README.md b/x-pack/plugins/search_assistant/README.md index 606dc8b4ccde3a..84fece4524504d 100755 --- a/x-pack/plugins/search_assistant/README.md +++ b/x-pack/plugins/search_assistant/README.md @@ -1,22 +1,4 @@ # SearchAssistant -A Kibana plugin +Search specific AI assistant solution based on Observability AI Assistant solution. ---- - -## Development - -See the [kibana contributing guide](https://github.com/elastic/kibana/blob/main/CONTRIBUTING.md) for instructions setting up your development environment. - -## Scripts - -
-
yarn kbn bootstrap
-
Execute this to install node_modules and setup the dependencies in your plugin and in Kibana
- -
yarn plugin-helpers build
-
Execute this to create a distributable version of this plugin that can be installed in Kibana
- -
yarn plugin-helpers dev --watch
-
Execute this to build your plugin ui browser side so Kibana could pick up when started in development
-
From 6222df9db6d8f5207133fe652d805136e353b141 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Wed, 21 Aug 2024 15:29:10 +0000 Subject: [PATCH 14/19] [CI] Auto-commit changed files from 'node scripts/build_plugin_list_docs' --- docs/developer/plugin-list.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index f51642042bce43..eafe61c012ec3b 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -796,7 +796,7 @@ It uses Chromium and Puppeteer underneath to run the browser in headless mode. |{kib-repo}blob/{branch}/x-pack/plugins/search_assistant/README.md[searchAssistant] -|Search specific AI assistant solution based on Observability AI Assistant solution. +|Search specific AI assistant solution based on Observability AI Assistant solution. |{kib-repo}blob/{branch}/x-pack/plugins/search_connectors/README.mdx[searchConnectors] From 22336ef61ee80f9a5a930ff3e5fa7e01f2153dc9 Mon Sep 17 00:00:00 2001 From: Saarika Bhasi <55930906+saarikabhasi@users.noreply.github.com> Date: Wed, 21 Aug 2024 12:50:20 -0400 Subject: [PATCH 15/19] remove ui config from rendering.ts --- test/plugin_functional/test_suites/core_plugins/rendering.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/test/plugin_functional/test_suites/core_plugins/rendering.ts b/test/plugin_functional/test_suites/core_plugins/rendering.ts index 7571960a32b690..a7afb228f5c1f6 100644 --- a/test/plugin_functional/test_suites/core_plugins/rendering.ts +++ b/test/plugin_functional/test_suites/core_plugins/rendering.ts @@ -318,7 +318,6 @@ export default function ({ getService }: PluginFunctionalProviderContext) { 'xpack.search.homepage.ui.enabled (boolean?)', 'xpack.searchInferenceEndpoints.ui.enabled (boolean?)', 'xpack.searchPlayground.ui.enabled (boolean?)', - 'xpack.searchAssistant.ui.enabled (boolean?)', 'xpack.security.loginAssistanceMessage (string?)', 'xpack.security.sameSiteCookies (Strict?|Lax?|None?)', 'xpack.security.showInsecureClusterWarning (boolean?)', From 19eb4090716a198fbb440a0789478bce8742b409 Mon Sep 17 00:00:00 2001 From: Sander Philipse Date: Thu, 22 Aug 2024 11:06:21 +0200 Subject: [PATCH 16/19] Disable plugin by default --- docs/developer/plugin-list.asciidoc | 4 ++-- x-pack/plugins/search_assistant/.gitignore | 2 -- x-pack/plugins/search_assistant/README.md | 3 +-- x-pack/plugins/search_assistant/server/index.ts | 2 ++ 4 files changed, 5 insertions(+), 6 deletions(-) delete mode 100644 x-pack/plugins/search_assistant/.gitignore diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index 74b70a0ab105e8..7c65ca09ed12ed 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -169,7 +169,7 @@ by the user. The final output of the expression pipeline can be rendered using one of the *renderers* registered in `expressions` plugin. All the arguments to expression functions need to be serializable, as well as input and output. -Expression functions should try to stay 'pure'. This makes functions easy to reuse and also +Expression functions should try to stay 'pure'. This makes functions easy to reuse and also make it possible to serialize the whole chain as well as output at every step of execution. It is possible to add comments to expressions by starting them with a `//` sequence @@ -796,7 +796,7 @@ It uses Chromium and Puppeteer underneath to run the browser in headless mode. |{kib-repo}blob/{branch}/x-pack/plugins/search_assistant/README.md[searchAssistant] -|Search specific AI assistant solution based on Observability AI Assistant solution. +|This holds the Search AI Assistant which targets Search users and Serverless Elasticsearch. |{kib-repo}blob/{branch}/x-pack/plugins/search_connectors/README.mdx[searchConnectors] diff --git a/x-pack/plugins/search_assistant/.gitignore b/x-pack/plugins/search_assistant/.gitignore deleted file mode 100644 index c3dca1b96fcc25..00000000000000 --- a/x-pack/plugins/search_assistant/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/build -/target diff --git a/x-pack/plugins/search_assistant/README.md b/x-pack/plugins/search_assistant/README.md index 84fece4524504d..faf956ad6ec485 100755 --- a/x-pack/plugins/search_assistant/README.md +++ b/x-pack/plugins/search_assistant/README.md @@ -1,4 +1,3 @@ # SearchAssistant -Search specific AI assistant solution based on Observability AI Assistant solution. - +This holds the Search AI Assistant which targets Search users and Serverless Elasticsearch. diff --git a/x-pack/plugins/search_assistant/server/index.ts b/x-pack/plugins/search_assistant/server/index.ts index 82846885bcc0ad..027b51cfdd7d70 100644 --- a/x-pack/plugins/search_assistant/server/index.ts +++ b/x-pack/plugins/search_assistant/server/index.ts @@ -6,6 +6,8 @@ */ import { SearchAssistantPlugin } from './plugin'; +export { config } from './config'; + export function plugin() { return new SearchAssistantPlugin(); } From 7f17d49458077e549ff8e2881e7f8f666727af76 Mon Sep 17 00:00:00 2001 From: Sander Philipse Date: Thu, 22 Aug 2024 11:06:38 +0200 Subject: [PATCH 17/19] Disable plugin by default --- .../plugins/search_assistant/server/config.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 x-pack/plugins/search_assistant/server/config.ts diff --git a/x-pack/plugins/search_assistant/server/config.ts b/x-pack/plugins/search_assistant/server/config.ts new file mode 100644 index 00000000000000..a09b7ac51b7b70 --- /dev/null +++ b/x-pack/plugins/search_assistant/server/config.ts @@ -0,0 +1,19 @@ +/* + * 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 { schema, TypeOf } from '@kbn/config-schema'; +import { PluginConfigDescriptor } from '@kbn/core/server'; + +const configSchema = schema.object({ + enabled: schema.boolean({ defaultValue: false }), +}); + +export type SearchAssistantConfig = TypeOf; + +export const config: PluginConfigDescriptor = { + schema: configSchema, +}; From 5a5dc8310834ebaa7fd9afbdf748c3b584d7ee2d Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 22 Aug 2024 09:19:49 +0000 Subject: [PATCH 18/19] [CI] Auto-commit changed files from 'node scripts/lint_ts_projects --fix' --- x-pack/plugins/search_assistant/tsconfig.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/search_assistant/tsconfig.json b/x-pack/plugins/search_assistant/tsconfig.json index e38e4fa24d117f..090356cf1f440a 100644 --- a/x-pack/plugins/search_assistant/tsconfig.json +++ b/x-pack/plugins/search_assistant/tsconfig.json @@ -19,7 +19,8 @@ "@kbn/shared-ux-router", "@kbn/shared-ux-page-kibana-template", "@kbn/usage-collection-plugin", - "@kbn/observability-ai-assistant-plugin" + "@kbn/observability-ai-assistant-plugin", + "@kbn/config-schema" ], "exclude": [ "target/**/*", From ad2a81a5468ebbab3b131472540470f31ef6ac1b Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 22 Aug 2024 09:32:05 +0000 Subject: [PATCH 19/19] [CI] Auto-commit changed files from 'node scripts/build_plugin_list_docs' --- docs/developer/plugin-list.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index 7c65ca09ed12ed..fc89188c4d2196 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -169,7 +169,7 @@ by the user. The final output of the expression pipeline can be rendered using one of the *renderers* registered in `expressions` plugin. All the arguments to expression functions need to be serializable, as well as input and output. -Expression functions should try to stay 'pure'. This makes functions easy to reuse and also +Expression functions should try to stay 'pure'. This makes functions easy to reuse and also make it possible to serialize the whole chain as well as output at every step of execution. It is possible to add comments to expressions by starting them with a `//` sequence